Netflow сенсор centos 7 настройка

Обновлено: 08.07.2024

Следим за трафиком при помощи протокола NetFlow.

  1. сенсор;
  2. коллектор;
  3. обработчик данных, визуализатор.

Запись о каждом сетевом соединении (flow record) содержит такую информацию, как время начала и окончания соединения, количество переданных байт и пакетов, IP-адреса источника и получателя, порты и тип IP-протокола. Этими записями удобно манипулировать: подсчитывать трафик, генерировать отчеты и т.п.

NetFlow? Да!

Сначала мы настроим сенсоры на машинах в сети, затем сконфигурируем коллектор, в который сенсоры будут отправлять информацию о трафике. Потом рассмотрим примеры того, как с помощью NetFlow-данных, специальных утилит для работы с ними и базовых знаний в области shell-скриптинга ответить на вопросы типа упомянутых выше. Задача эффектной визуализации полученных данных выходит за рамки этой статьи и будет решена в следующих номерах журнала.

Существует множество программных реализаций компонентов NetFlow под *nix-подобные системы. Мы остановимся на следующих:

  • softflowd в качестве NetFlow-сенсора;
  • flow-tools в качестве утилит для сбора информации о трафике и работы с ней.

В качестве коллектора будем использовать машину под управлением FreeBSD 6. Сенсор поставим на шлюз под управлением OpenBSD 4.1.

Установка и настройка

Установку flow-tools на FreeBSD будем производить штатно, из портов:

$ cd /usr/ports/net-mgmt/flow-tools
$ sudo make install clean

В результате будет установлена масса утилит для работы с NetFlow. Подробную информацию о том, что же поставлено из порта, можно получить, например, с помощью команды:

$ pkg_info -L flow-tools-0.68_1

/usr/local/bin/flow-capture -p /var/run/flow-capture.pid -N 3 -w /var/log/netflows -S 5 192.168.76.146/192.168.76.147/8818

В результате нашей настройки коллектор будет слушать на хосту 192.168.76.146 (порт 8818/udp) и принимать соединения с коллектора на машине 192.168.76.147.

Осталось только прописать коллектор в автозапуск. К сожалению, порт flow-tools не содержит rc-скрипт для запуска коллектора в FreeBSD-стиле, поэтому мы сами создадим flowd.sh следующего содержания:

Благодаря изумительным pkg_tools установка сенсора на OpenBSD необременительна. При прописанной PKG_PATH набираем:

$ sudo pkg_add softflowd-0.9.8

И дело в шляпе. Прописать демон в автостарт «по-опенковскому» также не представляет проблем. В /etc/rc.local добавляем:

Управляем!

Если все запущено и работает корректно, то на сенсоре мы увидим примерно следующую информацию по текущим netflow-потокам:

А в каталоге /var/log/netflows должны появиться собранные данные:

$ ls -la /var/log/netflows/2007/2007-05/2007-05-14
drwxr-xr-x 2 root wheel 3584 14 май 18:45 ./
drwxr-xr-x 16 root wheel 512 14 май 00:00 ../
-rw-r--r-- 1 root wheel 19309 14 май 00:15 ft-v05.2007-05-14.000001+0400
-rw-r--r-- 1 root wheel 18022 14 май 00:30 ft-v05.2007-05-14.001501+0400
-rw-r--r-- 1 root wheel 21379 14 май 00:45 ft-v05.2007-05-14.003001+0400
-rw-r--r-- 1 root wheel 20607 14 май 01:00 ft-v05.2007-05-14.004501+0400
.

Нам понадобятся следующие утилиты:

  • flow-cat для конкатенации нескольких netflow-файлов;
  • flow-stat для генерации отчетов по netflow-файлам;
  • flow-print для вывода информации о netflow-потоках в текстовом виде.

Перечень задач, которые можно решать с помощью flow-tools, ограничивается только фантазией администратора. Попробую очертить типичный круг задач, под которые будут написаны скрипты:

  • Уведомление администратора о превышении какой-либо машиной дневного лимита трафика в N Мб с возможностью блокировки этой машины пакетным фильтром «до выяснения обстоятельств».
  • Уведомление администратора о превышении каким-либо сервером месячного лимита трафика в N Гб. Информативно и полезно для самоконтроля, например, в ситуации, когда в конторе имеются серверы, а оплата интернета производится по трафику с оплаченным лимитом.
  • Детальная, отсортированная netflow-информация по трафику за любой день, месяц, год. Удобна для выяснения вопросов вроде: «А кто и откуда у нас пятого числа качнул 800 мегабайт?».
  • Архивация старых netflow-данных (месячной давности).

Пример обработки записей с помощью flow-cat и flow-stat:


flowcat="/usr/local/bin/flow-cat"
flowstat="/usr/local/bin/flow-stat"
flows="/var/log/netflows"
$flowcat $flows/$year/$month/$day | $flowstat -f10 -p -S3

Результатом будет таблица из пяти колонок: src ip, dst ip, number of flows, number of bytes, number of packets. Выяснить, кто же превысил лимит, можно, например, так:

SUBJ="$INBOUND TRAFFIC ALERT"
MSG="Alert. Some of your machines gets more than 100 mbytes today. See details below."
$flowcat $flows/$year/$month/$day | $flowstat -f10 -p -S3 | tail -20 | \
while read SRC DST undef COUNT undef; do
if [ $COUNT -gt 100000000 ]; then
echo -e "$MSG\n$COUNT bytes from $SRC to $DST" | mail -s "$SUBJ" toxa
echo $DST >> /etc/pf.blockedusers
fi
done

В этом случае пользователю toxa высылается уведомление о том, что определенная машина выкачала более 100 Мб трафика, и ее адрес заносится в таблицу /etc/pf.blockedusers. В конфиге пакетного фильтра /etc/pf.conf имеем:

table persist file /etc/pf.blockedusers
block quick from to any

Разумеется, все примеры разумно разнести по соответствующим скриптам и выполнять их с помощью cron(8) с определенной периодичностью.

Любой системный администратор рано или поздно сталкивается с необходимостью сбора статистики по расходованию трафика, используя которую, он всегда сможет ответить на вопросы начальства: кто, на какие адреса, когда и сколько. Для решения этой задачи сегодня создано множество решений и технологий, наиболее популярным из них является NetFlow.

Несколько слов о NetFlow

Сетевой протокол NetFlow изначально разрабатывался Cisco (goo.gl/vM2l7) для технологии коммутации пакетов в устройствах этой корпорации, но сегодня используется, в основном, для учета трафика. Его спецификации открыты, поэтому со временем NetFlow стал стандартом и применяется не только в Cisco, но и решениях других фирм (вроде Juniper и Enterasys) и ОС.
На сегодня известно несколько версий. Протокол NetFlow v1, созданный в 1990 году, использовался в маршрутизаторах для коммутации пакетов, когда первый пакет потока создавал запись в таблице маршрутизации (по сути кэш), которая затем применялась ко всему потоку. Примерно такая же технология сегодня задействуется и в Netfilter. Последней на сегодня является девятая версия протокола, вышедшая в октябре 2004 года и описанная в RFC 3954. На основе v9 с несколькими расширениями был создан протокол IPFIX (IP Flow Information Export, RFC 3917), который в кулуарах называют NetFlow v10. При этом v2-4 являются внутренней реализацией Cisco, не получившей большого распространения. Поэтому после первой версии сразу появилась наиболее популярная v5, возможностей которой достаточно для большинства задач в IPv4 сетях. Сетевой трафик анализируется на уровне сеансов, запись (flow record) создается для каждой транзакции TCP/IP. В v5 сохраняются данные о версии протокола, интерфейсах, времени начала и окончания соединения, IP и портах источника и назначения, количестве байт и пакетов, TOS и TCP флаги. Девятая версия понимает заголовки IPv6, метки потоков MPLS, адрес шлюза BGP и дополнительные поля. Например, в Cisco ASA NetFlow используется для динамического отслеживания потоков. Чтобы выявить различные события, как раз и задействуются специальные поля v9 (Netflow Security Event Loging, NSEL), которые затем сопоставляются с шаблонами.
Для сбора и последующего анализа информации о трафике по протоколу NetFlow требуется наличие следующих компонентов:

