wiki/Howtonfdump.md

132 lines
4.1 KiB
Markdown
Raw Normal View History

2017-03-28 02:06:39 +02:00
# Howto nfdump
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
* Documentation nfdump : <http://nfdump.sourceforge.net/>
* Documentation NfSen : <http://nfsen.sourceforge.net/>
* manpage nfdump(1) : <https://manpages.debian.org/jessie-backports/nfdump/nfdump.1.html>
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
**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.
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
## Installation
2016-12-29 11:25:39 +01:00
~~~
2017-01-14 00:06:38 +01:00
# apt install nfdump
2017-03-28 02:06:39 +02:00
$ nfdump -V
nfdump: Version: 1.6.13
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
## nfcapd pour collecter les flows
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
Il faut au préalable [avoir configuré l'export des flows sur vos routeurs](HowtoOpenBSD/Netflow).
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
On peut ainsi lancer le démon **nfcapd** en configurant via `/etc/default/ndump` :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
nfcapd_start=yes
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
Par défaut, il écoute en UDP/9995 et stocke les données _Netflow_ dans `/var/cache/nfdump`
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
On peut bien sûr configurer d'autres options, exemple d'une façon de le lancer :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
$ 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
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
## nfdump pour analyser les flows
On peut utilise **nfdump** en ligne de commande :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
$ nfdump -M /var/cache/dump [-R file1:file2] [FILTRE] [options]
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
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_
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 :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
## 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
## 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
2016-12-29 11:25:39 +01:00
2017-03-28 02:06:39 +02:00
## Lister les flows en agrégeant par proto,srcip,dstip,dstport :
# nfdump -M /var/cache/nfdump -R . -A proto,srcip,dstip,dstport
2017-01-03 11:20:35 +01:00
2017-03-28 02:06:39 +02:00
## top 10 des ports utilisés entre deux machines
# nfdump -M /var/cache/nfdump -R . 'host 192.0.2.1 and 192.0.2.1' -s port -n 10
## 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
2016-12-29 11:25:39 +01:00
~~~
2017-03-28 02:06:39 +02:00
2017-03-29 15:17:50 +02:00
## NfSen & nfdump
2017-03-28 02:06:39 +02:00
2017-03-29 15:17:50 +02:00
### Installer le module PERL Socket6
~~~
perl -MCPAN -e 'install Socket6'
~~~
### Installer nfdump
~~~
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
~~~
### Installer nfsen
~~~
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
~~~