So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus (Promiscuous Mode) betrieben wird. Der Promiskuitätsmodus ermöglicht es einer Netzwerkschnittstelle, gesamten Netzwerkverkehr zu erfassen, den sie empfängt, unabhängig von der Zieladresse. Dies ist für die Netzwerküberwachung und -analyse unerlässlich.

Sie werden drei verschiedene Methoden untersuchen, um den Status des Promiskuitätsmodus zu bestimmen: die Verwendung des Befehls ip link show zur Prüfung der Schnittstellenflags, die Nutzung des Befehls tcpdump zur Beobachtung des Paketerfassungsverhaltens und die Untersuchung der Schnittstellenkonfiguration im Dateisystem /sys/class/net. Durch die Durchführung dieser Schritte werden Sie praktische Fähigkeiten in der Überprüfung von Netzwerkschnittstellenkonfigurationen in einer Linux-Umgebung erwerben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) 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{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/cat -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/cd -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/ifconfig -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/ping -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/ip -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/curl -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} linux/apt -.-> lab-558736{{"So überprüfen Sie, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus ist"}} end

In diesem Schritt lernen Sie, wie Sie den Status des Promiskuitätsmodus (Promiscuous Mode) einer Netzwerkschnittstelle mithilfe des Befehls ip link show prüfen können. Der Promiskuitätsmodus ist eine Einstellung für einen Netzwerkschnittstellencontroller (Network Interface Controller, NIC), die es ihm ermöglicht, gesamten empfangenen Netzwerkverkehr an die zentrale Verarbeitungseinheit (Central Processing Unit, CPU) weiterzuleiten, anstatt nur die Frames, an die der Controller direkt adressiert ist. Dies wird häufig für die Netzwerküberwachung und -analyse verwendet.

Öffnen Sie zunächst das Terminal, falls Sie es noch nicht getan haben. Sie können dies tun, indem Sie auf das Symbol Xfce Terminal auf der linken Seite des Desktops klicken.

Nun verwenden wir den Befehl ip link show, um den Status Ihrer Netzwerkschnittstellen anzuzeigen. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

ip link show

Sie werden eine Ausgabe ähnlich der folgenden sehen:

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

Suchen Sie die Zeile, die Ihrer primären Netzwerkschnittstelle entspricht. In dieser Umgebung heißt diese Schnittstelle normalerweise eth0. Untersuchen Sie die Flags innerhalb der spitzen Klammern (<>). Wenn PROMISC in diesen Flags enthalten ist, befindet sich die Schnittstelle im Promiskuitätsmodus. In der obigen Beispielausgabe ist PROMISC nicht enthalten, was darauf hinweist, dass eth0 nicht im Promiskuitätsmodus ist.

Der Befehl ip link show ist ein grundlegendes Werkzeug zur Prüfung von Netzwerkschnittstellenkonfigurationen in Linux. Das Verständnis seiner Ausgabe, einschließlich der verschiedenen Flags und Zustände, ist für die Netzwerkfehlersuche und -administration von entscheidender Bedeutung.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfung mit tcpdump -i

In diesem Schritt verwenden Sie den Befehl tcpdump, um den Status des Promiskuitätsmodus (Promiscuous Mode) einer Netzwerkschnittstelle zu überprüfen. tcpdump ist ein leistungsstarker Befehlszeilen-Paketanalyse-Tool. Es kann Pakete erfassen und anzeigen, die über ein Netzwerk übertragen oder empfangen werden. Wenn eine Schnittstelle im Promiskuitätsmodus ist, kann tcpdump alle Pakete im Netzwerksubnetz erfassen, unabhängig von ihrer Zieladresse.

Zunächst müssen Sie tcpdump installieren. Verwenden Sie dazu den Befehl sudo apt install, ähnlich wie Sie in einem früheren Lab htop installiert haben.

sudo apt update
sudo apt install tcpdump -y

Der -y-Schalter beantwortet automatisch alle Abfragen während der Installation mit Ja.

Nun verwenden wir tcpdump, um auf der Schnittstelle eth0 zu lauschen. Wir verwenden die Option -i, um die Schnittstelle anzugeben, und die Option -n, um DNS-Suchen zu verhindern, wodurch die Ausgabe übersichtlicher wird.

sudo tcpdump -i eth0 -n

Sie werden eine Ausgabe sehen, die darauf hinweist, dass tcpdump auf eth0 lauscht.

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

Wenn die Schnittstelle im Promiskuitätsmodus ist, wird tcpdump gesamten Verkehr erfassen, den es sieht. Wenn sie nicht im Promiskuitätsmodus ist, wird es nur Verkehr erfassen, der an seine MAC-Adresse gerichtet ist oder Broadcast-/Multicast-Verkehr.

Um etwas Verkehr zu generieren, können Sie ein neues Terminalfenster öffnen (oder einen neuen Tab in Ihrem aktuellen Terminal) und versuchen, eine Website zu pingen, beispielsweise:

ping -c 4 google.com

Beobachten Sie die Ausgabe im tcpdump-Terminal. Sie sollten Pakete erfassen sehen.

Wichtig: Um tcpdump zu stoppen, drücken Sie Ctrl + C im Terminal, in dem tcpdump läuft.

Obwohl tcpdump in seiner Anfangsausgabe nicht explizit "Promiskuitätsmodus" angibt, ist seine Fähigkeit, Verkehr zu erfassen, der nicht speziell an die Schnittstelle gerichtet ist, eine praktische Möglichkeit, zu bestätigen, ob der Promiskuitätsmodus aktiv ist. Wenn Sie Verkehr sehen, der nicht mit der Kommunikation Ihres eigenen Systems zusammenhängt (z. B. ARP-Anfragen von anderen Geräten im Netzwerksubnetz), ist dies ein starker Hinweis auf den Promiskuitätsmodus.