Устанавливаем сенсор на Linux

Поддержка сенсоров NetFlow сегодня реализована во многих аппаратных маршрутизаторах, прошивках DD-WRT и ОС. Например, в анонсированном недавно VMware vSphere 5 появилась поддержка Netflow v5, предоставляющая возможность просматривать трафик между виртуальными машинами на одном или разных хостах. Отслеживая поток трафика приложений внутри виртуальной машины, админ может контролировать производительность сети и целевое использование трафика. Для Cisco активация NetFlow для передачи на коллектор 192.10.0.2:9001 очень проста:

Вот далеко не все варианты NetFlow-сенсоров, при помощи которых можно собирать статистику в разных ОС:

Графики, выдаваемые Flowscan

Если в сети уже есть работающий маршрутизатор, выдающий NetFlow, эту часть статьи можно пропустить. Мы же предположим, что у нас настроен роутер на Ubuntu/Debian, и мы хотим собирать статистику.

В процессе установки пакета будут заданы вопросы относительно интерфейса для сбора статистики и хоста коллектора (нужно указать IP-адрес и номер порта). После чего стартует демон с указанными настройками. В последующем все параметры можно изменить в файле /etc/default/fprobe:

Указываем IP-адрес коллектора при установке fprobe


Аргументов у fprobe очень много, в высоконагруженных сетях возможно потребуется корректировка приоритета (установкой r больше 0), буфера ядра для захвата пакетов (B и q), задержки между отправками (t). Теперь при помощи tcpdump можно просмотреть отправляемые на удаленную систему пакеты.

Коллектор

Работу nfcapd и nfdump в большинстве случаев настраивают через NfSen. Именно поэтому все демоны пакета nfdump по умолчанию не стартуют, в чем легко убедиться, заглянув в /etc/default/nfdump:

Но для начала удостоверимся, что все работает. Запускаем демон для сбора nfcapd статистики, в качестве параметра указываем каталог для хранения файлов и UDP порт:

Настраиваем NFSen

Переходим к настройке NFSen. В репозитариях нужного пакета нет, поэтому установку нужно производить вручную. Само приложение написано на PHP и Perl, для построения графиков используется RRDtool. Для его работы потребуется стандартный LAMP сервер и Perl модули Mail::Header и Mail::Internet. Устанавливаем приложения для удовлетворения зависимостей:

Скачиваем и распаковываем последнюю версию.

Статистика, собранная NFSen

Переименовывем и правим шаблон конфигурационного файла. В начале файла идет много переменных, указывающих на каталоги установки, в большинстве случаев нет необходимости их изменять.

Кроме этого, в файле можно установить буфер для nfcapd, расширения для каждого коллектора, настроить каталоги для сбора данных и многое другое. Ставим.

Скрипт проверит наличие необходимых Perl-модулей, после чего скопирует компоненты по указанным в nfsen.conf каталогам. Запускаем nfsen, он активирует процессы nfcapd:

Создаем настройки для Apache:

5 комментариев

Тогда какой способ вы бы посоветовали?

Народ, подскажите. Как с одного сервера перенести данные на другой ?

был сервер без nfsen собирал статистику через nfdump. На другом сервере поднял nfsen (по этой статье) данные закинул в папку с пользователем live. Графики пустые. Создал нового пользователя через веб, автоматически создались нужные каталоги. Согласно их структуре скинул в него данные (nfcapd.20171111 и тд). Перезапустил службы. Графики всё равно пустые.

Собственно есть данные nfcapd. от старого сервака. Нужно добавить их к новому. Просто скопировать не помогло. Может есть ньюансы ? подскажите пожалуйста.

Данная статья рассматривает установку и настройку системы сбора статистики NetFow в операционной системе Linux и маршрутизаторе Cisco. В качестве коллектора и анализатора выбраны утилиты из комплекта flow-tools. Для тестирования системы было выбрано следующее адресной пространство, которое в последующем будет использоваться в данной статье:

  • 192.168.0.1 - сервер на базе ОС Linux OpenSUSE;
  • 192.168.0.2 - маршрутизатор Cisco серии 3800;
  • 192.168.0.9 - сервер с операционной системой CentOS на котором будет собираться и анализироваться статистика.

На сервере и маршрутизаторе будет настроен сенсор, который будет собирать статистику NetFlow и отправлять ее на коллектор.

Настройка сенсора

Установка и настройка сенсора в ОС Linux

В данном примере используется установка сенсора fprobe в операционной системе Linux OpenSUSE из исходных кодов. По аналогии можно произвести установку fprobe в других дистрибутивах, а при наличие данной программы в стандартном репозитории, желательно производить установку из него. К примеру в Linux Debian fprobe устанавливается из стандартного репозитория при помощи команды aptitude install fprobe . Прежде всего необходимо установить утилиту checkinstall, которая поможет собрать rpm пакет fprobe из исходных кодов, скачать и разархивировать сами исходные коды fprobe.

Переходим в папку с распакованными исходными кодами и конфигурируем утилиту.

Собираем пакет, изменяя, при необходимости, его описание в процессе сборки.

После сборки пакета checkinstall подскажет куда был сохранен готовый RPM-пакет

Done. The new package has been saved to /usr/src/packages/RPMS/i386/fprobe-1.1-1.i386.rpm You can install it in your system anytime using: rpm -i fprobe-1.1-1.i386.rpm

Устанавливаем собранный пакет.

Теперь данным программным обеспечением можно управлять при помощи стандартного менеджера пакетов. Запускаем сбор и отсылку статистики NetWlow на коллектор.

  • eth0 - сетевой интерефейс на котором будет собираться статистика;
  • 192.168.0.9 - адрес коллектора;
  • 9801 - порт на котором коллектор прослушивает и принимает информацию.

Для автоматического запуска сенсора при старте системы, необходимо добавить строку с запуском нашей программы в файл /etc/init.d/after.local . Если данного файла не существует, то его необходимо создать.

echo "/usr/local/sbin/fprobe -i eth0 192.168.0.9:9801" >> /etc/init.d/after.local

Настройка сенсора на маршрутизаторе Cisco

Заходим в режим конфигурации маршрутизатора

Включаем сбор netflow на интерфейсе GigabitEthernet 0/1

Задаем адрес коллектора, порт и версию netflow.

Включаем экспорт статистики с интерфейса GigabitEthernet 0/1

Установка коллектора

Для сбора и анализа данных NetFlow были использованы утилиты из пакета flow-tools. Коллектор устанавливался на сервере с ОС Linux CentOS. В стандартном репозитории flow-tools не присутствовало, однако в интернете были найдены уже собранный rpm пакет, который в последующем был установлен.

Установку и сбор собственного пакета flow-tools из исходных кодов можно произвести аналогично сенсору, используя утилиту checkinstall. Создаем директории в которых будут храниться данные, полученные с сервера 192.168.0.1 и роутера 192.168.0.2

Далее необходимо отредактировать файл /etc/sysconfig/flow-capture и записать в него настройки, с которыми будет запускаться демон flow-capture. Настройки для сервера 192.168.0.1 будут выглядить следующим образом:

  • -w /var/flow-tools/server - директория в которой будут храниться файлы;
  • 0 - говорит, что коллектор должен прослушивать все свои сетевые интерфейсы;
  • 192.168.0.1 - принимает данные только от машины с данным IP-адерсом;
  • 9801 - прослушивает данный порт.

Стартовые скрипты

Для удобства мы поменяем стартовый скрипт на другой (взятый из Linux Debian и немного отредактированный), который позволяет добавлять опции для сразу нескольких одновременно запускаемых коллекторов. Заменяем /etc/init.d/flow-capture на следующий скрипт:

test -f $DAEMON || exit 0
test -f $CONFIG || exit 0

case "$1" in
start)
pid=`pidof $DAEMON` || true

if [ "$pid" ]; then
echo "Sorry, flow-capture is already running."
exit 0
fi

Файл /etc/sysconfig/flow-capture теперь можно записать следующим образом

После чего при запуске демона flow-capture, будут запущены все перечисленные в файле экземпляры коллекторов. Отдельно для сервера на базе ОС Linux на порту 9801, и отдельно для маршрутизатора Cisco на порту 9802. Запускаем демон flow-capture и, при необходимости добавляем его в автозапуск.

service flow-capture start
chkconfig --level 35 flow-capture on

Анализ трафика при помощи flow-tools

После запуска коллектора в директориях /var/flow-tools/server и /var/flow-tools/router будет собираться статистика для соответствующего оборудования. Данные дирректории будут иметь структуру вида: год/год-месяц/год-месяц-число/файлы-статистики В утилиты flow-tools входят следующие полезные утилиты для анализа сетевого трафика:

  • flow-cat - конкатенация (склеивание) отдельных файлов flow-tools;
  • flow-filter - фильтрация NetFlow;
  • flow-stat - создание отчета;
  • flow-print - отображение статистики в понятной человеку форме.

Подробнее можно найти в мануале к flow-tools или отдельной утилите.

Примеры использования flow-tools

Выводим всю статистику за 2011 год (здесь и далее для сервера 192.168.0.1. Для вывода статистики по роутеру нужно заменить дирректорию server на router).

flow-cat здесь склеивает все файлы, находящиеся на пути звездочки * и через конвеер | передает их flow-stat. Отображаем трафик в байтах за 18 марта 2011 с портом источника 80.

/var/flow-tools/server/2011/2011-03/2011-03-18/ft-*| flow-filter -p80 | flow-stat -f10

Выводим статистику соединений пользовательской машины с адерсом 192.168.0.101 с интернетом (порт 80).

flow-cat /var/flow-tools/server/2011/2011-03/2011-03-18/ft-* | flow-filter -Duser1 -P80 | flow-print

Создаем файл flow.acl с в котором прописываются соответсвующие строки.

Применение flow-nfilter

Утилита flow-nfilter позваляет строить сложные и информативные отчеты по разным параметарам. Первым делом необходимо создать соответствующий файл filter.cfg и в соответствии с руководством по flow-nfilter описать необходимые фильтры. К примеру, нам нужно получить статистику по определенному пользователю и его доступу в интерент. Для этого создаем файл filter.cfg со следующим содержимым:

Через данный фильтр пройдут только пакеты, предназначающиеся user2 с порта 80,8080,443 и отправленные user2 на порт 80,8080,443. Таким образом, чтобы получить статистику доступа user2 к веб-ресурсам за март 2011 года нужно задать следующие цепочки команд:

С появлением компьютерных сетей встала задача анализа сетевого трафика, которая никуда не ушла и по сей день. Я хочу вас познакомить с продуктом, который решает эту задачу просто, быстро, эффективно - Noction Flow Analyzer (NFA). Данный программный продукт может быть развернут на собственных вычислительных мощностях, в том числе в закрытых сегментах сети. Пример подобной установки и настройки я рассмотрю далее.

Введение

Noction Flow Analyzer - быстрый, многофункциональный и доступный инструмент анализа/мониторинга сетевого трафика. Анализатор принимает и обрабатывает данные NetFlow, sFlow, IPFIX, NetStream и BGP. Программное обеспечение помогает визуализировать/анализировать динамику трафика и состояние сети, контролировать использование полосы пропускания, быстро обнаруживать всплески/аномалии трафика и DDoS-атаки, просматривать детали BGP пиринга и многое другое.

С помощью NFA можно анализировать данные BGP. Определять подходящих кандидатов для BGP пиринга и принимать обоснованные решения о подключении/отключении провайдеров. Диагностировать проблемы конфигурации, нестабильность BGP маршрутов и др.

Разработчик программы, компания Noction, обычно ассоциируется у сетевых инженеров с платформой оптимизации сети BGP - Noction Intelligent Routing Platform. Однако, в данной статье речь идет о совершенно новом продукте, который был выпущен на рынок недавно.

