Загрузил Олег Орлов

NetFlower

реклама
NetFlower (NFcollect, NFfilter, NFgroup)
Руководство системного администратора
Автор: Орлов О.О. ([email protected])
11 июля 2010 г.
Оглавление
1 Введение
3
2 Статус документа
4
3 Термины
5
4 Назначение и характеристики пакета NetFlower
4.1 Назначение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Характеристики . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Дистрибутив . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 Нумерация версий . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 Именование и состав пакетов . . . . . . . . . . . . . . . .
6
6
6
7
8
8
8
5 Архитектура и общие принципы функционирования
5.1 Технология ”Замещения ресурсов” . . . . . . . . . . . . . . . . . .
5.2 Обеспечение отказоустойчивости . . . . . . . . . . . . . . . . . .
5.3 Распределение потоков NetFlow . . . . . . . . . . . . . . . . . . .
5.3.1 Распределение нагрузки . . . . . . . . . . . . . . . . . . .
5.3.2 Масштабирование . . . . . . . . . . . . . . . . . . . . . . .
9
9
9
10
11
11
6 Установка пакета NetFlower в ОС Windows
13
7 NetFlow директор
20
7.1 Реализация на базе ПО ”Samplicator” . . . . . . . . . . . . . . . . 20
8 NFcollect
21
8.1 Назначение NFcollect . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.2 Файлы конфигурации NFcollect . . . . . . . . . . . . . . . . . . . 21
8.2.1 Главный файл конфигурации(NFcollect.conf) . . . . . . . . 21
8.3 Опции командной строки NFcollect . . . . . . . . . . . . . . . . . 23
8.4 Особенности MS Windows версии NFcollect . . . . . . . . . . . . 23
8.5 Управление службой NFcollect . . . . . . . . . . . . . . . . . . . . 23
8.6 Формат и имена выходных файлов NFcollect . . . . . . . . . . . . 23
8.7 Запуск NFcollect (секция не окончена) . . . . . . . . . . . . . . . 25
8.7.1 О системном UDP буфере приема в различных операционных системах (секция не окончена) . . . . . . . . . . . . 25
8.8 Различия между полной и бесплатной версиями NFcollect . . . . 25
1
Оглавление
2
9 NFgroup
26
9.1 Назначение NFgroup . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.2 Схемы агрегации . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.3 Опции командной строки . . . . . . . . . . . . . . . . . . . . . . . 28
9.4 Возвращаемые значения . . . . . . . . . . . . . . . . . . . . . . . 28
9.5 Файлы конфигурации NFgroup . . . . . . . . . . . . . . . . . . . . 29
9.5.1 Главный файл конфигурации (NFgroup.conf) . . . . . . . . 29
9.5.2 Файл описания схем агрегации (schemes.conf) . . . . . . . 29
9.5.3 Файл конфигурации записи в базу данных (db.conf) . . . . 32
9.5.4 Файл конфигурации статистики (stat.conf) . . . . . . . . . 33
9.6 Различия между полной и бесплатной версиями NFgroup . . . . . 33
9.7 Потребляемые ресурсы (секция не окончена) . . . . . . . . . . . . 33
9.8 Статистика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
10 NFfilter
34
10.1 Назначение NFfilter . . . . . . . . . . . . . . . . . . . . . . . . . . 34
10.2 Опциии командной строки NFfilter . . . . . . . . . . . . . . . . . . 34
10.3 Формат конфигурационного файла NFfilter . . . . . . . . . . . . . 34
10.3.1 Общее описание . . . . . . . . . . . . . . . . . . . . . . . . 34
10.3.2 Базовые типы (для условных функций) . . . . . . . . . . . 35
10.3.3 Логические функции . . . . . . . . . . . . . . . . . . . . . 36
10.3.4 Перечень и типы полей в записях NetFlow после NFcollect 36
10.3.5 Пример конфигурационного файла . . . . . . . . . . . . . 37
10.3.6 Алгоритм "действия"конфигурационного файла . . . . . . 37
11 Некоторые проблемы, причины и способы решения (Глава не окончена)
38
Глава 1
Введение
Данное руководство посвящено описанию программного продукта NetFlower,
состоящего из 3 приложений, функционально дополняющих друг друга : NFcollect,
NFgroup, NFfilter. Данный продукт классифицируется как пакет для учета сетевого трафика по протоколу NetFlow. В настоящее время крупные Internet провайдеры ввиду лавинообразного роста абонентской базы и снижения стоимости
трафика переходят на использование "безлимитных"тарифных планов - с фиксированной платой за канал в Internet, ограниченный по пропускной способности. Однако для небольших и средних провайдеров, потребителей трафика (клиентов) а также для анализа структуры проходящего трафика актуальность задачи учета трафика по протоколам класса NetFlow (LFAP, SFlow) сохраняется.
3
Глава 2
Статус документа
Необходимо отметить, что данный документ находится в состоянии, аналогичное которому в мире программного обеспечения принято называть beta версия. Форматирование, грамматика документа далеки от задуманных. Некоторые
секции только начаты. Кроме того, данное руководство на сегодняшний день по
мнению автора является достаточно сжатым : некоторые моменты лишь упомянуты, но, учитывая интерес к пакету, руководство будет наполняться от версии к
версии как новыми разделами так и подробностями.
Однако, несмотря на все перечисленное и ввиду наличия спроса на продукт как
у пользователей бесплатной версии так и у пользователей, заинтересованных в
получении коммерческой поддержки, было принято решение о публикации документа в его текущем состоянии. Автор надеется потратить все увеличивающееся
время, затрачиваемое на ответы пользователям на разработку пакета. В связи с
этим с благодарностью принимаются на электронный адрес все корректировки,
пожелания как к документации так и к пакету NetFlower.
4
Глава 3
Термины
• ”ПО” - Программное обеспечение
• ”ОС” - Операционная система
• ”СУБД” - Система управления базами данных
• ”Протокол NetFlow” - Фирменный протокол компании Cisco systems,
предназначенный для снятия информации о сетевых (Ip) сессиях, проходящих через Cisco маршрутизаторы/коммуатторы. Некоторые другие производители (Например Juniper jflow) также используют данный протокол.
• ”Версии протокола NetFlow” существуют различные версии NetFlow,
отличающиеся информативностью содержащихся в них данных. С ростом
номера версии информативность возрастает. Последняя версия - v9
• ”NetFlow директор” - программно-аппаратный комплекс, перенаправляющий, дублирующий NetFlow потоки
• ”NetFlow коллектор - программно-аппаратный комплекс, принимающий, сохраняющий и обрабатывающий потоки NetFlow”
• ”Агрегация” - процесс объединения записей NetFlow, ключевые поля которых совпадают. К полям значений при этом применяются ”агрегирующие функции”
• ”Период (интервал) агрегации” - временной интервал, в течении которого записи NetFlow с совпадающими ключевыми полями объединяются
в одну запись
• ”AS (Автономная система)” - ?? группа ip сетей, объединенная единым
номером (номером AS от 0 до 65535), для оптимизации глобальных таблиц
маршрутизации.
5
Глава 4
Назначение и
характеристики пакета
NetFlower
4.1
Назначение
ПО NetFlower предназначено для сбора информации, содержащейся в потоках NetFlow и ее предварительной подготовки для загрузки в системы предбилинга/билинга. Под подготовкой понимается условная фильтрация записей
NetFlow, полей внутри каждой записи, агрегирование (уплотнение) данных по
настраиваемым схемам (схемам агрегации). В последнее время ведется дополнительная разработка по созданию "драйверов"загрузки в различные популярные СУБД: MySQL, Firebird, MSSQL, Postgresql. Драйвер для СУБД Oracle
не рассматривается в качестве актуального, поскольку, Oracle используется как
правило в случаях необходимости обработки экстремальных объемов NetFlow,
при которых технология client-server (используемая всеми драйверами СУБД)
видится неэффективной. В данном случае рекомендуется использовать более
производительный способ загрузки информации в СУБД - утилитой loader (или
его аналоги для других СУБД) в случае необходимости добиться максимальной
производительности в том числе для других СУБД.
С другой стороны, NetFlower создавался в качестве замены Cisco NetFlow collector,
который изначально существовал лишь для платформы Sparc 64, и лишь позже
был портирован на платформу Linux. При большем количестве целевых платформ предполагалось достижение лучшей чем у Cisco NFC производительности
для каждой платформы.
4.2
Характеристики
При создании пакета NetFlower преследовались 4 основные цели :
• Кроссплатформенность
• Экстремальная производительность
6
Глава 4. Назначение и характеристики пакета NETFLOWER
7
• Повышенная надежность сбора информации о трафике
• Простота конфигурирования
Пакет написан на языке C++, поэтому кроссплатформенность обеспечивается
на уровне исходных текстов, то есть имеются отдельные функционально эквивалентные сборки для нескольких платформ. Под экстремальной производительностью понимается прежде всего способность пакета обрабатывать внушительные по объемам потоки NetFlow. Надежность достигается прежде всего схемами резервирования приема потоков NetFlow, описанными ниже.
4.3
Ограничения
• 32 разрядная адресация встроенной hash библиотеки. Ограничение обусловлено отсутствием потребности в 64 разрядной адресации. С другой
стороны, 64 битная адресация порождает потребление большего объема
оперативной памяти. 64 битные сборки пакета также имеют 32 битную адресацию hash.
• Алгоритм распараллеливания обработки данных NFgroup упрощен с точки зрения реализации и не оптимален по расходу ресурсов : отдельные потоки (threads) обрабатывают отдельные файлы, вследствие чего для каждого потока создается отдельная hash таблица с резервированием отдельного участка памяти. В будущем предполагается изменить алгоритм в пользу нового : отдельные потоки будут обрабатывать разные строки одного
файла, что при примерно равном приросте производительности не будет
вызывать роста потребления оперативной памяти.
• NFcollect может прослушивать только один UDP порт одновременно. Автор не видит объективных причин изменять ситуацию, все источники NetFlow
могут направлять потоки на один порт без риска смешивания благодаря
именованию файлов по адресу источника.
• Размер системного "приемного"UDP буфера в NFcollect необходимо устанавливать явно соответствующей переменной конфигурационного файла.
Значение подбирается опытным путем, зависит от производительности сервера, потока NetFlow. Автоподстройку размера буфера производить не возможно, поскольку нет системного вызова, определяющего утилизацию (степень загрузки) системного буфера. Тем не менее, в будущих версиях предполагается ввести статистику плотности потока NetFlow, которая будет
помогать точно оценить потребность приложения в размере UDP буфера.
• Массив агрегированных строк в NFgroup не является динамическим. Как
следствие - NFgroup на хранение массива резервирует максимальное количество строк.
• "Функции обработки задаваемые в конфигурационном файле schemes.conf
не могут использовать в качестве аргумента дополнительные поля в записи.
Глава 4. Назначение и характеристики пакета NETFLOWER
4.4
Дистрибутив
4.4.1
Нумерация версий
8
Версии NetFlower представляют собой номер текущей ревизии, в формате :
ГГГГММДДNN, где ГГГГ - год; ММ - месяц; ДД - день выпуска ревизии; NN
- номер ревизии за текущие сутки С одной стороны, пакет уже давно преодолел
рубеж, когда был реализован весь функционал, запланированный к выпуску v.1.
Однако, в момент, подходящий для выпуска 1 стабильной версии появились более приоритетные задачи по реализации нового функционала (такого как драйверы загрузки в популярные базы данных, новое приложение пакета NFfilter и
т.п.), которые не добавляют ревизиям общей стабильности. С другой стороны,
новые возможности достаточно независимы от базового функционала, надежность работы которого проверена годами интенсивных нагрузок. Т.е. при отсутствии потребности в экспериментальном функционале общая стабильность
приложения остается равной стабильности прежних ревизий. Кроме того, коммерческие сборки как правило содержат заказной набор функций (например совсем не содержат поддержки СУБД). Таким образом, автором было принято решение о временном продолжении изначально принятой системе выпуска версий.
Кроме того, автор наметил основные цели ( в том числе подготовка исчерпывающей версии документации и переход на более традиционную систему нумерации
версий ) для достижения при создании следующего проекта - NetFlower2.
4.4.2
Именование и состав пакетов
В настоящий момент версии NetFlower для UNIX-подобных операционных
систем поставляются в виде архивов tar сжатых архиватором gzip, именуемых
по шаблону:
NFC_операционная_система_аппаратная_платформа_версия.tar.gz,
например NFC_linux_x86_версия.tar.gz
Установка пакета выполняется распаковкой архива командой:
tar vxzf архив.tar.gz
и дальнейшим конфигурированием путем изменения вручную конфигурационных файлов. Для любой платформы в состав дистрибутива входит 3 приложения - NFcollect, NFgroup и NFfilter, для платформы Windows - дополнительное
приложение - NFservice, которое является консольным вариантом управления
сервисом NFcollect (установка, удаление, запуск,остановка)
Приложение NFcollect настраивается системным администратором как службадемон, запускаемый при старте системы, NFgroup прописывается в подсистеме cron с тем, что-бы вызываться регулярно напрямую или из промежуточного
скрипта. Версии для Windows платформы поставляются в виде инсталлятора,
помогающего получить сразу после установки работоспособную конфигурацию
NetFlower (включая установку соответствующего сервиса) за счет автоматической генерации параметров конфигурационных файлов во время инсталляции.
Глава 5
Архитектура и общие
принципы
функционирования
5.1
Технология ”Замещения ресурсов”
Одной из положительных сторон реализации NetFlower в виде нескольких
специализированных приложений является повышение общей производительности за счет использования технологии ”Замещения ресурсов”. Поскольку главной составляющей задачи сбора NetFlow является именно функция сбора, относительно нетребовательное к процессорному времени приложение (NFcollect)
резидентно присутствует в памяти, интенсивно загружая и заполняя дисковую
подсистему. Оставшееся процессорное время занимает периодически запускаемый процесс NFgroup, который "доделывает"работу, требующую значительных вычислительных ресурсов, освобождая временно занятое NFcollect дисковое пространство. Такой подход позволяет максимально эффективно компенсировать суточные колебания в поступающих на коллектор объемах NetFlow. Увеличение дискового пространства приближает общую производительность системы к производительности только NFcollect за счет ”замещения” нехватки
процессорного времени в пиковые часы дисковым буфером, который позволяет
NetFlower без потерь работать до часов спада поступающего объема NetFlow.
5.2
Обеспечение отказоустойчивости
Отказоустойчивость системы в целом обеспечивается рядом технических решений. Одним из таких решений является разделения функций сбора и обработки данных приложениями NFcollect и NFgroup. Предельное упрощение резидентной части (NFcollect) минимизирует количество потенциальных ошибок
в коде программы, в т.ч. снижает риск возникновения ”утечек памяти”. Вторым
решением является дублирование потоков NetFlow на разные коллекторы. Подробнее организация дублирования потоков NetFlow будет описана ниже.
9
Глава 5. Архитектура и общие принципы функционирования
5.3
10
Распределение потоков NetFlow
Распределение потоков NetFlow является ключевым моментом в архитектуре систем, построенных на базе NetFlower и позволяет решить несколько задач
:
• Резервное дублирование собираемых данных
• Распределение нагрузки на несколько коллекторов
• Масштабтрование системы в целом - изменеие количества копий потоков
NetFlow, распределение нагрузки на разное количество серверов
Некоторые версии Cisco IOS поддерживают направление потока NetFlow сразу
на 2 коллектора и одним из оправданных подходов может стать такой : Дублировать потоки NetFlow внутренними средствами маршрутизаторов везде, где это
возможно и только в остальных случаях прибегать к использованию дополнительных решений.
В случаях, когда IOS (или другое встроенное ПО) части или всех источников
NetFlow, с которых предполагается собирать данные, не поддерживает более
одного NetFlow коллектотра а также, если требуется организовать 3 и более
копии потоков NetFlow или для достижения общей гибкости системы ( за счет
некоторого снижения общего уровня надежности системы ) необходимо использовать промежуточное звено - ”NetFlow директор”. Возможной реализацией
”NetFlow директор’а” может являться выделенный сервер повышенной надежности, достигаемой следующими к нему требованиями
• бездисковый (например, с загрузкой с flash носителя)
• оснащенный дублированным электропитанием
• оснащенный быстрым ethernet адаптером (или несколькими для обеспечения дополнительного дублирования за счет увеличения общей пропускной
способности при использовании нескольких локальных сетевых сегментов)
• с повышенным уровнем контроля функционирования ПО
Поскольку на этапе ”разделения потоков” содержимое пакетов NetFlow не играет никакой роли, ”NetFlow директор” работает с обычными UDP потоками,
что упрощает его реализацию и снижает нагрузку на сервер, на котоором он
функционирует.
В настоящий момент пакет NetFlower не содержит собственный ”NetFlow
директор”, но его функции с успехом может выполнять бесплатно распространяемое ПО - samplicator, функционирующее на UNIX-подобных системах:
http://code.google.com/p/samplicator/
задачей которого является прием UDP дэйтаграмм на определенный порт и
отправка принятых дейтаграмм в одном или нескольких направлениях. Важной
Глава 5. Архитектура и общие принципы функционирования
11
особенностью samplicator’а является возможность spoofing’а - сохранения адреса отправителя пакетов UDP. Данная возможность позволяет принимать
пакеты NetFlow коллектором так, как будто они были отправленны непосредственно маршрутизатором без каких-либо промежуточных звеньев.
В будущем планируется поставлять в составе пакета NetFlower собственный директор, который будет мультиплатформенным как и весь пакет. Настройке samplicator в качестве ”NetFlow директора” посвящена отдельная глава. В
Таблице 3.1 показана схема формирования распределенных потоков NetFlow с
одновременным их дублированием. Основной идеей схемы является разделение
потоков с маршрутизаторов по группам, направление потоков NetFlow каждой
группы на отдельный порт ”NetFlow директора”. Каждый порт (группу) обслуживает выделенный экземпляр samplicator’а, который генерирует необходимое
число копий NetFlow потоков
5.3.1
Распределение нагрузки
В случаях, когда мощности одного сервера с NetFlower не хватает, существует возможность разделения нагрузки по сбору и обработке NetFlow между несколькими серверами. Для решения этой проблемы администратор оценивает весовые доли, вносимые в общий поток NetFlow всеми обслуживаемыми маршрутизаторами. Далее, руководствуясь особенностями топологии сети,
предполагаемым количеством серверов с NetFlower (N), администратор разбивает маршрутизаторы на (M) групп (например приблизительно равных по совокупному объему NetFlow, если предполагается использовать равные по производительности сервера). Потоки NetFlow разных групп направляются на разные
обслуживающие сервера ”NetFlow директором”.
5.3.2
Масштабирование
Масштабирование системы сбора можно производить в двух направлениях :
• изменение количества резервных копий
• распределение нагрузки на различное количество коллекторов
Будем называть систему из N копий потоков, направленных на M серверов,
системой, построенной по схеме NxM, например в схеме 2x3 используется 3
сервера-коллектора, собирающих 2 копии NetFlow потоков.
Масштабирование
Глава 5. Архитектура и общие принципы функционирования
Маршрутизаторы
Входной
порт
NetFlow
директора
netflower1_g1
netflower1_g2
netflower2_g1
netflower2_g2
netflower3_g1
netflower3_g2
...
...
...
...
...
netflowerN2_g2
12
NetFlow директор
Входной
порт
NetFlow
коллектора
NetFlow
коллектор
netflower1_g3
netflower2_g3
netflower3_g3
...
9995
netflowerN3_g3 9995
служба
samplicate 1
9996
служба
samplicate 2
9997
служба
samplicate 3
9995
9995
9995
9995
netflowerN1_g1
9995
Таблица 5.1: Организация распределения нагрузки и дублирования потоков
1
1
1
2
2
2
1
1
3
2
2
1
1
3
1
1
3
1
3
2
2
4
2
4
1
1
3
5
2
4
2
2
4
1
3
5
3
3
4
3
4
5
Таблица 5.2: Принцип масштабирования системы по схемам 2x2, 2x3, 2x4, 2x5
Глава 6
Установка пакета NetFlower
в ОС Windows
Для пользователей ОС Windows пакет NetFlower оформлен в традиционном
для данной платформы виде : программы-инсталятора. В процессе инсталляции администратор задает основные параметры работы пакета. После инсталляции фактически пакет готов к приему NetFlow трафика. "Тонкие"настройки
администратор должен производить самостоятельно, редактируя конфигурационные файлы согласно описаниям их формата. Процесс инсталляции также настраивает системную службу, отвечающую за запуск/остановку NFcollect. Запуск/Остановка/Перезапуск службы производится системным администратором.
! В текущей версии NetFlower для Windows поддерживается только английский
язык интерфейса инсталлятора.
После установки и, возможно корректировки конфигурационных файлов, для
начала сбора пакетов NetFlow, направленных на коллектор, системный администратор должен запустить службу "NetFlow v.1,5,6,7,9 collector".
13
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
14
Первая форма процесса установки определяет тип инсталляции : для первичной
установки необходимо выбрать полную установку, для обновления - обновление
бинарных файлов (вся конфигурация при этом будет сохранена). Второй вариант предполагает, что корректировка конфигурационных файлов (например при
использовании новой опции) лежит полностью в зоне ответственности системного администратора.
Рис. 6.1: Форма выбора типа установки.
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
15
Следующая форма позволяет задать местоположение исполняемых файлов пакета а также входных, выходных каталогов, лог-файлов.
Рис. 6.2: Форма выбора места установки.
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
16
Форма определяет параметры конфигурации NFcollect, которые будут записаны
в соответствующий файл конфигурации.
Рис. 6.3: Форма конфигурации NFcollect.
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
17
Форма определяет параметры конфигурации NFgroup, которые будут записаны
в соответствующий файл конфигурации.
Рис. 6.4: Форма конфигурации NFgroup.
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
18
В зависимости от выбранного в предыдущей форме типа СУБД, в данной форме будет предложено задать параметры доступа к СУБД выбранного ранее типа. Также автоматически для заданной СУБД и выбранной ранее схемы агрегации будут сгенерированы SQL-строки создания базы и записи NetFlow строк в
СУБД
Рис. 6.5: Форма конфигурации параметров параметров записи в СУБД.
Глава 6. Установка пакета NETFLOWER в ОС WINDOWS
19
Назначение формы очевидно
Рис. 6.6: Форма запуска процедуры установки с заданными ранее параметрами.
Глава 7
NetFlow директор
7.1
Реализация на базе ПО ”Samplicator”
Ниже показаны на примере приемы, с помощью которых реализуются описанные ранее схемы масштабирования с использованием дополнительного звена в архитектуре сбора потоков NetFlow на базе ПО ”Samplicator” Подробное
описание функций пакета выходит за рамки данной документации и может быть
получено по адресу программы :
http://code.google.com/p/samplicator/
Адрес не является постоянным адресом страницы на сайте разработчика, скорее всего по причине проявления "коллективного творчества"характерного для
freeware, вследствии длительного отсутствия поддержки со стороны автора программы.
Рассмотрим возможность использования Samplicator на примере. Предположим, у нас есть 2 рабочих NetFlow коллектора по адресам 10.0.0.2 и 10.0.0.3,
прослушивающих UDP порты 9995. NetFlow директор (Samplicator) мы решили
установить на сервере, с ip адресом 10.0.0.11 для получения UDP (NetFlow) пакетов. Cisco маршрутизаторы сконфигурированы так, что отправляют NetFlow
пакеты на порт 9996 NetFlow директора. Следующая строка обеспечит дублирование потока UDP (NetFlow), spoof режимом (флаг -S) обеспечив "прозрачность"потоков : на коллекторах ситуация будет идентична той при которой оба
потока направлялись непосредственно с Cisco (с сохранением адресов источников - Cisco в заголовках пакетов) :
/opt/smpl/samplicate -s 10.0.0.11 -S -f -b 67108864 -p 9996 \
10.0.0.2/9995 \
10.0.0.3/9995 \
описание остальных флагов:
-f - переводит программу в режим демона (fork)
-b размер - размер приемного буфера в байтах (подробно можно прочитать в
главе NFcollect)
20
Глава 8
NFcollect
8.1
Назначение NFcollect
Как уже упоминалось, NFcollect - резидентное (постоянно находящееся в
памяти в виде службы (Windows) или демона (UNIX)) приложение, единственной задачей которого является собрать всю возможную информацию из NetFlow
потоков в файлы согласно опциям, заданным в конфигурационном файле. NFcollect
поддерживает автоматическое распознавание версии протокола NetFlow, имеет
простейшие средства фильтрации пакетов в зависимости от источника. NFcollect
намеренно освобожден от каких-либо других задач для упрощения реализации,
минимизации нагрузки и вероятности возникновение нежелательных эффектов
(утечки памяти и т.д.)
8.2
Файлы конфигурации NFcollect
8.2.1
Главный файл конфигурации(NFcollect.conf)
Опция
listen_port
listen_address
Тип значения
целое число диапазона
1..65535
строка
receive_buffer_size
целое число
21
Описание
Прослушиваемый UDP порт
Прослушиваемый адрес локального
сетевого интерфейса
Размер буфера (байт) для приема пакетов NetFlow
Глава 8. NFCOLLECT
22
Опция
split_interval
Тип значения
целочисленное выражение
adjust_splitting
булево
output_dir
строка
log_dir
log_file_name
source_checking
строка
строка
булево
valid_sources
список строк
Описание
длительность (в секундах) интервала
создания новых выходных файлов.
Периодически, по окончании очередного такого интервала, NFcollect
создает для каждого источника
NetFlow новый файл а старые переименовывает в имена с указанием
timestamp начала и конца интервала,
в течении которого производилась
запись в эти файлы. С точки зрения входных данных приложения
NFgroup и пакета NetFlower в целом, данный интервал именуется
"интервалом агрегации"
Выравнивать первое событие записи в новые файлы по границе, кратной целому количеству временных
интервалов, прошедших с начала суток, заданных опцией split_interval.
Например, при интервале 60 секунд,
adjust_splitting = yes приведет к
тому, что запущенный не в начале
минуты NFcollect переключится на
запись в новые файлы в начале новой
минуты
Каталог сбора файлов с информацией, прочитанной из
Использовать проверку адреса - источника NetFlow
Если включена проверка адреса источника NetFlow, будут приниматься пакеты только от перечисленных в данной переменной источников
Допустимые типы значений :
• целое число - например 9997
• целочисленное выражение - арифметическое выражение, значением которого является целое положительное число, например 60*(20+40) - задает часовой интервал агрегации
• булево - yes|no
• строка - заключенная в двойные кавычки последовательность любых символов за исключением двойной кавычки и запятой, например "/var/log/NFcollect.log"
Глава 8. NFCOLLECT
23
• список строк - последовательность строк, разделенных запятыми, например ”192.168.10.1” , ”192.168.10.2”, ”192.168.10.3”
8.3
Опции командной строки NFcollect
• -c имя_файла
мы.
задает имя главного конфигурационного файла програм-
• -l имя_файла задает имя лог-файла программы. Имеет приоритет перед соответствующей опцией конфигурационного файла, удобна для выявления ошибок на ранней стадии.
• -V печатает информацию о программе. Не выполняет никаких других
действий.
8.4
Особенности MS Windows версии NFcollect
Новые Windows версия NetFlower выпускаются в виде дистрибутива, инсталлирующего и предварительно конфигурирующего пакет. Не смортя на это
NFcollect комплектуется вспомогательным приложением - NFservice, которое
помогает управлять запуском и остановкой NFcollect в режиме системной службы. NFservice поддерживает следующие режимы запуска:
8.5
Управление службой NFcollect
• -i (–install) путь_к_исполняемому_файлу_NFcollect путь_к_конфигурационному_файлу
инсталлирует службу NFcollect
• -d (–delete)
удаляет службу NFcollect
• -s (–start) запускает службу NFcollect
• -p (–stop)
8.6
останавливает службу NFcollect
Формат и имена выходных файлов NFcollect
Выходные файлы NFcollect представляют собой текстовые файлы, каждая
строка которых является информационными записями, соответствующими одной сетевой сессии. В следующей таблице приведены описания полей записи
выходного файла NFcollect. Значения в колонке таблицы "Формат" не рассматривается подробно ввиду детального описания в главе NFgroup.
Поле
Формат
Описание
Глава 8. NFCOLLECT
Поле
sequence_number
Формат
целое беззнаковое
begin_time
Расширенный
timestamp
end_time
source_addr
source_port
Расширенный
timestamp
ip адрес
целое беззнаковое
dest_addr
dest_port
ip адрес
целое беззнаковое
prot
целое беззнаковое
octets
целое беззнаковое
packets
целое беззнаковое
source_device
input_interface
ip адрес
целое беззнаковое
output_interface
целое беззнаковое
nexthop
tos
src_as
ip адрес
целое беззнаковое
целое беззнаковое
dst_as
целое беззнаковое
src_mask
dst_mask
целое беззнаковое
целое беззнаковое
24
Описание
Номер последовательности - индекс, приписываемый записи источником NetFlow, постоянный в
пределах UDP??? пакета, в следующем UDP пакете увеличивается
на количество NetFlow пакетов в
предыдущем UDP пакете
UNIX_timestamp.кол-во милисекунд . Время начала flow с точностью до миллисекунды
Тоже, что и begin_time, только
время окончания flow
Адрес источника сетевой сессии
TCP порт источника сетевой сессии
Адрес назначения сетевой сессии
TCP порт назначения сетевой сессии
номер TCP протокола ??(UNIX
/etc/protocols)
количество зарегистрированных
байт в записи
количество зарегистрированных
пакетов в записи
адрес источника NetFlow потока
Номер входного интерфейса на источнике NetFlow для зарегистрированной сессии
Номер выходного интерфейса на
источнике NetFlow для зарегистрированной сессии
???
Тип сервиса
Номер
автономной
системы
адреса-источника сетевой сессии
Номер
автономной
системы
адреса-назначения сетевой сессии
???
???
Пример фрагмента из нескольких записей выходного файла NFcollect :
211046 1229943249.990 1229943249.990 172.31.31.2 3854 172.31.31.1 161 17 103 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0
211046 1229943250.000 1229943250.000 172.31.31.1 161 172.31.31.2 3854 17 127 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0
211052 1229943251.990 1229943251.990 172.31.31.2 3857 172.31.31.1 161 17 71 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0
211052 1229943252.000 1229943252.000 172.31.31.1 161 172.31.31.2 3857 17 83 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0
211052 1229943252.010 1229943252.010 172.31.31.2 3858 172.31.31.1 161 17 74 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0
211052 1229943252.010 1229943252.010 172.31.31.1 161 172.31.31.2 3858 17 83 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0
Глава 8. NFCOLLECT
25
8.7
Запуск NFcollect (секция не окончена)
8.7.1
О системном UDP буфере приема в различных операционных системах (секция не окончена)
Приложение NFcollect, используемое в промышленных масштабах, принимает большое количество пакетов NetFlow, которые передаются от источников
по протоколу UDP. При высоких нагрузках, системных установок по-умолчанию
не достаточно. Пакеты UDP (и соответственно NetFlow) начинают либо "выпадать"либо совсем не доходят до приложения (размер выходных файлов NFcollect
не увеличивается адекватно либо совсем не увеличивается). В таких ситуациях
требуется настройка системы для обработки большого потока UDP пакетов увеличение системного буфера приема UDP. В UN*X системах размер системного принимающего буфера UDP ограничен специальными переменными среды окружения. Cистемный вызов (setsockopt), реально изменяющий размер буфера для конкретного приложения ограничен сверху этим значением. Подбор
оптимального значения для таких переменных зависит от потока UDP, ресурсов сервера и лежит в зоне ответственности администратора системы-NetFlow
коллектора. Приложения, не устанавливающие явно размер буфера, получают
буфер размера по-умолчанию для данной операционной системы. Ниже приведены команды для разных ОС, задающие значение соответствующих системных переменных, для успешной установки системным вызовом setsockopt размер приемного UDP буфера в 128 Мб (134217728 байт).
Linux :
sysctl net.core.rmem_max=268435456
(необходимо задавать удвоенный объем буфера )
FreeBSD :
sysctl -w kern.ipc.maxsockbuf=268435456
(необходимо задавать удвоенный объем буфера )
Solaris :
/usr/sbin/ndd -set /dev/udp udp_max_buf 134217728
Windows :
Ограничения на уровне системных переменных автору не известны.
Данные команды должны быть выполнены непосредственно перез запуском
NFcollect (традиционно в SHELL скриптах, запускающих NFcollect)
8.8
Различия между полной и бесплатной версиями NFcollect
• Бесплатная версия не позволяет собирать NetFlow более чем с 2-х источников одновременно
Глава 9
NFgroup
9.1
Назначение NFgroup
NFgroup является специализированной (работающей в паре с NetFlower NFcollect)
программой преобразования текстовых файлов из входного формата в выходной. Преобразование гибко управляется конфигурационными файлами. NFgroup
запускается периодически (по мере готовности файлов с данными в исходном
формате) системой cron или аналогичной. NFgroup предназначен для
• Обработки
• Сжатия (если необходимо) "на лету"выходных файлов алгоритмами
– gzip (с опцией коэффициента сжатия 0-9)
– bzip2 (с опцией коэффициента сжатия 0-9)
• Генерации статистической информации
9.2
Схемы агрегации
Введение понятия "Схем агрегации"направлено на рационализацию процесса сбора информации :
• Уменьшение количества входных полей за счет отбрасывания незначимых
• Уменьшение количества входящих строк за счет объединения строк, с совпадающими "ключевыми полями"за "Период агрегации"
Компания Cisco Systems в руководстве по настройке своего продукта Cisco
NetFlow Collector v 3.0
http://www.yars.free.net/CiscoCD/cc/td/doc/product/rtrmgmt/nfc/nfc_
3_0/nfc_ug/nfctune.htm
определяет 23 стандартных именованных схем агрегации:
RawFlows, SourceNode, DestNode, HostMatrix, SourcePort, DestPort, Protocol,
DetailDestNode, DetailHostMatrix, DetailInterface, CallRecord, ASMatrix1, NetMatrix1,
26
Глава 9. NFGROUP
27
DetailSourceNode, DetailASMatrix1, RouterAS2, RouterProtoPort2, RouterSrcPrefix2,
RouterDstPrefix2, RouterPrefix2, AsHostMatrix1, HostMatrixInterface, DetailCallRecord.
Все эти, а также произвольные другие, могут быть сконфигурированы в "файле описания схем агрегации"с некоторыми, оговариваемыми ниже, ограничениями.
Схема
RawFlows
SourceNode
Ключевые поля
Поля значений
srcadr
DestNode
dstadr
HostMatrix
srcadr dstadr
SourcePort
srcport
DestPort
dstport
Protocol
protocol
DetailDestNode
dstaddr, srcport, dstport, protocol
DetailHostMatrix
srcaddr, dstaddr, srcport, dstport, protocol
DetailInterface
srcaddr, dstaddr, input interface, output interface,
nexthop
srcaddr, dstaddr, srcport, dstport, protocol byte (prot),
TOS
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp
packet count, byte count, flow
count
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count, flow
count
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
packet count, byte count, flow
count
packet count, byte count,
flow
count,
firstTimeStamp,
lastTimeStamp, totalActiveTime
CallRecord
ASMatrix
src_as, dst_as
NetMatrix
input interface, output interface, masked srcaddr,
masked dstaddr, src_mask, dst_ mask
srcaddr, srcport, dstport, protocol
DetailSourceNode
DetailASMatrix
RouterAS
srcaddr, dstaddr, srcport, dstport, protocol, input
interface, output interface, src_as, dst_as
input interface, output interface, scr_as, dst_as
RouterProtoPort
srcport, dstport, protocol
RouterSrcPrefix
input interface, src_as, masked srcaddr, src_mask
RouterDstPrefix
output interface, dst_as, masked dstaddr, dst_mask
RouterPrefix
input interface, output interface, src_as, dst_as,
masked srcaddr, masked dst_addr, src_mask,
dst_mask
srcaddr, dstaddr, src_as, dst_as
AsHostMatrix
HostMatrixInterface
DetailCallRecord
srcaddr, dstaddr, protocol, input interface, output
interface
srcaddr, dstaddr, srcport, dstport, protocol, ToS, input
interface, output interface
Глава 9. NFGROUP
9.3
28
Опции командной строки
–config (-c)
задает путь к главному конфигурационному файлу –version (-V)
9.4
Возвращаемые значения
Поскольку NFgroup
• выполняет необратимые преобразования данных (конечной целью этих преобразований является замещение на диске исходных данных результирующими)
• используется в пакетном режиме (то есть вызывается другим приложением)
Глава 9. NFGROUP
29
9.5
Файлы конфигурации NFgroup
9.5.1
Главный файл конфигурации (NFgroup.conf)
Опция
scheme_config_fullpath
Тип значения
строка
stat_config_fullpath
строка
input_dir_name
строка
threads_number
целое число
max_araws_number
целое число
compression_type
compression_level
вариант
[bzip2|gzip|none]
(по-умолчанию none)
целое число
aggregation_scheme
строка
use_statistics
вариант
[yes|no]
умолчанию no)
9.5.2
Описание
путь к файлу описания схем агрегирования
путь к файлу конфигурации статистики
путь к каталогу файлов, создаваемых
NFcollect
Количество легковесных процессов,
используемых для агрегирования.
Архитектура NFgroup предполагает
параллельную обработку разных
файлов отдельными легковесными
процессами. Максимальная производительность достигается при
использовании N нитей (легковесных процессов) на системе с N
процессорными ядрами
Предполагаемое количество строк
после агрегации. Подбирается опытным путем. Слишком маленькое значение повышает риск нехватки памяти при неожиданных всплесках трафика. Слишком большое значение
вызывает неоправданный расход памяти.
значимо при наличии опции в методе
сжатия : (0-9) для bzip2
имя одной из схем агрегации, описанной в конфигурационном файле
схем (schemes.conf)
(по-
Файл описания схем агрегации (schemes.conf)
Файл описания схем агрегации состоит из блоков, которые в свою очередь
состоят из именованных секций, например :
HostMatrix{
header{}
options{}
input{...}
output{}
Глава 9. NFGROUP
30
}
SourceNode{
header{}
options{}
input{...}
output{}
}
...
В данном примере в первом блоке определяется схема агрегации с именем HostMatrix.
В текущей версии NFgroup секции, кроме input не используются (зарезервированы) но должны обязательно присутствовать и быть пустыми.
Строка, начинающаяся с
// ñ÷èòàåòñÿ êîììåíòàðèåì è èãíîðèðóåòñÿ ïàðñåðîì
Формат секции input{} Секция input - таблица, состоящая обычно (для стандартных схем агрегации) из n+1 строк (n первых строк соответствуют полям выходных файлов NFcollect), например :
input{
sequence_number
begin_time
end_time
source_addr
source_port
dest_addr
dest_port
prot
octets
packets
source_device
input_interface
output_interface
nexthop
tos
src_as
dst_as
src_mask
dst_mask
flows
dat
dat
dat
key
dat
dat
dat
dat
val
val
dat
dat
dat
dat
dat
dat
dat
dat
dat
clc
uint32
extended_timestamp
extended_timestamp
ipv4_addr
port_uint16
ipv4_addr
port_uint16
uint8
uint64
uint32
ipv4_addr
uint16
uint16
ipv4_addr
uint8
uint16
uint16
uint16
uint16
flows_uint32
=
=
=
=
=
=
=
=
self_add_int64
self_add_int32
=
=
=
=
=
=
=
=
=
self_inc
=
=
=
unpack_ipv4
=
=
=
=
unpack_uint64
unpack_uint32
=
=
=
unpack_ipv4
=
=
=
=
=
unpack_uint32
последняя строка - для генерируемого поля (clc) на выходе NFgroup (т.е.
соответствующего поля в выходных строках NFcollect нет), назначение таких
полей описано ниже. Назначение полей :
Поле 1: метка Имя поля фиксировано и является меткой соответствующего
поля (по номеру строки в секции) строки выходного файла NFcollect.
Поле 2: класс поля
• key - ключевое поле, при совпадении всех ключевых полей записи объединяются в одну общую запись
99;
99;
99;
0;
99;
99;
99;
99;
2;
1;
99;
99;
99;
99;
99;
99;
99;
99;
99;
3;
Глава 9. NFGROUP
31
• val - поле - значение, значение в агрегированной записи вычисляется путем применения "функции обработки"к значению полей агрегируемых строк,
результат записывается в итоговую запись
• dat - незначимые данные, поле игнорируется, в выводе не участвует
• clc - вычислимое поле, вычисляется функцией обработки, применяемой к
"старому"значению поля
Поле 3 : Функция ввода (тип поля) Функции ввода обеспечивают преобразование входного текстового вида полей в их внутреннее представление. Фактически они определяют тип поля.
• uint8 - целое без знака 1 байт
• uint16 - целое без знака 2 байта
• uint32 - целое без знака 4 байта
• uint64 - целое без знака 8 байт
• extended_timestamp - строка типа кол-во_секунд_с_1_января_1970_года.колво_миллисекунд_с_начала_прошедшей_секунды
• ipv4_addr - текстовое представление ip адреса протокола ip v4
• port_uint16 до номера порта до 1024 включительно внутреннее представление совпадает, от 1025 до 65536 - представление по схеме 1025-9999 ->
1025, 10000-19999 -> 10000, ... , 60000-65535 -> 60000
• flows_uint_32 ?? (чем это отличается от uint32)
Поле 4 : Функция обработки Функции обработки выполняют модификацию
внутреннего представления полей, благодаря чему, в частности, происходит "агрегация данных".
! Текущим ограничением Функций обработки является невозможность использовать при вычислении нового значения значений других полей.
• self_inc
присваивает аргументу новое значение, равное увеличенному на 1 старому
значению
• self_add_int32
присваивает аргументу (размером 4 байта) новое значение, равное сумме
старого и обрабатываемого поля
• self_add_int64
присваивает аргументу (размером 8 байт) новое значение, равное сумме
старого и обрабатываемого поля
• self_min_int64
присваивает аргументу (размером 8 байт) новое значение, равное минимальному из старого и обрабатываемого поля
• self_max_int64
присваивает аргументу (размером 8 байт) новое значение, равное максимальному из старого и обрабатываемого поля
Глава 9. NFGROUP
32
Функции вывода Функции вывода обеспечивают преобразование внутреннего представления поля в его текстовый вид в выходном файле.
• unpack_ipv4 - на выходе строка - ip адрес 4 версии ip протокола
• unpack_uint8 - на выходе строка - символьное представление целого без
знака числа размерностью 1 байт
• unpack_uint16 - то же размерностью 2 байта
• unpack_uint32 - то же размерностью 4 байта
• unpack_uint64 - то же размерностью 8 байт
• unpack_port_uint16 - до 1024 включительно - символьное представление числа, 1025 и более :
– 1K_9K_Port (от 1025 до 9999 включительно)
– 10K_19K_Port (от 10000 до 19999 включительно)
– 20K_29K_Port (от 20000 до 29999 включительно)
– 30K_39K_Port (от 30000 до 39999 включительно)
– 40K_49K_Port (от 40000 до 49999 включительно)
– 50K_59K_Port (от 50000 до 59999 включительно)
– 60K_65K_Port (от 60000 до 65535 включительно)
9.5.3
Файл конфигурации записи в базу данных (db.conf)
Сттроки файла представляют собой пары
опция = значение
Опция
db_host
db_name
db_path
db_user
db_password
db_sql_create
db_sql_insert
Тип значения
Описание
Опции, специфичные для СУБД MySQL
строка
Адрес сервера базы данных
строка
Имя базы данных
Опции, специфичные для СУБД Firebird
строка
Путь к базе данных (firebird)
строка
Имя пользователя базы данных
строка
Пароль пользователя базы данных
строка
SQL выражение для создания базы
данных
строка
SQL выражения для вставки строк в
базу данных
Допустимые типы значений :
• строка - заключенная в двойные кавычки последовательность любых символов за исключением двойной кавычки и
Глава 9. NFGROUP
9.5.4
33
Файл конфигурации статистики (stat.conf)
В текущей версии есть поддержка некоторого вида статистики, в планах реализация реализации гибко настраиваемой статистики
9.6
Различия между полной и бесплатной версиями NFgroup
• бесплатная версия не позволяет использовать многопоточную обработку
данных (???)
• бесплатная версия не позволяет изменять набор схем агрегирования (используются только преднастроенные схемы)
9.7
Потребляемые ресурсы (секция не окончена)
Ключ, значение, Хэш
на 32 разрядных платформах
4 байта указатель на ключ 4 байта длина ключа 4 байта указатель на данные
4 байта указатель на следующую структуру итого 16 байт на вспомогательную
структуру для каждого ключа
на 64 разрядных платформах
8 байт указатель на ключ 8 байт длина ключа 8 байт указатель на данные
8 байт указатель на следующую структуру итого 32 байта на вспомогательную
структуру для каждого ключа
9.8
Статистика
Текущая версия NFgroup поддерживает некоторые возможности генерации
статистики. Однако, автор считает текущее состояние данной функции неприемлемым из-за недостаточной гибкости ее настройки. Развитие функционала генерации статистики одна из целей поставленных для достижения в рамках проекта
NetFlower2. Те, кому все-таки интересна данная функция, могут обсудить ее с
автором, написав электронное письмо.
Глава 10
NFfilter
10.1
Назначение NFfilter
NFfilter - приложение, работающее на стыке NFcollect и NFgroup. Задача
NFfilter ограничить количество выходных строк, формируемых NFcollect, поступающих на вход NFgroup согласно критериям, определяемым в конфигурационном файле. NFfilter обрабатывает строки, поступающие со стандартного ввода.
Строки, прошедшие согласно заданным критериям выводит на стандартный вывод.
10.2
Опциии командной строки NFfilter
• -V : печать информации о NFfilter, выход без выполнения каких-либо других действий
• -d : режим отладки, отладочная информация выводится в стандартный поток ошибок
• -с путь_к_конфигурационному_файлу : чтение конфигурации из заданного файла
• -f имя_фильтра : активация фильтра с заданным именем, определенного в
конфигурационном файле
10.3
Формат конфигурационного файла NFfilter
10.3.1
Общее описание
Файл конфигурации состоит из последовательности блоков, описывающих
отдельные именованные фильтры.
34
Глава 10. NFFILTER
35
filter("Èìÿ\_ôèëüòðà\_1"){
...
}
...
filter("Èìÿ\_ôèëüòðà\_N"){
...
}
Блоки описания фильтров в свою очередь состоят из последовательности
"разрешающих"/"запрещающих"блоков.
Формат разрешающего блока :
accept{
...
}
Формат запрещающего блока :
skip{
...
}
"разрешающие"/"запрещающие"блоки имеют одинаковый синтаксис. Содержимое блока Фактически суперпозиция функций, описанных ниже. То есть, результаты некоторых функций подставляются в качестве аргументов в другую.
Функции разбиты на 2 группы :
• Условные функции в качестве аргументов принимают имя поля соответствующего типа в записях NetFlow, и константы соответствующего типа.
Возвращают логическое значение в зависимости от выполнения условия,
составляющего смысловую нагрузку функции.
• Логические функции в качестве аргументов принимают логические значения (результаты выполнения условных и логических функций). Возвращают логические значения.
10.3.2
Базовые типы (для условных функций)
Тип полей
uint8
uint16
uint32
uint64
ipv4_addr
extended_timestamp
Функции, применимые к типу
eq, lt, gt
eq, lt, gt
eq, lt, gt
eq, lt, gt
eq, in, in_net
eq, lt, gt
• eq - равно (2 аргумента)
• lt - меньше чем (2 аргумента)
Описание
Целое беззнаковое длиной 1 байт
Целое беззнаковое длиной 2 байта
Целое беззнаковое длиной 4 байта
Целое беззнаковое длиной 8 байт
Ip адрес версии 4
UNIX таймстемп с миллисекундами
Глава 10. NFFILTER
36
• gt - больше чем (2 аргумента)
• in - в диапазоне (3 аргумента)
• in_net - в рамках сети (3 аргумента)
10.3.3
Логические функции
Логических функций 3:
• and - (2 аргумент) возвращает "истину если значение "истина"имеют оба
аргумента. В противном случае возвращает "ложь"
• or - (2 аргумент) возвращает "истину если значение "истина"имеет хотябы один аргумент. В противном случае возвращает "ложь"
• not - (1 аргумент) возвращает "истину если значение "истина"имеет хотябы один аргумент. В противном случае возвращает "ложь"
10.3.4
No
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Перечень и типы полей в записях NetFlow после NFcollect
поле
sequence_number
begin_time
end_time
source_addr
source_port
dest_addr
dest_port
prot
octets
packets
source
input_interface
output_interface
nexthop
tos
src_as
dst_as
src_mask
dst_mask
тип
uint32
extended_timestamp
extended_timestamp
ipv4_addr
uint16
ipv4_addr
uint16
uint8
uint64
uint32
ipv4_addr
uint16
uint16
ipv4_addr
uint8
uint16
uint16
uint16
uint16
внутреннее представление
uint32_t
uint64_t
uint64_t
uint32_t
uint16_t
uint32_t
uint16_t
uint8_t
uint64_t
uint32_t
uint32_t
uint16_t
uint16_t
uint32_t
uint8_t
uint16_t
uint16_t
uint16_t
uint16_t
пример
106581494
1196919883.922
1196919887.286
192.168.1.1
63042
192.168.1.2
80
6
97
1
192.168.1.254
9
1
192.168.1.10
0
0
0
0
0
Глава 10. NFFILTER
10.3.5
37
Пример конфигурационного файла
filter("local_traffic"){
skip{
in(source_addr,"192.168.1.40","192.168.1.50")
}
accept{
or(
),
}
)
and(
and(
in(source_addr,"192.168.1.0","192.168.1.10"),
eq(dest_port,80)
in(source_addr,"192.168.1.20","192.168.1.30"),
eq(dest_port,80)
skip
}
filter("accept_all_traffic"){
accept
}
10.3.6
Алгоритм "действия"конфигурационного файла
NFfilter работает только с одним из сконфигурированных фильтров, называемым "активным". Активный фильтр требуется указать в командной строке
запуска NFfilter в качестве аргумента ключа -f. Активный фильтр "применяется"к каждой строке входящего потока NFfilter. Блоки accept/skip применяются в порядке следования. Если результатом выполнения суперпозиции функций
блока accept является "истина строка выводится в выходной поток. В противном
случае строка пропускается. Для блока skip эти 2 правила действуют с точностью до наоборот. Если при проходе "сработал"некоторый условный блок, проход для данной строки прерывается. Блок accapt/skip без тела определяет для
строк правило по-умолчанию. accept безусловно принимает все строки, skip пропускает.Каждый фильтр обязан содержать блок по-умолчанию (accept или
skip). Этим достигается гарантированная определенность действия для любого
смоделированного фильтра.
Глава 11
Некоторые проблемы,
причины и способы решения
(Глава не окончена)
Описание проблемы
После инсталляции, коллектор не собирает потоки NetFlow
38
Платформа
Windows
Возможные причины
не запущена служба "NetF
Скачать