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

So suchen Sie unter Linux nach Listening Ports (Ports in use)

Bei der Behebung von Problemen mit der Netzwerkkonnektivität oder anwendungsspezifischen Problemen sollte eines der ersten Dinge überprüft werden, welche Ports tatsächlich auf Ihrem System verwendet werden und welche Anwendung einen bestimmten Port abhört.

In diesem Artikel wird die Verwendung von netstat erläutert , ss und lsof Befehle, um herauszufinden, welche Dienste auf welchen Ports lauschen. Die Anleitung gilt für alle Linux- und Unix-basierten Betriebssysteme wie macOS.

Was ist Listening Port #

Der Netzwerkport wird durch seine Nummer, die zugehörige IP-Adresse und den Typ des Kommunikationsprotokolls wie TCP oder UDP identifiziert.

Listening Port ist ein Netzwerkport, an dem eine Anwendung oder ein Prozess lauscht und als Kommunikationsendpunkt fungiert.

Jeder Listening-Port kann mithilfe einer Firewall geöffnet oder geschlossen (gefiltert) werden. Im Allgemeinen ist ein offener Port ein Netzwerkport, der eingehende Pakete von entfernten Standorten akzeptiert.

Es ist nicht möglich, dass zwei Dienste denselben Port an derselben IP-Adresse überwachen.

Wenn Sie beispielsweise einen Apache-Webserver betreiben, der Ports 80 abhört und 443 und Sie versuchen, Nginx zu installieren, wird letzteres nicht gestartet, da die HTTP- und HTTPS-Ports bereits verwendet werden.

Listening-Ports mit netstat prüfen #

netstat ist ein Befehlszeilentool, das Informationen über Netzwerkverbindungen bereitstellen kann.

Verwenden Sie den folgenden Befehl, um alle TCP- oder UDP-Ports aufzulisten, die überwacht werden, einschließlich der Dienste, die die Ports und den Socket-Status verwenden:

sudo netstat -tunlp

Die in diesem Befehl verwendeten Optionen haben folgende Bedeutung:

  • -t - TCP-Ports anzeigen.
  • -u - UDP-Ports anzeigen.
  • -n - Numerische Adressen anzeigen statt Hosts aufzulösen.
  • -l - Nur Listening Ports anzeigen.
  • -p - Zeigen Sie die PID und den Namen des Listener-Prozesses an. Diese Informationen werden nur angezeigt, wenn Sie den Befehl als root oder sudouser ausführen.

Die Ausgabe sieht in etwa so aus:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      445/sshd            
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      929/master          
tcp6       0      0 :::3306                 :::*                    LISTEN      534/mysqld          
tcp6       0      0 :::80                   :::*                    LISTEN      515/apache2         
tcp6       0      0 :::22                   :::*                    LISTEN      445/sshd            
tcp6       0      0 :::25                   :::*                    LISTEN      929/master          
tcp6       0      0 :::33060                :::*                    LISTEN      534/mysqld          
udp        0      0 0.0.0.0:68              0.0.0.0:*                           966/dhclient  

Die wichtigen Spalten in unserem Fall sind:

  • Proto - Das vom Socket verwendete Protokoll.
  • Local Address - Die IP-Adresse und Portnummer, die der Prozess abhört.
  • PID/Program name - Die PID und der Name des Prozesses.

Wenn Sie die Ergebnisse filtern möchten, verwenden Sie grep Befehl. Um beispielsweise herauszufinden, welcher Prozess auf TCP-Port 22 lauscht, würden Sie Folgendes eingeben:

sudo netstat -tnlp | grep :22

Die Ausgabe zeigt, dass auf dieser Maschine Port 22 vom SSH-Server verwendet wird:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      445/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      445/sshd

Wenn die Ausgabe leer ist, bedeutet dies, dass nichts auf dem Port lauscht.

Sie können die Liste auch nach Kriterien filtern, z. B. PID, Protokoll, Status usw.

netstat ist veraltet und wird durch ss ersetzt und ip , aber es ist immer noch einer der am häufigsten verwendeten Befehle zum Überprüfen von Netzwerkverbindungen.

Listening-Ports mit ss prüfen #

ss ist das neue netstat . Es fehlen einige der netstat Features, macht aber mehr TCP-Zustände verfügbar und ist etwas schneller. Die Befehlsoptionen sind größtenteils gleich, daher der Übergang von netstat zu ss ist nicht schwierig.

Mit ss erhalten Sie eine Liste aller Listening Ports Sie würden Folgendes eingeben:

sudo ss -tunlp

Die Ausgabe ist fast dieselbe wie die von netstat gemeldete :

State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port                                                                                        
LISTEN   0        128              0.0.0.0:22             0.0.0.0:*      users:(("sshd",pid=445,fd=3))                                                        
LISTEN   0        100              0.0.0.0:25             0.0.0.0:*      users:(("master",pid=929,fd=13))                                                     
LISTEN   0        128                    *:3306                 *:*      users:(("mysqld",pid=534,fd=30))                                                     
LISTEN   0        128                    *:80                   *:*      users:(("apache2",pid=765,fd=4),("apache2",pid=764,fd=4),("apache2",pid=515,fd=4))   
LISTEN   0        128                 [::]:22                [::]:*      users:(("sshd",pid=445,fd=4))                                                        
LISTEN   0        100                 [::]:25                [::]:*      users:(("master",pid=929,fd=14))                                                     
LISTEN   0        70                     *:33060                *:*      users:(("mysqld",pid=534,fd=33))

Listening-Ports mit lsof prüfen #

lsof ist ein leistungsstarkes Befehlszeilenprogramm, das Informationen über von Prozessen geöffnete Dateien bereitstellt.

Unter Linux ist alles eine Datei. Sie können sich einen Socket als eine Datei vorstellen, die in das Netzwerk schreibt.

Um eine Liste aller lauschenden TCP-Ports mit lsof zu erhalten Typ:

sudo lsof -nP -iTCP -sTCP:LISTEN

Die verwendeten Optionen lauten wie folgt:

  • -n - Portnummern nicht in Portnamen umwandeln.
  • -p - Hostnamen nicht auflösen, numerische Adressen anzeigen.
  • -iTCP -sTCP:LISTEN - Nur Netzwerkdateien mit TCP-Status LISTEN anzeigen.
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      445     root    3u  IPv4  16434      0t0  TCP *:22 (LISTEN)
sshd      445     root    4u  IPv6  16445      0t0  TCP *:22 (LISTEN)
apache2   515     root    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
mysqld    534    mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)
mysqld    534    mysql   33u  IPv6  19973      0t0  TCP *:33060 (LISTEN)
apache2   764 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
apache2   765 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
master    929     root   13u  IPv4  19637      0t0  TCP *:25 (LISTEN)
master    929     root   14u  IPv6  19638      0t0  TCP *:25 (LISTEN)

Die Namen der meisten Ausgabespalten sind selbsterklärend:

  • COMMAND , PID , USER - Der Name, die PID und der Benutzer, der das dem Port zugeordnete Programm ausführt.
  • NAME - Die Portnummer.

Um herauszufinden, welcher Prozess an einem bestimmten Port lauscht, z. B. Port 3306 Sie würden verwenden:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

Die Ausgabe zeigt, dass der MySQL-Server Port 3306 verwendet :

COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  534 mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)

Weitere Informationen finden Sie auf der lsof-Manpage und lesen Sie alle anderen leistungsstarken Optionen dieses Tools.

Schlussfolgerung #

Wir haben Ihnen mehrere Befehle gezeigt, mit denen Sie überprüfen können, welche Ports auf Ihrem System verwendet werden und wie Sie herausfinden können, welcher Prozess an einem bestimmten Port lauscht.

Wenn Sie Fragen oder Anmerkungen haben, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. So verwenden Sie BusyBox unter Linux

  2. So verwenden Sie erweitertes rsync für große Linux-Backups

  3. So verwenden Sie systemd-nspawn für die Linux-Systemwiederherstellung

  4. So verwenden Sie den Su-Befehl unter Linux

  5. So suchen Sie unter Linux mit netstat, lsof und nmap nach offenen Ports

So führen Sie einen Port-Scan unter Linux durch

So überprüfen Sie offene Ports in Linux

So überprüfen Sie, ob ein Port auf einem Remote-Linux-System geöffnet ist

So finden und schließen Sie offene Ports in Linux

So verwenden Sie Netcat zum Scannen offener Ports in Linux

Wie überprüfe ich offene Ports in Linux?