NFA можно установить на собственный сервер. Есть deb и rpm пакеты под популярные дистрибутивы, а также репозитории для их удобной установки и обновления. В качестве хранилища используется Yandex ClickHouse, что позволяет получать результаты запросов в считанные секунды.

Важное преимущество данного анализатора трафика - простота установки и использования. Я самостоятельно в течении одного дня разобрался с продуктом, установил, настроил и написал данную статью. При этом специальными знаниями в работе с сетями не обладаю. Анализ NetFlow потоков вообще делаю впервые.

В качестве теста я взял шлюз на базе Mikrotik CHR, отдельную виртуальную машину для анализатора трафика NFA, а также две тестовые виртуальные машины для генерации трафика через шлюз.

Установка NFA

Приступаем к установке Noction Flow Analyzer. Я буду это делать на виртуальную машину под управлением Centos 8. Настройка будет идентична для всех форков RHEL 8: Rocky Linux, Alma Linux, Oracle Linux и т. д. Также в качестве поддерживаемой системы заявлена Ubuntu 20 и Centos 7.

  • Минимальные системные требования для NFA разработчики указали следующими:
    x86_64 architecture
  • Minimum 4x core CPU (8x core CPU recommended), SSE4.2 support
  • Minimum 32GB of RAM (64GB RAM recommended; 128GB RAM - optimal)
  • Minimum 250GB SSD storage (500GB SSD storage recommended) allocated to the /var partition

Нужно понимать, что в таких системах требования к железу напрямую зависят от нагрузки, которую будет генерировать сетевое оборудование. Я для теста взял виртуальную машину с 4 CPU, 8GB RAM и 50GB диска. Этого оказалось достаточно. Система работала стабильно и быстро.

Для нормальной работы NFA в Centos необходимо отключить SELinux.

Далее подключаем репозиторий продукта:

Теперь можно выполнить непосредственно установку NFA:


Для работы NFA как минимум необходимо открыть следующие порты на firewall:

  • 80, 443 для работы веб интерфейса управления
  • 2055 для NetFlow

Остальные порты зависят от функционала, который будете использовать в системе. При необходимости стандартные порты можно переназначить в настройках. Я не буду в данной статье касаться настройки firewall, так как это выходит за рамки заданной темы. В случае тестовой установки можете полностью отключить firewalld или заняться настройкой iptables по моему руководству.


Учётная запись по умолчанию - admin / admin. При первом входе вам предложат установить лицензию. Для теста можно получить trial на 30 дней. Для этого надо зарегистрироваться в личном кабинете. Почта от бесплатных сервисов не принимается. Необходимо воспользоваться корпоративной.

В личном кабинете необходимо выбрать NFA - Free Trial License, в Payment Method выбрать No Payment Required и сделать заказ. Указывать реквизиты карты не нужно. Телефон, указанный ранее при регистрации, тоже нигде не понадобится. После заказа Trial License, вам придёт на указанную почту письмо, где будет руководство по установке продукта и лицензионный ключ в виде длинного цифробуквенного набора символов. Его нужно ввести в качестве лицензионного ключа в веб интерфейсе.

Базовая настройка

Дефолтных настроек Noction Flow Analyzer достаточно, чтобы сразу начать работу с программой. Так что я не буду на этом останавливаться. Отмечу лишь, что основные изменяемые параметры можно найти в веб интерфейсе: Management -> Configuration Settings. Там можно изменить стандартные порты и некоторые другие настройки (логирование, доступ к веб интерфейсу и т. д.). Также рекомендую сразу зайти в настройки профиля и указать подходящий вам формат даты и времени.

Перейдём сразу к практической части. После установки NFA сразу же готов к приёму логов через NetFlow. Отправим на него поток со шлюза Mikrotik. Для этого подключаемся к нему по Winbox, переходим в раздел IP -> Traffic Flow, активируем настройку и добавляем новый Target.


В данном случае 10.20.1.34 - ip адрес сервера с NFA. Всё, на шлюзе больше ничего делать не нужно. Переходим в веб интерфейс и добавляем туда новое устройство. Для этого переходим в раздел Management -> Inventory и жмём . Указываем параметры шлюза.


В общем случае достаточно только IP адреса устройства и названия. При желании, можете дополнительно добавить информацию о местоположении устройства и его инвентарных данных.

Для начала сбора данных о сетевом трафике этих настроек достаточно. Через 1-2 минуты в списке устройств напротив добавленного шлюза появится зелёная галочка, информирующая о том, что NetFlow поток с устройства начал поступать для анализа.


Переходим к следующему разделу, где рассмотрим возможности обзора и фильтрации поступающих данных.

Работа с фильтрами

Думаю те, кому приходилось анализировать сетевой трафик тем или иным образом, знают, что это непростая задача из-за большого объема данных. Здесь важно иметь под рукой удобную фильтрацию и хорошее быстродействие, так как выборка будет строиться из большого потока данных.

В Noction Flow Analyzer все в порядке с фильтрацией. Я потратил немного времени на то, чтобы понять логику работы фильтров и их наложения. После этого получил возможность сделать практически любую выборку. Посмотрим, к примеру, кто использовал RDP подключения из внутренней сети во внешнюю.

Переходим в раздел Data Navigation -> Data Explorer и настраиваем фильтр.


Можем посмотреть, соединения между какими хостами за определенный промежуток времени занимали больше всего полосы пропускания:

Примененные фильтры можно сохранять и делать из них виджеты. Табличные результаты выборки можно экспортировать в CSV формат.

Для фильтрации доступны все основные характеристики трафика, такие как ip адреса, порты, протоколы, vlan, AS и т.д. Можно включать, исключать те или иные значения, группировать с условиями и, или. Полный список возможностей можно посмотреть в документации.

Приведу еще пару примеров. Группировка трафика на основе source ip и destination ports. При этом source ip будем брать только из нашей внутренней сети 192.168.88.0/24. То есть с какого локального ip на какой удаленный порт шли запросы:


Посмотрим RDP запросы с конкретного IP. Воспользуемся для этого сохранённым ранее фильтром.


В целом, работать с фильтрами удобно и просто, кроме одного момента, который меня напрягал. Постоянно слетает интервал времени, который ты выбираешь. Он возвращается на дефолтные 4 часа. Выбрать свой интервал времени, а не преднастроенный, неудобно. Он тоже постоянно слетает, а некоторые интервалы, некратные часам, у меня вообще не получилось указать. Это касается именно настройки фильтров. На графике любой интервал выбрать не проблема.

Обзор виджетов и дашбордов

Как я уже сказал ранее, любой настроенный фильтр можно не только сохранить для быстрого выбора, но и сделать из него виджет. А сами виджеты объединить в дашборды. По умолчанию, у вас уже настроен один дашборд с типовым набором виджетов. Лишние можно сразу же отключить. Например, я убрал все, что касается ipv6.


Сам дашборд выглядит следующим образом:


Я ранее не упоминал, что в NFA реализована система доступа на уровне пользователей. Каждый пользователь может формировать свои дашборды, доступные только ему. При этом он имеет возможность открыть доступ и для других пользователей.


Обращаю внимание на то, что все названия и описания могут быть только на английском языке. С русскими символами не будет возможности сохранить виджет или дашборд.

Любой график с виджета или обзора данных с фильтрами может быть сохранён в виде изображения. Поддерживаемые форматы - PNG, JPEG, SVG.


Настройка системы предупреждений

В программе Noction Flow Analyzer реализована система оповещений о тех или иных событиях, связанных с прохождением трафика. Я покажу на двух примерах, чтобы было сразу понятно, как она работает.

Первый пример будет с оповещением о прохождении конкретного сетевого пакета. Мы будем получать уведомление, если кто-то из локальной сети будет открывать RDP соединение по стандартному TCP порту 3389 с внешней сетью. Для этого идём в раздел Alerts и добавляем новый. Указываем необходимые условия.


На следующем этапе вы можете указать некоторые параметры работы предупреждения. Например, при каком условии оно будет считаться закрытым. Это может быть ручное закрытие, либо отсутствие событий, на которые оно настроено.


