Netflow

Материал из NoDeny Plus
Перейти к: навигация, поиск

Установка 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, а также добавить правило в фаервол.