GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie heraus, welcher Dienst an einem bestimmten Port lauscht

In diesem Handbuch werden einige verschiedene Möglichkeiten erläutert, wie Sie herausfinden können, welcher Dienst auf einem bestimmten Port in Linux lauscht. Die meisten von Ihnen kennen den Standardport beliebter Dienste oder Prozesse. Beispielsweise ist der Standardport von Apache 80, der FTP-Standardport 21 und der SSH-Standardport 22. Sie finden die Portnamen und -nummern in Linux wie in diesem Handbuch beschrieben . Die Standard-Portnummern können auch in benutzerdefinierte Ports geändert werden, um einen Linux-Server zu sichern. Die folgenden Anleitungen beschreiben beispielsweise, wie Sie den Standardport von Apache, FTP und SSH auf einen anderen Port ändern.

  • So ändern Sie den Apache-Standardport in einen benutzerdefinierten Port
  • So ändern Sie den FTP-Standardport in einen benutzerdefinierten Port
  • So ändern Sie den SSH-Standardport in einen benutzerdefinierten Port

Wenn die Standardportnummer geändert wird, wie würden Sie herausfinden, welcher Dienst welchen Port überwacht? Das werden wir jetzt herausfinden!

Finden Sie heraus, welcher Dienst auf einem bestimmten Port in Linux lauscht

Ich habe unten vier Methoden aufgelistet, um zu überprüfen, welcher Dienst in einer bestimmten Portnummer ausgeführt wird. Ich werde diese Liste ständig aktualisieren, wenn ich in Zukunft auf neue Methoden stoße. Setzen Sie also ein Lesezeichen und überprüfen Sie es ab und zu.

Methode 1 - Verwenden von netstat

Dies ist die am häufigsten verwendete Methode, um herauszufinden, welcher Dienst an welchem ​​Port lauscht. Netstat ist ein Befehlszeilendienstprogramm zum Drucken von Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Masquerade-Verbindungen und Multicast-Mitgliedschaften.

Netstat ist in den Standard-Repositories der meisten Linux-Distributionen verfügbar.

Gehen Sie wie folgt vor, um es unter Arch Linux und seinen Varianten zu installieren:

$ sudo pacman -S net-tools

Unter CentOS, RHEL:

$ sudo yum install net-tools

Auf Fedora:

$ sudo dnf install net-tools

Unter Debian, Ubuntu:

$ sudo apt install net-tools

Führen Sie nach der Installation den folgenden Befehl aus, um herauszufinden, welche Dienste welche Ports überwachen:

$ sudo netstat -tulpn

Beispielausgabe:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      665/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1026/sshd           
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      2068/python3        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1072/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1026/sshd           
tcp6       0      0 :::80                   :::*                    LISTEN      1062/apache2        
udp        0      0 127.0.0.53:53           0.0.0.0:*                           665/systemd-resolve 
udp        0      0 192.168.225.22:68       0.0.0.0:*                           647/systemd-network 
udp        0      0 192.168.225.53:68       0.0.0.0:*                           647/systemd-network 
udp6       0      0 fe80::a00:27ff:feff:546 :::*                                647/systemd-network 
udp6       0      0 fe80::a00:27ff:fe7e:546 :::*                                647/systemd-network

Wie Sie sehen können, ist ein Python-Dienst (simpleHTTPserver in diesem Fall) lauscht auf Portnummer 8000, der mysqld-Dienst lauscht auf Port 3306, der ssh-Dienst läuft auf Portnummer 22, apache2 läuft auf Port 80 und so weiter.

Hier,

  • -t Flag zeigt TCP-Verbindungen.
  • -u Flag zeigt UDP-Verbindungen an.
  • -l Flag zeigt Listening Sockets an.
  • -p Flag zeigt die Prozess-ID (PID) und den Prozessnamen dessen an, was diesen Port verwendet.
  • -n flag zeigt die numerischen Adressen an.

Der obige Befehl listet alle Dienste und die Portnummern auf, auf denen sie lauschen. Was ist, wenn Sie herausfinden möchten, welcher Dienst an einem bestimmten Port lauscht? Hier ist der Befehl grep ist praktisch! Wir können netstat kombinieren und grep Befehl, um die Ausgabe nach einem bestimmten Dienst zu filtern, zum Beispiel mysqld , wie unten.

$ sudo netstat -tulpn | grep mysqld
[sudo] password for sk: 
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Sehen? Der mysqld-Dienst lauscht auf Portnummer 3306.

Wenn Sie die Portnummer bereits kennen, aber nicht wissen, welcher Dienst sie derzeit verwendet, ersetzen Sie einfach den Dienstnamen durch die Portnummer, wie unten gezeigt.

$ sudo netstat -tulpn | grep -w 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Hier -w flag zeigt nur die Zeilen an, die Übereinstimmungen enthalten, die ganze Wörter bilden. Mit anderen Worten, -w Option zeigt die genaue Übereinstimmung der angegebenen Zeichenfolge.

Sie können auch -i verwenden Groß-/Kleinschreibung ignorieren, damit Zeichen, die sich nur in der Groß-/Kleinschreibung unterscheiden, übereinstimmen

$ sudo netstat -tulpn | grep -i 3306

So einfach ist das.

Weitere Einzelheiten finden Sie in den Manpages.

$ man netstat

Netstat ist größtenteils veraltet. Die Alternative zu netstat ist "ss".

Methode 2 - Verwenden des "ss"-Befehls

ss ist ein Befehlszeilendienstprogramm zum Untersuchen von Sockets. Es ist eine Alternative zu netstat und die Verwendung von "ss" ist fast die gleiche wie "netstat". Es ist auf Ubuntu und seinen Varianten vorinstalliert.

Um herauszufinden, welche Dienste auf welchen Ports lauschen, führen Sie Folgendes aus:

$ sudo ss -tulpn

Beispielausgabe:

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:*               users:(("systemd-resolve",pid=671,fd=12))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.22%enp0s3:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=17))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.53%enp0s8:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=25))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:fe7e:8a9c]%enp0s8:546                                [::]:*               users:(("systemd-network",pid=653,fd=24))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:feff:d2e0]%enp0s3:546                                [::]:*               users:(("systemd-network",pid=653,fd=22))                                                                                                                                
tcp            LISTEN            0                 80                                                    127.0.0.1:3306                            0.0.0.0:*               users:(("mysqld",pid=1076,fd=32))                                                                                                                                        
tcp            LISTEN            0                 128                                               127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=13))                                                                                                                                
tcp            LISTEN            0                 128                                                     0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=1015,fd=3))                                                                                                                                           
tcp            LISTEN            0                 128                                                           *:80                                    *:*               users:(("apache2",pid=1094,fd=4),("apache2",pid=1090,fd=4),("apache2",pid=1089,fd=4),("apache2",pid=1088,fd=4),("apache2",pid=1087,fd=4),("apache2",pid=1062,fd=4))      
tcp            LISTEN            0                 128                                                        [::]:22                                 [::]:*               users:(("sshd",pid=1015,fd=4))

Um die Ausgabe für einen bestimmten Dienst (z. B. mysqld) zu filtern, verwenden Sie:

$ sudo ss -tulpn | grep -w mysqld
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=1076,fd=32))

Weitere Einzelheiten finden Sie in den Manpages.

$ man ss

Methode 3 - Verwendung von lsof

Wie der Name schon sagt, lsof ist ein Befehlszeilendienstprogramm zum Auflisten aller geöffneten Dateien, die zu allen aktiven Prozessen gehören.

Um es unter Linux zu installieren, verwenden Sie je nach verwendetem Distributionstyp die folgenden Befehle.

Unter Arch Linux:

$ sudo pacman -S lsof

Unter Debian, Ubuntu:

$ sudo apt install lsof

Unter CentOS, RHEL:

$ sudo yum install lsof

Auf Fedora:

$ sudo dnf install lsof

Um herauszufinden, welche Prozesse auf welchen Ports laufen, geben Sie einfach die Portnummer wie im folgenden Befehl gezeigt an:

$ sudo lsof -i :80

Beispielausgabe:

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 1062     root    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1087 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1088 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1089 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1090 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1094 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)

Weitere Einzelheiten finden Sie in den Manpages.

$ man lsof

Methode 4 - Fixiererbefehl verwenden

Fixierer ist ein weiteres Befehlszeilenprogramm zum Identifizieren von Prozessen, die Dateien oder Sockets verwenden. Es zeigt die PIDs von Prozessen an, die die angegebenen Dateien oder Dateisysteme verwenden.

Es ist auch in den Standard-Repositories der meisten Linux-Distributionen verfügbar.

Um es unter Arch Linux zu installieren, führen Sie Folgendes aus:

$ sudo pacman -S psmisc

Unter Debian, Ubuntu:

$ sudo apt install psmisc

Unter CentOS, RHEL:

$ sudo yum install psmisc

Auf Fedora:

$ sudo dnf install psmisc

Zuerst müssen wir die PID eines Dienstes oder Prozesses finden, der einen bestimmten Port überwacht. Zum Beispiel werde ich die PID eines Prozesses finden, der auf Port 3306 lauscht, indem ich den Befehl verwende:

$ sudo fuser 3306/tcp

Sie werden eine Ausgabe wie unten sehen.

3306/tcp: 1076

Hier, 1076 ist die PID.

Und dann finden Sie den tatsächlichen Prozess mithilfe der PID mit dem Befehl heraus:

$ ps -p 1076 -o comm=
mysqld

Alternativ können Sie -v verwenden Flag, um die vollständigen Details in einem einzigen Befehl anzuzeigen.

$ sudo fuser -v 3306/tcp
                     USER        PID ACCESS COMMAND
3306/tcp:            mysql      1076 F.... mysqld

Weitere Einzelheiten finden Sie in den Manpages.

$ man fuser

Sie kennen jetzt vier verschiedene Tools, um herauszufinden, welche Prozesse auf welchen Ports lauschen. Alle vier sind einfach zu bedienen und in den meisten Linux-Distributionen verfügbar. Wenn Sie andere Tools kennen, teilen Sie uns dies im Kommentarbereich unten mit. Ich werde diese Liste entsprechend prüfen und aktualisieren.


Linux
  1. Wie schließe ich die rmiregistry, die auf einem bestimmten Port ausgeführt wird?

  2. So überprüfen Sie, ob ein bestimmter Dienst unter Ubuntu ausgeführt wird

  3. Wie finde ich den Namensraum eines bestimmten Prozesses heraus?

  4. Wie finde ich welche Java-Version im installierten Java-Ordner?

  5. Wie kann ich herausfinden, welches Server-Betriebssystem auf einer bestimmten Site ausgeführt wird?

So finden Sie die Portnummer eines Dienstes in Linux

So finden Sie heraus, zu welchen Gruppen ein Benutzer in Linux gehört

Finden Sie heraus, welche Prozesse auf einem bestimmten Port in Linux lauschen

Debian:Finden Sie heraus, auf welcher Portnummer ein Prozess lauscht

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

Linux:Finden Sie heraus, auf welcher Portnummer ein Prozess lauscht