Come controllare le porte aperte / chiuse sul mio computer?


135

Come controllare le porte aperte / chiuse sul mio computer?

Ho usato netstat -adalla riga di comando.

  • Lo stato della porta "ASCOLTO" indica che la porta è aperta?
  • Qualche porta, che non è mostrata nell'output, è chiusa?


2
@Justgivemeaname: nmapè uno strumento per verificare la presenza di porte aperte su un altro host. Se riesci a funzionare netstatsu una macchina, è molto più veloce e affidabile utilizzarla.
David Foerster,

@DavidFoerster: Non lo sapevo netstat, quindi l'ho imparato. Dice nel link che dovrebbe essere usato da un altro host, però. Grazie!
Justgivemeaname

Risposte:


164

Ci sono alcuni parametri netstatche sono utili per questo:

  • -loppure --listeningmostra solo le prese attualmente in ascolto per la connessione in entrata.
  • -ao --allmostra tutti i socket attualmente in uso.
  • -to --tcpmostra i socket tcp.
  • -uo --udpmostra i socket udp.
  • -noppure --numericmostra gli host e le porte come numeri, invece di risolverli in dns e cercare in / etc / services.

Usi un mix di questi per ottenere quello che vuoi. Per sapere quali numeri di porta sono attualmente in uso, utilizzare uno di questi:

netstat -atn           # For tcp
netstat -aun           # For udp
netstat -atun          # For both

Nell'uscita tutte le porte menzionate sono in uso sia in ascolto per la connessione in entrata o connesse a un peer ** tutte le altre sono chiuse. Le porte TCP e UDP hanno una larghezza di 16 bit (vanno da 1-65535)

** Possono anche connettersi / disconnettersi dal peer.


71

Puoi usare questo comando:

netstat -tulnp | grep <port no>

Se mostra qualche processo viene utilizzato. È chiuso (non utilizzato) se non è presente alcun output.


20

Un'altra riga di comando alternativa facile da usare per scoprire quale processo utilizza una porta:

lsof -n -i4TCP:$PORT | grep LISTEN

Ho aggiunto la funzione successiva nel mio .bash_profile,

function pslisten {
    echo `lsof -n -i4TCP:$1 | grep LISTEN`
}

e ora esegui "pslisten 5060" per vedere chi sta afferrando la mia porta SIP.

Funziona anche con Apple Mac OS X.


13

Lo stato della porta "ASCOLTO" indica che la porta è aperta?

Sì. Significa che alcuni servizi stanno ascoltando quella porta sul tuo computer per la connessione in entrata, ovvero questa porta è aperta per stabilire nuove connessioni.

Qualche porta che non è mostrata nell'output indica che è chiusa?

Sì. Ricorda netstat -amostrerà tutte le connessioni attive (in ascolto ) e passive ( non in ascolto ), cioè le porte che agiscono come entrambi i server (alcuni servizi stanno ascoltando queste porte per le connessioni da una macchina / processo diverso) e stabilite (le connessioni sono stabilite su questi porte indipendentemente dal fatto che l'host / un servizio possa essere un server o un client)

Tutte le porte TCP e UDP appartengono a una categoria chiamata socket e ce ne sono molte. Per visualizzare le informazioni sui socket è possibile verificare man ss.


Grazie. hai scritto che -asignifica server e stabilito. "Server" significa porte ascoltate da alcuni servizi? "Stabilito" significa porte in cui esistono connessioni esistenti indipendentemente dal fatto che sia una porta client o server? Quindi quali tipi di porte non -avengono visualizzati?
Tim

Non credo che l' -aopzione significhi prese "tutte attive"; significa solo "tutto". netstat mostra tutti i socket attivi per impostazione predefinita, ma esclude i socket passivi (aperti, in ascolto). Utilizzando l' -aopzione vengono mostrati sia socket attivi che passivi.
Egon Olieux,

@EgonOlieux Grazie. Sono corretto; ha modificato la risposta.
heemayl

@heemayl La seconda parte della tua risposta non è ancora corretta. Un socket TCP nello stato "in ascolto" non può mai essere una connessione; non è collegato a nulla, sta solo ascoltando. I socket TCP in ascolto sono anche chiamati socket passivi per questo motivo. Se un client tenta di connettersi a un socket (in ascolto) su un server, verrà creato un nuovo socket sul server per stabilire una connessione con il client. Un socket che fa parte di una connessione stabilita è chiamato socket attivo.
Egon Olieux,

3

Un'altra opzione è ss . È molto più facile da usare ....

Il comando seguente mostrerà solo un elenco delle prese di ascolto correnti.

root@server:~# ss -l

    Netid  State      Recv-Q Send-Q                                     Local Address:Port                                                      Peer Address:Port   


u_dgr  UNCONN     0      0                                                      * 23353                                                                * 23352                
u_dgr  UNCONN     0      0                                                      * 568                                                                  * 362                  
u_dgr  UNCONN     0      0                                                      * 14836                                                                * 14837                
u_dgr  UNCONN     0      0                                                      * 20446                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 22877                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 504                                                                  * 347                  
u_dgr  UNCONN     0      0                                                      * 16298                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23343                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24125                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24617                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23352                                                                * 23353                
u_dgr  UNCONN     0      0                                                      * 23334                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 17113                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 16957                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 14793                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 23345                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 24070                                                                * 369                  
udp    UNCONN     0      0                                                      *:sunrpc                                                               *:*                    
udp    UNCONN     0      0                                                      *:981                                                                  *:*                    
udp    UNCONN     0      0                                                     :::sunrpc                                                              :::*                    
udp    UNCONN     0      0                                                     :::981                                                                 :::*                    
tcp    LISTEN     0      128                                            127.0.0.1:85                                                                   *:*                    
tcp    LISTEN     0      128                                                    *:ssh                                                                  *:*                    
tcp    LISTEN     0      128                                                    *:3128                                                                 *:*                    
tcp    LISTEN     0      100                                            127.0.0.1:smtp                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:8006                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:sunrpc                                                               *:*                    
tcp    LISTEN     0      128                                                   :::ssh                                                                 :::*                    
tcp    LISTEN     0      100                                                  ::1:smtp                                                                :::*                    
tcp    LISTEN     0      128                                                   :::sunrpc                                                              :::*                    

1
Non lo sapevo, grazie zee
nick fox

2

O questo potrebbe essere d'aiuto usando watch, quindi gioca con quello che vuoi vedere.

sudo watch -d -n0 "netstat -atnp | grep ESTA"

sudo watch -d -n0 "netstat -tulnp | grep ESTA"

1
-a è in conflitto con -l, -a prende tutto sia STABILITO o ASCOLTANDO, e -l semplicemente cattura ASCOLTO, quindi in realtà è '-ltnp' tcp, '-lunp' udp o '-ltunp' tcp + udp
ModerateJavaScriptDev

1

In realtà c'è un modo migliore per vedere quali porte hai aperto. Il problema con netstato lsofè che interrogano lo stack di rete e in realtà non si connettono alla macchina ma cercano invece di vedere cosa è in esecuzione sul sistema. L'approccio migliore è usare nmapcosì:

nmap -sT -O localhost

Per vedere le porte aperte.


0
  1. Prova questo per ottenere un elenco di porte aperte in quell'intervallo.

    for p in {1..1023}
    do
       (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
    done
    
  2. E questo comando mostrerà di cosa si tratta!

    cat /etc/services | grep {PORTNumber}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.