Interessiert Sie, was im lokalen Netzwerk passiert und wer oder was sich darin bewegt? Die Kommandozeile bietet dazu eine Reihe exzellenter Werkzeuge.
Wichtiger Hinweis
Setzen Sie die in diesem Artikel gezeigten Programme nur zum Überprüfen des eigenen Netzwerks ein. Verwenden Sie sie keinesfalls ohne explizite Zustimmung des Betroffenen gegen EDV-Systeme Dritter, also von Mitbewohnern, Kollegen oder gar Fremden. Der deutsche Gesetzgeber stellt das mit Paragraf 202 StGB explizit unter Strafe. Nur bei erteiltem, jederzeit nachvollziehbarem Auftrag dürfen Sie fremde Rechner und Netze überprüfen.
Latenzen ermitteln, Sicherheitslücken aufspüren und erkennen, was der Browser alles ausplaudert – für solche Aufgaben bringt Linux genau die passenden Programme mit. Zudem empfängt der Router nicht nur erwünschte Daten: Angreifer suchen nach ungesicherten Windows-Freigaben und klopfen das System auf offene Ports ab. Finden sie einen, dann setzen sie direkt die Brechstange an, um im entsprechenden Dienst eine Schwachstelle zu nutzen.
Manchmal genügt es aber schon, mitzulesen, was der Besuch einer Webseite an Daten verursacht. Dazu eignet sich das Programm Iftop [1]. Sie erteilen ihm entweder über Aufrufoptionen spezifische Anweisungen oder nutzen im interaktiven Modus die entsprechenden Tasten (Tabelle “Iftop: Optionen und Tasten”). Die Software benötigt Root-Rechte, um die Daten auf der gewünschten Schnittstelle mitzulesen.
|
Option |
Taste |
Aktion |
|---|---|---|
|
|
– |
Netzwerkgerät angeben |
|
|
[N] |
Namen nicht auflösen |
|
– |
[T] |
Umschalten Quell/Zielsystem/alle |
|
|
[Umschalt]+[N] |
keine Ports im Klartext |
|
|
[P] |
Ports anzeigen |
|
|
– |
Link-lokale IPv6-Adressen anzeigen |
|
|
[B] |
Keine Grafik für Datendurchsatz |
|
|
– |
Durchsatz in Bytes/s ausgeben |
|
|
– |
nur IPv4-Netz überwachen |
|
|
– |
nur IPv6-Netz überwachen |
|
|
– |
Ausgabe ohne Ncurses |
|
– |
[Q] |
Programmende |
Abbildung 1 zeigt die Software im interaktiven Modus. Dabei löst sie die Adressen in Namen auf und zeigt die Ports an. So erhalten Sie teilweise eine Ausgabe im Klartext. Ein Balken zeigt die Last an, im Beispiel bei der SSH-Verbindung zum Host ZE8. Im Beispiel läuft Firefox, und siehe da: Das Programm nimmt eine Verbindung nach außen auf, obwohl es eigentlich ohne Startseite, Update der Suchmaschinen und der Abfrage nach potenziell gefährlichen Seiten konfiguriert wurde.

Abbildung 1: Das Tool Iftop verfügt über einen interaktiven Modus, in dem Sie live sehen, welche Daten über das Netzwerk laufen.
Für den Einsatz in Shell-Skripten bietet es sich an, Iftop ohne Ncurses-Oberfläche zu starten (Abbildung 2). Das erreichen Sie über die Option -t. Hier sehen Sie die Port-Nummern im Klartext. Die so erzeugte Datei enthält nur ASCII-Text, den Sie bei Bedarf mit gängigen Werkzeugen wie Grep oder Cut auswerten. Innerhalb eines Skripts beenden Sie das Programm mittels kill -15.

