SSD Nodes Learn
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-07-24

Was sind Ports und wie prüfen sie Linux?

Erfahren Sie, wie Ports Datenverkehr trennen. Lernen Sie den Befehl ss kennen, um aktive Dienste und TCP/UDP-Verbindungen auf Ihrem Linux-System zu prüfen.

Was ein Port tatsächlich ist

Ein Port ist eine Nummer, die es einem Server ermöglicht, viele Dienste gleichzeitig auszuführen, ohne dass sich deren Datenverkehr vermischt. Ihr VPS hat eine IP-Adresse, kann aber gleichzeitig einen Webserver, einen SSH-Server und eine Datenbank betreiben. Wenn ein Paket eintrifft, muss das Betriebssystem wissen, für welchen Dienst es bestimmt ist. Die Portnummer liefert die Antwort. Web-Traffic geht an Port 443, SSH an Port 22. Die IP-Adresse leitet das Paket an Ihren Server weiter; der Port leitet es an das richtige Programm auf diesem Server weiter.

Ein Port ist eine 16-Bit-Zahl: 16 Bits ergeben den Bereich von 0 bis 65535. Da die 0 reserviert ist, laufen Ports in der Praxis von 1 bis 65535. Ports unter 1024 sind die "well-known" Ports und erfordern Root-Rechte zum Öffnen. Deshalb befinden sich dort Standarddienste: 22 für SSH, 80 für HTTP, 443 für HTTPS, 53 für DNS. Alles über 1024 steht gewöhnlichen Programmen zur Verfügung.

Es gibt zwei Arten: TCP und UDP. Eine Portnummer in einem Protokoll ist unabhängig von derselben Nummer im anderen Protokoll. TCP ist das verbindungsorientierte Protokoll, das die meisten Dienste verwenden, wie SSH, HTTP und Datenbanken. UDP ist verbindungslos und wird für Dinge wie DNS und einige VPNs verwendet. Wenn Sie eine Firewall konfigurieren, geben Sie meistens an, welches Protokoll gilt, zum Beispiel 22/tcp.

Listening bedeutet, dass ein Programm auf einem Port wartet

Ein Programm, das Verbindungen empfangen möchte, fordert den Kernel auf, auf einem Port zu "listen". Ab diesem Moment ist der Port auf der Maschine offen und das Programm antwortet auf alles, was dort ankommt, sofern die Firewall dies zulässt. Ein Port, auf dem nichts lauscht, lehnt Verbindungen einfach ab. Die erste Frage bei jeder Sicherheitsprüfung lautet daher: Was lauscht, und wo?

Der Befehl, um das zu beantworten, ist ss:

sudo ss -tlnp

Die Flags bedeuten TCP (t), nur listening sockets (l), numerische Ports (n, sodass Sie 22 statt ssh sehen) und den Besitzer des Prozesses (p). Ein typisches Ergebnis:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

Die Spalte Process zeigt Ihnen, welches Programm den jeweiligen Port besitzt. So identifizieren Sie Prozesse, die nicht absichtlich laufen gelassen wurden.

Die Spalte Local Address ist der entscheidende Teil

Lesen Sie die Adresse vor jedem Port sorgfältig, da sie bestimmt, wer den Dienst erreichen kann. Es gibt drei Fälle, die Sie ständig sehen werden.

0.0.0.0:22 bedeutet "auf jeder IPv4-Adresse, die diese Maschine hat, lauschen", einschließlich der öffentlichen Adresse. Der Dienst ist über IPv4 aus dem Internet erreichbar, sofern die Firewall dies erlaubt.

[::]:80 bedeutet dasselbe für IPv6: auf jeder IPv6-Adresse lauschen, einschließlich der öffentlichen. Viele Programme binden standardmäßig hieran, und unter Linux akzeptiert ein :: Socket oft auch IPv4.

127.0.0.1:5432 bedeutet "nur auf Loopback lauschen". 127.0.0.1 ist die Adresse, die eine Maschine nutzt, um mit sich selbst zu kommunizieren; sie ist von keinem anderen Ort aus routbar. Ein hier gebundener Dienst ist nur vom selben Server aus erreichbar, niemals aus dem Internet, ungeachtet der Firewall-Einstellungen. Die Postgres-Zeile oben ist konstruktionsbedingt sicher.