Klicken Sie auf Weiter, um fortzufahren.

Untersuchung der Schnittstelle in /sys/class/net

In diesem Schritt werden Sie das /sys-Dateisystem erkunden, um Informationen über Ihre Netzwerkschnittstellen zu finden, einschließlich des Status des Promiskuitätsmodus (Promiscuous Mode). Das /sys-Dateisystem ist ein virtuelles Dateisystem in Linux, das eine Möglichkeit bietet, mit dem Kernel und Gerätetreibern zu interagieren. Es gibt Informationen über Hardwaregeräte und deren Konfiguration preis.

Navigieren Sie in das Verzeichnis der Netzwerkschnittstellen innerhalb von /sys. Verwenden Sie den cd-Befehl, um Ihr aktuelles Verzeichnis zu ändern:

cd /sys/class/net/

Nun listen Sie den Inhalt dieses Verzeichnisses mit dem ls-Befehl auf:

ls

Sie werden eine Liste Ihrer Netzwerkschnittstellen sehen, ähnlich wie bei der Ausgabe von ip link show. Sie sollten eth0 und lo sehen.

eth0  lo

Jedes Verzeichnis hier entspricht einer Netzwerkschnittstelle. Schauen wir uns das Verzeichnis für eth0 an:

cd eth0

Nun listen Sie die Dateien innerhalb des eth0-Verzeichnisses auf:

ls

Sie werden viele Dateien und Verzeichnisse sehen, die Informationen über die eth0-Schnittstelle enthalten. Wir interessieren uns für die Datei, die den Status des Promiskuitätsmodus angibt. Diese Informationen befinden sich oft in einer Datei, die sich auf Geräteflags oder -zustände bezieht.

Obwohl der genaue Dateiname je nach Kernelversion etwas variieren kann, ist ein üblicher Ort, um diese Informationen zu finden, die Prüfung des Inhalts von Dateien, die möglicherweise Flags oder Zustandsinformationen enthalten.

Versuchen wir, den Inhalt einer Datei zu lesen, die möglicherweise den Zustand oder die Flags angibt. Verwenden Sie den cat-Befehl, um den Inhalt einer Datei anzuzeigen. Beispielsweise könnten Sie nach Dateien mit dem Namen flags oder ähnlichen suchen.

cat flags

Die Ausgabe des cat flags-Befehls wird eine hexadezimale Zahl sein. Diese Zahl repräsentiert eine Bitmaske verschiedener Schnittstellenflags. Um dies zu interpretieren, müssten Sie normalerweise auf die Kernel-Dokumentation für die spezifischen Flags und ihre entsprechenden Bitwerte verweisen. Um jedoch speziell den Promiskuitätsmodus zu prüfen, gibt es oft einen direkteren Weg innerhalb von /sys.

Eine zuverlässigere Methode, um den Promiskuitätsmodus innerhalb von /sys zu prüfen, besteht darin, nach einer Datei zu suchen, die explizit die Anzahl der Promiskuitätsflags angibt. Diese Datei heißt normalerweise flags oder ähnlich, und ihr Inhalt, wenn korrekt interpretiert, zeigt an, ob das Promiskuitätsflag gesetzt ist.

Gehen wir zurück in das Verzeichnis /sys/class/net/eth0, falls Sie nicht bereits dort sind:

cd /sys/class/net/eth0

Nun untersuchen wir die flags-Datei erneut. Der hexadezimale Wert in der flags-Datei repräsentiert verschiedene Schnittstellenzustände. Während die direkte Interpretation des hexadezimalen Werts Kenntnisse der Kernelflags erfordert, ist die Anwesenheit des PROMISC-Flags in der Ausgabe von ip link show (aus Schritt 1) eine benutzerfreundlichere Möglichkeit, den Promiskuitätsmodus zu bestätigen. Das /sys-Dateisystem liefert die Rohdaten des Kernels, die Tools wie ip verwenden.

Für eine direkte Prüfung innerhalb von /sys würden Sie normalerweise nach einer Datei suchen, die speziell die Promiskuitätsanzahl oder -zustand angibt. In dieser Umgebung ist jedoch die einfachste Möglichkeit, den Promiskuitätsmodus mit Standardtools zu bestätigen, über ip link show, wie in Schritt 1 gezeigt. Das /sys-Dateisystem liefert die zugrunde liegenden Daten, aber ihre Interpretation kann ohne spezifische Kernel-Dokumentation komplexer sein.

Dieser Schritt zeigt, wie das /sys-Dateisystem einen Zugang auf niedriger Ebene zu Geräteinformationen bietet. Während die direkte Prüfung des Promiskuitätsmodus über eine einzelne Datei in /sys komplex sein kann, ist das Verständnis dieses Dateisystems für die fortgeschrittene Linux-Systemanalyse von Wert.

Klicken Sie auf Weiter, um diesen Schritt abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie überprüfen können, ob eine Netzwerkschnittstelle in Linux im Promiskuitätsmodus (Promiscuous Mode) ist, indem Sie den Befehl ip link show verwenden. Dieser Befehl zeigt die Konfigurationen der Netzwerkschnittstellen an, und die Anwesenheit des PROMISC-Flags weist auf den Promiskuitätsmodus hin. Sie haben auch begonnen, den tcpdump-Befehl zu nutzen, um den Status des Promiskuitätsmodus durch die Erfassung von Netzwerkverkehr zu überprüfen.