In der Vernetzung ist ein Port ein interessantes Feature. Auf diese Weise kann der Netzwerkverkehr die Ziel-App oder den Zieldienst identifizieren. Jeder Prozess/Dienst bekommt seinen einzigartigen 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 „Well-known“-Ports, auch bekannt als „System“-Ports, die für Systemprozesse reserviert sind, die verschiedenste Netzwerkdienste anbieten. Um mit einem „Well-known“-Port zu binden, muss ein Prozess Superuser-Rechte haben.
- 1024 bis 49151: Dies sind die „registrierten“ Ports, auch als „Benutzer“-Ports 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 bekannt als die „privaten“ Ports. 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 geöffnet 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 starker Hinweis auf ein Eindringen in das Netzwerk sein.
Die folgenden Methoden werden auf Ubuntu 20 . demonstriert.04.1 LTS.
Protokolle und offene Ports von /etc/services auflisten
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.
$ cat /etc/services | 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 eine kurze Aufschlüsselung aller Flags haben, die wir in diesem Befehl verwendet haben.
- ein: 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?
- l: Weist netstat an, nur die lauschenden Sockets zu drucken
- nein: Weist netstat an, die Portnummer anzuzeigen
Um die PID des Prozesses anzuzeigen, der einen Port verwendet, verwenden Sie das Flag „-p“:
$ netstat -lntup
Offene Ports mit ss auflisten
Das ss-Tool ist ein Dienstprogramm zum Untersuchen von Sockets. Seine Verwendung ist ähnlich wie netstat.
Führen Sie den folgenden ss-Befehl aus, um die offenen Ports aufzulisten:
$ ss -lntu
Die Flags sind ähnlich wie netstat. Die von ihnen beschriebenen Funktionen sind auch ziemlich ähnlich.
- l: Weist ss an, Abhör-Sockets anzuzeigen
- nein: 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 besteht darin, geöffnete Dateien aufzulisten. Es kann aber auch zur Anzeige der offenen Ports verwendet werden.
Führen Sie den folgenden lsof-Befehl aus:
$ lsof -i
Um die offenen Ports eines bestimmten Protokolls zu erhalten (TCP, UDP usw.).) definieren Sie es dann nach dem Flag „-i“ und verwenden Sie:
$ lsof -i
Offene Ports mit nmap auflisten
Das nmap-Tool ist ein leistungsstarkes Tool für die Netzwerk-Exploration und Sicherheit/Port-Scans. Es kann alle offenen Ports im System melden.
Um die offenen TCP-Ports aufzulisten, führen Sie den folgenden nmap-Befehl aus. Hier ist die IP-Adresse des Host-Computers:
$ sudo nmap -sT -p- localhost
Hier gibt es zwei Teile des Befehlsarguments.
- -st: 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 -sU -p- localhost
Um sowohl die offenen TCP- als auch die UDP-Ports abzurufen, verwenden Sie den folgenden Befehl:
$ sudo nmap -n -PN -sT -sU -p- localhostOffene Ports mit netcat auflisten
Das netcat-Tool ist ein Befehlszeilen-Dienstprogramm zum Lesen und Schreiben von Daten über Netzwerkverbindungen über die Protokolle TCP und UDP. Dieses Tool kann auch zum Auflisten von offenen 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 Befehl netcat führt den Scan standardmäßig nach dem TCP-Protokoll durch:
$ nc -z -v localhost 1-1000
Sie kann auch auf die gesamte Liste der möglichen Ports erweitert werden:
$ nc -z -v localhost 1-65535
Lassen Sie uns die Flaggen kurz aufschlüsseln.
- z: Weist netcat an, nur nach offenen Ports zu scannen, 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 „succeeded“.
$ nc -z -v localhost 0-65535 2>&1 | grep war erfolgreichWenn Sie den Scan über das UDP-Protokoll durchführen möchten, fügen Sie das Flag „-u“ hinzu.
$ nc -z -v -u localhost 0-65535 2>&1 | grep war erfolgreichAbschließende Gedanken
Wie gezeigt, gibt es unter Linux unzählige Möglichkeiten, 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!