In diesem Artikel wird erläutert, wie Sie mithilfe der Befehle netstat, lsof und nmap nach offenen Ports suchen, um herauszufinden, welche Dienste welche Ports überwachen.
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.
Der Netzwerkport wird durch seine Nummer, die zugehörige IP-Adresse und den Typ des Kommunikationsprotokolls wie TCP oder UDP identifiziert. Vor allem ist ein offener Port 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.
Mit netstat nach offenen Ports suchen
netstat
(Netzwerkstatistiken ) ist ein Befehlszeilentool zum Überwachen von eingehenden und ausgehenden Netzwerkverbindungen sowie zum Anzeigen von Routing-Tabellen, Schnittstellenstatistiken usw. Dieses Tool ist sehr wichtig und sehr nützlich für Linux-Netzwerkadministratoren sowie Systemadministratoren, um ihr Netzwerk zu überwachen und Fehler zu beheben -bezogene Probleme und Bestimmung der Leistung des Netzwerkverkehrs.
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 -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 24919/amavisd
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 800/tinyproxy
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 844/pure-ftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 768/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1001/dovecot
tcp6 0 0 :::3306 :::* LISTEN 823/mysqld
tcp6 0 0 ::1:783 :::* LISTEN 24911/spamd.pid -d
tcp6 0 0 :::80 :::* LISTEN 781/httpd
tcp6 0 0 :::21 :::* LISTEN 844/pure-ftpd
tcp6 0 0 :::22 :::* LISTEN 768/sshd
tcp6 0 0 :::25 :::* LISTEN 967/master
tcp6 0 0 :::993 :::* LISTEN 1001/dovecot
tcp6 0 0 :::995 :::* LISTEN 1001/dovecot
udp 0 0 0.0.0.0:47967 0.0.0.0:* 460/avahi-daemon: r
udp 0 0 127.0.0.1:123 0.0.0.0:* 472/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 472/ntpd
udp6 0 0 :::123 :::* 472/ntpd
Die in diesem Befehl verwendeten Optionen haben folgende Bedeutung:
-t
:TCP-Ports anzeigen.-u
:UDP-Ports anzeigen.-l
:Nur Listening Ports anzeigen.-n
:Numerische Adressen anzeigen statt Hosts aufzulösen.-p
:Zeigt die PID und den Namen des Listener-Prozesses an. Diese Informationen werden nur angezeigt, wenn Sie den Befehl als Root- oder sudo-Benutzer ausführen.
Die wichtigen Spalten in unserem Fall sind:
- Proto – Das vom Socket verwendete Protokoll.
- Lokale Adresse – Die IP-Adresse und Portnummer, die der Prozess überwacht.
- PID/Programmname – Die PID und der Name des Prozesses.
Wenn Sie die Ergebnisse filtern möchten, verwenden Sie außerdem grep
Befehl. Um beispielsweise herauszufinden, welcher Prozess auf TCP-Port 22 lauscht, würden Sie Folgendes eingeben:
$ sudo netstat -tulnp | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 768/sshd
tcp6 0 0 :::22 :::* LISTEN 768/sshd
Wenn die Ausgabe leer ist, bedeutet dies, dass nichts auf dem Port lauscht.
Weitere Informationen zu netstat
Befehl unter Linux finden Sie auf der Handbuchseite.
Mit lsof nach offenen Ports suchen
lsof
bedeutet "Geöffnete Dateien auflisten" wird verwendet, um herauszufinden, welche Dateien von welchem Prozess geöffnet sind. 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, geben Sie Folgendes ein:
$ sudo lsof -nP -iTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 768 root 3u IPv4 16112 0t0 TCP *:22 (LISTEN)
sshd 768 root 4u IPv6 16114 0t0 TCP *:22 (LISTEN)
httpd 781 root 4u IPv6 16328 0t0 TCP *:80 (LISTEN)
httpd 781 root 6u IPv6 16336 0t0 TCP *:443 (LISTEN)
tinyproxy 800 tinyproxy 0u IPv4 16750 0t0 TCP *:8080 (LISTEN)
tinyproxy 805 tinyproxy 0u IPv4 16750 0t0 TCP *:8080 (LISTEN)
mysqld 823 mysql 20u IPv6 17479 0t0 TCP *:3306 (LISTEN)
pure-ftpd 844 root 4u IPv4 16289 0t0 TCP *:21 (LISTEN)
pure-ftpd 844 root 5u IPv6 16290 0t0 TCP *:21 (LISTEN)
master 967 root 13u IPv4 17225 0t0 TCP *:25 (LISTEN)
master 967 root 103u IPv4 17319 0t0 TCP 127.0.0.1:10025 (LISTEN)
dovecot 1001 root 24u IPv4 18600 0t0 TCP *:995 (LISTEN)
dovecot 1001 root 37u IPv6 18623 0t0 TCP *:993 (LISTEN)
httpd 24344 apache 4u IPv6 16328 0t0 TCP *:80 (LISTEN)
httpd 24344 apache 6u IPv6 16336 0t0 TCP *:443 (LISTEN)
/usr/bin/ 24911 root 5u IPv4 25208447 0t0 TCP 127.0.0.1:783 (LISTEN)
/usr/bin/ 24911 root 6u IPv6 25208449 0t0 TCP [::1]:783 (LISTEN)
spamd 24913 root 5u IPv4 25208447 0t0 TCP 127.0.0.1:783 (LISTEN)
spamd 24913 root 6u IPv6 25208449 0t0 TCP [::1]:783 (LISTEN)
/usr/sbin 24919 amavis 5u IPv4 25208583 0t0 TCP 127.0.0.1:10024 (LISTEN)
/usr/sbin 24919 amavis 6u IPv6 25208584 0t0 TCP [::1]:10024 (LISTEN)
smtpd 28403 postfix 6u IPv4 17225 0t0 TCP *:25 (LISTEN)
smtpd 28403 postfix 7u IPv6 17226 0t0 TCP *:25 (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.
Um herauszufinden, welcher Prozess an einem bestimmten Port lauscht, beispielsweise Port 3306 verwenden Sie:
$ sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 823 mysql 20u IPv6 17479 0t0 TCP *:3306 (LISTEN)
Die Ausgabe zeigt, dass der MySQL-Server Port 3306 verwendet.
Weitere Informationen zu lsof
Befehl unter Linux finden Sie auf der Handbuchseite.
Mit nmap nach offenen Ports suchen
nmap
, oder Network Mapper , ist ein Open-Source-Linux-Befehlszeilentool für die Netzwerkerkundung und Sicherheitsüberwachung. Mit nmap können Serveradministratoren schnell Hosts und Dienste anzeigen, nach Sicherheitsproblemen suchen und nach offenen Ports suchen.
nmap
Befehle können verwendet werden, um zu prüfen, ob ein einzelner Port oder eine Reihe von Ports offen sind.
So scannen Sie Port 80 auf dem Zielsystem:
$ sudo nmap -p 80 192.168.0.1
Nmap scan report for 192.168.0.1
Host is up (0.000073s latency).
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
Scannen Sie die Ports 1 bis 200 auf dem Zielsystem:
$ sudo nmap -p 1-200 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:42 EEST
Nmap scan report for 192.168.0.1
Host is up (0.0000080s latency).
Not shown: 196 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds
Scanne (schnell) die gängigsten Ports:
$ sudo nmap -F 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:44 EEST
Nmap scan report for 192.168.0.1
Host is up (0.000014s latency).
Not shown: 89 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds
Unterm Strich
Wenn Sie abschließend prüfen, welche Ports offen sind und welche Informationen von den Diensten abgerufen werden können, die Verbindungen an diesen Ports akzeptieren, erhalten Sie die Informationen, die Sie benötigen, um Ihren Server zu sperren.
Beispielsweise können alle überflüssigen Informationen, die von Ihrem Computer durchgesickert sind, von einem böswilligen Benutzer verwendet werden, um zu versuchen, bekannte Schwachstellen auszunutzen oder neue zu entwickeln. Je weniger sie herausfinden können, desto besser.