GNU/Linux >> Tutoriales Linux >  >> Linux

CentOS/RHEL:¿Cómo saber si un puerto de red está abierto o no?

Una conexión de red TCP/IP puede estar bloqueada, interrumpida, abierta o filtrada. Estas acciones generalmente están controladas por el firewall de IPtables que usa el sistema y es independiente de cualquier proceso o programa que pueda estar escuchando en un puerto de red. Más allá del firewall, un programa o proceso (un servidor o demonio) puede estar escuchando en un puerto o no escuchar. Esto se puede comprobar utilizando los programas netstat o ss. Verificar si un puerto está abierto, bloqueado, descartado o filtrado en el firewall no es simple. Hay dos formas de hacer esto:

  • probar el puerto externamente
  • enumere la configuración del cortafuegos y examine el resultado

1. Usando netstat para ver los procesos de escucha

Para ver si un programa o proceso está escuchando en un puerto, listo para aceptar un paquete, use el comando netstat.

# netstat -tulnp

Los argumentos del comando netstat se enumeran a continuación:

t – Mostrar TCP
u – Mostrar UDP
l – Mostrar solo los procesos de escucha (netstat puede mostrar tanto la escucha como todas las conexiones establecidas, es decir, también como cliente)
n – No resuelva nombres de direcciones IP de red o números de puerto
p – Mostrar el nombre del proceso que está escuchando en el puerto

Por ejemplo:

# 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. Usando ss para ver los procesos de escucha

Para ver si un programa o proceso está escuchando en un puerto, listo para aceptar un paquete, use el programa ss.

# ss -nutlp

Los argumentos del programa ss se enumeran a continuación:

t – Mostrar sockets TCP.
u – Mostrar sockets UDP.
l – Mostrar tomas de escucha
n – Intente ahora resolver los nombres
p – Mostrar proceso usando socket

Por ejemplo:

# 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 para encontrar puertos abiertos

Para listar todos los puertos abiertos en un sistema, use el siguiente comando para listar el nombre y el número del proceso que ha abierto los puertos.

# lsof -i

Aquí hay una salida de ejemplo:

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

Probar un puerto externamente

La aplicación telnet se puede utilizar para probar la conectividad de socket de red simple, pero solo para conexiones TCP, no UDP. Por ejemplo, si deseo ver si el puerto TCP 80 en un sistema está listo para aceptar una conexión, especifico la dirección IP y el puerto para telnet:

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

Si el servidor no está escuchando, la respuesta es diferente:

# 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
  • Esto indica que la conexión fue rechazada activamente. El subsistema TCP recibió el paquete, lo examinó y descubrió que era una solicitud para abrir un socket en el puerto 80, vio que no había ningún proceso listo para aceptar la conexión y respondió con una negativa.
  • Si el cortafuegos se configuró para bloquear o filtrar la conexión, telnet mostraría algo muy similar a lo anterior, incluso si hubiera un proceso listo para aceptar la conexión.
  • Si el cortafuegos se configuró para desconectar las conexiones, no veríamos ninguna respuesta y, en su lugar, telnet expiraría:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out

Enumeración de las reglas del cortafuegos

En Red Hat Enterprise Linux, las reglas de firewall se pueden enumerar mediante el comando de servicio:

# service iptables status

O usando el comando iptables:

# iptables -xvn -L


Linux
  1. Cómo reiniciar el servicio de red en CentOS 8 o RHEL 8

  2. CentOS / RHEL 7:Cómo modificar los nombres de la interfaz de red

  3. CentOS / RHEL:cómo encontrar el UUID de un dispositivo o sistema de archivos

  4. Cómo quitar la impresora de red en CentOS/RHEL

  5. Cómo encontrar el número de zócalos de CPU en un sistema CentOS/RHEL

Cómo configurar una interfaz de red virtual en RHEL 8/CentOS 8

RHEL 8/CentOS 8 puerto FTP abierto 21 con firewalld

Cómo abrir y cerrar puertos en RHEL 8 / CentOS 8 Linux

Cómo verificar los puertos abiertos en RHEL 8 / CentOS 8 Linux

Cómo crear un puente de red en CentOS 7/RHEL 7

Cómo encontrar y cerrar puertos abiertos en Linux