Überprüfung offener und abhörender Ports in Linux mit Netstat und SS
Die Überwachung offener und lauschender Ports auf einem Linux-System ist eine der grundlegendsten Praktiken zur Aufrechterhaltung der Serversicherheit, zur Diagnose von Netzwerkproblemen und zur effektiven Verwaltung Ihrer Infrastruktur. Egal ob Sie einen produktiven Webserver, eine VPS Hosting-Umgebung oder einen Dedicated Server betreiben – das genaue Verständnis darüber, welche Ports offen sind und welche Dienste an sie gebunden sind, gibt Ihnen die Sichtbarkeit, die Sie benötigen, um unbefugten Zugriff zu verhindern, Fehlkonfigurationen zu erkennen und unnötige Angriffsflächen zu beseitigen.
In diesem umfassenden Leitfaden zeigen wir Ihnen, wie Sie die netstat– und ss-Befehle verwenden, um offene und lauschende Ports auf jedem Linux-System zu überprüfen, ihre Stärken zu vergleichen und zusätzliche Tools wie lsof und nmap für tiefere Netzwerkanalysen einzuführen.
Warum die Überwachung offener Ports wichtig ist
Jeder offene Port auf Ihrem Server stellt einen potenziellen Einstiegspunkt dar. Services, die falsch konfiguriert, veraltet oder einfach vergessen sind, können Ihr System für Exploits anfällig machen. Durch regelmäßige Überprüfung Ihrer lauschenden Ports können Sie:
- Nicht autorisierte Services auf unerwarteten Ports identifizieren
- Eindringversuche oder kompromittierte Prozesse erkennen
- Firewall-Regeln überprüfen, um sicherzustellen, dass sie wie beabsichtigt funktionieren
- Bestätigen, dass neu bereitgestellte Anwendungen an die richtigen Schnittstellen gebunden sind
- Ungenutzte Ports schließen, um Ihre Angriffsfläche zu verringern
Dies ist besonders wichtig für Administratoren, die Shared Web Hosting-Umgebungen oder Multi-Tenant-Server verwalten, auf denen mehrere Services gleichzeitig ausgeführt werden.
Verständnis von Ports und deren Typen
Bevor Sie sich in die Tools vertiefen, ist es wichtig, die Terminologie zu verstehen, auf die Sie in der Befehlsausgabe stoßen werden.
| Begriff | Beschreibung |
|---|---|
| Offener Port | Ein Port, auf dem eine Anwendung aktiv auf eingehende Verbindungen wartet |
| Abhörender Port | Ein Port, der an einen Dienst gebunden ist, der auf Netzwerkverkehr wartet |
| TCP (Transmission Control Protocol) | Verbindungsorientiert, zuverlässig, wird von HTTP, SSH, FTP usw. verwendet |
| UDP (User Datagram Protocol) | Verbindungslos, schneller aber weniger zuverlässig, wird von DNS, NTP usw. verwendet |
Ports mit netstat überprüfen
Was ist netstat?
netstat (Netzwerkstatistiken) ist ein klassisches Befehlszeilenprogramm, das detaillierte Informationen über Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken und abhörende Ports bereitstellt. Obwohl es zugunsten von ss auf modernen Distributionen offiziell veraltet ist, wird es immer noch häufig verwendet und ist auf vielen Legacy-Systemen vorhanden.
netstat installieren
Der Befehl netstat ist Teil des Pakets net-tools, das auf modernen Linux-Distributionen möglicherweise nicht standardmäßig installiert ist.
Debian / Ubuntu:
sudo apt install net-toolsCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-toolsnetstat verwenden, um offene und abhörende Ports zu überprüfen
Um alle abhörenden TCP- und UDP-Ports auf Ihrem System anzuzeigen, führen Sie den folgenden Befehl aus:
sudo netstat -tulnFlag-Aufschlüsselung:
| Flag | Beschreibung |
|---|---|
-t | TCP-Ports anzeigen |
-u | UDP-Ports anzeigen |
-l | Nur abhörende Ports anzeigen |
-n | Numerische Adressen anzeigen statt Hostnamen aufzulösen |
Beispielausgabe
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*Ausgabespalten verstehen
- Lokale Adresse — Die IP-Adresse und Portnummer, auf der der Dienst abhört.
0.0.0.0bedeutet, dass der Dienst auf allen verfügbaren Schnittstellen abhört. - Fremde Adresse — Die Remote-IP und der Port für aktive Verbindungen. Ein Sternchen (
*) bedeutet, dass noch keine Verbindung hergestellt wurde. - Status — Der Verbindungsstatus.
LISTENzeigt an, dass der Port offen ist und auf eingehende Verbindungen wartet.
Filtern spezifischer Ports mit netstat
Sie können die Ausgabe durch grep leiten, um einen bestimmten Port oder Dienst zu isolieren. Um beispielsweise zu überprüfen, ob etwas auf Port 80 (HTTP) abhört:
sudo netstat -tuln | grep ":80"Um Port 443 (HTTPS) zu überprüfen, was für Server mit installierten SSL-Zertifikaten erforderlich ist:
sudo netstat -tuln | grep ":443"Um auch den Prozessnamen und die PID anzuzeigen, die für jede Verbindung verantwortlich sind, fügen Sie das Flag -p hinzu:
sudo netstat -tulnpPorts mit ss überprüfen
Was ist ss?
ss (socket statistics) ist der moderne Ersatz für netstat. Es ist schneller, effizienter und bietet reichhaltigere Ausgaben — besonders auf Systemen mit einer hohen Anzahl gleichzeitiger Verbindungen. Der ss-Befehl ist standardmäßig auf praktisch allen modernen Linux-Distributionen enthalten und erfordert keine zusätzliche Installation.
ss verwenden, um offene und lauschende Ports zu überprüfen
Die Syntax von ss ähnelt stark der von netstat, was den Übergang unkompliziert macht:
ss -tulnFlaggen-Übersicht:
| Flagge | Beschreibung |
|---|---|
-t | TCP-Sockets anzeigen |
-u | UDP-Sockets anzeigen |
-l | Nur lauschende Sockets anzeigen |
-n | Numerische Adressen anzeigen |
Beispielausgabe
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 511 [::]:443 [::]:*
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:*Erweiterte Verwendung von ss
Der ss Befehl bietet eine Reihe von erweiterten Filter- und Anzeigeoptionen, die weit über das hinausgehen, was netstat bieten kann.
Nur abhörende TCP-Ports anzeigen
ss -tlNur abhörende UDP-Ports anzeigen
ss -ulProzessnamen und PIDs anzeigen
Um genau zu identifizieren, welcher Prozess einen bestimmten Port verwendet, verwenden Sie das -p Flag:
ss -tulnpDies ist einer der nützlichsten Befehle zur Fehlerbehebung – er zeigt den Prozessnamen und die PID neben jedem abhörenden Socket an, wodurch sofort klar wird, welche Anwendung welchen Port besitzt.
Beispielausgabe mit -p Flag
Netid State Local Address:Port Process
tcp LISTEN 0.0.0.0:80 users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=987,fd=3))
tcp LISTEN 0.0.0.0:3306 users:(("mysqld",pid=2345,fd=21))Nach einem bestimmten Port filtern
Um zu überprüfen, welcher Prozess auf Port 8080 abhört:
ss -tulnp | grep ":8080"Alle etablierten TCP-Verbindungen anzeigen
ss -tn state establishedZusammenfassungsstatistiken anzeigen
ss -sDies bietet eine schnelle Zusammenfassung der Gesamtsockets nach Typ und Status – nützlich, um ungewöhnliche Verbindungsmengen zu erkennen.
netstat vs. ss: Ein direkter Vergleich
| Funktion | `netstat` | `ss` |
|---|---|---|
| Leistung | Langsamer auf ausgelasteten Systemen | Deutlich schneller |
| Standardverfügbarkeit | Erfordert net-tools Paket | Auf modernen Distributionen vorinstalliert |
| Filteroptionen | Grundlegend (grep erforderlich) | Erweiterte integrierte Filter |
| Prozessinformationen | Verfügbar mit -p | Verfügbar mit -p |
| Ausgabedetail | Standard | Detailliertere Socket-Informationen |
| Empfohlen für | Legacy-Systeme, Vertrautheit | Moderne Linux-Umgebungen |
Wann netstat verwenden
- Auf älteren Linux-Systemen, auf denen
ssnicht verfügbar ist - Bei der Arbeit mit Skripten oder Dokumentationen, die auf
netstatSyntax basieren - Für schnelle Überprüfungen auf Systemen, auf denen
net-toolsbereits installiert ist
Wann ss verwenden
- Auf jeder modernen Linux-Distribution (Ubuntu 20.04+, CentOS 8+, Debian 10+, usw.)
- Wenn Sie schnellere Ausgabe auf Servern mit hohem Datenverkehr benötigen
- Für erweiterte Filterung und detaillierte Socket-Analyse
Zusätzliche Tools für Port-Audits
Neben netstat und ss gibt es mehrere andere Dienstprogramme, die für ein gründliches Port-Audit wertvoll sind.
Verwendung von lsof
lsof (list open files) behandelt Netzwerk-Sockets als Dateien, was eine weitere leistungsstarke Möglichkeit bietet, um zu identifizieren, welcher Prozess einen bestimmten Port verwendet.
Um zu überprüfen, welcher Prozess an Port 80 gebunden ist:
sudo lsof -i :80Um alle lauschenden Ports zu überprüfen:
sudo lsof -i -P -n | grep LISTENBeispielausgabe:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 6u IPv4 23456 0t0 TCP *:80 (LISTEN)
sshd 987 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)Verwendung von nmap
nmap ist ein leistungsstarkes Netzwerk-Scan-Tool, das offene Ports sowohl lokal als auch auf Remote-Hosts erkennen kann. Es ist besonders nützlich, um Ihre Firewall-Konfiguration aus einer externen Perspektive zu überprüfen.
Installieren Sie nmap, falls es nicht bereits vorhanden ist:
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # CentOS/RHELScannen Sie alle TCP-Ports auf dem lokalen Computer:
sudo nmap -sT localhostScannen Sie nach offenen Ports auf einer bestimmten IP-Adresse:
sudo nmap -sV 192.168.1.100Das Flag -sV versucht auch, die Version des auf jedem offenen Port laufenden Dienstes zu erkennen, was für die Identifizierung veralteter oder anfälliger Software von unschätzbarem Wert ist.
> Sicherheitshinweis: Führen Sie nmap-Scans nur auf Systemen durch, die Sie besitzen oder für die Sie eine ausdrückliche Berechtigung zum Scannen haben.
Praktischer Sicherheits-Workflow: Auditing Ihrer Server-Ports
Hier ist ein empfohlener Schritt-für-Schritt-Workflow zum Auditing offener Ports auf einem Linux-Server:
- Listen Sie alle lauschenden Ports mit Prozessinformationen auf:
ss -tulnp- Vergleichen Sie jeden Port mit erwarteten Diensten. Wenn Sie einen unbekannten Prozess auf einem unerwarteten Port sehen, untersuchen Sie dies sofort.
- Überprüfen Sie auf Dienste, die auf allen Schnittstellen lauschen (
0.0.0.0), die nur lokal zugänglich sein sollten. Beispielsweise sollte ein Datenbankserver (Port 3306) normalerweise an127.0.0.1gebunden sein, nicht an0.0.0.0.
- Überprüfen Sie Ihre Firewall-Regeln mit
iptables -L -noderufw status verbose, um sicherzustellen, dass nur beabsichtigte Ports extern verfügbar gemacht werden.
- Verwenden Sie
nmapvon einem externen Host, um zu bestätigen, welche Ports tatsächlich vom Internet aus erreichbar sind, da sich Firewall-Regeln von dem unterscheiden können, wassslokal meldet.
- Schließen oder beschränken Sie alle Ports, die nicht erforderlich sind, indem Sie Ihre Firewall verwenden oder den zugehörigen Dienst beenden.
Schnellreferenz: Die nützlichsten Befehle
# List all listening TCP and UDP ports (modern, recommended)
ss -tuln
# List listening ports with process names and PIDs
ss -tulnp
# List all listening ports using netstat (legacy)
sudo netstat -tulnp
# Check which process is using port 443
ss -tulnp | grep ":443"
# Check open ports with lsof
sudo lsof -i -P -n | grep LISTEN
# Scan local machine for open ports with nmap
sudo nmap -sT localhostFazit
Die regelmäßige Überprüfung offener und abhörender Ports ist ein unverzichtbarer Teil der Linux-Serververwaltung. Tools wie netstat und ss bieten dir sofortige, detaillierte Sichtbarkeit darüber, welche Dienste ausgeführt werden, welche Ports sie belegen, und ob etwas Unerwartetes auf deinem System vorhanden ist.
Für moderne Linux-Umgebungen ist ss die klare Wahl — es ist schneller, leistungsfähiger und standardmäßig verfügbar. Allerdings bleibt netstat ein zuverlässiger Fallback für Legacy-Systeme oder Administratoren, die bereits mit seiner Syntax vertraut sind. Die Ergänzung dieser Tools mit lsof und nmap bietet ein vollständiges Bild der Netzwerkexposition deines Servers.
Ob du eine neue VPS Hosting-Bereitstellung absicherst, eine Flotte von Dedicated Servers verwaltest oder eine Email Hosting-Umgebung sicherst — die Beherrschung der Port-Überprüfung ist eine wesentliche Fähigkeit, die direkt zur Sicherheit und Zuverlässigkeit deiner Infrastruktur beiträgt.
bei allen Hosting-Diensten