Tento článek vysvětluje, jak zkontrolovat otevřené porty pomocí příkazů netstat, lsof a nmap, abyste zjistili, které služby na kterých portech naslouchají.
Při odstraňování problémů se síťovou konektivitou nebo problémy se specifickými aplikacemi by jednou z prvních věcí, které byste měli zkontrolovat, mělo být, jaké porty se ve vašem systému skutečně používají a která aplikace na konkrétním portu naslouchá.
Síťový port je identifikován svým číslem, přidruženou IP adresou a typem komunikačního protokolu, jako je TCP nebo UDP. Otevřený port je především síťový port, na kterém aplikace nebo proces naslouchá a funguje jako komunikační koncový bod.
Každý naslouchací port lze otevřít nebo zavřít (filtrovat) pomocí firewallu. Obecně řečeno, otevřený port je síťový port, který přijímá příchozí pakety ze vzdálených umístění.
Vyhledat otevřené porty pomocí netstat
netstat
(statistika sítě ) je nástroj příkazového řádku pro monitorování síťových připojení, jak příchozích, tak odchozích, stejně jako zobrazení směrovacích tabulek, statistik rozhraní atd. Tento nástroj je velmi důležitý a velmi užitečný pro správce sítě Linux i správce systému pro sledování a odstraňování problémů v síti. -související problémy a určit výkon síťového provozu.
Chcete-li zobrazit seznam všech portů TCP nebo UDP, na kterých se naslouchá, včetně služeb využívajících porty a stavu soketu, použijte následující příkaz:
$ 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
Možnosti použité v tomto příkazu mají následující význam:
-t
:Zobrazit porty TCP.-u
:Zobrazit porty UDP.-l
:Zobrazit pouze naslouchající porty.-n
:Místo rozlišení hostitelů zobrazovat číselné adresy.-p
:Zobrazí PID a název procesu posluchače. Tyto informace se zobrazí pouze v případě, že příkaz spustíte jako uživatel root nebo sudo.
V našem případě jsou důležité sloupce:
- Proto – protokol používaný soketem.
- Místní adresa – IP adresa a číslo portu, kterému proces naslouchá.
- PID/Název programu – PID a název procesu.
Kromě toho, pokud chcete filtrovat výsledky, použijte grep
příkaz. Chcete-li například zjistit, který proces naslouchá na portu TCP 22, zadejte:
$ 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
Pokud je výstup prázdný, znamená to, že na portu nic neposlouchá.
Další informace o netstat
příkaz v systému Linux, podívejte se na stránku jeho příručky.
Vyhledat otevřené porty pomocí lsof
lsof
což znamená „Seznam otevřených souborů“ se používá ke zjištění, které soubory jsou otevřeny kterým procesem. V Linuxu je vše soubor. Soket si můžete představit jako soubor, který zapisuje do sítě.
Chcete-li získat seznam všech naslouchacích portů TCP s typem lsof:
$ 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)
Použité možnosti jsou následující:
-n
:Nepřevádějte čísla portů na názvy portů.-P
:Nepřekládat názvy hostitelů, zobrazovat číselné adresy.-iTCP -sTCP:LISTEN
:Zobrazí pouze síťové soubory se stavem TCP LISTEN.
Chcete-li zjistit, jaký proces naslouchá na konkrétním portu, například na portu 3306, použijte:
$ 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)
Výstup ukazuje, že server MySQL používá port 3306.
Další informace o lsof
příkaz v systému Linux, podívejte se na stránku jeho příručky.
Vyhledat otevřené porty pomocí nmap
nmap
nebo Network Mapper , je open source nástroj příkazového řádku pro Linux pro průzkum sítě a bezpečnostní audit. S nmap mohou administrátoři serveru rychle odhalit hostitele a služby, hledat bezpečnostní problémy a skenovat otevřené porty.
nmap
Příkazy lze použít ke kontrole jednoho portu nebo řady portů, zda je otevřená.
Zde je návod, jak skenovat port 80 v cílovém systému:
$ 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
Prohledejte porty 1 až 200 v cílovém systému:
$ 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
Prohledejte (rychle) nejběžnější porty:
$ 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
Sečteno a podtrženo
Na závěr, kontrola, které porty jsou otevřené a jaké informace lze získat od služeb přijímajících připojení na těchto portech, vám poskytne informace, které potřebujete k uzamčení serveru.
Například jakékoli cizí informace unikající z vašeho počítače mohou být zneužity uživatelem se zlými úmysly, aby se pokusil zneužít známé zranitelnosti nebo vyvinout nové. Čím méně toho mohou zjistit, tím lépe.