Iftop : visualisation en temps réel des connexions

Lors d'une de mes vadrouilles à la recherche d'outils de monitoring, je suis tombée sur un que je ne connaissais pas et qui simplifie pas mal la vie : il s'agit de iftop. Iftop permet d'afficher à la manière de top l'état des connexions. Son fonctionnement est le suivant : il écoute le trafic réseau sur une interface donnée ou sur la première qu'il détecte si aucune n'est spécifiée. Il en déduit et affiche la table de l'utilisation de la bande passante, organisée par paire d'host (une source, une destination). Iftop peut également prendre en argument des expressions afin de filtrer le trafic. Ces expressions peuvent porter sur le sous-réseau, les IP, les ports, les protocoles, bref les éléments principaux d'un paquet. Un exemple de filtrage pour visualiser toutes les communications destinées au port 22 :
$ ifport -f "port 22"
12.5Kb       25.0Kb   37.5Kb    50.0Kb       62.5Kb
????????????????????????????????????????????????????????????????????????????
*:39957       => *:ssh                          640b    928b   1.37Kb
<=                                              2.12Kb  3.08Kb  5.11Kb

????????????????????????????????????????????????????????????????????????????
TX:             cumm:  22.2KB   peak:   7.66Kb                                                                             rates:    640b    928b   1.37Kb
RX:                    66.0KB           29.1Kb                                                                                      2.12Kb  3.08Kb  5.11Kb
TOTAL:                 88.2KB           36.8Kb                                                                                      2.75Kb  3.99Kb  6.48Kb
Pour pouvoir monitorer tout le trafic, il doit pouvoir tourner sous un utilisateur ayant les privilèges de le faire, et comme qui peut le plus peut le moins, root fera très bien l'affaire. Par défaut, iftop opérera la résolution des IP; ce qui implique une surcharge du réseau et donc d'apparaître dans le monitoring. Pour éviter ce cas de figure, il est possible de spécifier à iftop un filtre qui écarterait ce type de trafic, pour tel host et tel service. On peut également mentionner explicitement la non résolution des adresses dynamiquement (R), ou bien au lancement de la commande (-n).

Installation

Ce qui est bien avec ce petit utilitaire, c'est qu'il est intégré dans la plupart des distributions. Il est donc facile de passer outre l'installation manuelle des dépendances en jouant avec votre gestionnaire de package favori. Néanmoins, pour ceux qui n'auraient pas cette chance, ou bien qui désirent être au plus prêt du code original, il est possible de rapatrier les sources du projets. L'installation pour les puristes du genre sera donc :
$ wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
$ tar zxf iftop-0.17.tar.gz && cd iftop-0.17
$ ./configure && make
$ make install
Et hop ! C'est installé !

Un peu de pratique ?

Ici, dynamiquement, nous avons demandé de masquer la source et la destination, mais sachez que par défaut, l'ensemble des connexions et des IP source et destination s'afficheront devant vous (sinon ce ne serait pas intéressant). Juste à titre d'information, les options que j'utilise sont :
  • -p : port display
  • -n : pas de hostname lookup
  • -N : pas de résolution du numéro de port
$ iftop -p -N -n

* :8116     => *:8116     0b      0b      0b
            <=        1.44Mb  1.50Mb  1.38Mb
* :49756    => *:8100  266Kb   275Kb   255Kb
            <=            0b      0b      0b
* :2152     => *:2152     0b      0b      0b
            <=        8.50Kb  3.99Kb  3.29Kb
* :138      => *:138      0b      0b      0b
            <=        6.98Kb  3.41Kb  1.31Kb
* :8200     => *:8200 2.75Kb  2.54Kb  2.54Kb
            <=            0b      0b      0b
* :137      => *:137      0b      0b      0b
            <=        1.52Kb  1.95Kb  1.20Kb
* :49449    => *:8649 5.77Kb  1.15Kb   312b
            <=            0b      0b      0b
* :46706    => *:8649     0b   1.02Kb   377b
            <=            0b      0b      0b
* :17500    => *:17500    0b      0b      0b
            <=        1.09Kb   922b    839b
* :696      => *:2049     0b    483b   1.70Kb
            <=            0b    406b    714b
* :35999    => *:8649     0b    858b    231b

            <=            0b      0b      0b
* :37316    => *:8649     0b    723b    312b

            <=            0b      0b      0b

??????????????????????????????????????????????????????????????????????????????

TX:   cumm:   454KB   peak:   66.4Kb   rates:    160b   1.42Kb  17.6Kb

RX:          67.5MB           2.61Mb             1.74Mb  1.79Mb  1.76Mb

TOTAL:       67.9MB           2.68Mb             1.74Mb  1.80Mb  1.77Mb

Conclusion

Au final, on a, presqu'en temps réel, toute l'activité du réseau que notre carte peut capter. Rappelons tout de même que sur un réseau switché, les équipements crées dynamiquement des VLAN entre 2 hosts, empêchant toute consommation inutile de la bande passante et réduisant par là même les tentative de sniff. Cela explique notamment que même en passant votre carte en promiscuous comme le fait iftop, vous n'aurez pas beaucoup de données à exploiter -sauf si vous avez la main sur / vous faites passer pour la gateway du réseau. Par contre, ce n'est pas le cas ni des réseaux hub, ni du WIFI, où chaque client peut écouter ce qui passe sur l'Access Point. Ca plus la facilité de cassage d'une clé (WEP, WPA-PSK), je vous laisse imaginer l'ampleur du trou de sécurité du Wifi. Mais ceci sort du contexte de l'article...
Vus : 1015
Publié par K-Tux : 59