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
| Option | Beschreibung |
|---|---|
| -i | Tabelle der Netzwerkschnittstellen anzeigen |
| -a | Zeigen Sie sowohl hörende als auch nicht lauschende Buchsen an |
| -e | Zusätzliche Informationen anzeigen |
| -l | Nur Abhör-Sockets anzeigen. |
| -s | Zeigen Sie Zusammenfassungsstatistiken für jedes Protokoll an. |
| -t | Nur TCP-Verbindungen anzeigen |
| -n | Zeigen 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, 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
| Befehl | Beschreibung |
|---|---|
| # netstat -st | Zeigen Sie eine TCP-Protokoll-spezifische Zusammenfassung an |
| # netstat -r | Routing-Tabelle anzeigen |
| # netstat -ie | Das Äquivalent zum Standardbefehl ifconfig, um alle aktiven Netzwerkschnittstellen aufzulisten |
| # netstat -antc | Überwachen Sie kontinuierlich alle TCP-Verbindungen. Verwenden Sie -u für UDP. |
| # netstat -ltp | Zeigt alle offenen TCP-Ports zusammen mit PID und Programm an. |
| # netstat -atep | grep ssh | Zeigt alle SSH-Verbindungen zusammen mit Benutzername, Programm und entsprechender PID an. |
| # netstat -atnep | grep 443 | Zeigt alle Verbindungen an Port 443 zusammen mit der Benutzer-ID, dem Programm und der entsprechenden PID an. |
| # netstat -s -w | Anzeigen von unformatierten Netzwerkstatistiken |