Nfsen Логирование NAT-сессий

NFSEN Главная
Centos nfdump+nfsen+ Debian fprobe

проверяем Selinux
  • /usr/sbin/sestatus
если включен выключаем
  • mcedit /etc/selinux/config
меняем на 
SELINUX=disabled
и перегружаем сервер

Установка nfdump:
  • yum install epel-release -y
  • yum install nfdump -y
  • nfdump -V

nfdump: Version: NSEL-NEL1.6.11 $Date: 2013-11-16 09:04:43 +0100 (Sat, 16 Nov 2013) $

  • yum install rrdtool-devel -y
  • yum install flex byacc -y
  • yum install rrdtool-perl -y
  • yum install gcc wget -y

или
  • wget http://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz
или

  • wget https://www.cubbyusercontent.com/pl/nfdump-1.6.13.tar.gz/_b015f1172b2e4588b2271a5279601f83 -O nfdump-1.6.13.tar.gz
tar -xvzf nfdump-1.6.13.tar.gz
cd nfdump-1.6.13
yum install rrdtool-devel
yum install flex byacc
yum install rrdtool-perl (была ошибка Can't locate RRDs.pm)
./configure --enable-nfprofile --enable-nftrack  --with-rrdpath=/usr/bin
(при ошибке "configure: error: no acceptable C compiler found in $PATH" ставим компилятор gcc yum install gcc)
./configure --enable-nfprofile --with-rrdpath=/usr/bin

(после конфигурации просто делал  make && sudo make install)

Установка checkinstall в CentOS:
yum install -y rpm-build rpmdevtools
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm
rpm -i checkinstall-1.6.2-3.el6.1.x86_64.rpm
rpmdev-setuptree
 Далее:
checkinstall -R
Устанавливаем собранный RPM из указанного в конце сборки места.
rpm -ivh /root/rpmbuild/RPMS/x86_64/nfdump-1.6.13-1.x86_64.rpm
Проверяем установленную версию:
# nfdump -V  
Установка анализатора nfsen:
  • wget http://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.7/nfsen-1.3.7.tar.gz
Новая версия
  • wget http://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.8/nfsen-1.3.8.tar.gz
  • tar -xvzf nfsen-1.3.8.tar.gz
  • cd nfsen-1.3.8
 или
  • wget https://www.cubbyusercontent.com/pl/nfsen-1.3.7.tar.gz/_39b6b9f1856a41c18904809d644dba3b -O nfsen-1.3.7.tar.gz
tar -xvzf nfsen-1.3.7.tar.gz
cd nfsen-1.3.7
Устанавливаем необходимые модули perl.

(yum install perl-CPAN)
  • cpan Mail::Header
  • cpan Mail::Internet
Для 1.3.8 также понадобился:

  • cpan Sys::Syslog


Копируем шаблон конфигурационного файла и изменяем настройки в nfsen.conf на необходимые нам.
  • cp etc/nfsen-dist.conf etc/nfsen.conf
  • mcedit etc/nfsen.conf
# Базовая дирректория в которой будет расположен nfsen
$BASEDIR = "/usr/local/nfsen";
Пользователь от какого имени будет запускаться nfsen.Так как я переходил на nginx c apache то и права оставил те же
$USER = "apache";
$WWWUSER = "apache";
$WWWGROUP = "apache";
Порт на который будет приниматься статистика для данного устройства и цвет графика.
%sources = ( 'router' => { 'port' => '9796', 'col' => '#abcdef', 'type' => 'netflow' }, );

Если не найдет пути:
$PREFIX = '/usr/bin';

Создаем пользователя, если нужно

groupadd apache 
sudo useradd -d /var/nfsen -G apache -m -s /bin/false netflow
(ставим nginx если нужно)

  • yum install nginx -y
  • cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
  • mcedit /etc/nginx/nginx.conf
user              apache;
  • yum install php-fpm -y
  • cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.old
  • mcedit /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000 комментируем
listen = /var/run/php-worker-socket
listen.owner = apache
listen.group = apache

эти проверить
user = apache
group = apache

chown -R apache:apache /var/lib/nginx

chkconfig nginx on
chkconfig php-fpm on

Устанавливаем Nfsen с измененными настройками и запускаем его.
./install.pl etc/nfsen.conf
(ошибка Can't locate Socket6.pm in @INC ставим
perl -MCPAN -e 'install Socket6'
)

***********
Ошибка
Can't use string ("live") as a HASH ref while "strict refs" in use at libexec/NfProfile.pm line 1238.
Ставим патч

  • yum install patch -y
  • wget https://github.com/mikbill/design/raw/master/nfsen/patch.1.3.8
  • patch -p1 < patch.1.3.8

И тут не пошло, что-то не так
поменял вручную строки, там где + добавил, там где - удалил

фото патча


***********
  • chown -R apache:apache /usr/local/nfsen
  • /usr/local/nfsen/bin/nfsen start


*********************************************************************
Ошибка при запуске
Subroutine Lookup::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
 at /usr/local/nfsen/libexec/Lookup.pm line 43
Subroutine Lookup::unpack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
 at /usr/local/nfsen/libexec/Lookup.pm line 43
...... 
У меня появилась на дебиан, решается установкой nfsen-socket6.patch
http://sourceforge.net/p/nfsen/bugs/31/(по ошибке+решение в коментах)
файл в сети я не нашел, решил вручную. Идем в каталог с установочными файлами, находим файлы
libexec/AbuseWhois.pm
libexec/Lookup.pm
меняем в файлах строчки
use Socket6;
(или import Socket6;)
на
Socket6->import(qw(pack_sockaddr_in6 unpack_sockaddr_in6 inet_pton getaddrinfo));
**********************************************************************
Проверяем:
netstat -nl| grep 9796
ps auxwww | grep nfcapd
Апач
страница доступна на 
http://192.168.10.11/nfsen/nfsen.php
Ставим nginx
nano /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
Замените “OS” на “rhel” или “centos”, в зависимости от используемого дистрибутива, а “OSRELEASE” на “5”, “6” или “7”, для, соответственно, 5.x, 6.x или 7.x версий.
yum install php-fpm

Настройка nginx:
 # nano nfsen.conf
server {
    listen 80;
    root /var/www/nfsen;
    index nfsen.php;
    server_name IPSERVER;
    error_log /var/log/nfsen/error.log error;
    access_log /var/log/nfsen/access.log main;
    location / {
        autoindex on;
        allow all;
    }
    location ~ .php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-worker-socket;
        fastcgi_index nfsen.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_read_timeout 300;
    }
    location ~/\.ht {
        deny all;
    }
}
  • mkdir /var/log/nfsen

DAEMON:

  • nano /etc/init.d/nfsen
#!/bin/bash
#
# chkconfig: - 50 50
# description: nfsen

DAEMON=/usr/local/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

Даем права на веб

  • chown -R apache:apache /var/www/nfsen

Автозапуск демона:
chkconfig nfsen on
проверяем приходящий трафик
tcpdump port 9796

настройка iptables
nano /etc/init.d/firewall.sh
#!/bin/bash
iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
iptables -I INPUT 6 -m state --state NEW -m udp -p udp --dport 9796 -j ACCEPT
где 5 и 6 номера правил в цепочке

  • chmod +x /etc/init.d/firewall.sh
  • mcedit rc.local
/etc/init.d/firewall.sh

Centos 7 автозапуск
touch /etc/systemd/system/firewall.service
chmod 664 /etc/systemd/system/firewall.service
nano /etc/systemd/system/firewall.service
[Unit]
Description=Routing Settings Service
After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/etc/init.d/firewall.sh
[Install]
WantedBy=multi-user.target

  • systemctl start firewall
  • systemctl enable firewall

ошибка не меняются вкладки, везде отображается home
в логе /var/log/php-fpm/www-error.log пишет   
Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session)
решение создать каталог /var/lib/php/session и дать права на него

  • mkdir /var/lib/php/session
  • chown -R apache:apache /var/lib/php/session
чтобы можно было менять настройки профиля
chown -R apache:apache /usr/local/nfsen

Просмотр статистики по веб (фильтры)
статистика использования протокола ssh
src or dst port 22
Куда ходила машина с адресом 10.96.0.120 по протоколам HTTP и HTTPS
ip 10.96.0.120 and (port 80 or port 443)
man nfdump
Пример:
Src net 192.168.1.0/24 and ( dst net 68.30.13.0/20 or dst net 1.2.3.4/24 ) Src net 192.168.1.0/24 and not (net 68.30.13.0/20 or net 154.23.95/22)
Защищаем паролем веб:
https://mikbill.blogspot.com/2016/01/nginx.html

Подключаем плагин карты:
# wget http://sourceforge.net/projects/surfmap/files/source/SURFmap_v3.3.1.tar.gz
# tar -xvzf SURFmap_v3.3.1.tar.gz
# cd SURFmap
# ./install.sh
# service nfsen restart
 проверяем в папке /usr/local/nfsen/plugins

