Netflow
Установка flow-tools
Flow-tools — набор утилит для отправки, сбора, обработки, анализа данных netflow.
mkdir /var/db/flows mkdir /var/run/flow-capture/ pkg install flow-tools
Несмотря на то, что в /usr/local/etc/rc.d/ будет установлен скрипт для запуска flow-capture, запустим с командной строки:
/usr/local/bin/flow-capture -R /var/db/flows/netflow_8888.pl \ -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows \ -n1 -N0 0.0.0.0/0.0.0.0/8888
Здесь:
- 0.0.0.0/0.0.0.0/8888 - принимаем поток netflow на порт 8888.
- -R /var/db/flows/netflow_8888.pl - поток будет обрабатываться скриптом netflow_8888.pl.
- -n1 - ротация раз в день, т.е. фактически отключаем автоматическую ротацию файлов, поскольку статистику будем получать по требованию.
- -N0 - не создавать подпапки с годом/месяцем и т.д.
- /var/run/flow-capture/flow-capture.pid - pid файл, важно. Проверьте, что после запуска появится файл: /var/run/flow-capture/flow-capture.pid.8888.
- /var/db/flows - куда flow-capture будет записывать свои файлы.
flow-capture принимает netflow поток на udp порт 8888. Чтобы сбросить дамп потока на диск, нужно послать сигнал HUP. Дамп будет записан в /var/db/flows c именем из текущей даты и дополнительной информацией. После этого автоматически будет запущен скрипт netflow_8888.pl, которому будет передано имя дампа. Задача этого скрипта простая: переименовать файл с потоком в 8888.txt.
cp /usr/local/nodeny/modules/netflow/netflow_8888.pl /var/db/flows/ chmod 700 /var/db/flows/netflow_8888.pl
Наcтройка отправки netflow на устройстве
Отправка netflow на Mikrotik
/ip traffic-flow target add address=10.20.30.1:8888 version=5 /ip traffic-flow set enabled=yes cache-entries=4k active-flow-timeout=00:01:00 inactive-flow-timeout=00:00:05 interfaces=all
Здесь 10.20.30.1 - ip центрального сервера NoDeny+, на котором запущен flow-capture.
Прием netflow на сервере NoDeny+
Разрешим прием netflow на сервере NoDeny+
ipfw add 2035 allow udp from 10.20.30.40 to any 8888 Здесь 10.20.30.40 - ip устройства, с которого принимаем netflow.
Проверим сброс дампа на диск
rm -f /var/db/flows/ft* rm -f /var/db/flows/8888.txt kill -HUP `cat /var/run/flow-capture/flow-capture.pid.8888` ls -l /var/db/flows/
Если в списке будет присутствовать ненулевой файл 8888.txt - все ок.
Расшифруем дамп
flow-print -f6 < /var/db/flows/8888.txt
Настраиваем модуль ядра по сбору netflow
Редактируем /usr/local/nodeny/kernel/collectors.cfg
{ type => 'netflow', port => '8888', flow_base => '/var/db/flows/', capture_pid => '/var/run/flow-capture/flow-capture.pid', ext_iface => '2', },
Измените параметр ext_iface - номер внешнего интерфейса на устройстве.
Запускаем модуль сбора трафика
perl /usr/local/nodeny/nokernel.pl -m=collectors -v
После тестирования, не забудьте добавить в /etc/rc.local автозапуск flow-capture и модуля ядра collectors, а также в /etc/rc.firewall правило для разрешения приема netflow.
Если у вас несколько устройств, с которых вы принимаете netflow, то вам необходимо на каждом новом устройстве указать уникальный netflow порт (8889, 8890 и т.д.), запустить копию flow-capture на новом порте с указанием порта в имени pl-файла, добавить запись в /usr/local/nodeny/kernel/collectors.cfg, а также добавить правило в фаервол.