Abbildung 2: Rufen Sie Iftop mit der Option -t auf, startet das Tool ohne Ncurses-Oberfläche. Das erlaubt es, die Daten in eine Datei umzuleiten.
Tcpdump
Mit Tcpdump [2] haben Sie ein klassisches Werkzeug zum Mitschneiden des Datenverkehrs zur Hand. Gegebenenfalls betreiben Sie das Programm in einer Pipe, um die Daten sofort auszuwerten, etwa mit Grep. Zur späteren Auswertung leiten Sie die Daten in eine Ausgabedatei um.
Tcpdump verfügt über viele Optionen, deren wichtigste die Tabelle “Tcpdump-Optionen” zusammenfasst. Im Anschluss an die Optionen dürfen Sie noch Angaben zum Filtern der Ergebnisse machen (siehe Tabelle “Tcpdump-Filter”), wobei sich die Anweisungen kombinieren lassen.
|
Option |
Aktion |
|---|---|
|
|
Listen aller möglichen Netzwerkgeräte |
|
|
Netzwerkgerät auswählen |
|
|
numerische Ausgabe von Adressen und Ports |
|
|
Paket-Header ausgeben |
|
|
absolute statt relativer Sequenznummern |
|
|
Paketinhalt ausgeben |
|
|
Paketinhalt als Hexcode ausgeben |
|
|
Zieldatei für Rohdaten |
|
|
formatierte Ausgabe der Zieldatei |
|
|
alternativer Benutzer |
|
|
Ausgabe der autonomen Systeme |
|
|
auf Paketzahl begrenzter Lauf |
|
Filter |
Bedeutung |
|---|---|
|
|
Angabe Zielsystem als Name oder IP-Adresse |
|
|
Angabe Zielnetz |
|
|
Einzelner Port |
|
|
Port-Bereich |
|
|
Herkunft einschränken |
|
|
Ziel einschränken |
|
|
Protokoll |
Mit && oder and erstellen Sie eine UND-Verknüpfung zweier Bedingungen, || oder or erzeugen eine ODER-Verknüpfung. Mit ! oder not negieren Sie einen Ausdruck. Dabei dürfen Sie Klammern einsetzen, die Sie aber durch das einfache Anführungszeichen gegenüber der Shell unschädlich machen müssen.
Bei der Arbeit mit Tcpdump leiten Sie in der Regel die Ausgabe in eine Datei um, die Sie anschließend mit Wireshark in der GUI auswerten. Dabei müssen Sie das Programm mittels kill -15 PID beenden, da es sonst die Dump-Datei nicht richtig schließt, was eine korrekte Auswertung verhindert.
Abbildung 3 zeigt das Auswerten mittels Wireshark. Dabei beschränkte sich das Erheben der Daten auf Pakete vom Host www.orf.at. Die Ausgabe sollte die Nutzlast im ASCII-Format enthalten; die eingelesene Datei erzeugte der Befehl aus Listing 1.
Listing 1
Tcpdump
$ tcpdump -i eth0 -vv -A src -w auswert.dump www.orf.at
Nmap
Mit dem Programm Nmap [3] prüfen Sie, welches Betriebssystem auf einem Zielsystem läuft und welche Ports dort offenstehen. Darüber hinaus kann die Software komplette Netzwerke scannen, was in der Praxis aber eher die Ausnahme darstellt. Die Tabelle “Nmap-Optionen” fasst einige wichtige Optionen zusammen.
|
Option |
Aktion |
|---|---|
|
|
Port-Bereich |
|
|
Netzwerk durchsuchen |
|
|
Namensauflösung unterdrücken |
|
|
Betriebssystem ermitteln |
|
|
Version des Diensts ermitteln |
|
|
Ergebnisse in Datei ablegen |
|
|
TCP-Connect-Scan |
|
|
TCP-SYN-Scan |
Leiten Sie die Ausgabe mit der Option -oA um, so erhalten Sie drei unterschiedlich formatierte Dateien: Name.gnmap ist für das Durchsuchen mit Grep optimiert, Name.nmap verfügt über ein sehr leserliches Format, und Name.xml enthält die Daten im XML-Format für eine maschinelle Verarbeitung.
Ein komplettes Netzwerk scannen Sie durch Eingabe des Befehls nmap -sn Netzwerk|CIDR, wobei die Software zusätzlich das Auflösen der Rechnernamen unterdrückt: Damit kommen Sie schneller zum Ergebnis. Abbildung 4 zeigt den Ablauf in einem kleinen, improvisierten Netzwerk.

Abbildung 4: Nmap eignet sich dazu, bei den Hosts im Netzwerk zu prüfen, welche Ports diese nach außen anbieten.
Einen normalen Scan geben Sie mit nmap IP-Adresse oder nmap Host-Name in Auftrag. In Abbildung 5 versucht das Tool zusätzlich das Betriebssystem zu ermitteln. Dafür sorgt die Option -O (Buchstabe O, nicht Ziffer null).

