Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit

Überprüfung offener und abhörender Ports unter Linux mit netstat und ss

Die Überwachung offener und abhörender Ports auf einem Linux-System ist eine der kritischsten Praktiken zur Aufrechterhaltung der Serversicherheit, zur Diagnose von Netzwerkproblemen und zur effektiven Verwaltung Ihrer Infrastruktur. Durch regelmäßige Audits, welche Ports offen sind und welche Dienste an sie gebunden sind, können Sie proaktiv unbefugte Zugriffversuche identifizieren, Fehlkonfigurationen erkennen und unnötige Angriffsflächen beseitigen, bevor sie zu ernsthaften Sicherheitslücken werden.

Egal ob Sie eine hochfrequente Anwendung auf einem VPS Hosting Plan ausführen oder eine Flotte von Bare-Metal-Maschinen verwalten, das Verständnis der Netzwerkexposition Ihres Linux-Servers ist unverzichtbar. Dieser Leitfaden bietet eine umfassende, technisch genaue Anleitung zur Verwendung von netstat und ss — den zwei am weitesten verbreiteten Befehlszeilenwerkzeugen zur Port-Inspektion auf Linux — zusammen mit zusätzlichen Tools und Best Practices aus der Praxis.

1. Verständnis von Ports und deren Typen

Bevor wir uns den Tools selbst zuwenden, ist es wichtig, ein klares Verständnis dafür zu schaffen, was Ports sind, wie sie kategorisiert werden und warum ihre Überwachung wichtig ist.

Was ist ein Netzwerk-Port?

Ein Netzwerk-Port ist ein logischer Kommunikationsendpunkt, der mit einem bestimmten Prozess oder Service auf einem Host verbunden ist. Ports ermöglichen es einem einzelnen Server mit einer IP-Adresse, mehrere vernetzte Services gleichzeitig auszuführen — zum Beispiel einen Webserver auf Port 80, einen SSH-Daemon auf Port 22 und eine Datenbank auf Port 3306.

Port-Kategorien

BereichKategorieBeschreibung
0–1023Well-Known PortsReserviert für Standard-Systemservices (HTTP, SSH, FTP, etc.)
1024–49151Registered PortsVerwendet von Anwendungen und Middleware (MySQL, PostgreSQL, etc.)
49152–65535Dynamic/Ephemeral PortsTemporär zugewiesen für ausgehende Client-Verbindungen

Port-Zustände, auf die Sie treffen werden

  • LISTEN — Der Port ist offen und ein Service wartet aktiv auf eingehende Verbindungen.
  • ESTABLISHED — Eine aktive Verbindung existiert zwischen zwei Endpunkten.
  • TIME_WAIT — Die Verbindung wird geschlossen; das System wartet, um sicherzustellen, dass das Remote-Ende die letzte Bestätigung erhalten hat.
  • CLOSE_WAIT — Das Remote-Ende hat die Verbindung geschlossen; die lokale Anwendung hat ihre Seite noch nicht geschlossen.

Transport-Protokolle

  • TCP (Transmission Control Protocol): Verbindungsorientiert, zuverlässig, mit Fehlerprüfung und garantierter Zustellung. Verwendet von HTTP, HTTPS, SSH, FTP und den meisten Anwendungsschicht-Protokollen.
  • UDP (User Datagram Protocol): Verbindungslos, schneller, aber ohne Zustellungsgarantien. Verwendet von DNS, NTP, DHCP und Streaming-Services.

2. Ports mit netstat überprüfen

Was ist netstat?

netstat (Netzwerkstatistiken) ist ein klassisches Befehlszeilenprogramm, das aktive Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken und abhörende Ports anzeigt. Obwohl es zugunsten von ss auf modernen Linux-Distributionen offiziell veraltet ist, wird netstat weiterhin häufig eingesetzt – besonders auf älteren Systemen und in Umgebungen, in denen Administratoren mit seiner Syntax vertraut sind.

netstat installieren

netstat ist Teil des net-tools-Pakets, das auf vielen modernen Distributionen nicht mehr standardmäßig installiert ist. Installieren Sie es wie folgt:

Debian / Ubuntu:

sudo apt update && sudo apt install net-tools -y

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -y

Arch Linux:

sudo pacman -S net-tools

