Wie man prüft, ob ein Port in Linux geöffnet ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie die grundlegenden Techniken zum Überprüfen des Status von Netzwerkports auf einem Linux-System lernen. Das Verständnis, welche Ports geöffnet sind, ist für die Netzwerkverwaltung, die Fehlerbehebung und die Sicherheitsanalyse von grundlegender Bedeutung.

Sie beginnen damit, den Befehl netstat mit bestimmten Optionen zu verwenden, um alle geöffneten TCP- und UDP-Ports aufzulisten, die im Lauschenszustand (listening state) sind. Als Nächstes werden Sie den Portstatus mit dem moderneren Befehl ss bestätigen, der ähnliche Netzwerkstatistiken liefert. Schließlich werden Sie den Befehl nc (netcat) nutzen, um die Konnektivität zu einem bestimmten Port aktiv zu testen und zu überprüfen, ob er von der Perspektive eines Clients erreichbar und geöffnet ist. Durch die Durchführung dieser Schritte werden Sie praktische Fähigkeiten in der Identifizierung und Überprüfung geöffneter Ports in Ihrer Linux-Umgebung erwerben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/RemoteAccessandNetworkingGroup -.-> linux/nc("Networking Utility") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/nc -.-> lab-558746{{"Wie man prüft, ob ein Port in Linux geöffnet ist"}} linux/netstat -.-> lab-558746{{"Wie man prüft, ob ein Port in Linux geöffnet ist"}} end

Auflisten geöffneter Ports mit netstat -tuln

In diesem Schritt werden Sie lernen, wie Sie die geöffneten Ports auf Ihrem Linux-System mit dem Befehl netstat auflisten. Das Verständnis, welche Ports geöffnet sind, ist für die Netzwerkfehlerbehebung und die Sicherheit von entscheidender Bedeutung.

Der Befehl netstat (Netzwerkstatistiken) ist ein Befehlszeilentool, das Netzwerkverbindungen, Routingtabellen, Schnittstellenstatistiken, Masquerade-Verbindungen und Multicast-Mitgliedschaften anzeigt.

Wir werden die folgenden Optionen mit netstat verwenden:

  • -t: Zeigt TCP-Verbindungen an.
  • -u: Zeigt UDP-Verbindungen an.
  • -l: Zeigt Lauschsockets (geöffnete Ports) an.
  • -n: Zeigt numerische Adressen anstelle der Auflösung von Hostnamen und Dienstnamen an.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Sie können das Symbol für das Xfce Terminal auf der linken Seite Ihres Desktops finden.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:

netstat -tuln

Sie werden eine Ausgabe ähnlich der folgenden sehen:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
udp        0      0 127.0.0.53:53           0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*

Lassen Sie uns die Ausgabe analysieren:

  • Proto: Das Protokoll des Sockets (z.B. tcp, udp).
  • Local Address: Die lokale IP-Adresse und die Portnummer. Das Format ist IP_Address:Port. 0.0.0.0 bedeutet, dass der Dienst auf allen verfügbaren IPv4-Schnittstellen lauscht, und ::: bedeutet, dass er auf allen verfügbaren IPv6-Schnittstellen lauscht.
  • Foreign Address: Die remote IP-Adresse und die Portnummer. 0.0.0.0:* oder :::* zeigt an, dass der Socket nicht mit einer bestimmten remote Adresse verbunden ist (er lauscht).
  • State: Der Zustand des Sockets. LISTEN bedeutet, dass der Port geöffnet ist und auf eingehende Verbindungen wartet.

In der Beispielausgabe können Sie sehen, dass der Port 53 (DNS) und der Port 22 (SSH) sowohl für IPv4 als auch für IPv6 im LISTEN-Zustand sind.

Dieser Befehl ist sehr nützlich, um schnell zu überprüfen, welche Dienste auf Ihrem System laufen und zugänglich sind.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Bestätigen des Portstatus mit ss -tuln

Im vorherigen Schritt haben Sie netstat verwendet, um die geöffneten Ports aufzulisten. Jetzt verwenden wir ein moderneres und oft schnelleres Tool namens ss (Socket-Statistiken), um dasselbe Ziel zu erreichen. ss wurde entwickelt, um netstat zu ersetzen und bietet detailliertere Informationen über Sockets.

Wir werden ähnliche Optionen mit ss verwenden wie mit netstat:

  • -t: Zeigt TCP-Sockets an.
  • -u: Zeigt UDP-Sockets an.
  • -l: Zeigt Lauschsockets (geöffnete Ports) an.
  • -n: Zeigt numerische Adressen anstelle der Auflösung von Hostnamen und Dienstnamen an.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

ss -tuln