Abbildung 5: Mit Nmap prüfen Sie bei einem Host nicht nur, welche Ports offenstehen, sondern ermitteln bei Bedarf zusätzlich das Betriebssystem.
Netstat
Mit Netstat [4] prüfen Sie, welche aktuelle Verbindungen ein Rechner über das Netzwerk hält. Außerdem sehen Sie die Routing-Tabelle oder Statistiken zu den Netzwerkgeräten ein. Für den Einsatz des Programms benötigen Sie Root-Rechte. Die Tabelle “Netstat-Optionen” gibt wichtige Hinweise für den Gebrauch der Software. Geben Sie beim Aufruf keine Optionen an, zeigt Netstat die offenen Sockets an.
|
Option |
Aktion |
|---|---|
|
|
nur IPv4-Adressen verwenden |
|
|
nur IPv6-Adressen verwenden |
|
|
nur Unix-Domain-Sockets anzeigen |
|
|
Netzwerkgeräte auflisten |
|
|
Routing-Tabelle ausgeben |
|
|
maskierte Sitzungen auflisten |
|
|
nur TCP-Verbindungen anzeigen |
|
|
nur UDP-Verbindungen anzeigen |
|
|
alle Verbindungen anzeigen |
|
|
nur offene Ports anzeigen |
|
|
erweiterte Anzeige |
|
|
Ausgabe ohne Namensauflösung |
|
|
PID und Programm zur Verbindung ausgeben |
|
|
Statistik ausgeben |
|
|
Dauerbetrieb des Programms |
Eine vollständige Übersicht über Verbindungen samt Adressen, Status, entsprechendem Benutzer, Prozess-ID und Namen des Programms erhalten Sie durch den Aufruf netstat -paten (Abbildung 6). Diese Abfolge der Optionen lässt sich für deutschsprachige Benutzer leicht merken. Mit der Option -s erhalten Sie eine umfangreiche Statistik zur Nutzung der einzelnen Protokolle.

Abbildung 6: Netstat listet Verbindungen auf, wobei es die Programme anzeigt, die die Verbindungen nutzen.
Einfacher gestaltet sich die Abfrage der Routing-Tabelle eines Rechners: Hier genügt ein knappes netstat -r für die entsprechenden Informationen (Listing 2, erster Aufruf). Die Spalte flags führt meist folgende Einträge: U steht für eine aktivierte Route, UG bezeichnet den Gateway (Router, Verbindung zur Außenwelt) sowie H eine Route zu einem einzelnen Rechner.
Listing 2
Netstat
# netstat -r Kernel-IP-Routentabelle Ziel Router Genmask Flags MSS Fenster irtt Iface default gateway 0.0.0.0 UG 0 0 0 eth0 192.168.0.1 0.0.0.0 255.255.255.0 U 0 0 0 eth0 # netstat -i Kernel-Schnittstellentabelle Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVER Flg eth0 1500 85368 0 0 0 65015 0 0 0 BMRU lo 65536 94145 0 0 0 94145 0 0 0 LRU
Sind Sie mit der Performance des Netzwerks nicht zufrieden, hilft unter Umständen mittels netstat -i ein Blick in die Tabelle der Schnittstellen (Listing 2, zweiter Aufruf). Finden Sie dort in den Spalten RX-ERR oder TX-ERR mehrstellige Werte vor, so hat das Gefühl nicht getäuscht. Die Fehlersuche beginnt dann am Kabel oder Switch.
Netdiscover
Was sich alles an aktiven Geräten in Ihrem Netzwerk tummelt, listen Sie mit Netdiscover [5] auf. Anhand der MAC-Adresse vermag die Software (teilweise) den Namen des Herstellers einer Komponente zu ermitteln (siehe Kasten “MAC- und IP-Adressen”). Das Tool verfügt über einen passiven und aktiven Modus. In Ersterem greift es ARP-Anforderungen und die entsprechenden Antworten aus dem Netz ab – das gelingt unauffällig, das Sammeln der Daten dauert aber unter Umständen sehr lang.
MAC- und IP-Adressen
Jedes Netzwerkgerät verfügt über eine Media-Access-Control-Adresse (MAC). Innerhalb einer Kollisionsdomäne (WLAN, Verbindung zum Switch) dient diese zur eindeutigen Identifizierung des Geräts. Oft hört man, MACs seien weltweit einmalig. Das entspricht aber schon lange nicht mehr der Realität. Zudem können viele Betriebssysteme bei realen und virtuellen Geräten die MAC-Adresse nach Belieben ändern. Nur die IP-Adresse ermöglicht es überhaupt, Daten zwischen Kollisionsdomänen zu transportieren.
Im aktiven Modus hingegen versendet das Programm ARP-Pakete. Dabei grenzen Sie den Bereich der Adressen mit der Option -r ein. Das Programm arbeitet im interaktiven Betrieb, Sie steuern es per Tastatur. Bei Gebrauch der Option -P läuft es ein einziges Mal durch. Das nutzen Sie, wenn Sie eine Ausgabedatei erhalten wollen.
Wichtige Optionen und Tastenkommandos finden Sie in der Tabelle “Netdiscover-Optionen”. Abbildung 7 zeigt das Programm im Einsatz, wobei der Aufruf netdiscover -i eth0 -r 192.168.0.0/24 zum Einsatz kam.
|
Option |
Taste |
Aktion |
|---|---|---|
|
|
[H] |
Hilfe anfordern |
|
|
– |
Netzwerkgerät angeben |
|
|
– |
Angabe IP-Adressbereich |
|
|
– |
Anzahl ARP-Anfragen beschränken |
|
|
– |
passiver Modus |
|
|
– |
nicht interaktiver Modus |
|
– |
[R] |
nur ARP-Anforderungen anzeigen |
|
– |
[A] |
nur ARP-Antworten anzeigen |
|
– |
[U] |
alle ARP-Pakete anzeigen |
|
– |
[Q] |
Programmende |

