Netzwerküberwachung auf der Konsole

Aus LinuxUser 10/2023

Netzwerküberwachung auf der Konsole

© NejroN / 123RF.com

Burgwächter

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

-i NG

Netzwerkgerät angeben

-n

[N]

Namen nicht auflösen

[T]

Umschalten Quell/Zielsystem/alle

-N

[Umschalt]+[N]

keine Ports im Klartext

-P

[P]

Ports anzeigen

-l

Link-lokale IPv6-Adressen anzeigen

-b

[B]

Keine Grafik für Datendurchsatz

-B

Durchsatz in Bytes/s ausgeben

-F Netzwerk|CIDR

nur IPv4-Netz überwachen

-G Prefix|CIDR

nur IPv6-Netz überwachen

-t

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.

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 <code>-t</code> auf, startet das Tool ohne Ncurses-Oberfl&auml;che. Das erlaubt es, die Daten in eine Datei umzuleiten.

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

-D

Listen aller möglichen Netzwerkgeräte

-i Gerät

Netzwerkgerät auswählen

-n

numerische Ausgabe von Adressen und Ports

-e

Paket-Header ausgeben

-S

absolute statt relativer Sequenznummern

-A

Paketinhalt ausgeben

-x

Paketinhalt als Hexcode ausgeben

-w Datei

Zieldatei für Rohdaten

-r Datei

formatierte Ausgabe der Zieldatei

-Z Benutzer

alternativer Benutzer

-b

Ausgabe der autonomen Systeme

-c Pakete

auf Paketzahl begrenzter Lauf

Filter

Bedeutung

host Zielsystem

Angabe Zielsystem als Name oder IP-Adresse

net Netzwerk|CIDR

Angabe Zielnetz

port Nummer

Einzelner Port

portrange Start-Ende

Port-Bereich

src host|net|port|portrange Angabe

Herkunft einschränken

dst host|net|port|portrange Angabe

Ziel einschränken

proto ether|fddi|tr|wlan|ip|ip6|arp|rarp|tcp|udp

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.

Abbildung 3: Beim Auswerten einer mit Tcpdump erstellten Datei hilft das Tool Wireshark.

Abbildung 3: Beim Auswerten einer mit Tcpdump erstellten Datei hilft das Tool Wireshark.

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

-p Nummer-Nummer

Port-Bereich

-s Netzwerk|CIDR

Netzwerk durchsuchen

-n

Namensauflösung unterdrücken

-O

Betriebssystem ermitteln

-sV

Version des Diensts ermitteln

-oA Datei

Ergebnisse in Datei ablegen

-sT

TCP-Connect-Scan

-sS

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&uuml;fen, welche Ports diese nach au&szlig;en anbieten.

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&uuml;fen Sie bei einem Host nicht nur, welche Ports offenstehen, sondern ermitteln bei Bedarf zus&auml;tzlich das Betriebssystem.

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

-4

nur IPv4-Adressen verwenden

-6

nur IPv6-Adressen verwenden

-x

nur Unix-Domain-Sockets anzeigen

-i

Netzwerkgeräte auflisten

-r

Routing-Tabelle ausgeben

-M

maskierte Sitzungen auflisten

-t

nur TCP-Verbindungen anzeigen

-u

nur UDP-Verbindungen anzeigen

-a

alle Verbindungen anzeigen

-l

nur offene Ports anzeigen

-e

erweiterte Anzeige

-n

Ausgabe ohne Namensauflösung

-p

PID und Programm zur Verbindung ausgeben

-s

Statistik ausgeben

-c

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.

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

[H]

Hilfe anfordern

-i Interface

Netzwerkgerät angeben

-r Netzwerk|CIDR

Angabe IP-Adressbereich

-c Zahl

Anzahl ARP-Anfragen beschränken

-p

passiver Modus

-P

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.

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 <code>generalinventur.sh</code> sammeln Sie wichtige Daten &uuml;ber das Netzwerk in einer Log-Datei, die Sie anschlie&szlig;end in Ruhe auswerten.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 10/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben