Login Logout

Howto nfdump

nfdump est un outil pour gérer des données 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.

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 <LISTE> : agrège les flows, exemples : -A proto,srcip,dstip, -A proto,srcip,dstport
  • -t <intervalle> : 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 <IP>' : limite à une adresse IP
  • '[src|dst] net <net>' : limite à un sous-réseau
  • '[src|dst] port <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