linux-cli-shell cli networking monitoring ss netstat security

SS & Netstat: Socket Statistics (Artikel 272)

Analyse von Netzwerkverbindungen und Sockets unter Linux. Erfahren Sie den Unterschied zwischen netstat und dem modernen ss-Tool sowie die Identifizierung von Dienst-Endpunkten.

# Socket Statistics: Wer spricht mit wem?

TL;DR / Management Summary Das klassische netstat ist tot. Der moderne Standard für die Analyse von Netzwerk-Sockets ist ss (Socket Statistics). Es ist massiv schneller, da es Daten direkt aus dem Kernel-Memory via Netlink bezieht, statt Textdateien in /proc zu parsen. Ein Senior Admin nutzt ss, um lauschende Ports zu finden, den Status von TCP-Verbindungen zu prüfen und Applikations-Hänger auf Netzwerkebene zu diagnostizieren.


# 1. Einführung & Architektur

Vom Text zum binären Netlink.

  • netstat (Legacy): Liest /proc/net/tcp und andere Files. Langsam bei tausenden Verbindungen.
  • ss (Modern): Kommuniziert über das Netlink-Protokoll direkt mit dem Kernel-Stack.

# Die Socket-Sicht (Mermaid)

graph LR
    A[App: Nginx] --> B[Socket: TCP 80]
    A --> C[Socket: TCP 443]
    D[App: SSH] --> E[Socket: TCP 22]
    F[Kernel Stack] --- G[ss command]
    B/C/E --- F
    G --> H[Output: Local Addr, Peer Addr, State, Process]

# 2. Der Klassiker: Lauschende Ports finden

Was ist offen?

Der wichtigste Befehl für jeden Admin:

# -t: TCP, -u: UDP, -l: Listening, -n: Numeric (no DNS), -p: Process Info
sudo ss -tunlp

Tipp: Nur mit sudo sehen Sie den Prozessnamen (-p). Ohne Root-Rechte ist das Feld leer.


# 3. Fortgeschrittene Filterung

Die Nadel im Netz finden.

ss hat eine extrem mächtige Filter-Syntax, die weit über grep hinausgeht.

# Filter nach Status

# Zeige alle aktiven, aufgebauten Verbindungen
ss -t state established

# Filter nach IP/Port

# Wer ist mit Port 80 verbunden?
ss -t '( dport = :80 or sport = :80 )'

# 4. Day-2 Operations: TCP-Metriken

Hinter die Kulissen schauen.

ss kann Informationen über die Qualität der Verbindung liefern (z.B. Round Trip Time).

# -i: Interne TCP Informationen
ss -ti

Achten Sie auf das Feld rtt. Es zeigt Ihnen die Latenz dieser spezifischen TCP-Sitzung.


# 5. Troubleshooting & “War Stories”

Wenn der Socket klemmt.

# Story 1: “Der hängende TIME-WAIT Stau”

Symptom: Der Webserver kann keine neuen Verbindungen annehmen, obwohl die CPU-Last bei 0% liegt. Ursache: Tausende Verbindungen hängen im TIME-WAIT Status (nach dem Schließen der Verbindung). Der Server hat keine freien Ports mehr. Lösung: Prüfen mit ss -s (Summary). Falls zu hoch, optimieren Sie die Kernel-Parameter net.ipv4.tcp_tw_reuse.

# Story 2: “Das Port-Phantom”

Symptom: systemctl start apache2 meldet “Address already in use”, aber netstat zeigt keinen Prozess auf Port 80 an. Ursache: Ein unsauber beendeter Prozess hält den Port noch im Kernel fest, oder es ist ein IPv6 vs IPv4 Problem. Lösung: Nutzen Sie ss -apn | grep :80. Prüfen Sie explizit auf :::80 (IPv6). Oft blockiert ein IPv6-Socket den Zugriff für IPv4.


# 6. Fazit & Empfehlung

  • Wahl: Nutzen Sie ss statt netstat. Es ist in jedem modernen Linux-System enthalten.
  • Performance: ss -s ist der schnellste Weg, um zu sehen, ob ein Server unter einer DoS-Attacke (massiv viele SYN-RECV) steht.
  • Sicherheit: Prüfen Sie regelmäßig mit ss -tunlp, ob Dienste auf 0.0.0.0 (alle IPs) lauschen, die eigentlich nur auf 127.0.0.1 (localhost) erreichbar sein sollten.

# Anhang: Cheatsheet

Aufgabe Befehl
Alle Sockets (TCP/UDP) ss -tu
Lauschende Sockets ss -l
Mit Prozessnamen ss -p
Zusammenfassung ss -s
Nur IPv4 ss -4
Nur IPv6 ss -6
Keine DNS Auflösung ss -n
Filter: HTTP Traffic ss -t dport = :80
Hilfe anzeigen ss -h