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 grahique.
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.
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>:~$
Un utilisteur «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 ajouant 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.cap \ -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.cap désigne le fichier dans
lequel les paquets capturés sont enregsitré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'enregsitre 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.
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]
Comme indiqué ci-avant, l'enregistrement s'arrête lorsque le fichier atteind la taille de 4096ko.
[1]+ Done sudo tshark -q -i _eth0 -w distant.cap \
-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.cap
-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.cap
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.
me@<my_laptop>:~$ scp me@<my_distant_server.mynet>:~/distant.cap . distant.cap 100% 4097KB 682.8KB/s 00:06 me@<my_laptop>:~$ wireshark -r distant.cap
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.
Vous êtes ici :