Utiliser Wireshark sous Debian
02 Jun 2012Wireshark est un outil incontournable pour connaître les paquets qui transitent sur le réseau. Mais on se retrouve vite bloqué à cause d’un problème de droits.
En effet, en démarrant wireshark
avec un compte utilisateur non-root,
l’interface graphique s’affiche, mais il est impossible de capturer les trames :
aucune interface réseau n’est disponible.
Devant ce problème, que fait l’utilisateur pressé ? Il démarre wireshark
en
root, bien sûr (c’est ce que je faisais sous Ubuntu) ! Eh bien pas de
chance :
$ sudo wireshark
No protocol specified
(wireshark:27210): Gtk-WARNING **: cannot open display: :0
Déjà, c’est bien fait pour lui : on n’essaie pas de démarrer une interface graphique en root !
Mais comment faire alors ? En non-root on ne peut pas capturer, en root on ne peut pas démarrer…
Alors on lit la doc, qui propose deux solutions :
less /usr/share/doc/wireshark/README.Debian
EDIT : Une troisième solution, donnée en commentaire, me semble encore meilleure :
Utiliser dumpcap pour capturer
Avec cette méthode, il faut d’abord capturer les paquets réseau et les sauver
dans un fichier, grâce à dumpcap
(en root), puis ouvrir ce fichier dans
wireshark
(non-root).
Pour démarrer la capture de l’interface eth0
dans le fichier
/tmp/mycapture
:
sudo dumpcap -i eth0 -w /tmp/mycapture
Pour connaître la liste des interfaces réseau capturables :
$ sudo dumpcap -D
1. eth0
2. wlan0
3. nflog (Linux netfilter log (NFLOG) interface)
4. any (Pseudo-device that captures on all interfaces)
5. lo
Ctrl+C arrête la capture.
Le fichier généré n’est lisible que par root. Avant de l’ouvrir dans Wireshark, il faut donc changer ses droits :
sudo chmod +r /tmp/mycapture
C’est la méthode configurée par défaut sous Debian.
Autoriser les utilisateurs non-root
Si on souhaite à la fois capturer et analyser à partir de Wireshark (et
permettre les captures “en live”), sans passer par dumpcap
en ligne de
commande, il faut autoriser les utilisateur non-root à capturer des paquets.
Pour cela :
sudo dpkg-reconfigure wireshark-common
Ce qui affiche :
┌─────────────────────┤ Configuration de wireshark-common ├──────────────────────┐
│ │
│ Dumpcap peut être installé afin d'autoriser les membres du groupe │
│ « wireshark » à capturer des paquets. Cette méthode de capture est préférable │
│ à l'exécution de Wireshark ou Tshark avec les droits du superutilisateur, car │
│ elle permet d'exécuter moins de code avec des droits importants. │
│ │
│ Pour plus d'informations, veuillez consulter │
│ /usr/share/doc/wireshark-common/README.Debian. │
│ │
│ Cette fonctionnalité constitue un risque pour la sécurité, c'est pourquoi │
│ elle est désactivée par défaut. En cas de doute, il est suggéré de la laisser │
│ désactivée. │
│ │
│ Autoriser les utilisateurs non privilégiés à capturer des paquets ? │
│ │
│ <Oui> <Non> │
│ │
└────────────────────────────────────────────────────────────────────────────────┘
Après avoir répondu Oui, tous les utilisateurs du groupe wireshark
(aucun,
par défaut) seront autorisés à capturer les paquets.
Remarque : un programme non-root sera donc en théorie capable de savoir tout ce qui passe sur le réseau (déjà qu’il est capable de connaître tout ce qui est tapé au clavier).
Il ne reste donc plus qu’à ajouter son compte utilisateur au groupe
wireshark
:
sudo addgroup $USER wireshark
Cette modification ne sera prise en compte qu’après une reconnexion du compte utilisateur (il faut donc fermer la session et en démarrer une nouvelle).
gksu wireshark marche très bien aussi x)