Grundlegende netstat-Syntax

sudo netstat [options]

Alle abhörenden TCP- und UDP-Ports überprüfen

sudo netstat -tuln

Flag-Erklärung:

FlagBedeutung
-tTCP-Verbindungen und Ports anzeigen
-uUDP-Verbindungen und Ports anzeigen
-lNur abhörende Sockets anzeigen (Ports, die auf Verbindungen warten)
-nNumerische IP-Adressen und Portnummern anzeigen (DNS-Auflösung für Geschwindigkeit überspringen)

Beispielausgabe:

Active Internet connections (only servers)
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
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN
udp        0      0 0.0.0.0:68              0.0.0.0:*

Ausgabe lesen:

  • Proto — Das verwendete Protokoll (tcp, udp, tcp6, udp6).
  • Local Address — Die IP-Adresse und Portnummer, auf der der Dienst abhört. 0.0.0.0 bedeutet, dass der Dienst auf allen verfügbaren Schnittstellen abhört; 127.0.0.1 bedeutet, dass er nur lokal erreichbar ist.
  • Foreign Address — Die Adresse des Remote-Clients (wird als 0.0.0.0:* für abhörende Ports ohne aktive Verbindung angezeigt).
  • State — Der Verbindungsstatus (LISTEN, ESTABLISHED, TIME_WAIT, usw.).

Prozessinformationen einbeziehen

Um zu sehen, welcher Prozess jeden abhörenden Port besitzt, fügen Sie das -p-Flag hinzu:

sudo netstat -tulnp

Beispielausgabe mit Prozessinformationen:

Proto Recv-Q Send-Q Local Address    Foreign Address  State   PID/Program name
tcp        0      0 0.0.0.0:22       0.0.0.0:*        LISTEN  1023/sshd
tcp        0      0 0.0.0.0:80       0.0.0.0:*        LISTEN  2847/nginx
tcp        0      0 127.0.0.1:3306   0.0.0.0:*        LISTEN  3102/mysqld

> Hinweis: Sie müssen diesen Befehl mit sudo ausführen, um Prozessnamen für alle Benutzer zu sehen, nicht nur für Ihre eigenen.

Ausgabe für bestimmte Ports oder Dienste filtern

Verwenden Sie grep, um Ergebnisse auf einen bestimmten Port oder Dienst einzugrenzen:

# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"

# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"

# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"

# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"

Alle aktiven Verbindungen anzeigen (nicht nur abhörende)

Um alle aktiven Verbindungen einschließlich etablierter Verbindungen zu sehen, lassen Sie das -l-Flag weg:

sudo netstat -tunp

Routing-Tabelle anzeigen

sudo netstat -r

Netzwerkschnittstellenstatistiken anzeigen

sudo netstat -i

3. Ports mit ss überprüfen

Was ist ss?

ss (socket statistics) ist der moderne Ersatz für netstat, entwickelt als Teil des iproute2 Pakets. Es kommuniziert direkt mit dem Linux-Kernel über Netlink-Sockets, was es erheblich schneller und effizienter macht als netstat — besonders auf Systemen mit Tausenden gleichzeitiger Verbindungen.

ss ist standardmäßig auf praktisch allen modernen Linux-Distributionen installiert, einschließlich Ubuntu 18.04+, CentOS 7+, Debian 9+ und deren Derivaten.

Grundlegende ss-Syntax

ss [options] [filter]

Alle lauschenden TCP- und UDP-Ports überprüfen

ss -tuln

Die Flags haben die gleiche Bedeutung wie bei netstat:

FlagBedeutung
-tTCP-Sockets anzeigen
-uUDP-Sockets anzeigen
-lNur lauschende Sockets anzeigen
-nNumerische Adressen anzeigen (keine DNS-Auflösung)

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       128      127.0.0.1:3306         0.0.0.0:*
tcp    LISTEN  0       511         [::]:443            [::]:*
udp    UNCONN  0       0        0.0.0.0:68             0.0.0.0:*

Prozessinformationen einbeziehen

sudo ss -tulnp

Beispielausgabe:

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=1023,fd=3))
tcp    LISTEN  0       511     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=2847,fd=6))
tcp    LISTEN  0       128     127.0.0.1:3306       0.0.0.0:*          users:(("mysqld",pid=3102,fd=21))

