Table des matières

Ntopng, l'ange gardien de votre système d'information

Problématique: Est-il possible de surveiller une application dans un réseau ?

En ces temps de télétravail, les entreprises sont obligées de trouver des solutions pour contrôler leurs postes à distance. Pour cela le réseau doit être suffisamment performant pour traiter cette nouvelle demande, c'est pourquoi le projet est née. Nous allons mettre en place un système de monitoring réseau plus performant afin de calculer la bande passante utilisée par une application à différent points du réseau d’une entreprise. De la récupération des paquets, à la visualisation des courbes de métrologie, nous avons dû trouver des outils compatibles fonctionnant avec différentes distributions tel que Debian, FreeBSD ainsi qu'OpenWRT.

Nous avions 2 possibilités pour capturer le trafic réseau, les PCAP ou Netflow. Pour un monitoring avec le plus de détails possible, il faut que nous utilisions les deux dispositifs. Ayant une seule application à surveiller, nous avons choisi seulement Netflow pour limiter l'impact du monitoring sur le réseau. Netflow est un protocole réseau développé par Cisco qui permet de capturer des données (flux IP) passant sur une interface réseau. Un bridge a été créé entre un PC et l'extérieur du réseau afin que la sonde soit “transparente” pour l'ordinateur. Ainsi, tous les paquets du bridge seront capturés par la sonde et pourront être analysés.

Pour interpréter ces données, nous avons dû choisir un “Netflow analyzer”. Nos besoins étaient:

Le solution de SolarWind permettait de voir en direct le trafic capturé, mais ne permettait pas une rétention des données et la création de rapport. Ntopng remplissait parfaitement ces conditions avec sa version d'essai. Cet outil peut:

  1. Afficher le trafic réseau.
  2. Analyse le trafic IP (host, destination).
  3. Utilisation des protocoles réseaux.
  4. Exportation des données surveillées (MySQL, InfluxDB).

A cette étape là, nous avons fait le choix de notre protocole de capture et de notre interpréteur. Il faut trouver alors les liants qui vont transporter ces données Netflow.

Pour commencer, nous allons réaliser une infrastructure afin de capturer le trafic d'un ordinateur:

public:diagram1.png

Les échanges réseau nécessaires à l'affichage de données:

Création des sondes réseaux

ipt_NETFLOW

Nous avions le choix entre 2 outils: Softflowd et ipt_NETFLOW. Sur la sonde Débian, nous avions un mot d'ordre: la rapidité. Basé sur iptables, ipt_NETFLOW est un module d'exportation de données de flux Netflow. Il est connu pour sa grande rapidité d'export étant un module kernel. Nous allons installer le package iptables-netflow-dkms, et configurer alors notre iptables.

#Configuration d'IPTABLES
iptables -I OUTPUT -j NETFLOW
iptables -I INPUT -j NETFLOW
iptables -I FORWARD -j NETFLOW
 
#Lancement d'ipt_NETFLOW
modprobe ipt_NETFLOW destination=127.0.0.1:2055 promisc=1 protocol=10
 
#promisc=1: Acceptation par la carte réseau de tous les paquets
#protocol=10: Protocol Netflow IPFIX

Gecobox

Nous allons installer le package Softflowd (directement disponible dans la liste des plugins) et le configurer à l'aide de l'interface graphique de la Gecobox

OpenWRT

Pour openWRT nous allons également installer Softflowd, et modifier son fichier de configuration.

Fichier de configuration de Softflowd sur OpenWRT

#Location:/etc/sysconfig/softflowd
# Enable = 1 | Disable = 0
    option enabled '1'
    
# L'interface qui sera écouté
    option interface 'eth0 '
    option pcap_file ''
    option timeout ''
    
# Débit max des flows/seconde
    option max_flows '8192'
    
# Configuration de l'adresse de notre collecteur 
     option host_port '172.20.44.58:2057'
     
# Configuration de la version des exports 
     option export_version '9'

# Informations retournées selon le modèle OSI 
     option tracking_level 'full' #full = 7

Création d'un collecteur ZMQ

Netflow2ng

Le collecteur nous permet de:

ce collecteur doit être capable de gérer un flux important de données d'où le choix de ZMQ qui permet des gérer un grand nombre de flux, en ouvrant et fermant plusieurs de ces threads.

Nous allons installer le collecteur à partir du Github

#Nous allons exécuter le fichier binaire
./netflow2ng/netflow2ng-v0.0.2-8-g887b99b-linux-x86_64 &
[1] 2000 
INFO[0000] Starting netflow2ng
INFO[0001] Started ZMQ listener on: tcp://*:5556
INFO[0001] Listening on UDP :2055                        Type=NetFlow
 
#Nous pouvons ajouter des options à l'exécution du collecteur
 
./netflow2ng/netflow2ng-v0.0.2-8-g887b99b-linux-x86_64 & -port 2056 -zmq.listen tcp://*:5557
# -port: port d'écoute du NetFlow
# -zmq.listen: écoute toutes les adresses sur le port 5556 pour transmettre les données  

Notre sonde est prête à collecter et envoyer des données sur Ntopng. La dernière étape, installer Ntopng sur une machine différente.

Installation Ntopng

Nous allons ajouter le repository de Ntop afin d'installer Ntopng: https://packages.ntop.org/

Nous allons modifier le fichier de configuration de Ntopng pour démarrer sur plusieurs sockets TCP qui correspondent aux adresses de nos collecteurs. Une fois sauvegardé, nous redémarrons le service.

#location: /etc/ntopng/ntopng.conf
-G=/var/run/ntopng.pid
 
#Collecteur ipt_netflow
-i=tcp://172.20.44.58:5556
 
#Collecteur PfSense
-i=tcp://172.20.44.58:5557
 
#Collecteur OpenWRT
-i=tcp://172.20.44.58:5558
 
#Port d'écoute pour l'interface web
-w=3000
 
#Rétention des données dans une base de données MySQL
-F "mysql;localhost;ntopng;flowsv4;usr;pwd"

Voici Ntopng avec les données de la sonde Débian:

Sur cette page là, nous affichons les données de MySQL. Ainsi nous allons pouvoir trier les flows selon différents critères:

Ainsi nous pouvons alors isoler un seul protocole, ici Teamviewer sur son port 5938.

Cette image nous montre les flux Teamviewer avec le temps de la session, le débit max/moyen/min.

Grafana

Pour une meilleure visualisation de la bande passante, nous allons utiliser Grafana qui est un outils de génération de tableaux de bord.

Pour faire la liaison de Ntopng avec Grafana, nous allons utiliser InfluxDB.

InfluxDB est une base de données orientée haute performante (comme notre collecteur ZMQ), afin d'enregistrer les flows reçus, comme notre BdD MySQL.

Dans un premier temps, nous allons installer InfluxDB sur la machine de Ntopng.

#Packages à installer pour InfluxDB: influxdb influxdb-client influxdb-dev

Nous allons à présent faire la configuration d'InfluxDB sur Ntopng et Grafana.

Configuration sur Ntopng.

Configuration sur Grafana.

Après configurations des différents graphiques, nous obtenons.

Exemple de configuration d'un graphique.

Conclusion

Finalement avec une sonde, un collecteur et Ntopng, nous pouvons surveiller le trafic global d'un réseau d'entreprise (sa bande passante) et ainsi prévenir les éventuelles perturbations. De plus, une analyse fine de ce trafic est possible avec l'identification des applications, comme nous l'avons vu avec Teamviewer. Ainsi nous pouvons déclarer apte ou non, une solution de contrôle à distance viable pour le système d'information. Cette solution pourrait être appliquée dans le cadre de l'infogérance proposée par Geco-IT afin de monitorer tous les clients.