Здесь же можно указать email или аккаунт slack, на который будет отправляться оповещение. При срабатывании предупреждения, вы получите подобное уведомление на почту.


В списке Active Alerts будет информация об активном предупреждении. Если вы указали ручное закрытие предупреждения, то здесь это можно сделать.

Я показал условный пример, который вряд ли понадобится в реальности. Но его можно расширить дополнительным условием. Например, не больше какого-то количества подобных пакетов в единицу времени. А это уже будет предупреждение о dos или ddos атаках.

Второй пример - уведомление о превышении допустимой занятой полосы пропускания. Настройка подобного предупреждения выглядит следующим образом:


Можно указать любые другие дополнительные условия. Например, трафик между каким источником и получателем (в том числе в виде стран, городов, AS, vlan), по какому порту, протоколу и т.д. будет учитываться. В предупреждениях доступны все инструменты фильтрации трафика.

По всем предупреждениям ведётся история, которую можно посмотреть в разделе History of Alerts. Настраивается все просто и быстро, при этом функционал фактически ничем не ограничен. Любое правило фильтрации можно завернуть на предупреждение. Не хватает только некоторого интерактива с предупреждениями. Например, нельзя из алерта перейти в настроенный фильтр, чтобы сразу посмотреть график. Это придётся делать вручную.

В целом, всё работает ожидаемо, настраивается логично. Если вы в правилах фильтрации видите трафик, то с этой же фильтрацией у вас сработает предупреждение. Легко проверять и отлаживать работу.

Дополнительно в настройках продукта можно включить оповещения о системных событиях, таких как отсутствие потока с какого-то устройства, запуск или остановка компонентов системы и т.д.

Стоимость NFA

Noction Flow Analyzer постоянно активно разрабатывается. Новые версии выходят в среднем каждые 1-2 месяца, в том числе с дополнительным функционалом. В связи с этим, оплата продукта реализована в виде месячной или годовой подписки.

В сетевой индустрии существует распространенное заблуждение, что все лучшие анализаторы NetFlow должны иметь высокую цену, а также сложную модель лицензирования с учетом количества устройств, интерфейсов или локаций клиентов в качестве средства увеличения данной цены. Ценовая политика и условия лицензирования NFA просты и понятны. В NFA нет ограничений по количеству устройств, интерфейсов и локаций. Техническая поддержка 24/7 предоставляется всем клиентам. Стоимость анализатора: $299/месяц. BGP аддон - $199/месяц. Соответственно, в отличие от других продуктов, анализатор Noction доступен организациям даже с очень скромными бюджетами.


Работа с BGP

Я рассмотрел только часть функционала Noction Flow Analyzer, который смог воспроизвести в своей тестовой лаборатории. Обязательно нужно упомянуть про дополнительные возможности.

NFA позволяет анализировать данные BGP и помогает принимать решения о подключении/отключении провайдеров. Подробно с этим функционалом можно ознакомиться в документации.

В разделе BGP Data реализованы отчеты по BGP со своей фильтрацией.


Также в NFA визуализированы BGP с помощью Sankey Diagram. Выглядит это примерно так:


Также я не рассмотрел некоторые дополнительные возможности:

  • Работа с системой через встроенное API
  • Использование SQL запросов через Query editor для формирования нужной выборки


Заключение

Noction Flow Analyzer - нишевый продукт под конкретную задачу анализа и мониторинга сетевого трафика. При этом установка и настройка не требуют глубокого погружения в специфику этой предметной области. У меня самостоятельно получилось во всём разобраться и запустить продукт в работу. К помощи тех. поддержки не прибегал вообще, что бывает не часто, когда делаешь обзор на новый незнакомый продукт. Изначально мне предложили доступ к готовому инстансу, но я решил разобраться во всём сам, чтобы сделать максимально наполненный конкретикой обзор.

Отдельно отмечу, что продукт хорошо укомплектован в стандартные пакеты для системы Linux, устанавливается и настраивается автоматически, без применения современных методов контейнеризации, хотя состоит из множества компонентов. То есть это классический олдскул сервис с запущенными демонами и логами без лишних прослоек.

Читайте также: