Website-Suche

Erlernen von Linux-Befehlen: netstat


Einleitung

netstat ist ein nützlicher Befehl, um den Netzwerkstatus Ihres Systems anzuzeigen. Es ermöglicht einem Systemadministrator, alle Netzwerkverbindungen zu verfolgen, indem er deren Status, Ursprung und Ziel abfragt.

Darüber hinaus ist netstat das All-in-One-Tool zur Netzwerküberwachung, da es auch zur Anzeige von Routing-Tabellen, Schnittstellenstatistiken, Maskerade-Verbindungen sowie Multicast-Mitgliedschaften verwendet werden kann. ss ist ein zukünftiger Nachfolger des Befehls netstat.

Häufig verwendete Optionen

OptionBeschreibung
-iTabelle der Netzwerkschnittstellen anzeigen
-aZeigen Sie sowohl hörende als auch nicht lauschende Buchsen an
-eZusätzliche Informationen anzeigen
-lNur Abhör-Sockets anzeigen.
-sZeigen Sie Zusammenfassungsstatistiken für jedes Protokoll an.
-tNur TCP-Verbindungen anzeigen
-nZeigen Sie numerische Adressen an, anstatt zu versuchen, symbolische Host-, Port- oder Benutzernamen zu ermitteln.

Verwendung

Die folgenden Zeilen zeigen Ihnen, wie Sie einige der beliebtesten Befehlszeilenoptionen von netstat ausprobieren können.

Für die meisten Funktionen sind Administratorrechte erforderlich, um den Befehl netstat auszuführen:

su
Password:
netstat

Die Ausführung des Befehls netstat ohne Optionen oder Argumente zeigt alle vorhandenen Verbindungen an, einschließlich ihres Status, ihrer Quelladresse und ihrer lokalen Adresse. Darüber hinaus sind aktive UNIX-Domain-Sockets und relevante Informationen wie Inode-Nummer und vollständiger Pfad Teil der standardmäßigen Netzwerkberichte von netstat.

Die Option -i von netstat öffnet eine Tabelle, in der alle konfigurierten Netzwerkschnittstellen auf dem System aufgelistet sind:

netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0   1500        0      0      0 0             0      0      0      0 BMU
enp0s25   1500      148      0      0 0             1      0      0      0 BMU
lo       65536     4752      0      0 0          4752      0      0      0 LRU
wlp3s0    1500   148377      0      1 0        135793      0      0      0 BMRU

Falls Sie das Format von ifconfig bevorzugen, um eine Liste aller aktiven Netzwerkschnittstellen zu erhalten, kann # netstat -ei Ihre Anforderungen mit einer identischen Ausgabe erfüllen.

Eine weitere nützliche Kommandozeilenoption von netstat sind -l und -t, die verwendet werden, um alle aktuell lauschenden TCP-Sockets anzuzeigen, d.h. um alle Verbindungen mit LISTEN anzuzeigen. Diese Option kann sich als nützlich erweisen, wenn Sie eine Server-Hardening- oder Firewall-Konfiguration durchführen. Alternativ können Sie die Option -u hinzufügen, um auch UDP-Verbindungen einzuschließen:

 netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ftp-data        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN 

Der obige Befehl zeigte lokale Sockets an, z. B. localhost:smtp mit einem menschenlesbaren Hostnamen und Dienstnamen. Mit der Option -n werden diese Informationen unterdrückt, während stattdessen numerische Informationen angezeigt werden. Vergleichen Sie die folgende Ausgabe von netstat mit der obigen Ausgabe:

 netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN

Wie oben bereits erwähnt, zeigt die Option -l nur Verbindungen mit dem Status "LISTEN" an. Der folgende netstat-Befehl zeigt alle aktiven TCP-Verbindungen unabhängig von ihrem Status an. Um die obige Ausgabe des Befehls netstat weiter zu verbessern, kann die Option -p verwendet werden, um eine Programmbindung an einen bestimmten Socket anzuzeigen. Diese Informationen können nützlich sein, um Ihren Server weiter zu härten und unnötige Dienste zu deaktivieren. Um zu demonstrieren, wozu die Option -p in der Lage ist, öffnen Sie zunächst z.B. Port 20 für die Auflistung mit netcat und listen Sie alle Verbindungen mit dem Status "LISTEN" und deren relevante Programme auf:

netcat -l -p 20 &
[1] 8941
netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2891/nginx: master  
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN      8941/netcat         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      518/sshd            
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      472/cupsd           
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      2891/nginx: master  
tcp6       0      0 :::22                   :::*                    LISTEN      518/sshd            
tcp6       0      0 ::1:631                 :::*                    LISTEN      472/cupsd  

Beachten Sie, dass in der zweiten Zeile mit dem Socket 0.0.0.0:20 der Befehl netstat auch ein Programm und eine PID-Bindung an diesen Socket enthüllt hat, der in diesem Fall netcat mit PID 2891 ist.

Mit der Option -a kann man möglicherweise den gesamten Handshake der TCP-Netzwerkverbindung überwachen, insbesondere wenn sie mit der Option -c gekoppelt ist, um ein kontinuierliches Abhören zu ermöglichen.

netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:20              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        1      0 10.1.1.8:36576          10.1.1.45:443       CLOSE_WAIT 
tcp        0      0 10.1.1.8:60186          10.1.1.11:443           ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN 

netstat verfügt über eine große Anzahl von Optionen, die Ihnen zur Verfügung stehen. Die beiden letzten gängigen Optionen, die in diesem Leitfaden behandelt werden, sind -r und -s. Die erste Option -r wird verwendet, um die Routing-Tabelle eines aktuellen Systems anzuzeigen.

netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 wlp3s0
10.0.0.0        0.0.0.0         255.0.0.0       U         0 0          0 wlp3s0
link-local      0.0.0.0         255.255.0.0     U         0 0          0 docker0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0

Auch hier kann die obige Ausgabe durch die Befehlszeilenoptionen -e und -n an Ihre Bedürfnisse angepasst werden. Die letzte Option -s wird verwendet, um detaillierte Statistiken anzuzeigen:

netstat -s

Beispiele

BefehlBeschreibung
# netstat -stZeigen Sie eine TCP-Protokoll-spezifische Zusammenfassung an
# netstat -rRouting-Tabelle anzeigen
# netstat -ieDas Äquivalent zum Standardbefehl ifconfig, um alle aktiven Netzwerkschnittstellen aufzulisten
# netstat -antcÜberwachen Sie kontinuierlich alle TCP-Verbindungen. Verwenden Sie -u für UDP.
# netstat -ltpZeigt alle offenen TCP-Ports zusammen mit PID und Programm an.
# netstat -atep | grep sshZeigt alle SSH-Verbindungen zusammen mit Benutzername, Programm und entsprechender PID an.
# netstat -atnep | grep 443Zeigt alle Verbindungen an Port 443 zusammen mit der Benutzer-ID, dem Programm und der entsprechenden PID an.
# netstat -s -wAnzeigen von unformatierten Netzwerkstatistiken

Verwandte Artikel: