Установка и использование Nfdump

Nfdump — набор инструментов для сбора и обработки данных netflow.

Для установки Nfdump в Ubuntu/Debian выполним:

sudo apt-get install nfdump

В CentOS:

sudo yum install nfdump

nfdump состоит из:
nfcapd — получает сетевые данные netflow и сохраняет их в файлы.
nfdump — читает данные netflow из файлов.
nfprofile — читает данные netflow из файлов с использованием фильтров и сохраняет результат в файл.
nfreplay — читает данные netflow из файлов и отправляет их на другой узел сети.
nfclean.pl — скрипт для очистки старых данных.
ft2nfdump — читает и конвертирует данные.

По сути если вы будете устанавливать nfsen, то он сам запустит nfcapd.

Но для примера покажу как можно вручную запустить nfcapd и посмотреть собранные данные:

mkdir /tmp/nfcap-test
nfcapd -E  -p 9001 -l /tmp/nfcap-test
CTRL+C
ls -l /tmp/nfcap-test
nfdump -r /tmp/nfcap-test/nfcapd.* | less
nfdump -r /tmp/nfcap-test/nfcapd.* -s srcip/bytes

Посмотреть запущенные процессы nfcapd можно командой:

ps auxwww | grep nfcapd

Замечу что по умолчанию после установки запускается nfcapd, слушает порт 2055 и пишет данные в /var/cache/nfdump.

Покажу еще несколько примеров просмотра статистики:

nfdump -r /var/cache/nfdump/nfcapd.202001292351 -c 100
nfdump -o raw -r /var/cache/nfdump/nfcapd.202001292351
nfdump -r /var/cache/nfdump/nfcapd.202001292351 -c 100 'proto tcp and ( src ip
172.17.5.21 or dst ip 172.17.5.22 )'
nfdump -r /var/cache/nfdump/nfcapd.202001292351 'proto tcp and ( src ip 172.17.5.21 and dst port 80 or dst port 443 and dst ip 192.168.1.5 )'
nfdump -M /srv/nfsen/profiles-data/live/upstream1/2020/01/30:/srv/nfsen/profiles-data/live/upstream1/2020/01/30 -R nfcapd.202001300000:nfcapd.202001300455 -s record -n 20 -o extended

Просмотр всех файлов в указанной директории:

nfdump -R /var/cache/nfdump/ 'proto tcp and (dst port 80 or dst port 443)'

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

nfdump -R /srv/nfsen/profiles-data/live/upstream1/2020/04/06/ 'proto tcp and src ip 192.168.5.5 and (dst port 80 or dst port 443)' > file.txt

Если NAT IP адреса тоже записываются, то можно через grep также отфильтровать по NAT IP:

nfdump -R /srv/nfsen/profiles-data/live/upstream1/2020/04/06/ 'proto tcp and src ip 192.168.5.5 and (dst port 80 or dst port 443)' | grep "10.10.5.5" > file.txt

Весь TCP трафик по конкретному IP адресу:

nfdump -R /srv/nfsen/profiles-data/live/upstream1/2020/04/06/ 'proto tcp and src ip 192.168.5.5' > tcp_flows_src.txt
nfdump -R /srv/nfsen/profiles-data/live/upstream1/2020/04/06/ 'proto tcp and dst ip 192.168.5.5' > tcp_flows_dst.txt

Можно также преобразовать IP адреса в домены:

nfdump -R /srv/nfsen/profiles-data/live/upstream1/2020/04/06/ 'proto tcp and src ip 192.168.5.5' | perl -i -p -e 'use Socket; s#(\d{1,3}(\.\d{1,3}){3})\b#gethostbyaddr(inet_aton($1), AF_INET) or sprintf($1)#egi' > 06.04.2020_all_tcp_resolved.txt

Так как nfcapd коллектор, то нужно еще настроить сенсор который будет передавать ему данные, например fprobe или настроить netflow на каком нибудь коммутаторе.

Убедимся что nfdump запускается при запуске операционной системы:

systemctl is-enabled nfdump
systemctl enable nfdump
systemctl status nfdump

Если используется iptables, то откроем порт для сенсора:

iptables -A INPUT -s 192.168.5.5/32 -p udp --dport 2055 -j ACCEPT

Смотрите также мои статьи:

Оставьте комментарий

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