• Allgemein
  • Überprüfung, ob ein Port unter Linux offen ist

Überprüfung, ob ein Port unter Linux offen ist

Methoden zur Überprüfung, ob ein Port unter Linux offen ist

Als Systemadministrator oder Entwickler musst du häufig überprüfen, ob ein Port auf einem Linux-Server geöffnet ist. Dies ist entscheidend für die Netzwerk-Fehlerbehebung, Sicherheitsaudits und das Konfigurationsmanagement.

Es stehen dir verschiedene Methoden zur Verfügung, um die Offenheit eines Ports unter Linux zu ermitteln. Im Folgenden stellen wir dir einige gängige Ansätze vor:

Verwendung von Netcat zur Portprüfung

Netcat ist ein vielseitiges Netzwerkdienstprogramm, das auch zur Überprüfung der Offenheit von Ports verwendet werden kann. Befolge diese Schritte, um einen Port mit Netcat zu prüfen:

Portprüfung von innen

Um von deinem eigenen System aus zu prüfen, ob ein Port offen ist, verwende die folgende Syntax:

nc -v 127.0.0.1 <port-nummer>

Ersetze <port-nummer> durch die Portnummer, die du prüfen möchtest. Wenn der Port offen ist, erhältst du eine Antwort wie die folgende:

