NtopNG version 2.4 : Installation

Télécharger la version 2.4 Stable par : 
https://sourceforge.net/projects/ntop/files/ntopng/ntopng-2.4-stable.tar.gz/dow… 
Les pré-requis de la 2.2 (voir article précédent) sont déjà installés, on va essayer de compiler la 2.4 directement : 
./autogen.sh 
Qui se passe bien et nous invite à lancer "configure". 
./configure 2>&1 | tee LOG.CONFIGURE 
Qui semble se dérouler sans accroc et nous rappelle de lancer "make geoip" avant d'utiliser le logiciel. On le lance tout de suite pour être sûr de ne pas oublier ! Cela se dépêche de charger les fichiers de maxmind (IPV4 et IPV6), puis on lance le make final : 
make 2>&1 | tee LOG.MAKE 
Et ... tout se termine correctement.  
Donc si vous avez installé les pre-requis de la version 2.2 il n'y aura probablement aucun problème lors de la compilation. 
Avant de lancer la nouvelle version on détruit les tables de notre user "NtopNG" de la base Mysql car ce n'est pas la meme structure de tables (1 table par interface en 2.2) et quelques champs supplémentaires. 
Comme indiqué en fin de compilation il est aussi possible de générer un paquet (RPM ou DEB) et cette option est même conseillée. A part un petit problème avec la "clef" qui déclenche une petit erreur, le package Debian se génère parfaitement et je l'ai installé sur une autre machine. Je vous conseille cette méthode, tout est expliqué dans le message ... :

cd packages/ubuntu 
./configure 
make 
........ 
Processing ../ntopng_2.4.161017-1373_amd64.deb... 
gpg: error reading key: public key not found 
gpg: no default secret key: secret key not available 
gpg: /tmp/debsigs-ng.eP5yVK/digests: clearsign failed: secret key not available 
E: Signing failed. Error code: 512 
Makefile:10: recipe for target 'ntopng' failed 
make: *** [ntopng] Error 1

L'erreur ne gêne pas la réalisation du paquet, elle ne concerne que la signature,  qui est alors disponible dans le répertoire ".../packages" : 
-rw-r--r-- 1 root root     698 oct.  17 22:42 ntopng_2.4.161017-1373_amd64.changes 
-rw-r--r-- 1 root root 4903998 oct.  17 22:42 ntopng_2.4.161017-1373_amd64.deb

On peut aussi procéder de manière traditionnelle, un petit "su root" et on lance le non moins traditionnel : 
make install 2>&1 | tee LOG.INSTALL 
et on relance le service sans changer nos paramètres de la version 2.2 : 
service ntopng start 
Pour rappel le fichier cd config "/etc/ntopng/ntopng.conf" est minimal : 
-G=/var/tmp/ntopng.pid 
-F=mysql;localhost;ntopng;flows;userntop;passntop 
Le fichier log (/var/log/ntopng/ntopng.log) nous signale que tout va bien et que tous les interfaces sont pris en compte. 
Du coté de la base Mysql seules deux tables on été créées :

show tables; 
+------------------+ 
| Tables_in_ntopng | 
+------------------+ 
| flowsv4          | 
| flowsv6          | 
+------------------+ 
2 rows in set (0.00 sec)

L'analyse sera plus simple qu'en 2.2 car seules deux tables contiennent les données. Changement important dans la structure, les volumes échangés (bytes) sont subdivisés en IN_BYTES et OUT_BYTES. 
Les interfaces étant en mode "promiscuous" tous les paquets passant sur le réseau aux alentours de vos interfaces sont enregistrés. 
La zone "INFO" contient souvent des infos intéressantes, notamment pour le protocole DNS. Le champ INTERFACE_ID permet de repérer les différents interfaces, le champ NTOPNG_INTERFACE_NAME contient le nom de la machine d'origine, on pourra ainsi utiliser une seule base Mysql pour plusieurs capteurs NtopNG. Le numéro de VLAN est enregistré, ici c'est toujours zéro car je n'utilise pas de VLAN sur mon tout petit réseau. 
Pour le champ "PROTOCOL" c'est le standard (TCP = 6, UDP = 17, ICMP = 1) on trouve cela dans tous les bons Wikipedia. 
Attention, le volume de données dans la base est assez conséquent, sur un réseau un peu fréquenté on dépassera rapidement les 200 000 rangs prévoir le stockage adéquat ! 
Il faudra aussi prévoir une petite purge des tables au cas ou celle de Ntop ne soit pas suffisante. Il faut ensuite faire un peu de SQL pour exploiter les données enregistrées. 
Après quelques minutes d'activité vous devriez voir quelques rangs dans votre base Mysql, pour commencer essayez  le scripts SQL suivant :

select inet_ntoa(IP_SRC_ADDR) as IP_SRC, 
inet_ntoa(IP_DST_ADDR) as IP_DST,L4_DST_PORT, 
sum(IN_BYTES) as IN_BYTES,sum(OUT_BYTES) as OUT_BYTES,PACKETS 
from flowsv4 
where IP_DST_ADDR not in (inet_aton('127.0.0.1'),inet_aton('192.168.1.31') ) 
group by IP_SRC_ADDR, IP_DST_ADDR,L4_DST_PORT 
order by IP_SRC

ou encore celui-ci :

SELECT INTERFACE_ID,L7_PROTO,inet_ntoa(IP_SRC_ADDR) as IPSRC,L4_SRC_PORT, 
inet_ntoa(IP_DST_ADDR) as IP_DST,L4_DST_PORT, 
IN_BYTES,OUT_BYTES,PACKETS, 
FROM_UNIXTIME(FIRST_SWITCHED),FROM_UNIXTIME(LAST_SWITCHED), 
INFO,JSON 
FROM ntopng.flowsv4 
order by FIRST_SWITCHED,IP_SRC_ADDR

qui devraient vous afficher les résultats de manière claire et avec des adresses lisibles !