Wie listet man offene Ports unter Linux auf?

How List Open Ports Linux



Bei Netzwerken ist ein Port ein interessantes Feature. Auf diese Weise kann der Netzwerkverkehr die Ziel-App oder den Zieldienst identifizieren. Jeder Prozess/Dienst erhält seinen eindeutigen Port. Ein Port wird immer mit der IP-Adresse des Hosts zusammen mit dem Protokoll verknüpft.

Dies ist eine meiner Lieblingsmetaphern, um zu beschreiben, was ein Hafen ist. Stellen Sie sich ein mit Fracht beladenes Schiff vor, das in ein fernes Land reisen wird. Welche Informationen werden benötigt, um das Ziel richtig zu erreichen? Nehmen wir der Einfachheit halber an, es braucht das Land (die IP-Adresse) und die Hafen das Schiff wird anlegen.







In diesem Handbuch erfahren Sie, wie Sie offene Ports unter Linux auflisten.



Ports unter Linux

Ports fungieren als Endpunkt der Kommunikation. Es ist eine 16-Bit-Zahl (0 bis 65535 dezimal). Obwohl die Auswahl groß ist, werden die Anschlüsse aus Gründen der Benutzerfreundlichkeit in drei Kategorien eingeteilt. Jede Kategorie ist als Portwertbereich gekennzeichnet:



  • 0 bis 1023: Dies sind die bekannten Ports, auch bekannt als Systemports, die für Systemprozesse reserviert sind, die eine Vielzahl von Netzwerkdiensten anbieten. Um eine Verbindung mit einem bekannten Port herzustellen, muss ein Prozess über Superuser-Berechtigungen verfügen.
  • 1024 bis 49151: Dies sind die registrierten Ports, auch als Benutzerports bekannt, die von der IANA für bestimmte Dienste bestimmt sind. Auf Anfrage kann ein Prozess darauf zugreifen. Bei den meisten Systemen sind keine Superuser-Berechtigungen erforderlich, um diese Ports zu verwenden.
  • 49152 bis 65535: Dies sind die dynamischen Ports, auch als private Ports bekannt. Diese Ports können nicht bei IANA registriert werden. Diese Ports können für private oder benutzerdefinierte Dienste verwendet werden und können auch automatisch als kurzlebige Ports (kurzlebige Ports, die von IP verwendet werden) zugewiesen werden.

Unter Linux gibt es mehrere Möglichkeiten, die offenen Ports zu überprüfen. Standardmäßig bleibt jeder Port geschlossen, es sei denn, eine App verwendet ihn. Wenn ein Port geöffnet ist, muss er einem Dienst/Prozess zugewiesen werden.





Offene Ports auflisten

Es ist einfacher zu erkennen, welche Ports verwendet werden, als welche Ports offen sind. Aus diesem Grund werden im folgenden Abschnitt Methoden vorgestellt, um alle derzeit verwendeten Ports aufzulisten. Unter Linux stehen für diese Aufgabe mehrere Tools zur Verfügung. Die meisten von ihnen sind in jeder Linux-Distribution integriert.

Zu erfahren, welche Ports derzeit geöffnet sind, kann in verschiedenen Szenarien nützlich sein. Es ist möglich, einen dedizierten Port für eine bestimmte Anwendung zu konfigurieren. Ein offener Port kann auch ein starkes Anzeichen für ein Eindringen in das Netzwerk sein.



Die folgenden Methoden werden auf Ubuntu 20.04.1 LTS demonstriert.

Listen Sie Protokolle auf und öffnen Sie Ports von /etc/services

Die Datei /etc/services enthält Informationen zu den derzeit ausgeführten Diensten. Es ist eine große Datei, also bereit, überwältigt zu werden.

$Katze /etc/Dienstleistungen| weniger

Offene Ports mit netstat auflisten

Das Tool netstat ist ein Dienstprogramm zum Anzeigen von Netzwerkverbindungen für TCP, Routingtabellen und verschiedene Netzwerkschnittstellen. Es bietet auch Netzwerkprotokollstatistiken. Mit netstat können wir alle offenen Ports des Systems auflisten.

Führen Sie den folgenden netstat-Befehl aus:

$netstat -atu

Lassen Sie uns kurz alle Flags aufschlüsseln, die wir in diesem Befehl verwendet haben.

  • zu : Weist netstat an, alle Sockets anzuzeigen
  • T : Weist netstat an, TCP-Ports aufzulisten
  • du : Weist netstat an, UDP-Ports aufzulisten

Hier ist eine weitere Variante des netstat-Befehls:

$netstat -lntu

Im Befehl werden zwei neue Flags verwendet. Was meinen sie?

  • das : Weist netstat an, nur die lauschenden Sockets zu drucken
  • n : Weist netstat an, die Portnummer anzuzeigen

Um die PID des Prozesses anzuzeigen, der einen Port verwendet, verwenden Sie das Flag -p:

$netstat -Intup

Offene Ports mit ss auflisten

Das ss-Tool ist ein Dienstprogramm zum Untersuchen von Sockets. Seine Verwendung ähnelt der von netstat.

Führen Sie den folgenden ss-Befehl aus, um die offenen Ports aufzulisten:

$ss-lntu

Die Flags ähneln denen von netstat. Auch die von ihnen beschriebenen Funktionen sind recht ähnlich.

  • das : Weist ss an, Abhör-Sockets anzuzeigen
  • n : Weist ss an, nicht zu versuchen, Dienstnamen aufzulösen
  • T : Weist ss an, TCP-Sockets anzuzeigen
  • du : Weist ss an, UDP-Sockets anzuzeigen

Offene Ports mit lsof . auflisten

Der Befehl lsof dient zum Auflisten geöffneter Dateien. Er kann aber auch zur Anzeige der offenen Ports verwendet werden.

Führen Sie den folgenden lsof-Befehl aus:

$lsof-ich

Um die offenen Ports eines bestimmten Protokolls (TCP, UDP usw.) zu erhalten, definieren Sie es nach dem Flag -i, verwenden Sie Folgendes:

$lsof-ich <Protokoll>

Offene Ports mit nmap auflisten

Das nmap-Tool ist ein leistungsstarkes Tool für die Netzwerkexploration und das Sicherheits-/Port-Scanning. Es kann alle offenen Ports im System melden.

Führen Sie den folgenden nmap-Befehl aus, um die offenen TCP-Ports aufzulisten. Hier ist die IP-Adresse des Host-Computers:

$sudo nmap -NS -P-localhost

Hier gibt es zwei Teile des Befehlsarguments.

  • -NS : Dieser Abschnitt weist nmap an, nach TCP-Ports zu suchen.
  • -P- : Dies weist nmap an, nach allen 65535-Ports zu suchen. Wenn es nicht verwendet wird, scannt nmap standardmäßig nur 1000 Ports.

Wenn Sie die offenen UDP-Ports auflisten müssen, führen Sie den folgenden nmap-Befehl aus:

$sudo nmap -es ist -P-localhost

Um sowohl die offenen TCP- als auch die UDP-Ports abzurufen, verwenden Sie den folgenden Befehl:

$sudo nmap -n -PN -NS -es ist -P-localhost

Offene Ports mit netcat auflisten

Das Tool netcat ist ein Befehlszeilendienstprogramm zum Lesen und Schreiben von Daten über Netzwerkverbindungen über die Protokolle TCP und UDP. Dieses Tool kann auch zum Auflisten offener Ports verwendet werden. Es kann Tests an einem bestimmten Port oder einer Reihe von Ports durchführen.

Der folgende netcat-Befehl scannt den Port von 1 bis 1000. Der netcat-Befehl führt den Scan standardmäßig nach dem TCP-Protokoll durch:

$nc-Mit -vlocalhost1-1000

Sie kann auch auf die gesamte Liste der möglichen Ports erweitert werden:

$nc-Mit -vlocalhost1-65535

Lassen Sie uns eine kurze Aufschlüsselung der Flaggen haben.

  • Mit : Weist netcat an, nur nach offenen Ports zu suchen, ohne Daten zu senden
  • v : Weist netcat an, im ausführlichen Modus zu laufen

Um nur die offenen Ports aus dieser Liste zu erhalten, filtern Sie die Ausgabe mit grep nach dem Begriff erfolgreich.

$nc-Mit -vlocalhost0-65535 2> &1 | Griffgelungen

Wenn Sie den Scan über das UDP-Protokoll durchführen möchten, fügen Sie das Flag -u hinzu.

$nc-Mit -v -ulocalhost0-65535 2> &1 | Griffgelungen

Abschließende Gedanken

Wie gezeigt, gibt es unzählige Möglichkeiten, unter Linux nach offenen Ports zu suchen. Ich schlage vor, alle Methoden auszuprobieren, bevor Sie sich entscheiden, welche Sie beherrschen möchten. Wenn Sie ein bestimmtes Tool wie netcat oder nmap regelmäßig verwenden, ist es am vorteilhaftesten, die zugehörigen Methoden zu beherrschen.

Viel Spaß beim Rechnen!