20.06.11 @ 17:23 Lystopad Olexandr wrote:
Нужно с re0 интерфейса снимать netflow статистику и как-то удобно ее
просматривать. Хотелось бы что-бы был удобный интерфейс, чтобы можно
было быстро найти что-то по дате, по порту, по хостам (src, dst).
БД без разницы, готов поставить любую.
Порекомендуйте связку или тулзу, а-то их много, не хочу на чужие
грабли наступать. ;)
Четыре месяца назад делал небольшую подборку коллекторов, умеющих IPv6.
Фрагмент обзора:
* flow-tools
Классический всем известный пакет, наличествует язык для запросов и
формирования отчетов, имеется симпатичная веб-морда FlowViewer
(http://ensight.eos.nasa.gov/FlowViewer/). Но совершенно не умеет IPv6.
Включен для иллюстрации наличия средств генерации отчетов вместо SQL для
задач обработки трафика.
Пример генерирования отчета по агрегированным парам адресов:
stat-report srcdst_haggr
type ip-source/destination-address
output
format ascii
sort +octets
fields +first,+octets,-packets,-duration,-flows
stat-definition srcdst_haggr
report srcdst_haggr
Соответствующий SQL-запрос выглядел бы примерно как:
SELECT time, src_ip, dst_ip, SUM(octets) FROM flows_table GROUP BY src_ip,
dst_ip;
При необходимости выборочной обработки некоторых адресов (WHERE в SQL)
можно указывать фильтры в синтаксисе, похожем на Cisco ACL:
filter-primitive test-address
type ip-address
permit 109.123.146.1
permit 109.123.146.247
default deny
* nfdump, http://nfdump.sourceforge.net/
Умеет IPv6 - NetFlow v9.
Демон сам ротейтит бинарные файлы данных. Умеет язык запросов а-ля
tcpdump, в т.ч. кейворды pps и bps, может пригодиться в реалтайме. Умеет
custom формат вывода. Умеет агрегировать/сортировать вывод по разным
полям, причем возможна по, например, подсетям. Умеет вывод top N записей
статистики. Поддерживает конвертацию из flow-tools. Можно писать данные
снова в бинарные файлы (но сырые, без агрегации), можно отправлять их по
сети из сохраненных файлов в виде Netflow v5/v9 на другой коллектор.
Пример команды агрегации для выбранных адресов (частичный аналог
приводившегося выше примера для flow-tools) из каталогов с марта по май:
$ nfdump –R . -M /traf/nfcapd/2011/03:04:05 -A srcip,dstip 'tcp and port
80 and (ip 109.123.146.1 or ip 109.123.146.247)'
* nfsen, http://nfsen.sourceforge.net/
Вебморда к nfdump. Использует RRD. Написана на Perl и PHP. В основном
рисует графики, но умеет выводить и flows в синтаксисе nfdump, в том числе
с агрегацией. Интерфейс приятный и понятный (по крайней мере для админа),
фильтры можно сохранять. Можно создавать каналы и профили, и тоже
сохранять. Профиль собирает данные по определенному фильтру, может быть
продолжительным, экспиря старые данные. Поддерживает алерты по условиям,
можно детектить DoS, в принципе. Поддерживает написание плагинов.
* SiLK, ports/security/silktools http://tools.netsa.cert.org/silk/
Предназначен для безопасников, написано, что умеет быстро запрашивать
большие исторические наборы данных. Заявлен Netflow v9 и IPFIX, но IPv6
поддерживается не во всех командах комплекта. Его rwtotal не умеет полные
адреса, только 1/2/3 октета (и не умеет IPv6). Размер бинарной записи
максимум 52 байт для IPv4 и 88 байт для IPv6, в репозитории оно хранит
общие данные в заголовке, так что минимальный размер 22 байта (для
web-трафика 20 байт, за счет 2 бит на порт, из 80/443/8080). Счетчики
пакетов/байт 32-битные. В действительности, хранится среднее число байт на
запись, а формат использует минимальное число бит, так что для целей
биллинга не очень подходит: возможна потеря точности.
Можно метить каждый IP-адрес (бинарные карты), но только для IPv4 (зато
заранее подготовленная карта сильно ускоряет выборку по многим адресам).
Хранится в файлах и выбирается из них по времени в утилитах по границе
часа (с целью уменьшения внутри одной записи поля времени до 12 бит,
секунды с границы часа) – документация, увы, не освещает вопрос
пригодности для realtime-биллинга. IPv6 поддерживается лишь в:
* rwfilter - выборка [по критерию] flows из data store для других утилит
* rwcat – объединение нескольких бинарных файлов в новый выходной
* rwappend – дописывание нескольких бинарных файлов к уже существующему
* rwsort – сортировка для использования в других утилитах
* rwuniq – печать агрегатных значений [с порогами] для указанных ключей
* rwgroup – тегирование/сумма flows, имеющих одинаковые / не более дельты
поля
* rwcount – сумма всех flows для каждого N-секундного интервала (а-ля
mrtg)
* rwstats – сортировка агрегатных значений и вывод N top / bottom / порог
/ % всех
* rwnetmask – агрегация в CIDR-блоки
* rwcut – печать указанных полей из бинарных записей
* rwtuc – конверсия из текстового формата в бинарный
Из rwsort | rwgroup --summarize можно сделать а-ля Map/Reduce. Для IPv4 в
пакете вкусностей много больше, к сожалению. Может читать Netflow v5 из
файла с размером, кратным 1464 (заголовок + 30 flows, даже если
использованы не все из них).
Пример использования:
$ rwfilter --start-date=2010/02/19:00 --end-date=2010/02/28:23 --proto=6
--dcidr=10.1.1.2,10.1.1.4,10.1.1.6,10.1.1.8,10.1.1.10,10.2.1.0/24
| rwstats --fields=sip,dip --values=byte --threshold=100000000
INPUT: 549092 Records for 107136 Bins and 3410300252 Total Bytes
OUTPUT: Top 5 Bins by Bytes (threshold 100000000)
sIP| dIP| Bytes| %Bytes| cumul_%|
10.1.1.1| 10.1.1.2| 307478707| 9.016177| 9.016177|
10.1.1.3| 10.1.1.4| 172164463| 5.048367| 14.064544|
10.1.1.5| 10.1.1.6| 142059589| 4.165604| 18.230147|
10.1.1.7| 10.1.1.8| 119388394| 3.500818| 21.730965|
10.1.1.9| 10.1.1.10| 108268824| 3.174759| 24.905725|
Статья с конференции UseNix, посвященная использованию комплекта, доступна
на http://www.usenix.org/event/lisa04/tech/full_papers/gates/gates_html/
Кроме того, поддерживается расширение фильтрации динамическими
библиотеками: например, администратор может написать плагин для запросов
на паттерны активности, которые нельзя делать стандартными средствами.
Скажем, одним из признаком эксплуатации уязвимости переполнения буфера
является случай, когда источник сначала связался с сервером S на порту P,
а затем наблюдалось соединение от источника к серверу S, но на порту R.
* flowd, ports/net-mgmt/flowd http://www.mindrot.org/flowd.html
Маленький, быстрый и надежный коллектор. Поддерживает IPv6/Netflow v9.
Сделан в духе unix way – делает только одну вещь, принимает и пишет на
диск (не умеет даже сам ротейтить). Умеет выборочное сохранение
(фильтрация а-ля правила файрвола; не все поля из Netflow). В комплекте
идут интерфейсы на Perl и Python для парсинга бинарного формата
сохраненных записей, а также пример скрипта для сохранения в SQL-базу.
Умеет слушать multicast. По отзывам, достаточно надежен/безглючен
(неудивительно, при маленьком размере ломаться нечему).
* pmacct, ports/net-mgmt/pmacct http://www.pmacct.net/
Набор демонов, заточенный на агрегацию и хранение данных в SQL (сейчас
поддерживаются mysql/postgresql/sqlite) - авторы придерживаются мнения,
что
хранящих в файлах средств уже и так полно. Умеет Netflow v9/IPFIX/sFlow.
Для
64-битных счетчиков нужна опция при компиляции. Умеет цепляться по BGP
для
сбора ASn, AS-PATH и т.д. и агрегации по ним. Умеет предагрегировать до
SQL
по пороговым значениям.
Существут веб-морда http://www.aptivate.org/pmgraph (написанная на Java),
умеет довольно мало.
*
http://www.switch.ch/network/projects/completed/TF-NGN/floma/software.html
Подборка линков на кучу софта, в том числе много мелких утилит.
В частности, полезен Samplicator для копирования на несколько
коллекторов.
--
WBR, Vadim Goncharov