GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat otevřené porty v Linuxu pomocí netstat, lsof a nmap

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.


Linux
  1. Jak zkontrolovat poslech / otevřené porty pomocí Netstat v systému Linux

  2. Zkontrolujte naslouchací porty pomocí netstat

  3. Jak zkontrolovat heslo v Linuxu?

  1. Jak zkontrolovat otevřené porty v Linuxu pomocí netstat, lsof a nmap

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Jak zkontrolovat otevřený port na vzdáleném systému Linux

  1. Jak skenovat a najít všechny otevřené porty pomocí Nmap

  2. Jak zkontrolovat otevřené porty na RHEL 8 / CentOS 8 Linux

  3. Jak zobrazit/zkontrolovat otevřené porty na Ubuntu Linux