6. Analyse à distance

Lorsque l'on exploite une infrastructure de serveurs avec plusieurs périmètres réseau cloisonnés, il est fréquent de devoir procéder à des captures réseau à distance. De plus, la plupart des serveurs récents sont des lames qui n'ont ni clavier ni écran. Voici donc un exemple de scénario capture réseau réalisée sur un hôte distant exploitée ensuite sur un poste de travail ayant une interface graphique.

Dans la suite de copies d'écran suivante, on considère les éléments suivants :

  • Le poste de travail sur lequel l'analyse est effectuée en mode graphique après collecte du fichier de capture est appelé <my_laptop.myothernet>.

  • Le serveur lame sans écran ni clavier sur lequel la capture réseau est réalisée est appelé <my_distant_server.mynet>. On y accède via une console sécurisée SSH.

  • On suppose que les deux hôtes ont un compte utilisateur me. Le compte utilisateur sur le serveur doit disposer des droits nécessaire à la capture de trames sur les interfaces réseau du serveur. Ces droits sont gérés avec sudo.

  • On utilise l'application tshark qui permet d'exécuter l'analyse réseau directement à la console sans recours à une interface graphique. Cette application est fournie par le paquet Debian du même nom. Voir le résultat de la commande $ apt-cache show tshark pour obtenir les informations sur ce paquet.

  • Les indications données ci-dessous ne peuvent se substituer aux pages de manuels de l'application. Il est vivement conseillé de les consulter pour adapter l'analyse réseau à ses besoins : man tshark.

Connexion au serveur depuis le poste de travail

Comme indiqué ci-avant, on accède au serveur via une console sécurisée SSH. À partir le Windoze, l'outil putty permet d'effectuer la même opération.

me@<my_laptop>:~$ ssh me@<my_distant_server.mynet>

Linux <my_distant_server> 2.6.15 #1 SMP Mon Mar 13 14:54:19 CET 2006 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
Last login: Tue Mar 21 10:45:38 2006 from <my_laptop.myothernet>

me@<my_distant_server>:~$
Lancement de la capture réseau dans un nouveau shell

Un utilisateur «normal» n'ayant pas les droits suffisants pour accéder directement aux interfaces réseau, on doit lancer l'analyseur de réseau via sudo : $ sudo tshark.

On lance cette commande dans un nouveau shell en ajoutant le symbole & à la fin de la ligne. De cette façon, on conserve la possibilité de lancer d'autres commandes sur la console obtenue lors de la connexion au serveur.

me@<my_distant_server>:~$ sudo tshark -q -i _eth0 -w distant.pcap \
  -a filesize:4096 tcp and ! host <my_laptop.myothernet> &
  • L'option -q rend la capture «silencieuse». Il s'agit surtout de supprimer l'affichage du compte des paquets enregistrés pendant la capture. Cet affichage est gênant si l'on souhaite conserver la console pour effectuer d'autres manipulations en cours de capture.

  • L'option -i _eth0 désigne l'interface réseau sur laquelle la capture est réalisée.

  • L'option -w distant.pcap désigne le fichier dans lequel les paquets capturés sont enregistrés. Sans spécification du format de fichier avec l'option -F, les paquets capturés sont enregistrés directement (mode raw).

  • L'option -a filesize:4096 donne le critère d'arrêt de l'enregistrement. Ici, le critère retenu est la taille du fichier de capture. Cette taille est comptabilisée en multiple du kilooctet (1024 octets) ; soit 4096ko dans cet exemple.

  • Les options suivantes correspondent au filtrage à priori des paquets à enregistrer. On spécifie le protocole de transport tcp et on n'enregistre pas les paquets de l'hôte qui à ouvert la console sécurisée : ! host <my_laptop.myothernet>. Sans cette dernière précaution, l'enregistrement ne contiendra pratiquement que les échanges SSH. Ces échanges sont sans intérêt puisqu'ils correspondent aux communications entre les deux hôtes utilisés pour l'analyse distante.

«Initiation» du trafic réseau à capturer.

Cette commande n'est qu'un prétexte pour remplir le fichier de capture. Avec le téléchargement d'une image des sources du noyau Linux, on est sûr de faire transiter un volume suffisant ;-).

me@<my_distant_server>:~$ wget \
  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2
--11:14:29--  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2
           => `linux-2.6.16.tar.bz2'
Résolution de kernel.org... 204.152.191.5, 204.152.191.37
Connexion vers kernel.org|204.152.191.5|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 40 845 005 (39M) [application/x-bzip2]

100%[===============//=====================>] 40 845 005   296.19K/s    ETA 00:00

11:16:58 (292.09 KB/s) - « linux-2.6.16.tar.bz2 » sauvegardé [40845005/40845005]
Fin de la capture et visualisation du fichier

Comme indiqué ci-avant, l'enregistrement s'arrête lorsque le fichier atteint la taille de 4096ko.

[1]+  Done  sudo tshark -q -i _eth0 -w distant.pcap \
                 -a filesize:4096 tcp and ! host <my_laptop.myothernet>

me@<my_distant_server>:~$ ls -lAh
-rw-------  1 root latu   4,1M 2006-03-21 11:14 distant.pcap
-rw-r--r--  1 latu latu    39M 2006-03-20 07:22 linux-2.6.16.tar.bz2

me@<my_distant_server>:~$ sudo chmod 640 distant.pcap

me@<my_distant_server>:~$ exit
logout
Connection to <my_distant_server.mynet> closed.

L'enregistrement sur fichier ayant été réalisé avec l'identité du super-utilisateur via la commande sudo, il faut changer le masque des permissions de ce fichier ou son propriétaire. Dans cet exemple, c'est le masque des permissions d'accès qui a été étendu pour que l'utilisateur normal puisse lire le fichier de capture et le transférer sur son poste de travail.

Récupération du fichier de capture sur le poste de travail
me@<my_laptop>:~$ scp me@<my_distant_server.mynet>:~/distant.pcap .
distant.pcap                                      100% 4097KB 682.8KB/s   00:06

me@<my_laptop>:~$ wireshark -r distant.pcap

La commande scp illustre le transfert du fichier de capture réseau via SSH. On peut effectuer la même opération à partir de Windoze avec l'outil WinSCP.

Enfin, il est possible de lire le fichier de capture directement au lancement de l'analyseur réseau avec l'option -r.