Собираем и анализируем Netflow при помощи nfdump и nfsen на CentOS

Перед настройкой немного теории:

Netflow предоставляет возможность анализа сетевого трафика на уровне сеансов, делая запись о каждой транзакции TCP/IP. Информация не столь подробна, как предоставляемая tcpdump’ом, но представляет довольно подробную статистику.

Netflow имеет три основных компонента:

1. сенсор;
2. коллектор;
3. система обработки и представления данных.

Сенсор — демон, который слушает сеть и фиксирует данные сеанса.

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

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

В нашем случае сенсор уже имеется в Ciso IOS, в качестве коллектора используем nfdump, а системой обработки будет nfsen.
OS используем Centos 6.9

1. Установка и настройка nfdump+nfsen

Устанавливаем необходимые для работы компоненты и зависимости:

yum update -y
yum install -y httpd php wget gcc make rrdtool-devel rrdtool-perl perl-MailTools perl-Socket6 flex byacc
yum install perl-Sys-Syslog
yum install perl-Data-Dumperu

Создаём пользователя netflow и добавляем его в группу apache:

useradd netflow
usermod -a -G apache netflow

Создаём рабочую директорию и www директорию для nfsen:

mkdir -p /data/nfsen
mkdir -p /var/www/nfsen

Cкачиваем актуальные версии nfdump и nfsen:

cd /opt
wget http://downloads.sourceforge.net/project/nfdump/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz
wget http://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.8/nfsen-1.3.8.tar.gz

Распаковываем, настраиваем и компилируем nfdump:

tar -zxvf nfdump-1.6.13.tar.gz
cd nfdump-1.6.13
./configure --enable-nfprofile --enable-nftrack --enable-sflow
make && sudo make install

Распаковываем nfsen:

tar -zxvf nfsen-1.3.8.tar.gz

Переходим в директорию и создаём рабочий конфиг, делая копию из примера конфига:

cd nfsen-1.3.8 
cp etc/nfsen-dist.conf /opt/nfsen-1.3.8/etc/nfsen.conf

nfsen.conf необходимо отредактировать в соответствии с нашими настройками:

...
$BASEDIR= "/data/nfsen"; #указываем рабочую директорию
$HTMLDIR = "/var/www/nfsen"; #указываем WWW директорию
...

Устанавливаем:

./install.pl etc/nfsen.conf

В процессе установки могут возникать ошибки из-за того что мы пока не сконфигурировали потоки, не страшно.

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

nano /etc/init.d/nfsen

Со следующим содержанием:

#!/bin/bash
#
# chkconfig: - 50 50
# description: nfsen

DAEMON=/data/nfsen/bin/nfsen

case "$1" in
start)
$DAEMON start
;;
stop)
$DAEMON stop
;;
status)
$DAEMON status
;;
restart)
$DAEMON stop
sleep 1
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac

exit 0

Делаем скрипт исполняемым и запускаем сервис:

chmod +x /etc/init.d/nfsen
service nfsen start

В базовой настройке httpd Nfsen уже должен быть доступен по адресу http://YOUR-IP/nfsen/nfsen.php

У меня на сервере несколько Web-интерфейсов и в моём случае httpd.conf выглядит следующим образом:

...
<VirtualHost *:80>
        ServerName netflow.mydomain.local
        DocumentRoot "/var/www/nfsen"
</VirtualHost>
...

И доступен по ссылке http://netflow.mydomain.local/nfsen.php

И завершающий штрих — нужно указать какие потоки на каких портах слушать.
Для примера я разделил ISR и ASA по разным портам, на деле делаете так как вам удобно.
Правим конфиг:

nano /data/nfsen/etc/nfsen.conf

Кусок конфига который отвечает за потоки:

...
%sources = (
        'Cisco ISR'    => { 'port' => '9995', 'col' => '#33CCFF', 'type' => 'netflow'},
        'Cisco ASA'    => { 'port' => '9996', 'col' => '#33FF00', 'type' => 'netflow'},
);
...

После правки конфига перезапускаем сервис

service nfsen restart

2. Настраиваем отправку потоков на Cisco ISR и Ciso ASA

На ISR указываем на какой адрес и порт отправлять данные:

ip flow-export destination YOUR-IP 9995

И на нужных интерфейсах включаем сбор аналитики (имеет смысл включать только на интерфейсах, которые терминируют подсети, иначе слишком избыточна статистика):

interface Tunnel4000
 ip flow ingress
 ip flow egress

На ASA конфиг выглядит так:

flow-export destination INSIDE YOUR-IP 9996
access-list netflow-export extended permit ip any any
class-map netflow-export-class
 match access-list netflow-export
policy-map global_policy
 class netflow-export-class
  flow-export event-type all destination YOUR-IP

3. Вспоминаем о том что у нас есть IPTABLES и настраиваем его

На Centos 7 фаервол не iptables, так что это вам не подойдёт.
Добавляем разрешающие правила и сохраняем:

iptables -I INPUT -p udp -m udp --dport 9995 -j ACCEPT
iptsbles -I INPUT -p udp -m udp --dport 9996 -j ACCEPT
iptables-save

После этого данные должны пойти, файлы nfdump будут собираться в директории /data/nfsen/profiles-data/, так же можно дебажить при помощи tcpdump.

1+

Собираем и анализируем Netflow при помощи nfdump и nfsen на CentOS: 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.