Abbildung 7: Netdiscover ermittelt anhand der MAC-Adresse Informationen zum Hersteller einer Komponente.
Inventur
Das Shell-Skript generalinventur.sh (Listing 3) ermittelt neben der IP-Adresse die offenen Ports auf jedem aktiven System innerhalb des angegebenen Netzwerks. Es macht dabei einen Durchlauf, an dessen Ende Sie die Datei lanliste.txt mit den Ergebnissen betrachten können.
Listing 3
Generalinventur
#! /bin/sh # generalinventur.sh # Braucht Root-Rechte! # # Bei Aufruf ohne Parameter abbrechen if [ -z $1 ]; then echo "NETZADRESSE/CIDR muss beim Aufruf angegeben werden" exit fi echo "Übersicht aktiver Netzwerkteilnehmer" echo "------------------------------------" datum=$(date +%d.%m.%Y-%H:%M:%S) echo $datum # Beginn Ergebnisdatei echo "Netzwerkbestand $datum" > lanliste.txt echo "------------------------------------" >> lanliste.txt echo "------------------------------------" # Scannen des Netzes und Ablage in Ergebnisdatei for k in $(fping -aq -g $1); do echo "wird untersucht: $k" echo "Aktiv: $k" >> lanliste.txt nmap $k | grep -B1 open >> lanliste.txt echo "------------------------------------" >> lanliste.txt done echo "------------------------------------" echo " E N D E" >> lanliste.txt datum=$(date +%d.%m.%Y-%H:%M:%S) echo $datum >> lanliste.txt echo "------------------------------------" >> lanliste.txt # Anzeige Ergebnisdatei less lanliste.txt
Einen Auszug dieses Files zeigt Listing 4. Hier fällt besonders der Druck-Server mit der IP-Adresse 192.168.0.51 auf, wegen seiner vielen offenen Ports. Außerdem verdeutlicht das Protokoll, dass so ein vollständiger Durchlauf geraume Zeit benötigt. Abbildung 8 zeigt den Programmablauf selbst.
Listing 4
Ergebnisdatei (Auszug)
Netzwerkbestand 29.08.2023-15:17:22
------------------------------------
........
------------------------------------
Aktiv: 192.168.0.51
PORT STATE SERVICE
80/tcp open http
443/tcp open https
515/tcp open printer
9090/tcp open zeus-admin
9091/tcp open xmltec-xmlmail
9100/tcp open jetdirect
9101/tcp open jetdirect
9102/tcp open jetdirect
9103/tcp open jetdirect
------------------------------------
Aktiv: 192.168.0.83
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
------------------------------------
E N D E
29.08.2023-15:25:04
------------------------------------

Abbildung 8: Mit dem Shell-Skript generalinventur.sh sammeln Sie wichtige Daten über das Netzwerk in einer Log-Datei, die Sie anschließend in Ruhe auswerten.
Fazit
Das Überwachen der Hosts im Netzwerk und des Verkehrs im LAN und in Richtung Internet ermöglicht es Ihnen, auffällige Veränderungen direkt zu erkennen und bei Bedarf Maßnahmen zu ergreifen. Dabei gilt es aber, die Gesetzeslage zu beachten: Wer fremde Rechner ohne ausdrückliche Genehmigung überwacht, macht sich nach §202 des deutschen StGB strafbar. (jlu)
Der Autor
Harald Zisler verfasst zu Technik- und EDV-Themen Artikel und Bücher. Zuletzt erschien die vierte Auflage seines Werks “Computer-Netzwerke” beim Rheinwerk-Verlag.
Infos
-
Nmap: https://nmap.org
-
Netstat: http://man.openbsd.org/netstat.1
-
Netdiscover: https://github.com/alexxy/netdiscover