Sie werden eine Ausgabe ähnlich der folgenden sehen:

Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
udp    UNCONN     0      0      127.0.0.53%lo:53                 0.0.0.0:*
udp    UNCONN     0      0      0.0.0.0:68                       0.0.0.0:*
tcp    LISTEN     0      128    127.0.0.53%lo:53                 0.0.0.0:*
tcp    LISTEN     0      128    0.0.0.0:22                       0.0.0.0:*
tcp    LISTEN     0      128    [::]:22                          [::]:*

Die Ausgabe ähnelt der von netstat und zeigt das Protokoll (Netid), den Zustand (State), die lokale Adresse und den Port (Local Address:Port) sowie die Peer-Adresse und den Port (Peer Address:Port).

Sie können die gleichen Ports (53 und 22) als LISTEN aufgeführt sehen, was die Ergebnisse von netstat bestätigt.

Obwohl das Ausgabeformat etwas unterschiedlich ist, bietet ss ähnliche Informationen über Lauschports und wird in modernen Linux-Systemen aufgrund seiner Leistung und zusätzlichen Funktionen (die wir in diesem Einführungslab nicht behandeln werden) im Allgemeinen bevorzugt.

Die Verwendung von sowohl netstat als auch ss kann hilfreich sein, um Informationen zu vergleichen und sich mit verschiedenen Tools in Linux vertraut zu machen.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Testen der Portverbindung mit nc -zv

In den vorherigen Schritten haben Sie gelernt, wie Sie geöffnete Ports mit netstat und ss auflisten können. Jetzt verwenden wir den Befehl nc (Netcat), um zu testen, ob Sie tatsächlich eine Verbindung zu einem bestimmten Port herstellen können. nc ist ein vielseitiges Netzwerktool, das Daten über TCP oder UDP von Netzwerkverbindungen lesen und auf diese schreiben kann.

Wir werden nc mit den folgenden Optionen verwenden:

  • -z: Gibt an, dass nc nur nach lauschenden Diensten (Daemons) suchen soll, ohne ihnen Daten zu senden. Dies ist nützlich, um zu überprüfen, ob ein Port geöffnet ist.
  • -v: Aktiviert die ausführliche Ausgabe und zeigt mehr Details über den Verbindungsversuch an.

Wir werden die Verbindung zum Port 22 (SSH) testen, der in den vorherigen Schritten als lauschend aufgeführt war. Wir werden die Verbindung zum lokalen Rechner testen, der durch die IP-Adresse 127.0.0.1 oder den Hostnamen localhost angesprochen werden kann.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

nc -zv 127.0.0.1 22

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!

Diese Ausgabe bestätigt, dass nc erfolgreich eine Verbindung zum Port 22 auf Ihrem lokalen Rechner herstellen konnte.

Jetzt versuchen wir, einen Port zu testen, der wahrscheinlich nicht geöffnet ist, beispielsweise Port 80 (HTTP), da in dieser Umgebung standardmäßig kein Webserver läuft.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

nc -zv 127.0.0.1 80

Sie werden wahrscheinlich eine Ausgabe sehen, die auf eine abgelehnte Verbindung oder ein Timeout hinweist, ähnlich der folgenden:

nc: connect to 127.0.0.1 port 80 (tcp) failed: Connection refused

Diese Ausgabe zeigt, dass nc keine Verbindung zum Port 80 herstellen konnte, was zu erwarten war, da kein Dienst auf diesem Port lauscht.

Die Verwendung von nc -zv ist ein schneller und einfacher Weg, um zu überprüfen, ob ein bestimmter Port von Ihrem aktuellen Standort aus erreichbar und geöffnet ist.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie in Linux überprüfen können, ob ein Port geöffnet ist, indem Sie Befehlszeilentools verwenden. Sie haben begonnen, indem Sie den Befehl netstat -tuln verwendet haben, um alle geöffneten TCP- und UDP-Ports aufzulisten, die im Lauschzustand sind. Dabei haben Sie das Ausgabeformat verstanden, einschließlich Protokoll, lokaler Adresse, fremder Adresse und Zustand.

Anschließend haben Sie den Portstatus mit dem Befehl ss -tuln bestätigt. Dieser Befehl liefert ähnliche Informationen wie netstat, wird aber oft als modernere und schnellere Alternative angesehen. Schließlich haben Sie gelernt, wie Sie die Verbindung zu einem bestimmten Port mit dem Befehl nc -zv testen können. Dieser Befehl versucht, eine Verbindung herzustellen und meldet, ob der Port geöffnet und erreichbar ist. Diese Schritte vermitteln essentielle Fähigkeiten für die Netzwerkfehlersuche und die Sicherheitsanalyse auf Linux-Systemen.