Wireshark est un outil puissant, mais il a ses limites. À moins que vous ne disposiez d’un équipement réseau professionnel, il est difficile d’analyser le trafic qui n’implique pas votre ordinateur. Parfois, la solution la plus simple consiste à utiliser tcpdump pour capturer le trafic sur le serveur distant, puis à exécuter Wireshark pour l’examiner..
Que sont Wireshark et tcpdump?
Wireshark est un analyseur de protocole, un logiciel qui capture et présente les données circulant sur votre réseau de manière lisible. À l’aide de Wireshark, vous pouvez analyser les entrées et sorties des services réseau et des applications Web.
Bien que Wireshark fasse un excellent travail de capture de chaque paquet qui le traverse, dans certains cas, vous devrez analyser une session à partir d’un serveur distant. Sauf si vous disposez d’un équipement réseau spécial, cela peut être difficile. Parfois, il est plus facile de capturer le trafic sur le serveur distant, puis de l’analyser sur votre bureau.
tcpdump est un analyseur de paquets en ligne de commande. Il n’est pas aussi facile à utiliser que Wireshark, mais il est tout aussi capable de capturer du trafic. Étant donné que tcpdump s’exécute en mode terminal, il est possible de le lancer via une session SSH. Avec les options de ligne de commande appropriées, vous pouvez exporter une session tcpdump compatible avec Wireshark.
SolarWinds fait passer Wireshark au niveau supérieur
Wireshark et tcpdump sont de puissants utilitaires, mais ils ont quelques points faibles. En particulier, il est très difficile d’identifier les problèmes de latence sur votre réseau en utilisant Wireshark prêt à l’emploi. Par exemple, vous pourriez souffrir de temps de ping élevés sur votre réseau local et Wireshark ne peut pas faire grand-chose pour vous aider..
Visionneuse de temps de réponse SolarWinds pour Wireshark (OUTIL GRATUIT)
Dans ce cas, je recommande Visionneuse de temps de réponse SolarWinds pour Wireshark. Ce plugin étend Wireshark, vous permettant de diagnostiquer la cause des pics de ping et de la vitesse globale du réseau lent.
SolarWinds Response Time Viewer for WiresharkDownload 100% FREE Tool
Moniteur de performances réseau SolarWinds (ESSAI GRATUIT)
SolarWinds constitue également une excellente solution tout-en-un pour votre réseau. Cela s’appelle le Moniteur de performances réseau (NPM), et facilite grandement l’administration d’un réseau. Par exemple, à l’aide de SolarWinds Network Performance Monitor, vous pouvez surveiller et gérer votre réseau local sans fil, générer une référence de performances et recevoir des alertes de sécurité en temps réel.
Moniteur de performances réseau SolarWinds est disponible pour essayer sans risque pendant 30 jours. Inscrivez-vous gratuitement ici.
SolarWinds Network Performance MonitorTéléchargez la version d’essai gratuite de 30 jours
Avant que tu commences
Pour suivre les instructions de ce guide, vous aurez besoin des éléments suivants:
- Un ordinateur distant avec un serveur SSH et tcpdump installés
- Accès root
- Services qui génèrent du trafic réseau, comme Apache ou node.js, exécutés sur l’ordinateur distant
- Un ordinateur local avec un client SSH et Wireshark installé
L’objectif est d’utiliser tcpdump sur l’ordinateur distant, via SSH, pour capturer le trafic réseau. Ensuite, le trafic capturé peut être copié sur l’ordinateur local pour analyse avec Wireshark.
Ceci est utile lorsque vous n’avez pas d’accès physique à l’ordinateur distant ou que vous l’exécutez «sans tête», c’est-à-dire sans clavier ni moniteur.
Capture de paquets avec tcpdump
Pour capturer le trafic avec tcpdump, vous devez vous connecter à l’ordinateur distant via SSH. Vous aurez également besoin d’un accès root, sinon le tcpdump ne pourra pas capturer le trafic et vous verrez une erreur indiquant Vous n’êtes pas autorisé à capturer sur cet appareil.
Une fois connecté, exécutez la commande suivante pour commencer à capturer le trafic avec tcpdump:
sudo tcpdump -s 0 -i eth0 -w tcpdump.pcap
Les options de ligne de commande que j’ai utilisées pour capturer cette session seront expliquées ci-dessous. En bref, la commande ci-dessus capturera tout le trafic sur le périphérique Ethernet et l’écrira dans un fichier nommé tcpdump.pcap dans un format compatible avec Wireshark.
Une fois la capture du trafic terminée, mettez fin à la session tcpdump avec Ctrl + C. Vous verrez une courte lecture affichant des informations sur la session de capture.
Avant de pouvoir copier le trafic de votre ordinateur distant vers l’ordinateur local pour analyse avec Wireshark, vous devez modifier les autorisations. Par défaut, les sessions tcpdump capturées par la racine utilisée ne peuvent pas être copiées. Utilisez cette commande:
sudo chmod 644 tcpdump.pcap
Cela vous permettra de copier le fichier sur votre ordinateur local à l’aide de scp, comme indiqué à l’étape suivante.
Copie d’une session tcpdump pour analyse
Une fois que vous avez terminé une session de capture avec tcpdump, vous vous retrouvez avec un problème. Comment le copiez-vous sur la machine exécutant Wireshark pour analyse? Il existe de nombreuses façons, mais je pense que le plus simple est avec scp. Étant donné que vous avez déjà capturé des paquets sur une machine sans tête utilisant SSH, tout ce dont vous avez besoin pour utiliser scp est déjà installé et en cours d’exécution.
Les utilisateurs de Windows devront télécharger pscp, puis copier le fichier dans C: \ Windows \ System32. La plupart des utilisateurs de Mac et Linux ont déjà tout ce dont ils ont besoin.
Sous Mac ou Linux, ouvrez une fenêtre de terminal et exécutez la commande suivante pour copier le fichier de capture de session:
scp [email protected]: / chemin / vers / fichier ./
Ou sous Windows, ouvrez PowerShell et exécutez cette commande:
pscp.exe [email protected]: / chemin / vers / fichier. \
Remplacez par vos informations le cas échéant. Vous serez invité à saisir votre mot de passe. Les commandes que j’ai utilisées sont dans la capture d’écran ci-dessus pour référence.
Vérifiez que le fichier a été copié comme prévu et vous êtes prêt à analyser la session tcpdump avec Wireshark.
Analyse d’une session tcpdump capturée avec Wireshark
L’analyse fonctionne de la même manière qu’avec n’importe quelle capture Wireshark traditionnelle; la seule chose que vous devez savoir est comment importer le fichier.
Démarrez Wireshark, puis importez la session tcpdump capturée à l’aide de Fichier -> Ouvert et recherchez votre fichier. Vous pouvez également double-cliquer le fichier de capture pour l’ouvrir dans Wireshark, tant qu’il a l’extension de fichier * .pcap. Si vous avez utilisé le -w lorsque vous exécutez tcpdump, le fichier se charge normalement et affiche le trafic.
Dans mon cas, j’exécute un serveur Apache sur l’hôte distant et je souhaite consulter les données HTTP. J’ai défini le filtre de vue Wireshark approprié et je peux parcourir les images capturées comme d’habitude.
À titre de test, j’ai intégré un élément dans le code HTML qui ne s’affiche pas sur la page. Je devrais pouvoir le localiser dans le flux de données et le visualiser avec Wireshark.
Comme vous pouvez le voir, Wireshark est capable d’analyser chaque image et d’afficher très bien les données. L’élément que j’ai caché apparaît dans l’exemple ci-dessus. Le processus de capture est un peu plus complexe lorsque vous utilisez tcpdump, mais tout dans Wireshark fonctionne comme d’habitude.
Utilisation des options de ligne de commande pour tcpdump
La plupart du temps, lorsque vous lancez tcpdump, vous souhaitez contrôler la façon dont vous capturez les paquets et l’emplacement de stockage de la session. Vous pouvez contrôler des choses comme ça en utilisant les options de ligne de commande. Ce sont quelques-unes des options de ligne de commande les plus utiles pour tcpdump.
tcpdump -w
le -w L’option de ligne de commande active la sortie compatible Wireshark. Il prend une seule variable, qui est le nom du fichier de sortie. Les journaux de capture enregistrés à l’aide de cette option ne seront pas lisibles par l’homme en dehors de Wireshark, car ils sont stockés en binaire plutôt qu’en ASCII.
tcpdump -C
le -C L’option de ligne de commande vous permet de définir une taille de fichier maximale en octets. Cette option fonctionne uniquement avec -w. Par exemple, la commande tcpdump -C 1048576 -w capture.pcap spécifie une taille de capture maximale de 1 Mo (1 048 576 octets) en sortie dans le fichier capture.pcap.
Si la session génère une plus grande quantité de sortie, elle créera de nouveaux fichiers pour la stocker. Ainsi, une capture de 3 Mo générerait capture.pcap, capture1.pcap, et capture2.pcap chacun avec une taille de fichier de 1 Mo.
tcpdump -s
le -s L’option de ligne de commande définit une longueur maximale pour chaque paquet en octets et tronque le paquet lorsque le maximum est atteint. La commande tcpdump -s 0 définit une longueur illimitée pour garantir que le paquet entier est capturé.
tcpdump -i
le -je L’option de ligne de commande spécifie le périphérique réseau que vous souhaitez que tcpdump surveille. Si aucune interface n’est spécifiée, il s’agit par défaut de l’interface la moins numérotée en cours d’exécution.
tcpdump -list-interfaces
L’option de ligne de commande tcpdump -list-interfaces affichera une liste de toutes les interfaces disponibles pour attacher tcpdump. Notez que cela ne démarre pas une session de capture, mais cela vous donnera une liste d’interfaces à utiliser avec le -je option ci-dessus.
tcpdump -c
le -c L’option de ligne de commande indique à tcpdump de quitter la session après avoir capturé un nombre spécifié de paquets.
tcpdump -n
le -n l’option de ligne de commande indique à tcpdump ne pas pour résoudre les adresses IP en noms d’hôtes. Ceci est utile lors du dépannage de sites Web derrière un serveur d’équilibrage de charge, et dans une poignée d’autres cas, l’utilisation d’un nom d’hôte donnerait des résultats ambigus.
tcpdump -v | -vv | -vvv
Les trois options de ligne de commande, -v, -vv, et -vvv vous permet d’augmenter la verbosité de votre session de capture. -v enregistrera les valeurs TTL pour chaque paquet, ainsi que les informations ToS. -vv affichera TTL et ToS ainsi que des informations supplémentaires dans les paquets NFS. Et -vvv enregistrera tout ce que font les deux premières options, ainsi que des informations supplémentaires sur les sessions Telnet.
tcpdump -F
le -F L’option de ligne de commande indique à tcpdump d’utiliser des filtres de capture à partir du fichier spécifié. Vous trouverez plus d’informations sur l’écriture d’un fichier de capture dans la section suivante.
Utilisation de filtres de capture pour tcpdump
Les filtres de capture vous permettent d’affiner les données stockées par tcpdump dans une session. Ils constituent un moyen utile de simplifier l’analyse et de conserver des fichiers de capture de petite taille. Voici quelques-uns des filtres de capture les plus utiles pour tcpdump.
hôte
Ce filtre spécifie que seul le trafic à destination et en provenance de l’hôte cible doit être capturé. Il prend une adresse IP ou un nom d’hôte comme argument.
net
Le filtre réseau indiquera à votre ordinateur de capturer uniquement le trafic sur un sous-réseau donné et prend une adresse IP comme argument. Par exemple, 192.168.1.0/24 spécifie que le trafic vers ou depuis tous les hôtes du sous-réseau sera capturé. Notez qu’un masque de sous-réseau en notation barre oblique est requis.
hôte dst
Semblable à hôte, ce filtre de capture spécifie que seul le trafic avec une destination de l’hôte donné sera capturé. Il peut également être utilisé avec net.
hôte src
Comme ci-dessus, mais ce filtre capture uniquement le trafic provenant de l’hôte ou de l’adresse IP spécifiés. Il peut également être utilisé avec net.
Port
Ce filtre indique à tcpdump de capturer le trafic vers et depuis un numéro de port donné. Par exemple, port 443 capturera le trafic TLS.
portrange
Semblable au filtre de port, portrange établit une gamme de ports sur lesquels le trafic est capturé. Pour utiliser le filtre de portrange, spécifiez le port de départ et le port de fin séparés par un tiret. Par exemple, portrange 21-23.
passerelle
Le filtre de passerelle spécifie que votre ordinateur ne doit capturer que le trafic qui utilise un nom d’hôte donné comme passerelle. Le nom d’hôte doit être trouvé dans / etc / hosts.
diffuser
Le filtre de diffusion spécifie que tcpdump ne doit capturer que le trafic diffusé à tous les hôtes d’un sous-réseau.
Multidiffusion IP
Ce filtre indique à tcpdump de capturer uniquement le trafic de multidiffusion sur le sous-réseau de la machine hôte.
et / ou / non opérateurs
Les filtres peuvent être enchaînés ensemble à l’aide du et, ou, ou pas les opérateurs. Par exemple, pour capturer tout le trafic Web sur un hôte donné, vous pouvez utiliser le filtre port 80 ou port 443. Ou vous pouvez capturer tout le trafic sur un sous-réseau donné à l’exception des paquets de diffusion en utilisant le filtre net 192.168.1.0/24 et non diffusé.
Il est très courant d’utiliser des opérateurs de filtrage dans la pratique car ils fournissent une couche supplémentaire de granularité à vos captures. Vous pouvez capturer exactement le trafic dont vous avez besoin, sans beaucoup de bavardage réseau supplémentaire.
Expressions complexes avec plusieurs opérateurs
Des expressions encore plus complexes peuvent être construites en entourant plusieurs opérations dans des apostrophes et des parenthèses uniques. Par exemple, vous pouvez surveiller tout le trafic de messagerie, y compris SMTP, IMAP, IMAP sur TLS, POP3 et POP3 sur TLS, sur plusieurs hôtes et sous-réseaux, à l’aide d’une commande comme celle-ci:
tcpdump ‘(hôte 10.0.0.1 et net 192.168.1.0/24) et ((port 25 ou port 143 ou port 443 ou port 993 ou port 995))’
Les expressions complexes avec plusieurs opérateurs peuvent être très utiles, mais elles sont généralement enregistrées dans un fichier de filtre pour être réutilisées car une seule faute de frappe entraînera l’échec de la capture. Souvent, ils devront être préparés à l’avance et débogués.
Utilisation de fichiers de filtres pour tcpdump
Les filtres ci-dessus peuvent être exécutés sur la ligne de commande lorsque tcpdump est lancé, mais il est souvent utile de créer un fichier de filtre. Un fichier de filtre facilite la reproduction des paramètres de filtre entre les captures car il est réutilisable. Voici les étapes pour écrire et utiliser un fichier filtre.
Écrire le fichier filtre
Les fichiers de filtre utilisent exactement la même notation que la ligne de commande. Ils ne nécessitent aucun caractère spécial ni nombre magique en haut du fichier.
Par exemple, voici un fichier de filtre que j’ai écrit qui capturera tout le trafic Web sortant de mon serveur Apache vers un hôte donné. Dans ce cas, le Chromebook sur lequel j’écris.
Tant que le fichier est lisible par l’utilisateur exécutant tcpdump, le programme tentera de tout analyser dans le fichier de filtre et de l’utiliser comme filtre valide. Lorsqu’un le fichier de filtre est utilisé avec le filtrage de ligne de commande, tout le filtrage de ligne de commande sera ignoré.
Demandez à tcpdump d’utiliser n’importe quel fichier de filtre donné à l’aide du -F option de ligne de commande, suivie du chemin d’accès au fichier. Dans l’exemple ci-dessus, le fichier de filtre se trouve dans le même répertoire dans lequel j’exécute tcpdump dans.
Voici la sortie brute de la session filtrée. Vous pouvez voir que les seuls paquets journalisés proviennent de port 80 ou 443, et sont sortants vers l’hôte au 192.168.1.181.
Une fois que vous voyez que votre filtre fonctionne comme prévu, capturez une session à analyser avec Wireshark à l’aide d’une commande similaire à celle-ci:
sudo tcpdump -i eth0 -s 0 -w cableshark.pcap -F fichier-filtre
Wireshark et tcpdump
Sauf si vous exécutez un commutateur géré avec un port d’administration, vous devrez tôt ou tard capturer le trafic sur un serveur distant. Lorsque Wireshark seul ne fera pas le travail, Wireshark avec tcpdump est un choix populaire. Les deux fonctionnent très bien ensemble et, avec quelques options de ligne de commande simples, tcpdump exportera des sessions de capture qui peuvent facilement être analysées dans Wireshark.
Je suis daccord que Wireshark est un outil puissant mais il a ses limites. Il est difficile danalyser le trafic qui nimplique pas votre ordinateur sans équipement réseau professionnel. Dans ce cas, tcpdump peut être une solution plus simple pour capturer le trafic sur le serveur distant et lanalyser avec Wireshark. Cependant, il est important de noter que Wireshark et tcpdump ont quelques points faibles, notamment pour identifier les problèmes de latence sur votre réseau. Dans ce cas, je recommande dutiliser des outils tels que la Visionneuse de temps de réponse SolarWinds pour Wireshark ou le Moniteur de performances réseau SolarWinds pour une administration plus facile et une surveillance en temps réel de votre réseau.