pasos para abrir un puerto en Linux RHEL/CentOS 7/8

Tabla de Contenido

Anuncio

En este artículo voy a compartir ejemplos para comprobar el estado del puerto y abrir un puerto en Linux. Este artículo fue escrito usando CentOS 8, por lo que es seguro decir que también cubre completamente CentOS/RHEL 7/8, Fedora, Oracle Enterprise Linux y, en general, toda la familia de sistemas operativos Red Hat y posiblemente SLES y openSUSE de Novell.

Antes de saltar a los ejemplos para abrir un puerto en Linux, debemos entender el requisito claramente. La pregunta básica que me viene a la mente

  1. ¿Necesita abrir un puerto para un servicio? ¿Como un puerto personalizado 5555 para el servicio apache?
  2. ¿Quiere decir que el puerto ya está escuchando pero está bloqueado por el firewall, por lo que desea abrir un puerto en el firewall?
  3. Abra un puerto para tareas temporales personalizadas, como transferir y recibir archivos con este puerto, y luego cierre el puerto.

Cubriremos todos estos escenarios en este artículo

Comprobar el estado del puerto

Para comprobar la lista de puertos existentes que están abiertos, usaremos nmap para comprobar el estado del puerto:

# nmap localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2020-03-22 12:08 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000024s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Nmap done: 1 IP address (1 host up) scanned in 1.71 seconds

Actualmente solo vemos dos puertos abiertos en mi nodo CentOS 8.

Lista de comprobación de puertos de escucha

Usaremos netstat para enumerar los puertos TCP que están en estado de escucha. El número total de puertos es mayor en comparación con la salida nmap.

# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 26893/sshd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 26893/sshd tcp6 0 0 :::111 :::* LISTEN 1/systemd

Abra un puerto para algún servicio

Si este es su requisito, entonces está buscando la pregunta incorrecta. Básicamente es al revés, es decir, un servicio abrirá un puerto. Por ejemplo, cuando inicia el servicio SSHD, por defecto iniciará el puerto 22 y no al revés, es decir, si abre el puerto 22, no iniciará automáticamente el servicio SSHD.

Publicidad

Observemos esto en el ejemplo, sabemos que el puerto 22 está abierto en mi nodo CentOS 8. Si detengo el servicio sshd

# systemctl stop sshd

Puede ver que el puerto 22 ya no está abierto.

# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasq tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::111 :::* LISTEN 1/systemd

Debe usar el archivo de configuración del servicio correspondiente para cambiar el puerto predeterminado. Una vez hecho esto, puede reiniciar el servicio y eso debería abrir automáticamente el puerto respectivo en su nodo Linux.

SUGERENCIA:

Si planea usar algún puerto personalizado para un servicio, también debe agregarlo /etc/services

Esto cubre el primer escenario.

puerto abierto firewalld

También es posible que sus puertos estén deshabilitados en el firewall. Si su puerto no aparece en nmap, lo más probable es que esté bloqueado por el firewall.

Usaremos firewalld para abrir un puerto, ya que esta es la interfaz más utilizada hoy en día en RHEL/CentOS 7 y 8. Determine en qué zona se encuentran las interfaces de red del sistema. En el siguiente ejemplo, la interfaz eth0 y eth1 se encuentra en la zona «pública»:

# firewall-cmd --get-active-zones
libvirt
interfaces: virbr0
public
interfaces: eth0 eth1

Para abrir permanentemente el puerto firewalld en una zona, utilice la opción --add-port. El siguiente ejemplo abre permanentemente el puerto TCP 1234 en la zona «pública». Tenga en cuenta que los cambios permanentes no surten efecto hasta que se recarga el servicio firewalld.

# firewall-cmd --zone=public --add-port=1234/tcp --permanentsuccess# firewall-cmd --reloadsuccess
NOTA:

Para realizar un cambio no persistente, ejecute el mismo comando sin el conjunto de opciones --permanent. Cualquier cambio no permanente tendrá efecto al instante y persistirá hasta que se vuelva a cargar el firewall.

Una vez que abra el puerto firewalld, use netstat para verificar el estado del puerto:

Publicidad

# netstat -ntlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1627/dnsmasqtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 28188/sshdtcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemdtcp6 0 0 :::22 :::* LISTEN 28188/sshdtcp6 0 0 :::111 :::* LISTEN 1/systemd

Todavía no vemos el puerto 1234 aquí. Esto se debe a que actualmente el puerto 1234 no está vinculado a ningún servicio. Así que nuestro puerto está ABIERTO, pero NO ESCUCHA. Tan pronto como una solicitud o servicio intente usar el puerto 1234, lo pondremos en estado de ESCUCHA.

Use nc o ncat para abrir un puerto en Linux

Comprobemos que esta teoría Use nc o ncat para abrir un puerto en Linux nc o ncat se entrega como parte de nmap-ncat rpm en RHEL / CentOS que puede instalar utilizando yum o dnf. Use --listen con --port para abrir un puerto utilizando el comando nc. En el siguiente ejemplo abrimos puerto 1234

# nc --listen --source-port 1234

Abra otro terminal de este servidor y compruebe el estado del puerto

# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 28983/nctcp6 0 0 :::1234 :::* LISTEN 28983/nc

, ya que verá que el puerto 1234 está escuchando tanto IPv4 como IPv6. Para usar solo IPv4, use -4 con el comando anterior

# nc --listen --source-port 1234 -4

A continuación en otro terminal, puede verificar el estado del puerto para el puerto 1234

# netstat -ntlp | grep 1234tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 29329/nc

Use nc o ncat para abrir un puerto y transferir archivos

También podemos usar nc para transferir archivos de un host a otro host. Aquí transferiré mi «inputfile » de centos-8 a rhel-8 En el cliente abriremos un puerto aleatorio, aquí usaremos 9899. He habilitado verbose para que pueda ver más detalles en la pantalla

# ncat --verbose --listen 9899 > outputfileNcat: Version 7.70 ( https://nmap.org/ncat )Ncat: Listening on :::9899Ncat: Listening on 0.0.0.0:9899Ncat: Connection from 192.168.43.250.Ncat: Connection from 192.168.43.250:40242.

Junto a iniciar la transferencia, use el siguiente comando

# ncat --verbose 192.168.43.157 9899 < inputfileNcat: Version 7.70 ( https://nmap.org/ncat )Ncat: Connected to 192.168.43.157:9899.Ncat: 19 bytes sent, 0 bytes received in 0.01 seconds.

Si tiene algún problema, puede verificar el firewall entre su servidor y cliente. Es posible que el puerto respectivo esté bloqueado y debe usar el puerto abierto firewalld

Deja una respuesta

Tu dirección de correo electrónico no será publicada.