Nach Protokoll filtern

Nur lauschende TCP-Ports anzeigen:

ss -tl

Nur lauschende UDP-Ports anzeigen:

ss -ul

Alle TCP-Verbindungen anzeigen (einschließlich etablierter):

ss -t

Erweitertes Filtern mit ss

Eine der mächtigsten Funktionen von ss ist das integrierte ausdrucksbasierte Filtern, das es ermöglicht, nach Port, Adresse, Status und mehr zu filtern — ohne sich auf grep zu verlassen.

Nach spezifischer Portnummer filtern:

ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22

Nach Zielport filtern:

ss -tuln dport = :3306

Alle Sockets im ESTABLISHED-Status anzeigen:

ss -t state established

Alle Sockets im LISTEN-Status anzeigen:

ss -t state listening

Nach Quell-IP-Adresse filtern:

ss -tuln src 192.168.1.100

Verbindungen zu einem bestimmten Remote-Host anzeigen:

ss -t dst 203.0.113.50

Mehrere Filter kombinieren:

ss -t state established '( dport = :443 or sport = :443 )'

Socket-Speichernutzung anzeigen

ss kann auch detaillierte Speichernutzung pro Socket anzeigen, was zur Diagnose von Leistungsproblemen nützlich ist:

ss -tm

Timer-Informationen anzeigen

ss -to

Dies zeigt Retransmission-Timer und Keepalive-Timer für TCP-Verbindungen an, was für die Diagnose von Verbindungsstabilitätsproblemen von unschätzbarem Wert ist.

4. netstat vs. ss vergleichen

Beide Tools verfolgen das gleiche grundlegende Ziel, aber es gibt aussagekräftige Unterschiede, die Ihre Wahl leiten sollten:

Funktionnetstatss
Paketnet-tools (oft nicht vorinstalliert)iproute2 (auf modernen Distros vorinstalliert)
GeschwindigkeitLangsamer (liest aus /proc/net/)Schneller (nutzt Netlink-Kernel-Schnittstelle)
Leistung bei großem MaßstabVerschlechtert sich bei Tausenden von VerbindungenVerarbeitet große Verbindungsmengen effizient
Erweiterte FilterungErfordert Piping zu grepIntegrierte ausdrucksbasierte Filterung
AusgabedetailGutDetaillierter (Speicher, Timer, etc.)
IPv6-UnterstützungAngemessenAusgezeichnet
WartungsstatusVeraltetAktiv gepflegt
LernkurveVertraut für langjährige AdministratorenEtwas andere Syntax, aber gut dokumentiert

Wann netstat verwendet werden sollte

  • Bei der Verwaltung älterer Linux-Systeme (CentOS 6, Debian 7, etc.), auf denen ss möglicherweise nicht verfügbar ist.
  • Bei der Arbeit mit Skripten oder Dokumentation, die bereits netstat-Syntax verwenden.
  • Wenn Sie sich mit seinem Ausgabeformat wohler fühlen und keine erweiterte Filterung benötigen.

Wann ss verwendet werden sollte

  • Auf jeder modernen Linux-Distribution (Ubuntu 18.04+, CentOS 7+, Debian 9+ und neuere).
  • Bei der Verwaltung von Servern mit einem hohen Volumen gleichzeitiger Verbindungen – wie solche, die auf Dedicated Servers unter hoher Last laufen.
  • Wenn Sie erweiterte Filterung, Timer-Informationen oder Socket-Speicherstatistiken benötigen.
  • Für Automatisierung und Scripting, bei dem Leistung wichtig ist.

5. Weitere Tools zur Überprüfung offener Ports

Neben netstat und ss gibt es mehrere andere Dienstprogramme, die für die Portprüfung und Netzwerkanalyse unter Linux nützlich sind.

lsof — List Open Files (Einschließlich Sockets)

lsof (List Open Files) behandelt Netzwerk-Sockets als Dateien (konsistent mit der Linux-Philosophie „alles ist eine Datei”) und kann anzeigen, welcher Prozess einen bestimmten Port offen hat.

lsof installieren:

# Debian/Ubuntu
sudo apt install lsof -y

# CentOS/RHEL
sudo yum install lsof -y