Подключаем плагин Portracker
отслеживает 10 наиболее активных портов и отображает их на графике
для работы нужно заново собрать nfdump
# cd nfdump-1.6.13
# ./configure --prefix /usr --enable-nfprofile --enable-nftrack
# make 
Создаем новую директорию для nftrack данных
$ mkdir -p /var/log/netflow/porttracker
$ chown apache /var/log/netflow/porttracker
Переносим плагин (лежит в /nfsen-1.3.7/contrib/PortTracker)
$ cp PortTracker.pm /var/nfsen/plugins/
$ cp PortTracker.php /var/www/nfsen/plugins/
Добавляем путь в конфиге PortTracker.pm
my $PORTSDBDIR = "/data/ports-db";
меняем на
my $PORTSDBDIR = "/var/log/netflow/porttracker";
Идем в директорию с установщиком nfsen, добавляем плагин в конфиг
mcedit etc/nfsen.conf
@plugins = (
[ ’live’, ’PortTracker’],
);
 Переустанавливаем nfsen
./install.pl etc/nfsen.conf
Инициализируем базу данных portracker
$ sudo -u www-data nftrack -I -d /var/log/netflow/porttracker 
(ошибка- sudo: nftrack: command not found говорит о том, что nfdump собран без -nftrack)
$ chown -R netflow:www-data /var/log/netflow/porttracker
$ chmod -R 775 /var/log/netflow/porttracker
service nfsen restart

Ошибка  “Cannot Read Stats file”
не проинициализирован каталог  /var/log/netflow/porttracker или нет прав на него.
Проверка
# ls -l /var/log/netflow/porttracker/portstat*
-rw-r--r-- 1 apache root 585 Jan 19 02:15 /var/log/netflow/porttracker/portstat24.txt
-rw-r--r-- 1 apache root 597 Jan 19 02:15 /var/log/netflow/porttracker/portstat.txt
тут хранится база устройсва router
/usr/local/nfsen/profiles-data/live/router

Команды
(Тестировано на дебиан)
Тестирование nfcapd и nfdump
mkdir /tmp/nfcap-test
nfcapd -E -p 9001 -l /tmp/nfcap-test
 Через какое-то время, серия потоков должна появиться на экране.(у меня минут 5 прошло)
Остановите программу, нажав CTRL+C, потом посмотрите на каталог /tmp/nfcap-test
$ ls -l /tmp/nfcap-test


Вы должны увидеть один или несколько файлов вида nfcapd.<YEAR><MON><DAY><HR><MIN>

Пропустите файл(ы) через nfdump:


nfdump -r /tmp/nfcap-test/nfcapd.201Ywwxxyyzz | less
nfdump -r /tmp/nfcap-test/nfcapd.201Ywwxxyyzz -s srcip/bytes

Настройка сбора netflow с cisco
https://mikbill.blogspot.com/2018/09/netflow-cisco.html

По фильтрам:
https://nsrc.org/workshops/2014/caren-nsrc-dante/raw-attachment/wiki/Agenda/exercise3-nfsen-top-talkers-vRU.htm 

Инфа по установке, настройке
http://voipnotes.ru/lovim-netflow-pri-pomoshi-nfdump-i-nfsen/

Подключение карт google
http://sourceforge.net/projects/surfmap/

По установке, профили по графикам
http://www.natalink.ru/articles/analiz_statistiki_netflow_pri_pomoschi_nfsen

Возможности nfsen на русском
https://nsrc.org/workshops/2014/caren-nsrc-dante/raw-attachment/wiki/Agenda/nfsen-vRU.pdf

Описание
http://meetings.ripe.net/ripe-50/presentations/ripe50-plenary-tue-nfsen-nfdump.pdf

Неплохой мануал по установке(делал плагин Portracker)

Еще по установке
https://voipnotes.ru/lovim-netflow-pri-pomoshi-nfdump-i-nfsen/

Установка сенсора fprobe (Debian)
  • apt-get install fprobe
  • nano /etc/default/fprobe
INTERFACE="any"
FLOW_COLLECTOR="localhost:9001"
OTHER_ARGS="-fip"


Строчка INTERFACE указывает, что следует перехватывать трафик на всех доступных интерфейсах.

FLOW_COLLECTOR указывает IP-адрес и порт, на котором коллектор будет принимать UDP-пакеты.

OTHER_ARGS указывает прочие опции. В данном случае указан фильтр, отбирающий только IP-пакеты (ARP-пакеты учитываться не будут).

проверяем
ps ax|grep fprobe


Сенсор микротик

Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка