Ü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. Unabhängig davon, ob Sie einen produktiven Webserver, eine VPS Hosting-Umgebung oder einen Dedicated Server betreiben, ist es wichtig zu verstehen, welche Ports genau offen sind und welche Dienste an sie gebunden sind. Dies 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 Befehle netstat und ss verwenden, um offene und lauschende Ports auf einem beliebigen Linux-System zu überprüfen, ihre Stärken zu vergleichen und zusätzliche Tools wie lsof und nmap für tiefere Netzwerkanalysen vorzustellen.
Warum die Überwachung offener Ports wichtig ist
Jeder offene Port auf Ihrem Server stellt einen potenziellen Einstiegspunkt dar. Dienste, die falsch konfiguriert, veraltet oder einfach vergessen sind, können Ihr System für Exploits anfällig machen. Durch regelmäßige Audits Ihrer lauschenden Ports können Sie:
- Nicht autorisierte Dienste auf unerwarteten Ports identifizieren
- Eindringungsversuche 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 reduzieren
Dies ist besonders wichtig für Administratoren, die Shared Web Hosting-Umgebungen oder Multi-Tenant-Server verwalten, auf denen mehrere Dienste gleichzeitig ausgeführt werden.
Ports und ihre Typen verstehen
Bevor wir uns den Tools zuwenden, ist es wichtig, die Terminologie zu verstehen, die Sie in der Befehlsausgabe antreffen werden.
| Begriff | Beschreibung |
|---|---|
| Offener Port | Ein Port, auf dem eine Anwendung aktiv auf eingehende Verbindungen wartet |
| Lauschender 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 lauschende Ports liefert. Obwohl es auf modernen Distributionen offiziell zugunsten von ss veraltet ist, wird es immer noch häufig verwendet und ist auf vielen älteren Systemen zu finden.
netstat installieren
Der Befehl netstat ist Teil des Pakets net-tools, das möglicherweise nicht standardmäßig auf modernen Linux-Distributionen installiert ist.
Debian / Ubuntu:
sudo apt install net-toolsCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-toolsnetstat verwenden, um offene und lauschende Ports zu überprüfen
Um alle lauschenden 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 lauschende 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:*Die Ausgabespalten verstehen
- Lokale Adresse — Die IP-Adresse und Portnummer, auf der der Dienst lauscht.
0.0.0.0bedeutet, dass der Dienst auf allen verfügbaren Schnittstellen lauscht. - Externe 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.
Spezifische Ports mit netstat filtern
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) lauscht:
sudo netstat -tuln | grep ":80"Um Port 443 (HTTPS) zu überprüfen, was für Server mit installierten SSL-Zertifikaten wichtig 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-Statistiken) ist der moderne Ersatz für netstat. Es ist schneller, effizienter und bietet umfangreichere Ausgaben – besonders auf Systemen mit einer hohen Anzahl gleichzeitiger Verbindungen. Der Befehl ss 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 -tulnFlag-Aufschlüsselung:
| Flag | 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 Befehl ss bietet eine Reihe von erweiterten Filter- und Anzeigeoptionen, die weit über das hinausgehen, was netstat bieten kann.
Nur lauschende TCP-Ports anzeigen
ss -tlNur lauschende UDP-Ports anzeigen
ss -ulProzessnamen und PIDs anzeigen
Um genau zu identifizieren, welcher Prozess einen bestimmten Port verwendet, verwenden Sie das Flag -p:
ss -tulnpDies ist einer der nützlichsten Befehle zur Fehlerbehebung – er zeigt den Prozessnamen und die PID neben jedem lauschenden Socket an, sodass sofort klar ist, welche Anwendung welchen Port besitzt.
Beispielausgabe mit Flag -p
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 lauscht:
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 Verbindungsvolumina 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 | Ältere Systeme, Vertrautheit | Moderne Linux-Umgebungen |
Wann netstat verwendet werden sollte
- Auf älteren Linux-Systemen, auf denen
ssnicht verfügbar ist - Bei der Arbeit mit Skripten oder Dokumentationen, die auf
netstat-Syntax basieren - Für schnelle Überprüfungen auf Systemen, auf denen
net-toolsbereits installiert ist
Wann ss verwendet werden sollte
- Auf jeder modernen Linux-Distribution (Ubuntu 20.04+, CentOS 8+, Debian 10+ usw.)
- Wenn Sie schnellere Ausgaben auf hochfrequentierten Servern benötigen
- Für erweiterte Filterung und detaillierte Socket-Analyse
Zusätzliche Tools für Port-Audits
Neben netstat und ss sind mehrere andere Dienstprogramme wertvoll für ein gründliches Port-Audit.
lsof verwenden
lsof (offene Dateien auflisten) behandelt Netzwerk-Sockets als Dateien, was es zu einer weiteren leistungsstarken Möglichkeit macht, 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)nmap verwenden
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 noch nicht vorhanden:
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 auf offene Ports unter einer