Überprüfen Sie, welcher Prozess Port 80 verwendet:

sudo lsof -i :80

Überprüfen Sie, welcher Prozess Port 443 verwendet:

sudo lsof -i :443

Alle Netzwerkverbindungen auflisten:

sudo lsof -i

Alle TCP-Listening-Sockets auflisten:

sudo lsof -i TCP -s TCP:LISTEN

Beispielausgabe:

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    2847     root    6u  IPv4  23456      0t0  TCP *:http (LISTEN)
nginx    2848 www-data    6u  IPv4  23456      0t0  TCP *:http (LISTEN)

nmap — Network Mapper

nmap ist ein leistungsstarkes Netzwerk-Scan-Tool, das für Sicherheitsprüfungen, Netzwerkerkennung und Port-Scanning verwendet wird. Im Gegensatz zu ss und netstat (die das lokale System prüfen) kann nmap sowohl lokale als auch Remote-Hosts scannen.

nmap installieren:

# Debian/Ubuntu
sudo apt install nmap -y

# CentOS/RHEL
sudo yum install nmap -y

Alle TCP-Ports auf localhost scannen:

sudo nmap -sT localhost

Offene Ports mit Betriebssystemerkennung scannen:

sudo nmap -sT -O localhost

Einen bestimmten Portbereich scannen:

sudo nmap -p 1-1024 localhost

UDP-Ports scannen (erfordert Root):

sudo nmap -sU localhost

Einen Remote-Server scannen:

sudo nmap -sT 203.0.113.50

> Wichtig: Scannen Sie nur Systeme, die Sie besitzen oder für die Sie eine ausdrückliche Genehmigung haben. Nicht autorisiertes Port-Scanning kann gegen Gesetze und Nutzungsbedingungen verstoßen.

fuser — Prozesse identifizieren, die Dateien oder Sockets verwenden

# Find which process is using port 80 (TCP)
sudo fuser 80/tcp

# Find which process is using port 53 (UDP)
sudo fuser 53/udp

/proc/net/ — Direkte Kernel-Schnittstelle

Für Skriptingzwecke können Sie Portinformationen direkt aus dem virtuellen Dateisystem des Linux-Kernels lesen:

# View raw TCP socket table
cat /proc/net/tcp

# View raw UDP socket table
cat /proc/net/udp

Beachten Sie, dass Adressen und Ports in /proc/net/tcp hexadezimal angezeigt werden und eine Konvertierung für menschliche Lesbarkeit erfordern. Tools wie ss und netstat analysieren diese Daten automatisch.

6. Sicherheitsbest Practices für die Verwaltung offener Ports

Zu wissen, wie man offene Ports überprüft, ist nur die halbe Miete. Das Handeln auf der Grundlage dieser Informationen ist das, was Ihren Server sicher hält. Hier sind umsetzbare Best Practices, die jeder Linux-Administrator befolgen sollte:

Prinzip der minimalen Exposition

Geben Sie nur Ports frei, die absolut notwendig sind, damit Ihre Anwendung funktioniert. Jeder offene Port ist ein potenzieller Angriffsvektor. Überprüfen Sie regelmäßig Ihre lauschenden Ports und schließen oder firewallen Sie alles, das nicht öffentlich zugänglich sein muss.

Dienste an spezifische Schnittstellen binden

Vermeiden Sie es, Dienste an 0.0.0.0 (alle Schnittstellen) zu binden, es sei denn, dies ist erforderlich. Beispielsweise sollte ein MySQL-Datenbankserver nur auf 127.0.0.1 lauschen, wenn er nur lokal zugegriffen wird:

# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1

Verwenden Sie eine Firewall

Verwenden Sie ufw (Ubuntu) oder firewalld / iptables (CentOS/RHEL), um den Zugriff auf offene Ports nach IP-Adresse, Subnetz oder Netzwerkschnittstelle zu beschränken:

# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22

# Deny all other access to port 22
sudo ufw deny 22

Regelmäßige Überprüfung lauschender Ports

Planen Sie regelmäßige Port-Audits mit Cron-Jobs oder Überwachungstools. Ein plötzlich neuer lauschender Port kann auf einen kompromittierten Dienst, eine Fehlkonfiguration oder – im schlimmsten Fall – Malware hindeuten:

# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txt

Sichern Sie Dienste mit SSL/TLS

Jeder Dienst, der dem Internet ausgesetzt ist – Webserver, Mail-Server, Kontrollpanels – sollte verschlüsselte Verbindungen verwenden. Kombinieren Sie Ihre offenen Ports mit gültigen SSL-Zertifikaten, um Daten während der Übertragung zu schützen und Man-in-the-Middle-Angriffe zu verhindern.

Überwachen Sie auf unerwartete Änderungen

Verwenden Sie Intrusion-Detection-Tools wie AIDE, Tripwire oder auditd, um Sie zu benachrichtigen, wenn neue Prozesse auf Ports lauschen. Integrieren Sie mit zentralisiertem Logging (z. B. ELK Stack, Graylog) für umfassende Sichtbarkeit.

Deaktivieren Sie ungenutzte Dienste

Wenn ein Dienst nicht benötigt wird, stoppen Sie ihn und deaktivieren Sie ihn vom Booten:

# Stop and disable a service (systemd)
sudo systemctl stop <service-name>
sudo systemctl disable <service-name>

Schnellreferenz: Nützlichste Befehle

Aufgabenetstat Befehlss Befehl
Alle abhörenden TCP/UDP-Portssudo netstat -tulnsudo ss -tuln
Alle abhörenden Ports mit PIDssudo netstat -tulnpsudo ss -tulnp
Nur abhörende TCP-Portssudo netstat -tlnsudo ss -tl
Nur abhörende UDP-Portssudo netstat -ulnsudo ss -ul
Nach Port 80 filtern`sudo netstat -tulngrep ":80"`sudo ss -tuln sport = :80
Alle etablierten Verbindungensudo netstat -tunpsudo ss -t state established
Routing-Tabelle anzeigensudo netstat -rip route show

Fazit

Die Überwachung offener und abhörender Ports ist eine grundlegende Fähigkeit für jeden Linux-Systemadministrator oder DevOps-Ingenieur. Ob Sie einen produktiven Webserver sichern, ein Konnektivitätsproblem beheben oder eine routinemäßige Sicherheitsprüfung durchführen – netstat und ss geben Ihnen sofortige, umsetzbare Transparenz über die Netzwerkexposition Ihres Systems.

Zusammenfassung der wichtigsten Erkenntnisse:

  • Verwenden Sie ss als Ihr primäres Tool auf jeder modernen Linux-Distribution – es ist schneller, funktionsreicher und aktiv gepflegt.
  • Verwenden Sie netstat bei der Arbeit mit älteren Systemen oder wenn bestehende Skripte und Workflows davon abhängen.
  • Ergänzen Sie mit lsof und nmap für tiefere Inspektionen auf Prozessebene und externe Port-Scans.
  • Handeln Sie immer nach Ihren Erkenntnissen – schließen Sie unnötige Ports, binden Sie Services an die richtigen Schnittstellen und erzwingen Sie Firewall-Regeln.
  • Sichern Sie exponierte Services mit ordnungsgemäßen SSL-Zertifikaten und Zugriffskontrolle.

Wenn Sie eine Hosting-Umgebung suchen, die Ihnen vollständigen Root-Zugriff für die Implementierung dieser Sicherheitspraktiken bietet, bieten AlexHost’s VPS-Hosting-Pläne vollständige Kontrolle über Ihre Linux-Serverkonfiguration – einschließlich Firewall-Verwaltung, Service-Härtung und Netzwerküberwachung. Für Teams, die maximale Leistung und dedizierte Ressourcen benötigen, liefern unsere Dedicated Server die rohe Leistung und Isolation, die für Enterprise-grade-Sicherheitsvorgänge erforderlich sind. Und wenn Sie eine verwaltete Umgebung mit einer vertrauten Benutzeroberfläche bevorzugen, erkunden Sie unsere VPS mit cPanel-Optionen für optimierte Serververwaltung ohne Kontrollverlust.

Regelmäßige Port-Audits in Kombination mit einer gehärteten Serverkonfiguration sind eine der wirksamsten Verteidigungsmaßnahmen gegen unbefugten Zugriff und Datenverletzungen. Machen Sie es zu einem regelmäßigen Teil Ihrer Systemadministrationspraxis.