Darkstat

DarkStat est un outil de monitoring réseau simple et léger. Il présente ses résultats via une interface web par des graphiques simplifiés avec leurs statistiques sommaires (min/moy/max) et d’un récapitulatif du trafic pour les différentes adresses IP ayant eu une connexion avec la machine surveillée.

Il a une très faible utilisation mémoire et processeur et ne vient donc pas entamer les précieuses ressources de votre machine, c’est une raison pour laquelle il est notamment utilisé dans certains systèmes embarqués comme ceux de routeurs ou firewalls.

Je suis tombé dessus en cherchant ntop dans la liste des paquets disponibles et j’ai trouvé très malin d’avoir mis cette phrase dans la description: « It is known to be smaller (in terms of memory footprint) and stabler than ntop » :D ;)

Darkstat suit, à mon avis, la logique K.I.S.S., qui fait qu’il est vraiment très simple à utiliser et comblera des besoins standards. Si vous avez besoins d’outils plus poussés, vous pouvez aller regarder du côté de ntop, MRTG, Nagios, etc… (il y a plus de détails et de possibilités, mais c’est plus lourd).

Bref c’est parfait pour une petite machine et des statistiques de base.

L’interface Web

L’interface web des résultats que collecte Darkstat est très simplifiée (plus que dans la version 2) et se résume à deux pages principales: les graphiques et les hôtes.

Les graphiques et leurs statistiques:
Darkstat Graphiques
En quatre panneaux pour résumer le trafic entrant et sortant en quatre périodes de temps: minute, heure, journée et mois.
Bon il n’y a pas grand chose à voir sur ma capture d’écran, car Darkstat ne tourne que depuis quelques heures sur cette machine.

En déplaçant la souris sur chaque barre une bulle d’information apparaît, affichant les détails:
Darkstat graphique détails

La liste des adresses IP classée par ordre descendant de la quantité de trafic réseau:
Darkstat Liste

Le détail pour une IP précise:
Darkstat détail IP

Les options

Bien qu’étant simple, il dispose néanmoins de quelques options qu’il est possible de passer soit via la ligne de commande, soit via le fichier de configuration /etc/darkstat/init.cfg (ce que je recommande dans le cas d’un lancement automatique de Darkstat au démarrage de la machine).

Vous n’avez qu’à définir l’interface réseau à écouter. Ensuite si votre machine fait office de routeur/passerelle sur votre réseau (en précisant la classe d’adresse et le netmask), vous pouvez décider d’analyser tout le trafic y transitant. Il est possible également de filtrer pour ne surveiller que certain types de trafic réseau en utilisant la syntaxe de tcpdump.

Les options principales:

-i interface
L’interface réseau à surveiller. C’est la seule option obligatoire.

–verbose
Affiche les messages de debugage dans le terminal.
–no-daemon
Reste au premier plan dans le terminal.
–no-promisc
Ne pas utiliser le mode promiscuous pour la capture. Cependant, cela n’est pas recommandé, car « darkstat » ne pourra capturer et analyser que les paquets qui sont adressés à l’adresse MAC de l’interface réseau. Tous les autres paquets sont rejetés (conseil glané ici).
–no-dns
Pas de résolution DNS des adresses IP
-p port
Port pour le serveur web embarqué. Par défaut le port est 667.
-b bindaddr
Adresse IP pour le serveur web embarqué. Par exemple, mettre 127.0.0.1 si vous souhaitez ne rendre accessible vos stats que sur la machine locale. Par défaut le serveur web est accessible sur toutes les interfaces réseau et adresses IP de la machine.
-f filter
Expressions de filtrage de paquets à passer à libpcap. Pour la syntaxe des filtres, se reporter à la documentation de tcpdump.
-l network/netmask
Definit quel est le « réseau local » par rapport aux adresses réseau et masque de réseau (ex: 10.0.0.0/255.0.0.0). Tout le trafic entrant et sortant de ce réseau sera surveillé, contrairement au mode par défaut où seul le trafic avec l’hôte local est surveillé. Option à n’utiliser donc que sur une machine faisant office de routeur.

Options permettant de limiter le nombre de données qui seront conservées en mémoire:

–hosts-max count
Le nombre maximum d’hôtes qui seront conservés dans la table des hôtes.
–hosts-keep count
Lorsque la table des hôtes atteint son maximum (–hosts-max) et que du trafic est détecté pour un nouvel hôte, la table des hôtes est nettoyée pour ne conserver que le top (–hosts-keep) classé par quantité de trafic total.
–ports-max count
Le nombre maximum de ports qui seront enregistrés pour chaque hôte.
–ports-keep count
Lorsque la table des ports est remplie, ce nombre de ports est conservé et le reste et ignoré.
–highest-port port
Les ports supérieurs à ce nombre n’apparaîtront pas dans les détails des ports pour chaque hôte, bien que leur trafic restera compté. Cela peut permettre de cacher les ports éphémères. Par défaut tous les sont surveillés.

Il est possible de sauvegarder un log journalier avec l’option:
–daylog filename

Au démarrage et à l’extinction, Darkstat importe et exporte son fichier où il stocke ses données (cela se configure automatiquement lorsque le fichier /etc/init.d/darkstat est créé à l’installation), mais il est possible de le préciser soi-même:
–import filename
–export filename

Pour exemple, voici mon fichier d’options /etc/darkstat/init.cfg où seuls les options « START_DARKSTAT=yes », le port du serveur web, et l’interface réseau à surveiller sont configurés:

# Turn this to yes when you have configured the options below.
START_DARKSTAT=yes

# Don't forget to read the man page.

# You must set this option, else darkstat may not listen to
# the interface you want
INTERFACE="-i eth2"

PORT="-p 55000"
#BINDIP="-b 127.0.0.1"
#LOCAL="-l 10.0.0.0/255.0.0.0"
#DNS="--no-dns" Don't reverse reolve IPs to host names

Installation

Il est disponible (sous le nom darkstat) dans les dépôts Debian et de moultes autres distributions, je pense. (Attention la version actuelle pour Lenny est la v3.0.708, qui ne comporte pas les légendes des graphiques, donc à compiler à partir des sources de la version supérieure si vous souhaitez avoir ces légendes).
apt:darkstat

L’installation à partir des sources demande un certain nombre de dépendances (comme libpcap) et de paquets -dev, donc réservé à ceux qui savent ce qu’ils font.

Liens:
- Le site du projet Darkstat
- Le manpage pour la version 3
- Documentation en français pour la v2 (à l’heure où j’écris ces lignes Darkstat en est à la v3.0.711, mais ça peut toujours être utile)