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
Смотрите также мои статьи:
- Установка и настройка fprobe
- Установка и запуск ipt_NETFLOW
- Установка и использование softflowd
- Установка и использование flow-tools
- Настройка NetFlow на Cisco
- Установка и использование Nfsen