Schluss mit netstat

Überblick

Eine präzise Socket-Analyse bildet das Fundament für jedes verlässliche Troubleshooting sowie die routinemäßige Linux-Serverwartung. Das veraltete netstat gehört längst zum alten Eisen und wurde im modernen Linux-Kernel vollständig durch das performante Werkzeug ss abgelöst. Dieser Leitfaden demonstriert praxisnah, wie offene Ports, aktive Session-Zustände sowie zugehörige Prozess-IDs im Handumdrehen ermittelt und ausgewertet werden.

1. Paketbasis einrichten und globale Socket-Statistiken abrufen

Der Befehl ss gehört fest zum Werkzeugkasten des Pakets iproute2. Um sicherzustellen, dass die Werkzeuge auf dem System bereitstehen und aktuell sind, wird das Paket über die Paketverwaltung eingespielt.

Paketaktualisierung und Installation von iproute2

Da ss die Socket-Informationen direkt aus dem Kernel bezieht, liefert es Ergebnisse deutlich schneller als herkömmliche Werkzeuge. Mit dem Schalter -s generiert das Dienstprogramm eine kompakte Zusammenfassung sämtlicher Socket-Typen über das gesamte System hinweg.
⚙️ [Die wichtigsten Parameter im Überblick]

-s : Erzeugt eine statistische Gesamtübersicht (TCP, UDP, RAW usw.).
-t : Beschränkt die Ausgabe strikt auf TCP-Verbindungen.
-u : Isoliert ausschließlich UDP-Sockets.
-l : Listet Ports auf, die auf eingehende Verbindungen lauschen (LISTEN).
-a : Zeigt ausnahmslos alle Sockets an (sowohl lauschende als auch aktive).
-n : Unterdrückt die Namensauflösung und stellt IP-Adressen sowie Portnummern numerisch dar.
-p : Gibt den zuständigen Prozessnamen inklusive der jeweiligen PID aus.

Socket-Zusammenfassung mit ss -s

2. Test-Webserver aufsetzen und lauschende TCP-Ports identifizieren

Um ein realistisches Testszenario abzubilden, installieren wir den Webserver Nginx und starten den entsprechenden Dienst direkt im Anschluss.

Installation und Start des Nginx-Dienstes

Der Aufruf von ss -tl fördert alle Sockets zutage, die sich aktuell im LISTEN-Status befinden. In der Standardkonfiguration löst das Tool bekannte Portnummern in standardisierte Dienstbezeichnungen auf (z. B. http, ssh oder domain).
Der frisch gestartete Nginx-Dienst taucht hierbei wie erwartet am Port für den Webdienst (http bzw. Port 80) als empfangsbereit auf.

Lauschende TCP-Sockets mit Servicenamen

Wird der Parameter -n ergänzt (ss -tln), verzichtet das System auf die Übersetzung in Alias-Namen. Stattdessen werden die exakten numerischen Portwerte ausgegeben.
Damit lässt sich zweifelsfrei ablesen, dass hinter http die Ziffer 80 und hinter ssh die Portnummer 22 steht, was Fehlinterpretationen bei Skripten oder Audits ausschließt.

Numerische Anzeige der lauschenden Ports mit ss -tln

3. Verknüpfte Prozesse, Programm-IDs und Daemons aufdecken

Mithilfe der Option -p in ss -tlp lässt sich aufdecken, welches Programm und welche konkrete Prozess-ID (PID) für den jeweiligen lauschenden Socket verantwortlich ist.
In der Spalte Process wird transparent aufgeschlüsselt, wie Systemdienste und Webserver-Instanzen den einzelnen Netzwerkports zugeordnet sind.

Prozesszuordnung und PIDs via ss -tlp

Die Kombination ss -tulpn gilt als Goldstandard in der Administration: Sie erfasst sowohl TCP- als auch UDP-Sockets, belässt Portangaben im Zahlenformat und ergänzt die ausführende Prozess-ID.
Mit dieser Abfrage lässt sich in Sekundenschnelle verifizieren, welche Hintergrunddienste – wie Nginx (Port 80), der OpenSSH-Server (Port 22) oder systemd-resolve (Port 53) – an den Schnittstellen angebunden sind.

Vollständige Socket- und Prozessübersicht mittels ss -tulpn

4. Aktive Verbindungen analysieren und gezielte Port-Filter anwenden

Um echten Netzwerkverkehr zu simulieren und Sockets in wechselnden Zuständen zu betrachten, senden wir mit curl eine lokale HTTP-Anfrage an den Webserver.

HTTP-Anfrage lokal über curl ausführen

Der Befehl ss -ta liefert den kompletten Socket-Bestand – inklusive jener Verbindungen, die sich nach dem Datenaustausch im Zustand TIME-WAIT befinden.
Anhand der Terminalausgabe lässt sich der kurz zuvor abgesetzte lokale Aufruf an 127.0.0.1:http im regulären Abbauzyklus (TIME-WAIT) nachvollziehen.

Sämtliche TCP-Sockets inklusive TIME-WAIT auflisten

Sollen ausschließlich aktive Sitzungen mit stehendem Datenkanal betrachtet werden, filtert ss -t state established punktgenau nach dem Verbindungsstatus ESTABLISHED.
Da unser Testaufruf bereits vollständig abgearbeitet und geschlossen wurde, bleibt die Trefferliste in diesem Moment leer.

Filterung nach etablierten Verbindungen

Wird die Ausgabe zu unübersichtlich, erlaubt ss leistungsfähige Filterausdrücke: Mit ss -tln 'sport = :80' wird der Quellport (Source Port) gezielt auf Port 80 eingegrenzt.
Dieses selektive Filtern isoliert den Nginx-Port unmittelbar aus dem gesamten Socket-Aufkommen heraus und spart zeitaufwendiges Greppen.

Gezielter Filter auf Quellport 80

Damit zeigt sich, wie vielseitig, schnell und präzise das Werkzeug ss die Überwachung von Netzwerkports unter Ubuntu meistert.
Für künftige Diagnoseaufgaben und die kontinuierliche Serverüberwachung sollte dieser Befehl stets die erste Wahl im Terminal sein.