In Linux ist ein Port ein logischer Kommunikationsendpunkt, der einem laufenden Dienst im Betriebssystem zugeordnet ist. Ports werden vollständig vom Betriebssystem verwaltet, und jeder Port ist einem bestimmten Dienst zugeordnet. Ports helfen Administratoren zu erkennen, welche Dienste auf dem System ausgeführt werden.
Jedem Port wird normalerweise eine Nummer zugewiesen. Portnummern reichen von 0 bis 65535. Ports kleiner als 1024 werden als privilegierte Ports bezeichnet und werden für spezielle Protokolle verwendet. Beispielsweise geht Webverkehr (HTTP) über Port 80, während SSH Port 22 abhört. Ports größer als 1024 werden als nicht privilegiert bezeichnet Ports und können für Testzwecke verwendet werden. Beispielsweise können Sie Ihren Webserver so konfigurieren, dass er auf einem dieser Ports statt auf der Standard-Portnummer läuft.
In diesem Handbuch konzentrieren wir uns darauf, wie Sie herausfinden können, welche Prozesse auf welchen Ports in Linux lauschen. Wir haben Ubuntu 20.04 zu Demonstrationszwecken verwendet.
Mit dem Linux-Befehl netstat
Der Linux-Befehl Netstat ist ein Kunstwort aus den Wörtern Netzwerk und Statistik. Wie Sie vielleicht erraten haben, handelt es sich um ein Befehlszeilenprogramm zum Anzeigen von Netzwerk- und Protokollstatistiken auf einem Linux-System. Außerdem können Sie die Routing-Tabelle, den Status von TCP- und UDP-Endpunkten und Informationen über Ihre Netzwerkschnittstellen ausdrucken.
Um anzuzeigen, welcher Prozess einen bestimmten Port abhört, verwenden Sie die folgende Syntax:
# netstat -pnltu | grep -w port_number
Lassen Sie uns die Liste der Optionen aufschlüsseln:
p – Zeigt den Prozessnamen und die ID an
n – Zeigt die Portadresse an
l – Listet nur Listening-Sockets auf
t – Gibt TCP-Verbindungen aus
u – Druckt UDP-Verbindungen aus
Im folgenden Beispiel suchen wir nach dem Dienst, der Port 80 überwacht.
# netstat -pnltu | grep -w 80
Die Ausgabe zeigt an, dass es der Apache-Webserver-Dienst ist, der auf Port 80 lauscht.
Um zu überprüfen, ob der Dienst auf Port 3306 lauscht. Führen Sie Folgendes aus:
# netstat -pnltu | grep -w 3306
Mit dem lsof-Befehl
Der lsof-Befehl, ein Akronym für „List Open Files“, ist ein Befehl, der zum Aufdecken geöffneter Dateien und Verzeichnisse verwendet wird. Mit dem -i Option kann es die Dienste anzeigen, die einen bestimmten Port abhören.
Im folgenden Beispiel suchen wir nach dem Dienst, der TCP-Port 22 überwacht, bei dem es sich um den SSH-Dienst (Secure Shell) handelt.
# lsof -i TCP:22
Verwenden des Fixiererbefehls
Als letztes haben wir den Fuser-Befehl. Das Fuser-Dienstprogramm ist ein intelligentes Befehlszeilentool, das zum Auffinden von Prozessen mithilfe eines Sockets, einer Datei oder alternativ eines Verzeichnisses verwendet wird. Es macht auch viele Dinge wie das Anzeigen des Prozesstyps, der PID jedes Prozesses, des Benutzers, dem der Prozess gehört.
Um mit fuser den Dienst herauszufinden, der einen Port überwacht, müssen Sie zuerst die PID des Prozesses wie gezeigt herausfinden.
# fuser 22/tcp
Fahren Sie danach fort und rufen Sie den Befehl ps auf, um den Namen des Dienstes anzuzeigen. Beachten Sie, dass 34093 ist die PID des Prozesses, die wir vom vorherigen Befehl erhalten haben
# ps -p 34093 -o comm=
Schlussfolgerung
Wir haben 3 Möglichkeiten veranschaulicht, mit denen Sie die Prozesse aufdecken können, die bestimmte Ports auf Ihrem Linux-System überwachen. Wir hoffen, dass Sie dies jetzt ohne Probleme tun können.