Comment vérifier si une interface réseau est en mode promiscuité sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si une interface réseau sous Linux fonctionne en mode promiscuité. Le mode promiscuité permet à une interface réseau de capturer tout le trafic réseau qu'elle reçoit, indépendamment de l'adresse de destination, ce qui est essentiel pour la surveillance et l'analyse du réseau.

Vous explorerez trois méthodes différentes pour déterminer l'état du mode promiscuité : en utilisant la commande ip link show pour inspecter les indicateurs (flags) de l'interface, en utilisant la commande tcpdump pour observer le comportement de capture de paquets, et en examinant la configuration de l'interface dans le système de fichiers /sys/class/net. En effectuant ces étapes, vous acquerrez des compétences pratiques pour vérifier les configurations des interfaces réseau dans un environnement Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/curl("URL Data Transferring") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/ls -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/cat -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/cd -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/ifconfig -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/ping -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/ip -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/curl -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} linux/apt -.-> lab-558736{{"Comment vérifier si une interface réseau est en mode promiscuité sous Linux"}} end

Dans cette étape, vous apprendrez à vérifier l'état du mode promiscuité d'une interface réseau en utilisant la commande ip link show. Le mode promiscuité est un paramètre pour un contrôleur d'interface réseau (NIC - Network Interface Controller) qui lui permet de transmettre tout le trafic qu'il reçoit à l'unité centrale de traitement (CPU - Central Processing Unit), plutôt que seulement les trames auxquelles le contrôleur est spécifiquement adressé. Cela est souvent utilisé pour la surveillance et l'analyse du réseau.

Tout d'abord, ouvrez le terminal si vous ne l'avez pas déjà fait. Vous pouvez le faire en cliquant sur l'icône Xfce Terminal sur le côté gauche du bureau.

Maintenant, utilisons la commande ip link show pour afficher l'état de vos interfaces réseau. Tapez la commande suivante et appuyez sur Entrée :

ip link show

Vous verrez une sortie similaire à celle-ci :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

Recherchez la ligne correspondant à votre interface réseau principale, qui est généralement nommée eth0 dans cet environnement. Examinez les indicateurs (flags) entre les chevrons (<>). Si PROMISC est présent parmi ces indicateurs, l'interface est en mode promiscuité. Dans l'exemple de sortie ci-dessus, PROMISC n'est pas présent, ce qui indique que eth0 n'est pas en mode promiscuité.

La commande ip link show est un outil de base pour inspecter les configurations des interfaces réseau sous Linux. Comprendre sa sortie, y compris les différents indicateurs et états, est crucial pour la résolution de problèmes et l'administration réseau.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier avec tcpdump -i

Dans cette étape, vous utiliserez la commande tcpdump pour vérifier l'état du mode promiscuité d'une interface réseau. tcpdump est un puissant analyseur de paquets en ligne de commande. Il peut capturer et afficher les paquets transmis ou reçus sur un réseau. Lorsqu'une interface est en mode promiscuité, tcpdump peut capturer tous les paquets sur le segment de réseau, indépendamment de leur adresse de destination.

Tout d'abord, vous devez installer tcpdump. Utilisez la commande sudo apt install, de la même manière que vous avez installé htop dans le laboratoire précédent.

sudo apt update
sudo apt install tcpdump -y

Le paramètre -y répond automatiquement par oui à toutes les invitations pendant l'installation.

Maintenant, utilisons tcpdump pour écouter sur l'interface eth0. Nous utiliserons l'option -i pour spécifier l'interface et l'option -n pour empêcher les recherches DNS, ce qui rend la sortie plus propre.

sudo tcpdump -i eth0 -n

Vous verrez une sortie indiquant que tcpdump écoute sur eth0.

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type ETHERNET (100Mbps), snapshot length 262144 bytes

Si l'interface est en mode promiscuité, tcpdump capturera tout le trafic qu'il détecte. Si elle n'est pas en mode promiscuité, elle ne capturera que le trafic destiné à son adresse MAC ou le trafic de diffusion (broadcast) / multidiffusion (multicast).

Pour générer un peu de trafic, vous pouvez ouvrir une autre fenêtre de terminal (ou un nouvel onglet dans votre terminal actuel) et essayer de pinguer un site web, par exemple :

ping -c 4 google.com

Observez la sortie dans le terminal tcpdump. Vous devriez voir des paquets être capturés.

Important : Pour arrêter tcpdump, appuyez sur Ctrl + C dans le terminal où tcpdump est en cours d'exécution.