Die praktische Regel ergibt sich direkt daraus: Eine Datenbank, ein Cache oder ein Admin-Panel, das nur von Ihren eigenen Anwendungen genutzt wird, sollte an 127.0.0.1 gebunden sein, nicht an 0.0.0.0. Wenn ein Dienst niemals auf einer öffentlichen Adresse lauscht, kann ein Angreifer ihn nicht erreichen.

Listening ist nicht dasselbe wie erreichbar

Eine weitere Unterscheidung vermeidet viel Verwirrung. Dass ein Port auf der Maschine offen ist (ein Programm lauscht), ist etwas anderes als dass dieser Port von außen erreichbar ist (die Firewall lässt ihn zu). Beide Bedingungen müssen erfüllt sein, damit ein Remote-Client eine Verbindung herstellen kann.

Es gibt also zwei Steuerungsebenen. Sie entscheiden, was lauscht, indem Sie die Bind-Adresse für jeden Dienst festlegen. Und Sie entscheiden, was die Außenwelt erreichen kann, mittels einer Firewall. Ein gut verwalteter Server nutzt beides: Dienste binden sich nur dort, wo sie es müssen, und eine Firewall verweigert alles, was Sie nicht explizit erlaubt haben. Das Auslesen der lauschenden Dienste mit ss ist Schritt eins; die Entscheidung, was die Firewall erlaubt, ist Schritt zwei. Dies wird in Firewalls 101 mit UFW behandelt.

Es gibt eine Nuance, die zu Problemen führt: IPv4 und IPv6 sind getrennt. Eine Firewall, die nur IPv4 abdeckt, lässt die [::] Dienste über IPv6 offen. Diese spezifische Falle wird in diesem Artikel behandelt: die IPv6-Firewall-Falle.

FAQ

Wie sehe ich, welche Ports auf meinem Linux-Server offen sind?

Führen Sie sudo ss -tlnp für TCP oder sudo ss -ulnp für UDP aus. Dies listet jeden lauschenden Socket, den Port, die lokale Adresse, an die er gebunden ist, und den Besitzer des Prozesses auf. Lesen Sie die Local Address Spalte: 0.0.0.0 oder [::] bedeutet, dass der Dienst im Netzwerk exponiert ist, während 127.0.0.1 bedeutet, dass er nur auf der Maschine selbst lauscht.

Was ist der Unterschied zwischen 0.0.0.0 und 127.0.0.1?

0.0.0.0 bedeutet "auf allen IPv4-Adressen lauschen", einschließlich der öffentlichen, sodass der Dienst aus dem Netzwerk erreichbar ist. 127.0.0.1 ist Loopback, die Adresse, die die Maschine für die interne Kommunikation nutzt. Sie ist von keinem anderen Ort aus routbar, daher ist ein daran gebundener Dienst nur lokal erreichbar. Binden Sie interne Dienste an 127.0.0.1, damit sie niemals exponiert sind.

Muss ich einen Port in der Firewall öffnen, damit ein Dienst funktioniert?

Nur für Dienste, die von anderen Maschinen aus erreicht werden müssen. Ein Dienst, der an 127.0.0.1 gebunden ist, benötigt keine Firewall-Regel, da er ohnehin nicht von extern erreichbar ist. Ein Dienst auf 0.0.0.0 oder [::] benötigt eine Firewall-Regel, um den Datenverkehr zuzulassen; standardmäßig sollte dieser blockiert sein, bis Sie eine Regel hinzufügen.

Was ist der Unterschied zwischen einem TCP-Port und einem UDP-Port?

TCP ist verbindungsorientiert und wird von den meisten Diensten wie SSH, Webservern und Datenbanken genutzt. UDP ist verbindungslos und wird von DNS und einigen VPNs genutzt. Dieselbe Nummer in TCP und UDP sind separate Ports, somit sind 53/tcp und 53/udp unterschiedlich. Wenn Sie Firewall-Regeln schreiben, geben Sie das Protokoll an, zum Beispiel 22/tcp.