Connection to 127.0.0.1 80 port [tcp/*] succeeded!

Portprüfung von außerhalb

Du kannst Netcat auch verwenden, um Ports von einem externen System zu prüfen. Dazu musst du auf dem externen System Netcat mit der Option -l (Listen) ausführen:

nc -l <port-nummer>

Auf deinem lokalen System kannst du dann versuchen, eine Verbindung zum externen System herzustellen:

nc <externe-ip-adresse> <port-nummer>

Wenn der Port offen ist, wird auf dem externen System eine Verbindung hergestellt.

Vorteile von Netcat

  • Einfach zu verwendende und plattformübergreifende
  • Bietet sowohl Überprüfungen von innen als auch von außen
  • Kann auch für andere Netzwerkaufgaben wie Dateitransfers und Port-Weiterleitung verwendet werden

Verwendung von Telnet zur Portprüfung

Telnet ist ein Befehlszeilen-Tool, das du zur Portprüfung verwenden kannst. Es ermöglicht dir, eine Verbindung zu einem Remote-Server herzustellen und zu überprüfen, ob ein bestimmter Port geöffnet ist.

So verwendest du Telnet zur Portprüfung:

Um Telnet zur Portprüfung zu verwenden, öffne ein Terminalfenster und gib den folgenden Befehl ein:

telnet <hostname> <portnummer>

Ersetze <hostname> durch den Hostnamen oder die IP-Adresse des Remote-Servers und <portnummer> durch die Nummer des Ports, den du prüfen möchtest.

Wenn der Port geöffnet ist, wirst du mit dem Server verbunden und siehst eine Eingabeaufforderung. Wenn der Port geschlossen ist, erhältst du eine Fehlermeldung.

Vorteile der Verwendung von Telnet zur Portprüfung:

  • Telnet ist ein in vielen Betriebssystemen vorinstalliertes Tool, sodass du es nicht extra installieren musst.
  • Es ist einfach zu verwenden und erfordert keine komplexen Konfigurationen.
  • Du kannst damit nicht nur prüfen, ob ein Port geöffnet ist, sondern auch eine Verbindung zum Server herstellen.

Einschränkungen bei der Verwendung von Telnet zur Portprüfung:

  • Telnet verwendet eine unverschlüsselte Verbindung, sodass alle übertragenen Daten im Klartext übertragen werden. Daher wird die Verwendung von Telnet für die Portprüfung von Servern mit vertraulichen Daten nicht empfohlen.
  • Telnet kann durch Firewalls blockiert werden, was zu falschen Negativergebnissen führen kann.

Tipps zur Fehlerbehebung:

Wenn du bei der Portprüfung mit Telnet Probleme hast, versuche Folgendes:

  • Stelle sicher, dass die IP-Adresse oder der Hostname des Remote-Servers korrekt ist.
  • Überprüfe, ob der Port auf dem Remote-Server tatsächlich geöffnet ist.
  • Vergewissere dich, dass keine Firewall den Zugriff auf den Port blockiert.
  • Versuche, Telnet mit einem anderen Port zu verwenden.

Verwendung des Befehls nmap zur Portprüfung

Der Befehl nmap ist ein beliebtes und vielseitiges Tool zur Durchführung von Portprüfungen. Er ermöglicht dir die umfassende Untersuchung von Netzwerken und die Identifizierung offener Ports auf Hosts.

So verwendest du nmap zur Portprüfung

Um nmap zu verwenden, öffnest du ein Terminalfenster und gibst den Befehl wie folgt ein:

nmap <Ziel-IP-Adresse>

Dies führt eine grundlegende Host-Entdeckung für die angegebene Ziel-IP-Adresse durch und meldet alle gefundenen offenen Ports.

Optionen für nmap-Portprüfungen

nmap bietet eine Vielzahl von Optionen zur Anpassung der Portprüfung an deine spezifischen Anforderungen. Hier sind einige nützliche Optionen:

  • -sS (Stealth-Scan): Führt einen unauffälligeren Scan durch, der weniger wahrscheinlich vom Ziel erkannt wird.
  • -sT (TCP-Connect-Scan): Versucht, eine TCP-Verbindung zum Zielport herzustellen, um den Portstatus zu bestimmen.
  • -sU (UDP-Scan: Prüft auf offene UDP-Ports.
  • -Pn (Keine Ping-Scan): Überspringt den Pingscan, der verwendet wird, um Host-Uptime zu ermitteln.

Nmap-Ausgabe interpretieren

Die nmap-Ausgabe liefert detaillierte Informationen über die Zielports. Hier ist eine Aufschlüsselung der wichtigsten Felder:

  • Status: Gibt den Status des Ports an (z. B. offen, geschlossen, gefiltert).
  • Proto: Gibt das verwendete Protokoll (z. B. TCP, UDP) an.
  • Port: Die Portnummer, die gescannt wurde.
  • Dienst: Der Name des Dienstes, der typischerweise auf dem Port ausgeführt wird (z. B. HTTP, SSH).

Fehlerbehebung bei Nmap-Portprüfungen

Manchmal kann nmap bei Portprüfungen auf Fehler stoßen. Hier sind einige Tipps zur Fehlerbehebung:

  • Firewall-Regeln: Stelle sicher, dass die Firewall des Zielhosts keine Ports blockiert, die du prüfen möchtest.
  • Port-Filterung: Einige Betriebssysteme verfügen über integrierte Portfilter, die Ports unter bestimmten Bedingungen schließen können.
  • Berechtigungen: Stelle sicher, dass du über die erforderlichen Berechtigungen zum Ausführen von nmap verfügst, insbesondere wenn du Root-Berechtigungen benötigst.

Verwendung des Befehls ss zur Identifizierung offener Ports

Der Befehl ss (Socket Statistics) ist ein leistungsstarkes Tool zur Überwachung von Netzwerkverbindungen und -ports auf deinem Linux-System. Er bietet eine einfach zu lesende Ausgabe, die detaillierte Informationen über offene Ports, zugehörige Prozesse und den Verbindungsstatus liefert.

Syntax

Die grundlegende Syntax für den Befehl ss lautet:

ss [Optionen] [Filter]

Optionen

Zu den gängigsten Optionen gehören:

  • -t: Listen der TCP-Ports
  • -u: Listen der UDP-Ports
  • -a: Alle Ports anzeigen
  • -n: Numerische Adressen und Ports anzeigen
  • -p: Zugehörige Prozesse anzeigen

Filter

Du kannst Filter verwenden, um die Ausgabe von ss zu verfeinern. Einige gängige Filter sind:

  • sport [Portnummer]: Filtert Ports nach der Quellportnummer
  • dport [Portnummer]: Filtert Ports nach der Zielportnummer
  • state [status]: Filtert Ports nach ihrem Verbindungsstatus (z. B. ESTABLISHED, LISTEN, TIME_WAIT)

So verwendest du den Befehl ss

Um alle offenen TCP-Ports auf deinem System anzuzeigen, verwende den folgenden Befehl:

ss -t -a

Um alle offenen UDP-Ports anzuzeigen, verwende diesen Befehl:

ss -u -a

Um alle offenen Ports und zugehörigen Prozesse anzuzeigen, verwende:

ss -a -p

Du kannst auch Filter verwenden, um die Ausgabe zu verfeinern. Um beispielsweise nur Ports im Status ESTABLISHED anzuzeigen, verwende:

ss -a --state ESTABLISHED

Fehlerbehebung bei Portprüfungen mit ss

Wenn du Probleme bei der Verwendung von ss zur Portprüfung hast, überprüfe Folgendes:

  • Berechtigungen: Stelle sicher, dass du über ausreichende Berechtigungen verfügst, um den Befehl ss auszuführen.
  • Firewall: Überprüfe, ob deine Firewall den Zugriff auf die Ports blockiert.
  • Prozessinformationen: Wenn du Prozesse nicht anzeigen kannst, stelle sicher, dass du die Option -p verwendet hast.
  • Filterung: Stelle sicher, dass deine Filter richtig formuliert sind.

Verwendung des Befehls lsof zur Anzeige offener Ports und der zugehörigen Prozesse

Der Befehl lsof (Abkürzung für "list of open files") ist ein leistungsstarkes Werkzeug zur Anzeige offener Dateien, Sockets und anderer offener Ressourcen. Er kann verwendet werden, um zu ermitteln, welche Prozesse einen bestimmten Port belegen und welche anderen Ressourcen sie verwenden.

Optionale Parameter

lsof bietet eine Vielzahl von Optionen, mit denen du deine Suche anpassen kannst, z. B:

  • -i: Filtert nach Netzwerkadressen oder -ports.
  • -p: Filtert nach spezifischen Prozess-IDs (PIDs).
  • -s: Sortiert die Ausgabe nach verschiedenen Kriterien, z. B. nach Portnummer oder Prozessname.

So verwendest du lsof zur Anzeige offener Ports

Um die Prozesse anzuzeigen, die einen bestimmten Port belegen, verwende die folgende Syntax:

sudo lsof -i TCP:port_nummer

Ersetze port_nummer durch die Portnummer, die du prüfen möchtest.

Beispiel

Wenn du beispielsweise die Prozesse anzeigen möchtest, die Port 80 belegen, führe folgenden Befehl aus:

sudo lsof -i TCP:80

Die Ausgabe wird eine Liste aller Prozesse anzeigen, die auf Port 80 lauschen, sowie Informationen über die verwendeten Protokolle, Dateideskriptoren und andere Ressourcen.

Fehlerbehebung

Wenn lsof keine Prozesse anzeigt, die den Port belegen, obwohl du weißt, dass er offen ist, solltest du folgende Tipps zur Fehlerbehebung beachten:

  • Vergewissere dich, dass du die richtige Portnummer verwendest.
  • Stelle sicher, dass die Firewall den Port nicht blockiert.
  • Prüfe, ob ein anderer Prozess den Port blockiert. Verwende den Befehl sudo fuser -n tcp port_nummer (ersetze port_nummer durch die Portnummer), um dies zu überprüfen.

Fehlerbehebung bei Portprüfungen

Wenn du Schwierigkeiten hast, offene Ports unter Linux zu prüfen, können folgende Schritte zur Fehlerbehebung helfen:

Überprüfe die Firewall-Regeln

Situation: Du kannst keine Ports öffnen, die von der Firewall blockiert werden.

Lösung: Öffne die erforderlichen Ports in der Firewall mit einem Befehl wie:

sudo ufw allow 80/tcp

Weitere Informationen zu UFW (Uncomplicated Firewall) findest du in der Dokumentation.

Stelle sicher, dass der Port nicht von einem anderen Prozess verwendet wird

Situation: Ein Port ist offen, aber du kannst keine Verbindung herstellen.

Lösung: Überprüfe mit dem Befehl lsof, ob der Port von einem anderen Prozess verwendet wird:

sudo lsof -i :80

Wenn ein Prozess den Port blockiert, beende ihn oder konfiguriere ihn neu.

Prüfe auf Routingprobleme

Situation: Du kannst keine Verbindung zu einem Remote-Port herstellen, obwohl der Port offen ist.

Lösung: Überprüfe, ob eine Routing-Tabelle vorhanden ist, die die Verbindung zum Remote-Host blockiert. Verwende dazu den Befehl route -n:

sudo route -n

Wenn eine blockierende Route vorhanden ist, musst du sie entweder löschen oder bearbeiten.

Überprüfe die Netzwerkverbindung

Situation: Du kannst keine Ports prüfen, weil du keine Netzwerkverbindung hast.

Lösung: Stelle sicher, dass dein System mit dem Netzwerk verbunden ist. Überprüfe die Kabelverbindungen und führe einen Ping-Befehl an einen Remote-Host durch:

sudo ping 8.8.8.8

Wenn kein Ping möglich ist, kontaktiere deinen Netzwerkadministrator oder Internetdienstanbieter.

Aktualisiere deine Tools

Situation: Du erhältst unerwartete Ergebnisse bei der Portprüfung.

Lösung: Stelle sicher, dass du die neuesten Versionen von Netcat, Telnet, nmap, ss und lsof verwendest. Aktualisiere deine Pakete mit einem Paketmanager wie apt oder yum.