Bien que tcpdump n'indique pas explicitement "mode promiscuité" dans sa sortie initiale, sa capacité à capturer le trafic non spécifiquement destiné à l'interface est un moyen pratique de confirmer si le mode promiscuité est activé. Si vous voyez du trafic qui n'est pas lié à la communication de votre propre système (comme des requêtes ARP provenant d'autres appareils sur le segment de réseau), c'est un signe fort du mode promiscuité.

Cliquez sur Continuer pour passer à l'étape suivante.

Inspecter l'interface dans /sys/class/net

Dans cette étape, vous explorerez le système de fichiers /sys pour trouver des informations sur vos interfaces réseau, y compris l'état du mode promiscuité. Le système de fichiers /sys est un système de fichiers virtuel sous Linux qui offre un moyen d'interagir avec le noyau (kernel) et les pilotes de périphériques. Il expose des informations sur les périphériques matériels et leur configuration.

Accédez au répertoire des interfaces réseau dans /sys. Utilisez la commande cd pour changer de répertoire actuel :

cd /sys/class/net/

Maintenant, liste le contenu de ce répertoire en utilisant la commande ls :

ls

Vous verrez une liste de vos interfaces réseau, similaire à la sortie de ip link show. Vous devriez voir eth0 et lo.

eth0  lo

Chaque répertoire ici correspond à une interface réseau. Jetons un coup d'œil à l'intérieur du répertoire pour eth0 :

cd eth0

Maintenant, liste les fichiers dans le répertoire eth0 :

ls

Vous verrez de nombreux fichiers et répertoires contenant des informations sur l'interface eth0. Nous sommes intéressés par le fichier qui indique l'état du mode promiscuité. Ces informations se trouvent souvent dans un fichier lié aux indicateurs (flags) ou à l'état du périphérique.

Bien que le nom exact du fichier puisse varier légèrement en fonction de la version du noyau, un endroit courant pour trouver ces informations est d'examiner le contenu des fichiers qui pourraient contenir des indicateurs ou des informations d'état.

Essayons de lire le contenu d'un fichier qui pourrait indiquer l'état ou les indicateurs. Utilisez la commande cat pour afficher le contenu d'un fichier. Par exemple, vous pourriez chercher des fichiers nommés flags ou similaires.

cat flags

La sortie de la commande cat flags sera un nombre hexadécimal. Ce nombre représente un masque de bits de divers indicateurs d'interface. Pour interpréter cela, vous devrez généralement vous référer à la documentation du noyau pour les indicateurs spécifiques et leurs valeurs de bits correspondantes. Cependant, pour vérifier spécifiquement le mode promiscuité, il y a souvent un moyen plus direct dans /sys.

Un moyen plus fiable de vérifier le mode promiscuité dans /sys est de chercher un fichier qui indique explicitement le nombre d'indicateurs de promiscuité. Ce fichier est généralement nommé flags ou similaire, et son contenu, correctement interprété, montrera si l'indicateur de promiscuité est activé.

Revenons au répertoire /sys/class/net/eth0 si vous n'y êtes pas déjà :

cd /sys/class/net/eth0

Maintenant, examinons à nouveau le fichier flags. La valeur hexadécimale dans le fichier flags représente différents états d'interface. Bien que l'interprétation directe de la valeur hexadécimale nécessite des connaissances sur les indicateurs du noyau, la présence de l'indicateur PROMISC dans la sortie de ip link show (de l'Étape 1) est un moyen plus convivial de confirmer le mode promiscuité. Le système de fichiers /sys fournit les données brutes du noyau que des outils comme ip utilisent.

Pour une vérification directe dans /sys, vous chercheriez généralement un fichier qui indique spécifiquement le nombre ou l'état de promiscuité. Cependant, dans cet environnement, le moyen le plus simple de confirmer le mode promiscuité en utilisant des outils standard est via ip link show comme démontré dans l'Étape 1. Le système de fichiers /sys fournit les données sous-jacentes, mais leur interprétation peut être plus complexe sans la documentation spécifique du noyau.

Cette étape montre comment le système de fichiers /sys offre un accès de bas niveau aux informations sur les périphériques. Bien que la vérification directe du mode promiscuité via un seul fichier dans /sys puisse être complexe, comprendre ce système de fichiers est précieux pour l'analyse avancée des systèmes Linux.

Cliquez sur Continuer pour terminer cette étape.

Résumé

Dans ce laboratoire, vous avez appris à vérifier si une interface réseau est en mode promiscuité sous Linux en utilisant la commande ip link show. Cette commande affiche les configurations des interfaces réseau, et la présence de l'indicateur PROMISC indique le mode promiscuité. Vous avez également commencé à explorer l'utilisation de la commande tcpdump comme une autre méthode pour vérifier l'état du mode promiscuité en capturant le trafic réseau.