Linux / Befehl ss: Offene Ports und Sockets überprüfen

ss zeigt die lauschenden Ports und den Verbindungsstatus von TCP- und UDP-Sockets an. Es wird verwendet, um zu überprüfen, auf welcher Adresse ein Dienst lauscht und ob die Verbindung tatsächlich hergestellt wurde.

Wenn es ohne Optionen ausgeführt wird, zeigt es im Allgemeinen verbundene nicht lauschende Sockets an. Um Server-Ports zu überprüfen, schließen Sie lauschende Sockets mit -l ein und begrenzen Sie das Protokoll mit -t oder -u. -p zeigt die Verbindungsprozessinformationen an, aber Sie benötigen möglicherweise Berechtigungen für Informationen von anderen Benutzern.

Grundlegende Syntax

ss [option] [filter]

Die installierte Implementierung und die Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung des aktuellen Systems mit man ss.

Beispiele

TCP-Lauschende Ports

Überprüfen Sie den Lauschestatus des Dienstes mit numerischen Adressen und Ports.

ss -ltn

TCP- und UDP-Lauschende Ports und Prozesse

Überprüfen Sie, welcher Prozess den Port verwendet. Verwenden Sie bei Bedarf sudo.

sudo ss -ltnup

Verbindungen eines bestimmten Ports

Filtert Verbindungen, die einem Beispielport 22 entsprechen.

ss -tn '( sport = :22 or dport = :22 )'

Wie sollten wir eine lauschende Socket lesen?

ss -ltn zeigt lauschende Sockets (-l) für TCP (-t) mit numerischen Adressen und Ports (-n).

ss -ltn

Teil einer Beispielausgabe (Adressen und Warteschlangengrößen variieren je nach Umgebung):

State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      128    0.0.0.0:22         0.0.0.0:*

0.0.0.0:22 bedeutet, dass es auf Port 22 aller lokalen IPv4-Adressen hört. Die Tatsache, dass ein Socket nur hört, erlaubt es nicht automatisch zu schließen, dass er von einer Firewall oder einem externen Netzwerk aus zugänglich ist. Prozessnamen können mit -p gesehen werden, aber einige können je nach Berechtigungen verborgen sein.

Ein Dienst, der nur an 127.0.0.1:port gebunden ist, kann lokal erreichbar sein, aber nicht über eine externe Schnittstelle. Das Binden an 0.0.0.0 umgeht immer noch keine Firewall oder Sicherheitsgruppe. Bei der Untersuchung eines Portkonflikts verwenden Sie ss -ltnp, um den Besitzprozess zu identifizieren, wenn Ihre Berechtigungen dies zulassen.

Hauptoptionen und Format

Optionen/Format Beschreibung
-l Zeigt lauschende Sockets an.
-t / -u Wählt TCP- oder UDP-Sockets aus.
-n Zeigt Adressen und Ports in numerischer Form an.
-p Zeigt Prozessinformationen unter Verwendung von Sockets an.
-a Beinhaltet sowohl lauschende als auch nicht lauschende Sockets.
-s Zeigt die Socket-Zusammenfassung nach Protokoll an.

Vorsichtsmaßnahmen bei der Verwendung

Wenn der Dienst nur auf 127.0.0.1 hört, sind externe Verbindungen nicht möglich, und das Hören auf 0.0.0.0 bedeutet nicht unbedingt, dass die Firewall ebenfalls geöffnet ist. UDP hat keinen Verbindungszustand wie TCP. Wenn die Prozessinformationen für -p leer sind, überprüfen Sie die Berechtigungen.

Häufig gestellte Fragen

Sie können den Port mit ss sehen, aber warum können Sie sich nicht von außen verbinden?

Sie müssen separat prüfen, ob die empfangende Adresse eine Loopback-Adresse ist und ob die Firewall-, Routing- oder Cloud-Sicherheitsregeln dies zulassen.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und die Unterschiede zwischen den Implementierungen in der offiziellen ss-Dokumentation nachprüfen.