GNU/Linux >> Linux Esercitazione >  >> Linux

CentOS / RHEL:come scoprire se una porta di rete è aperta o meno?

Una connessione di rete TCP/IP può essere bloccata, interrotta, aperta o filtrata. Queste azioni sono generalmente controllate dal firewall IPtables utilizzato dal sistema ed è indipendente da qualsiasi processo o programma che potrebbe essere in ascolto su una porta di rete. Al di là del firewall, un programma o un processo (un server o un demone) potrebbe essere in ascolto su una porta o non essere in ascolto. Questo può essere verificato usando i programmi netstat o ss. Controllare se una porta è aperta, bloccata, eliminata o filtrata sul firewall non è semplice. Ci sono due modi per farlo:

  • testare la porta esternamente
  • elenca la configurazione del firewall ed esamina l'output

1. Utilizzo di netstat per vedere i processi di ascolto

Per vedere se un programma o un processo è in ascolto su una porta, pronto ad accettare un pacchetto, usa il comando netstat.

# netstat -tulnp

Gli argomenti del comando netstat sono elencati di seguito:

t – Mostra TCP
u – Mostra UDP
l – Mostra solo i processi di ascolto (netstat può mostrare sia l'ascolto che tutte le connessioni stabilite, cioè anche come client)
n – Non risolvere i nomi degli indirizzi IP di rete o i numeri di porta
p – Mostra il nome del processo in ascolto sulla porta

Ad esempio :

# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1254/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1484/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1355/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1562/master
tcp        0      0 0.0.0.0:44349               0.0.0.0:*                   LISTEN      1274/rpc.statd
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1254/rpcbind
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1355/cupsd
udp        0      0 0.0.0.0:44165               0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:602                 0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:1001                0.0.0.0:*                               1254/rpcbind

2. Usare ss per vedere i processi di ascolto

Per vedere se un programma o un processo è in ascolto su una porta, pronto ad accettare un pacchetto, usa il programma ss.

# ss -nutlp

Gli argomenti del programma ss sono elencati di seguito:

t – Visualizza i socket TCP.
u – Visualizza le prese UDP.
l – Visualizza le prese di ascolto
n – Prova ora a risolvere i nomi
p – Mostra il processo usando il socket

Ad esempio:

# ss -nutlp
Netid State      Recv-Q Send-Q                                                        Local Address:Port                                                          Peer Address:Port
udp   UNCONN     0      0                                                                         *:111                                                                      *:*      users:(("rpcbind",1254,6))
udp   UNCONN     0      0                                                                         *:631                                                                      *:*      users:(("cupsd",1355,9))
udp   UNCONN     0      0                                                                         *:44165                                                                    *:*      users:(("rpc.statd",1274,8))
udp   UNCONN     0      0                                                                         *:602                                                                      *:*      users:(("rpc.statd",1274,5))
udp   UNCONN     0      0                                                                         *:1001                                                                     *:*      users:(("rpcbind",1254,7))
tcp   LISTEN     0      128                                                                       *:111                                                                      *:*      users:(("rpcbind",1254,8))
tcp   LISTEN     0      128                                                                       *:22                                                                       *:*      users:(("sshd",1484,3))
tcp   LISTEN     0      128                                                               127.0.0.1:631                                                                      *:*      users:(("cupsd",1355,7))
tcp   LISTEN     0      100                                                               127.0.0.1:25                                                                       *:*      users:(("master",1562,12))
tcp   LISTEN     0      128                                                                       *:44349                                                                    *:*      users:(("rpc.statd",1274,9))

3. usando lsof per trovare le porte aperte

Per elencare tutte le porte aperte su un sistema, utilizzare il comando seguente per elencare il nome e il numero del processo che ha aperto le porte.

# lsof -i

Ecco un esempio di output:

# lsof -i
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind   1254     rpc    6u  IPv4  12592      0t0  UDP *:sunrpc
rpcbind   1254     rpc    7u  IPv4  12596      0t0  UDP *:1001
rpcbind   1254     rpc    8u  IPv4  12597      0t0  TCP *:sunrpc (LISTEN)
rpc.statd 1274 rpcuser    5r  IPv4  12784      0t0  UDP *:xmlrpc-beep
rpc.statd 1274 rpcuser    8u  IPv4  12788      0t0  UDP *:44165
rpc.statd 1274 rpcuser    9u  IPv4  12792      0t0  TCP *:44349 (LISTEN)
cupsd     1355    root    7u  IPv4  13147      0t0  TCP localhost:ipp (LISTEN)
cupsd     1355    root    9u  IPv4  13150      0t0  UDP *:ipp
sshd      1484    root    3u  IPv4  13707      0t0  TCP *:ssh (LISTEN)
master    1562    root   12u  IPv4  13923      0t0  TCP localhost:smtp (LISTEN)
sshd      1657    root    3r  IPv4  14745      0t0  TCP 192.168.1.50:ssh->192.168.1.101:49549 (ESTABLISHED)

Testare una porta esternamente

L'applicazione telnet può essere utilizzata per testare una semplice connettività socket di rete, ma solo per connessioni TCP, non UDP. Ad esempio, se desidero vedere se la porta TCP 80 di un sistema è pronta per accettare una connessione, specifico l'indirizzo IP e la porta per telnet:

# telnet 192.168.1.55 80
Trying 192.168.1.55...
Connected to example.redhat.com (192.168.1.55).
Escape character is '^]'.

Se il server non è in ascolto, la risposta è diversa:

# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection refused
telnet: Unable to connect to remote host: Connection refused
  • Questo indica che la connessione è stata attivamente rifiutata. Il sottosistema TCP ha ricevuto il pacchetto, lo ha esaminato e ha scoperto che si trattava di una richiesta di apertura di un socket alla porta 80, ha visto che non c'era alcun processo pronto per accettare la connessione e ha risposto con un rifiuto.
  • Se il firewall fosse configurato per bloccare o filtrare la connessione, telnet visualizzerebbe qualcosa di molto simile a quanto sopra, anche se esisteva un processo pronto per accettare la connessione.
  • Se il firewall fosse configurato per interrompere le connessioni, non vedremmo alcuna risposta e telnet andrebbe invece in timeout:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out

Elenco delle regole del firewall

In Red Hat Enterprise Linux, le regole del firewall possono essere elencate utilizzando il comando service:

# service iptables status

Oppure usando il comando iptables:

# iptables -xvn -L


Linux
  1. Come riavviare il servizio di rete su CentOS 8 o RHEL 8

  2. Come aprire la porta HTTP ( 80 ) in Iptables su CentOS

  3. CentOS / RHEL 7:come aprire una porta nel firewall con firewall-cmd?

  4. Come disabilitare NetworkManager su CentOS / RHEL 7

  5. Come aprire una porta in CentOS / RHEL 7

Come configurare un'interfaccia di rete virtuale su RHEL 8 / CentOS 8

RHEL 8 / CentOS 8 apre la porta FTP 21 con firewalld

Come aprire e chiudere le porte su RHEL 8 / CentOS 8 Linux

Come controllare le porte aperte su RHEL 8 / CentOS 8 Linux

Come trovare e chiudere le porte aperte in Linux

Come trovare il numero di socket CPU su un sistema CentOS/RHEL