Обработка данных Netflow с помощью пакета flow-tools
Netflow — технология сбора данных об IP-трафике разработанная компанией Cisco Systems. Сетевое оборудование, через которое проходит трафик (сенсор), выделяет из него потоки (напр. весь трафик в рамках одного TCP-соединения) и отправляет информацию о них на выделенное устройство (коллектор). Каждая запись о потоке содержит следующие параметры (Netflow версии 5):
- Номер версии протокола;
- Номер записи;
- Входящий и исходящий сетевой интерфейс;
- Время начала и конца потока;
- Количество байт и пакетов в потоке;
- Адрес источника и назначения;
- Порт источника и назначения;
- Номер протокола IP;
- Значение Type of Service;
- Для TCP-соединений — все наблюдаемые в течение соединения флаги;
- Адрес шлюза;
- Маски подсети источника и назначения.
Подробнее о работе Netflow см. также NetFlow - Wikipedia, NetFlow - xgu.ru.
Сборка и установка пакета flow-tools
Скачать и распаковать архив с исходным кодом flow-tools:
$ wget <url> $ tar xfj <file>
Перед сборкой необходимо установить средства разработки (
gcc
,make
,autoconf
) и зависимости (библиотекаzlib
):# zypper in gcc make autoconf zlib-devel
Выполнить сборку и установку из каталога с исходным кодом:
$ ./configure --prefix=/usr/local $ make # make install
Запуск коллектора NetFlow
Данные о сетевых потоках в формате Netflow v5 будут отправляться маршрутизатором на IP-адрес учебной машины на порт № 9800 по протоколу UDP (настраивается преподавателем).
Создать каталог, в котором будут накапливаться данные NetFlow:
# mkdir /var/flows
Открыть в брандмауэре порт 9800/udp:
# YaST firewall Разрешенные службы -> Дополнительно -> UDP-порты: 9800
Запустить коллектор NetFlow
# flow-capture -w <каталог для потоков> -N2 -S 30 -n 23 <IP-адрес получателя>/<IP-адрес источника>/<порт>
Более подробная информация:
man flow-capture
Работа с накопленными даными Netflow
Чтение файлов данных Netflow, накопленных с помощью
flow-capture
выполняется утилитойflow-cat
. Разбор вывода этой команды, для представления данных в читаемом виде, выполняется утилитойflow-print
$ flow-cat <flow-file> | flow-print
Более подробная информация:
man flow-print
Фильтрация потоков выполняется с помощью утилиты
flow-nfilter
, которая принимает на вход данные о потоках в «сыром» формате (выводflow-cat
), применяет к ним заданные правила фильтрации и выводит полученные данные также в «сыром» формате:$ flow-cat <flow-file> | flow-nfilter -f<файл-спецификация фильтров> -F<имя фильтра> | flow-print
Пример файла-спецификации, задающего фильтр с именем
ssh-flows
, отфильтровывающий все потоки данных, соответвтвующие SSH-трафику начиная с 26 апреля 2013 г:filter-primitive port22 type ip-port permit 22 filter-primitive april26 type time-date permit gt Apr 26, 2013 filter-definition ssh-flows match ip-source-port port22 match start-time april26 or match ip-destination-port port22 match start-time april26
Более подробная информация:
man flow-nfilter
Задания
- Установить пакет
flow-tools
. - Настроить прием данных NetFlow.
- Посчитать объем трафика (октеты), вошедшего в учебную сеть из внешних сетей за последний час.
- Посчитать объем трафика, переданного между подсетями учебной сети за последний час.
- Самостоятельно ознакомиться с утилитой
flow-stat
и сгенерировать отчет (по всем доступным данным), содержащий список из 5 IP-адресов, наиболее часто обращающихся к учебной подсети (man flow-stat
). - Самостоятельно ознакомится с утилитой
flow-report
и сгенерировать отчет об использовании пропускной способности канала связывающего учебную сеть со внешней сетью (man flow-report
).