--- title: Howto nfdump --- * Documentation nfdump : * Documentation NfSen : * manpage nfdump(1) : **nfdump** est un outil pour gérer des données [Netflow](HowtoOpenBSD/Netflow). On l'associe en général à **nfcapd** un démon chargé de collecter les _Netflow_ et parfois à **NfSen** qui permet une utilisation via une interface web. ## Installation ~~~ # apt install nfdump $ nfdump -V nfdump: Version: 1.6.13 ~~~ ## nfcapd pour collecter les flows Il faut au préalable [avoir configuré l'export des flows sur vos routeurs](HowtoOpenBSD/Netflow). On peut ainsi lancer le démon **nfcapd** en configurant via `/etc/default/ndump` : ~~~ nfcapd_start=yes ~~~ Par défaut, il écoute en UDP/9995 et stocke les données _Netflow_ dans `/var/cache/nfdump` On peut bien sûr configurer d'autres options, exemple d'une façon de le lancer : ~~~ $ nfcapd -w -D -p 9996 -u foo -g www-data -B 200000 -S 1 -P /var/run/nfcapd-p9996.pid -z -I routeur -l /srv/nfdump/routeur ~~~ ## nfdump pour analyser les flows On peut utilise **nfdump** en ligne de commande : ~~~ $ nfdump -M /var/cache/dump [-R file1:file2] [FILTRE] [options] ~~~ Options utiles pour **lister** les flows : * `-c N` : limite à N flows * `-b` : agrège les flows aller/retour (bi-directional) * `-A ` : agrège les flows, exemples : **-A proto,srcip,dstip**, **-A proto,srcip,dstport** * `-t ` : limite à un intervalle précis, exemple _-t 2011/03/26.22:35:10-2011/03/26.22:36:03_ * `-o line6` : afficher les adresses IPv6 entièrement (au lieu d'une forme tronquée telle que 2001:db8..000::58) Options utiles pour **trier** les flows : * `-s ip/flows -n 10` : top 10 des adresses IP qui sont concernés par le + de flows * `-s ip/packets -n 10` : top 10 des adresses IP qui sont concernés par le + de paquets * `-s ip/bytes -n 10` : top 10 des adresses IP qui sont concernés par le + d'octets > *Note* : on peut remplacer `ip` par srcip,dstip,port,srcport,dstport… Filtres _tcpdump_ que l'on peut ajouter pour limiter les flows listés/triés : * `'proto tcp'` : limite au protocole TCP * `'[src|dst] host '` : limite à une adresse IP * `'[src|dst] net '` : limite à un sous-réseau * `'[src|dst] port '` : limite à un port > *Note* : ces filtres se combinent avec AND, OR et des parenthèses pour les priorités Quelques exemples utiles : ~~~ ## Lister tous les flows # nfdump -M /var/cache/nfdump -R . ## Lister tous les flows issus de plusieurs répertoires # nfdump -M /srv/nfdump/routeur1:routeur2:routeur3 -R . ## Lister les flows d'une date à une autre # nfdump -M /var/cache/nfdump -R 2017/02/21/nfcapd.201702211030:2017/03/10/nfcapd.201703101030 ## Sur OpenBSD il semble qu'on ne puisse pas utiliser l'option -M dans cette commande # nfdump -R /var/cache/nfdump/2017/02/21/nfcapd.201702211030:2017/03/10/nfcapd.201703101030 ## Lister les flows concernant l'UDP et l'IP 8.8.8.8 avec agrégation bi-directionnel # nfdump -M /var/cache/nfdump -R . 'proto udp and host 8.8.8.8' -b ## Lister les flows en agrégeant par proto,srcip,dstip,dstport : # nfdump -M /var/cache/nfdump -R . -A proto,srcip,dstip,dstport ## top 10 des ports utilisés entre deux machines en fonction du nombre ## de flows # nfdump -M /var/cache/nfdump -R . 'host 192.0.2.1 and host 192.0.2.2' -s port -n 10 ## Sur OpenBSD il semble que l'ordre des arguments soit important # nfdump -M /var/cache/nfdump -R . -s port -n 10 'host 192.0.2.1 and host 192.0.2.2' ## top 10 des IPs source avec le plus de trafic # nfdump -M /var/cache/nfdump -R . -s srcip/bytes -n 10 ## top 10 des IPs ayant générés le plus de flow vers TCP/80 d'une machine # nfdump -M /var/cache/nfdump -R . 'proto tcp and dst host 192.0.2.1 and dst port 80' -s srcip/flows ~~~ ## NfSen **NfSen** est un outil pour gérer les _Netflow_ via une interface web, il permet notamment : * de lancer plusieurs **nfcapd** pour collecter les _Netflow_ de plusieurs routeurs * de lancer la commande _nfdump_ avec des options de manière « graphique » * d'avoir des graphes par flows/paquets/octets par seconde avec des filtres tcpdump * de créer des alertes en fonction de seuils / filtres tcpdump ### Installation NfSen On installe NfSen **et** nfdump à partir des sources : ~~~ # perl -MCPAN -e 'install Socket6' $ wget https://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz/download $ tar zxvf nfdump-1.6.13.tar.gz $ cd nfdump-1.6.13 $ ./configure --enable-nfprofile --enable-nftrack $ make # make install $ wget https://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.8/nfsen-1.3.8.tar.gz/download $ tar zxvf nfsen-1.3.8.tar.gz $ cd ./nfsen-1.3.8 # cp etc/nfsen-dist.conf /etc/nfsen.conf # vim /etc/nfsen.conf # mkdir -p /opt/nfsen/data/nfsen # mkdir -p /opt/nfsen/www # adduser nfsen # adduser nfsen www-data # chown -R nfsen:www-data /opt/nfsen # ./install.pl /etc/nfsen.conf # cd /opt/nfsen/data/nfsen/bin/ #./nfsen start ~~~