Dans un précédant article, nous avions abordé l'analyse des flux réseau via le protocole NetFlow. Des outils en ligne de commande avaient été présentés pour afficher des rapports sur les informations remonté par les sondes.
Il existe également une interface Web nommée NFSen dont nous allons parler aujourd'hui.
Les pré-requis
On doit avoir sur sa machine GNU/Linux:
- NFDump correctement installé (version 1.5.7 ou supérieure)
- Un serveur Web supportant le PHP (Apache ou bien Cherokee)
- Perl (normalement en standard)
- et enfin quelques librairies:
sudo aptitude install rrdtool librrds-perl
Installation de NFSen
On commence par télécharger la dernière version (1.3.2) de NFSen dans un répertoire de travail:
cd ~/src/ wget http://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.2/nfsen-1.3.2.tar.gz?use_mirror=freefr
On décompresse:
tar zxvf nfsen-1.3.2.tar.gz cd nfsen-1.3.2/
NFSen est livré avec un script Perl d'auto installation. Il y a quelques manipulations à faire avant de lancer le script. Je détaille pas mais le coeur y est...
sudo useradd -m nfsen sudo passwd nfsen sudo usermod -G www-data nfsen sudo mkdir /var/www/nfsen sudo chown -R nfsen:www-data /var/www/nfsen
On édite ensuite le fichier de configuration ./etc/nfsen.conf (à partir du fichier nfsen-dist.conf):
cp ./etc/nfsen-dist.conf ./etc/nfsen.conf vi ./etc/nfsen.conf
On change les lignes suivantes:
$BASEDIR = "/opt/nfsen"; $PREFIX = "/usr/bin"; $USER = "nfsen"; $WWWUSER = "nfsen"; $WWWGROUP = "www-data"; %sources = ( 'monrouteur' => { 'port' => '9996', 'col' => '#0000ff', 'type' => 'netflow' } );
On peut ensuite lancer le script d'installation:
sudo ./install.pl etc/nfsen.conf
On peut vérifier que l'arborescence de NFSen a bien été créée dans le répertoire /opt/nfsen et dans /var/www/nfsen:
ls -alF /opt/nfsen/ total 28 drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 bin drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 etc drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 libexec drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 plugins drwxrwxr-x 3 nfsen www-data 4096 2010-03-18 09:09 profiles-data drwxrwxr-x 3 nfsen www-data 4096 2010-03-18 09:09 profiles-stat drwxrwxr-x 6 nfsen www-data 4096 2010-03-18 09:09 var ls -alF /var/www/nfsen/ total 316 -rw-r--r-- 1 root www-data 45019 2010-03-18 09:09 alerting.php -rw-r--r-- 1 root www-data 24139 2010-03-18 09:09 colour_palette.html -rw-r--r-- 1 root www-data 3318 2010-03-18 09:09 colour_picker.html -rw-r--r-- 1 root root 142 2010-03-18 09:09 conf.php drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 css -rw-r--r-- 1 root www-data 57987 2010-03-18 09:09 details.php drwxr-xr-x 3 root www-data 4096 2010-03-18 09:09 doc drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 icons drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 js -rw-r--r-- 1 root www-data 1177 2010-03-18 09:09 lookup.php -rw-r--r-- 1 root www-data 4130 2010-03-18 09:09 navigator.php -rw-r--r-- 1 root www-data 21613 2010-03-18 09:09 nfsen.php -rw-r--r-- 1 root www-data 21541 2010-03-18 09:09 nfsen.php.orig -rw-r--r-- 1 root www-data 17666 2010-03-18 09:09 nfsenutil.php -rw-r--r-- 1 root www-data 3868 2010-03-18 09:09 overview.php -rw-r--r-- 1 root www-data 2740 2010-03-18 09:09 pic.php drwxr-xr-x 2 root www-data 4096 2010-03-18 09:09 plugins -rw-r--r-- 1 root www-data 4005 2010-03-18 09:09 process.php -rw-r--r-- 1 root www-data 56991 2010-03-18 09:09 profileadmin.php -rw-r--r-- 1 root www-data 1389 2010-03-18 09:09 rrdgraph.php
Dans le but de lancer NFSen comme un service Linux, il est nécessaire de créer le lien symbolique suivant:
sudo ln -s /opt/nfsen/bin/nfsen /etc/init.d/nfsen
Enfin pour forcer le lancement de NFSen au boot de la machine:
sudo update-rc.d nfsen defaults
Lancement du démon NFSen
Pour lancer le daemon en tache de fond, il suffit de saisir la commande suivante:
sudo /etc/init.d/nfsen start
Remarque Attention, avant de lancer NfSen, il faut s'assurer que NFDump n'est pas lancé. En effet, c'est NfSen qui va lancer NfDump... Sinon vous risquez d'avoir l'erreur suivante: "Receive socket error: could not open the requested socket".
Il est possible d'avoir l'état du démon NFSen avec la commande:
sudo /etc/init.d/nfsen status NfSen version: 1.3.2 NfSen status: Collector for 'upstream1' is running: 20335. Collector for 'peer1' is running: 20338. nfsen daemon: pid: [20340] is running.
Modification des sources Netflow
La liste des sources Netflow se trouve dans le fichier /opt/nfsen/etc/nfsen.conf. La syntaxe est assez simple:
# Netflow sources # Define an ident string, port and colour per netflow source # # Required parameters: # ident identifies this netflow source. e.g. the router name, # Upstream provider name etc. # port nfcapd listens on this port for netflow data for this source # set port to '0' if you do not want a collector to be started # col colour in nfsen graphs for this source # # Optional parameters # type Collector type needed for this source. Can be 'netflow' or 'sflow'. Default is netflow # optarg Optional args to the collector at startup # # Syntax: # 'ident' => { 'port' => '<portnum>', 'col' => '<colour>', 'type' => '<type>' } # Ident strings must be 1 to 19 characters long only, containing characters [a-zA-Z0-9_]. %sources = ( 'monrouteur' => { 'port' => '9996', 'col' => '#0000ff', 'type' => 'netflow' }, 'monautrerouteur' => { 'port' => '9997', 'col' => '#0000ff', 'type' => 'netflow' } );
Une fois le fichier de configuration modifié, il faut recharger la configuration NFSen grâce à la commande:
sudo /etc/init.d/nfsen reconfig NfSen version: 1.3.2 NfSen status: Collector for 'monrouteur' is running: 21514. nfsen daemon: pid: [21516] is running.
Configuration de l'interface Web
Maintenant que le démon tourne en tache de fond de notre machine, il s'occupe de récupérer les Netflow venant de nos routeurs grâce à NFDump. Il nous reste à configurer notre serveur Web pour "présenter" les rapports.
Par exemple sous Cherokee, il suffit de créer le serveur virtuel nfsen qui pointe vers la racine /car/www/nfsen.
Utilisation de l'interface Web NFSen
On pointe sont navigateur vers l'URL du serveur http://monserveur/nfsen/nfsen.php
L'interface NFSen devrait s'afficher !
Quelques informations complémentaires
Il est toujours possible de traiter les fichiers de données Netflow en ligne de commande. Les fichiers en question se trouve dans le répertoire /opt/nfsen/profiles-data/live/<nomdurouteur>.
Par exemple la ligne de commande suivante permet d'afficher de manière textuelle la liste des flux:
</p> <p style="text-align: left;">nfdump -R /opt/nfsen/profiles-data/live/monrouteur -o extended -a</p> <p style="text-align: left;">
Sources pour la rédaction de cet article: