Кафедра Информатики и Математического Обеспечения

ПетрГУ | О кафедре | Мобильные платформы | Лаборатория ИТС | Филиал в КарНЦ РАН | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Курсовые и выпускные работы | Вычислительные ресурсы
Публикации | Архив новостей | Контактная информация | Поиск | English

Обработка данных Netflow с помощью пакета flow-tools

Netflow — технология сбора данных об IP-трафике разработанная компанией Cisco Systems. Сетевое оборудование, через которое проходит трафик (сенсор), выделяет из него потоки (напр. весь трафик в рамках одного TCP-соединения) и отправляет информацию о них на выделенное устройство (коллектор). Каждая запись о потоке содержит следующие параметры (Netflow версии 5):

Подробнее о работе Netflow см. также NetFlow - Wikipedia, NetFlow - xgu.ru.

Сборка и установка пакета flow-tools

  1. Скачать и распаковать архив с исходным кодом flow-tools:

    $ wget <url>
    $ tar xfj <file>
    
  2. Перед сборкой необходимо установить средства разработки (gcc, make, autoconf) и зависимости (библиотека zlib):

    # zypper in gcc make autoconf zlib-devel
    
  3. Выполнить сборку и установку из каталога с исходным кодом:

    $ ./configure --prefix=/usr/local
    $ make
    # make install
    

Запуск коллектора NetFlow

Данные о сетевых потоках в формате Netflow v5 будут отправляться маршрутизатором на IP-адрес учебной машины на порт № 9800 по протоколу UDP (настраивается преподавателем).

  1. Создать каталог, в котором будут накапливаться данные NetFlow:

    # mkdir /var/flows
    
  2. Открыть в брандмауэре порт 9800/udp:

    # YaST firewall
    Разрешенные службы -> Дополнительно -> UDP-порты: 9800
    
  3. Запустить коллектор NetFlow

    # flow-capture -w <каталог для потоков> -N2 -S 30 -n 23 <IP-адрес получателя>/<IP-адрес источника>/<порт>
    

    Более подробная информация: man flow-capture

Работа с накопленными даными Netflow

  1. Чтение файлов данных Netflow, накопленных с помощью flow-capture выполняется утилитой flow-cat. Разбор вывода этой команды, для представления данных в читаемом виде, выполняется утилитой flow-print

    $ flow-cat <flow-file> | flow-print
    

    Более подробная информация: man flow-print

  2. Фильтрация потоков выполняется с помощью утилиты 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

Задания

  1. Установить пакет flow-tools.
  2. Настроить прием данных NetFlow.
  3. Посчитать объем трафика (октеты), вошедшего в учебную сеть из внешних сетей за последний час.
  4. Посчитать объем трафика, переданного между подсетями учебной сети за последний час.
  5. Самостоятельно ознакомиться с утилитой flow-stat и сгенерировать отчет (по всем доступным данным), содержащий список из 5 IP-адресов, наиболее часто обращающихся к учебной подсети (man flow-stat).
  6. Самостоятельно ознакомится с утилитой flow-report и сгенерировать отчет об использовании пропускной способности канала связывающего учебную сеть со внешней сетью (man flow-report).