La surveillance du réseau facile avec NetFlow, ntopng et VMware !

NetFlow est une technologie intéressante quand il s’agit d’avoir une vue sur le trafic de son infrastructure de virtualisation. À l’origine, comme vous le savez, il s’agit d’une technologie Cisco qui a été rendue publique par l’équipementier sous la forme de RFC.

NetFlow rend possible l’analyse fine du trafic réseau, notamment sur les informations de niveau 3 (version, IP source, IP destination, TOS, …) et 4 (port source, port de destination, protocole, …). L’avantage est que ces données NetFlow décrivant les flux réseaux peuvent être envoyées sans répliquer le trafic réseau à destination du collecteur, il s’agit ici uniquement d’envoyer des données qui décrivent ce trafic. Nul besoin ici de mode promiscious qui pourrait poser des soucis de sécurité.

Même si VMware supporte NetFlow dans ses vDS nativement, l’étape la plus compliquée reste la mise en place d’un collecteur et d’un tableau de bord administrateur. Cependant, ce n’est pas si compliqué qu’il n’y parait, c’est ce que nous allons voir dans cet article !

Choix de la technologie 

Souhaitant avoir un applicatif fonctionnant sur un serveur libre et également un logiciel de préférence libre, mon choix s’est porté sur ntopng, qui peut collecter les données NetFlow par le biais de nProbe.

Installation d’une machine virtuelle dédiée

Je dispose ici une machine virtuelle Debian Wheezy dotée d’1 vCPU et de 1 Go de mémoire vive.

Installation de ntopng

Pour faciliter la mise en place et la mise à jour du logiciel ntop, j’utilise ici le repository officiel ntop. Pour l’installer, voici la procédure (par ailleurs décrite dans la page officielle http://packages.ntop.org/apt-stable/) :

On télécharge un package .deb à installer pour installer le repository et installer la clef GPG de ce dernier.

wget http://apt-stable.ntop.org/wheezy/all/apt-ntop-stable.deb
dpkg -i apt-ntop-stable.deb

Vous devez également mettre à jour votre configuration APT pour permettre l’installation de certains composants. Pour ce faire, vous devez y ajouter les backports correspondants de votre distribution à l’aide de la commande suivante :

grep -q "wheezy-backports" /etc/apt/sources.list || echo "deb http://ftp.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list

Une fois cette configuration effectuée, vous pouvez lancer la commande pour mettre à jour les repositories et lancer l’installation de ntopng et nprobe :

apt-get update && apt-get install ntopng nprobe

Configuration de nProbe

La configuration de nProbe est générique et doit être comme suit. Créez le fichier /etc/nprobe/nprobe-none.conf avec le contenu suivant : 

--zmq="tcp://*:5556"
--collector-port=2055
-n=none
-i=none
-V 9

La dernière ligne mentionne la version de NetFlow à utiliser, ici la version 9.

Creez enfin le fichier nprobe-none.start pour permettre le démarrage de cette instance à l’aide la commande suivante :

touch /etc/nprobe/nprobe-none.start

Configuration de ntopng

Pour permettre à ntopng de communiquer avec nprobe, vous devez changer le paramètre — interface dans le fichier de configuration /etc/ntopng/ntopng.conf comme suit :

-G=/var/run/ntopng.pid
--interface="tcp://127.0.0.1:5556
--local-networks="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
--https-port "3001"
--http-port "0"

Dans le détail, l’argument –interface permet de spécifier l’interface sur laquelle ntopng va écouter. Par cette définition, on interconnecte ntopng avec nProbe.

Le paramètre –local-networks permet d’identifier les réseaux locaux. J’ai spécifié ici les réseaux type RFC1918 sur les trois classes d’IP (A,B,C) usuelles, vous pouvez faire des définitions plus précises (/24 par exemple) si vous souhaiter avoir des rapports détaillés sur tel ou tel sous-réseau.

Les paramètres –https-port et –http-port me permettent de modifier le comportement par défaut de ntopng. J’impose ici l’utilisation d’une connexion HTTPS à l’interface de gestion sur le port 3001. La mention 0 concernant le port HTTP indique à ntopng de désactiver l’accès au tableau de bord par ce biais.

Vérification des services de démarrage

Par le biais de commandes Linux, je demande le démarrage de l’ensemble des services au démarrage de la machine virtuelle. 

update-rc.d pf_ring defaults
update-rc.d ntopng defaults
update-rc.d nprobe defaults
update-rc.d redis-server defaults

Cependant, ntopng ayant des difficultés à démarrer, le fichier de log /var/log/ntopng/ntopng.log nous indique pourquoi, ici le serveur Redis n’étant pas démarré :

24/Mar/2017 15:31:49 [Redis.cpp:95] ERROR: ntopng requires redis server to be up and running

Après inspection du script de démarrage de ntopng, il apparaît que la dépendance avec redis-server n’était pas spécifiée, ce qui explique que l’ordre de démarrage posait problème.

Corrigeons ce problème dans le fichier /etc/init.d/ntopng en rajoutant dans la ligne « required-start » comme suit :

# Required-Start:    $local_fs $remote_fs $network $syslog $pf_ring redis-server

On remet à jour les dépendances à l’aide de la même commande :

update-rc.d ntopng defaults

Il ne nous reste plus qu’à activer NetFlow sur notre vDS et notre groupe de ports.

Activation de NetFlow sur un vDS et sur les groupes de ports

Pour commencer, nous allons aller dans les préférences du vDS pour y spécifier les informations du collecteur NetFlow.
 

Puis, activez la surveillance NetFlow sur les groupes de ports de votre choix.

Connexion au tableau de bord

La connexion s’effectue par défaut à l’aide du (fameux) couple login / mot de passe admin/admin.

Vous devriez voir les flux apparaître en cliquant sur la partie Flows.

Le but de cet article n’étant pas de vous décrire nTopng en lui-même, je vous laisse aller fouiller dans ses différentes sections, sachez que c’est un outil plus que complet !

J’espère néanmoins que cet article vous aura permis de voir qu’il est très facile de mettre en place cette solution dans le cadre d’un environnement VMware déjà existant.

Et un petit quiz pour la route, à votre avis, à quoi correspond les 4 premières lignes, représentant le trafic le plus important en termes de volume ?

Il s’agit de … vSAN !

— Julien

Sources :

Julien BERTON

VMware and Cisco g33k!

Leave a Reply