GrabDuck

Анализ статистики NetFlow при помощи Nfsen

:

CentOS Linux NetFlow nfdump Nfsen rrdtool

В данной статье рассмотрена установка и использование анализатора Nfsen, который переставляет из себя web-интерфейс к nfdump - утилитам по сбору и анализу NetFlow статистики. Установка и настройка соответствующих утилит производится в ОС Linux CentOS. Установка и настройка в других дистрибутивах может незначительно отличаться. Первым делом необходимо произвести установку и настройку сенсора. Подробная процедура установки сенсора на Linux и оборудовании Cisco находятся в статье Сбор статистики NetFlow в Linux при помощи утилит flow-tools. В данной статье были использованы утилиты flow-tools для сбора и анализа статистики NetFlow в ОС Linux. Основным недостатком такого подхода является отсутствие более-менее понятного графического интерфейса для построения отчетов. Запускаем сбор и отсылку статистики на коллектор и выбранный порт. В данном примере 9796.

Установка nfdump

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

wget http://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.3/nfdump-1.6.3.tgz/download
tar -xvzf nfdump-1.6.3.tgz
cd nfdump-1.6.3

Для нормальной работы nfdump и nfsen необходимо установить пакет rrdtool-devel, flex и byacc

yum install rrdtool-devel
yum install flex byacc

Конфигурируем nfdump для работы с nfsen и rrdtool.

./configure --enable-nfprofile --with-rrdpath=/usr/bin

Устанавливаем утилиту checkinstall для сборки пакета. Собираем RPM-пакет для последующей установки nfdump.

checkinstall -R

Устанавливаем собранный RPM из указанного в конце сборки места.

rpm -ivh /usr/src/redhat/RPMS/i386/nfdump-1.6.3-1.i386.rpm

Так же можно произвести установку из исходных кодов, без создания RPM-пакета.

Установка Nfsen

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

wget http://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.5/nfsen-1.3.5.tar.gz/download
tar -xvzf nfsen-1.3.5.tar.gz
cd nfsen-1.3.5

Устанавливаем необходимые модули perl.

cpan Mail::Header
cpan Mail::Internet

Копируем шаблон конфигурационного файла и изменяем настройки в nfsen.conf на необходимые нам.

cp etc/nfsen-dist.conf etc/nfsen.conf

# Базовая дирректория в которой будет расположен nfsen
$BASEDIR = "/usr/local/nfsen";
# Пользователь от чьего имени будет запускаться nfsen. В данном случае запуск производится от имени пользователя демона httpd.
$USER = "www-data";
$WWWUSER = "www-data";
$WWWGROUP = "www-data";
# Порт на который будет приниматься статистика для данного устройства и цвет графика.
%sources = ( 'router' => { 'port' => '9796', 'col' => '#abcdef', 'type' => 'netflow' }, );

Устанавливаем Nfsen с измененными настройками и запускаем его.

./install.pl etc/nfsen.conf
/usr/local/nfsen/bin/nfsen start

Даем доступ к Nfsen из бразуера, добавив нужную запись в конфигурацию веб-сервера Apache.

echo "Alias /nfsen /var/www/nfsen" >> /etc/httpd/conf.d/nfsen.conf
/etc/init.d/httpd reload

Для автозапуска Nfsen при загрузке системы добавляем строчку в файл /etc/rc.d/rc.local

echo "/usr/local/nfsen/bin/nfsen start" >> /etc/rc.d/rc.local

Использование Nfsen

После установки и запуска сбора статистики необходимо зайти в web-интерфейс Nfsen по соответствующему адерсу. В нашем примере мы настроили адрес вида http://адрес_сервера/nfsen/nfsen.php

Применение фильтров nfdump

В данный момент собирается полная статистика для устройста router, отсылаемая на порт 9796. Для детального анализа статистики необходимо перейти во вкладку Detail, выбрать необходимый интервал времени для анализа, и в поле Filter задать соответствующий фильтр nfdump, после чего нажать process. Так же в разделе Options можно задавать соответствующие опции группировки и отображения.

medium_nfsen-time-window.png medium_nfsen-filter.png medium_nfsen-stat.png

 

К примеру, мы хотим посмотреть всю статистику по использованию протокола ssh. Он настроен на стандартном порту 22. Таким образом необходимо задать следующий фильтр:

src or dst port 22

Фильтры и параметры можно комбинировать разными способами. Куда ходила машина с адресом 10.96.0.120 по протоколам HTTP и HTTPS?

ip 10.96.0.120 and (port 80 or port 443)
  • port 80 - стандартный порт HTTP;
  • or port 443 - или стандартный порт HTTPS.

Кто из нашей подсети использует удаленное подключение не только к терминальному серверу?

dst port 3389 and net 10.96.0.0/24 and not ip 10.96.0.2
  • 3389 - стандартный порт RDP;
  • net 10.96.0.0/24 - подсеть класса C;
  • not ip 10.96.0.2 - исключаем IP-адрес терминального сервера.

Подробную информацию по фильтрам смотрите в руководстве к nfdump.

man nfdump

Построение графиков и настройка профилей

Nfsen предоставляет возможность построения графиков из RRD базы данных по соответствующим фильтрам. Изначально существует только один профиль под названием Live. В этот профиль записываются данные с источников, указанных в файле конфигурации nfsen.conf, для построения различных графиков, необходимо создать соответсвующие профили. Выбираем в web-интерфейсе Live -> New Profile и создаем необходимый профиль. При необходимости построить графики с определенного времени, задаем дату начала построения. Иначе данные будут записываться в RRD базу данных с текущего момента.

medium_nfsen-add-profile.pngmedium_nfsen-profile-created.png

 

Сравнение типов профилей Nfsen
Тип профиля Описание Достоинства Недостатки
1:1 channels from profile live Один или несколько каналов соответсвуют профилю Live - Устаревший вариант, присутствует с целью совместимости с Nfsen 1.2.x
individual channels Индивидуально настраиваемый профиль Наиболее гибкая система (рекомендуется) -
Real Profile Сохраняет данные NetFlow, удовлетворяющие фильтрам профиля в отдельные файлы Ускоряет выборку данных при анализе Занимает лишнее место на диске
Shadow Profile Берет данные из профиля Live Не дублирует данные на диске Более медленная выборка данных при анализе

Добавляем каналы с необходимыми нам фильтрами и параметрами отображения нажав плюс (+) в поле Channel list нашего профиля. Мы создали фильтры для просмотра активности по удаленным подключениям ssh и rdp. После всего подтверждаем добавление новых каналов нажав галочку (commit new profile) напротив Status: new.

medium_nfsen-add-filter.png medium_nfsen-commit-new-profile.png medium_nfsen-week-ssh-rdp.png

 

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

Как перестроить график после добавления новых фильтров?

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

  1. Отредактировать файл настроек соответствующего профиля profiles-stat/test/profile.dat
  2. Заменить status = OK на status = new
  3. В web-интерфейсе соответствующего профиля во вкладке Stat нажать галочку (commit new profile) напротив Status: new.
25 Мар 2011 16:16 -- Юрий Акимов