GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare la presenza di porte aperte in Linux con netstat, lsof e nmap

Questo articolo spiega come verificare la presenza di porte aperte utilizzando i comandi netstat, lsof e nmap per scoprire quali servizi sono in ascolto su quali porte.

Durante la risoluzione dei problemi di connettività di rete o di problemi specifici dell'applicazione, una delle prime cose da controllare dovrebbe essere quali porte sono effettivamente in uso sul tuo sistema e quale applicazione è in ascolto su una porta specifica.

La porta di rete è identificata dal numero, dall'indirizzo IP associato e dal tipo di protocollo di comunicazione, come TCP o UDP. Soprattutto, una porta aperta è una porta di rete su cui un'applicazione o un processo è in ascolto, fungendo da endpoint di comunicazione.

Ciascuna porta di ascolto può essere aperta o chiusa (filtrata) utilizzando un firewall. In termini generali, una porta aperta è una porta di rete che accetta i pacchetti in arrivo da località remote.

Verifica porte aperte con netstat

netstat (statistiche di rete ) è uno strumento da riga di comando per monitorare le connessioni di rete sia in entrata che in uscita, nonché visualizzare tabelle di routing, statistiche dell'interfaccia, ecc. Questo strumento è molto importante e molto utile per gli amministratori di rete Linux e gli amministratori di sistema per monitorare e risolvere i problemi della propria rete -problemi correlati e determinano le prestazioni del traffico di rete.

Per elencare tutte le porte TCP o UDP su cui sono in ascolto, inclusi i servizi che utilizzano le porte e lo stato del socket, utilizzare il comando seguente:

$ 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 

Le opzioni utilizzate in questo comando hanno il seguente significato:

  • -t :mostra le porte TCP.
  • -u :mostra le porte UDP.
  • -l :mostra solo le porte di ascolto.
  • -n :mostra gli indirizzi numerici invece di risolvere gli host.
  • -p :mostra il PID e il nome del processo dell'ascoltatore. Queste informazioni vengono mostrate solo se esegui il comando come utente root o sudo.

Le colonne importanti nel nostro caso sono:

  • Proto – Il protocollo utilizzato dal socket.
  • Indirizzo locale:l'indirizzo IP e il numero di porta in ascolto del processo.
  • PID/Nome programma:il PID e il nome del processo.

Inoltre, se vuoi filtrare i risultati, usa il grep comando. Ad esempio, per trovare quale processo è in ascolto sulla porta TCP 22, digitare:

$ 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

Se l'output è vuoto significa che nulla è in ascolto sulla porta.

Per ulteriori informazioni su netstat comando in Linux, consulta la sua pagina del manuale.

Verifica porte aperte con lsof

lsof che significa 'Elenca i file aperti' viene utilizzato per scoprire quali file vengono aperti con quale processo. In Linux, tutto è un file. Puoi pensare a un socket come a un file che scrive sulla rete.

Per ottenere un elenco di tutte le porte TCP in ascolto con tipo 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)

Le opzioni utilizzate sono le seguenti:

  • -n :non convertire i numeri di porta in nomi di porta.
  • -P :non risolve i nomi host, mostra gli indirizzi numerici.
  • -iTCP -sTCP:LISTEN :mostra solo i file di rete con lo stato TCP LISTEN.

Per scoprire quale processo è in ascolto su una porta particolare, ad esempio la porta 3306, dovresti utilizzare:

$ 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)

L'output mostra che il server MySQL utilizza la porta 3306.

Per ulteriori informazioni su lsof comando in Linux, consulta la sua pagina del manuale.

Verifica porte aperte con nmap

nmap o Mapper di rete , è uno strumento da riga di comando Linux open source per l'esplorazione della rete e il controllo della sicurezza. Con nmap, gli amministratori dei server possono rivelare rapidamente host e servizi, cercare problemi di sicurezza e cercare porte aperte.

nmap i comandi possono essere utilizzati per verificare che una singola porta o una serie di porte siano aperte.

Ecco come scansionare la porta 80 sul sistema di destinazione:

$ 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

Scansiona le porte da 1 a 200 sul sistema di destinazione:

$ 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

Scansiona (velocemente) le porte più comuni:

$ 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

Linea inferiore

In conclusione, controllare quali porte sono aperte e quali informazioni possono essere ottenute dai servizi che accettano connessioni su quelle porte ti dà le informazioni di cui hai bisogno per bloccare il tuo server.

Ad esempio, qualsiasi informazione estranea trapelata dal tuo computer può essere utilizzata da un utente malintenzionato per tentare di sfruttare vulnerabilità note o svilupparne di nuove. Meno riescono a capire, meglio è.


Linux
  1. Come verificare la presenza di porte aperte in Linux con netstat, lsof e nmap

  2. Come controllare l'ascolto / aprire le porte con Netstat su Linux

  3. Come controllare la porta aperta su un sistema Linux remoto

  4. Controlla le porte di ascolto con netstat

  5. Come controllare la password con Linux?

Come controllare le porte aperte su Debian 10

Come verificare che una porta sia aperta su un sistema Linux remoto

Come trovare e chiudere le porte aperte in Linux

Come controllare la versione del sistema operativo con la riga di comando di Linux

Come controllare tutte le porte aperte nel tuo sistema Linux

Come controllare le porte aperte in Linux?