Cómo abrir el puerto para una dirección IP específica en Firewalld


¿Cómo puedo permitir el tráfico desde una dirección IP específica en mi red privada o permitir el tráfico desde una red privada específica a través de firewalld, a un puerto o servicio específico en un servidor Red Hat Enterprise Linux (RHEL) o CentOS?

En este breve artículo, aprenderá cómo abrir un puerto para una dirección IP específica o un rango de red en su servidor RHEL o CentOS que ejecuta un firewall firewalld.

La forma más adecuada de resolver esto es mediante el uso de una zona de cortafuegos. Por lo tanto, debe crear una nueva zona que contendrá las nuevas configuraciones (o puede usar cualquiera de las zonas seguras predeterminadas disponibles).

Puerto abierto para una dirección IP específica en Firewalld

Primero cree un nombre de zona apropiado (en nuestro caso, hemos usado mariadb-access para permitir el acceso al servidor de base de datos MySQL).

# firewall-cmd --new-zone=mariadb-access --permanent

A continuación, vuelva a cargar la configuración de firewalld para aplicar el nuevo cambio. Si omite este paso, es posible que obtenga un error cuando intente utilizar el nuevo nombre de zona. Esta vez, la nueva zona debería aparecer en la lista de zonas como se resalta en la siguiente captura de pantalla.

# firewall-cmd --reload
# firewall-cmd --get-zones

A continuación, agregue la dirección IP de origen (10.24.96.5/20) y el puerto (3306) que desea abrir en el servidor local como se muestra. Luego, vuelva a cargar la configuración de firewalld para aplicar los nuevos cambios.

# firewall-cmd --zone=mariadb-access --add-source=10.24.96.5/20 --permanent
# firewall-cmd --zone=mariadb-access --add-port=3306/tcp  --permanent
# firewall-cmd --reload

Alternativamente, puede permitir el tráfico de toda la red (10.24.96.0/20) a un servicio o puerto.

# firewall-cmd --zone=mariadb-access --add-source=10.24.96.0/20 --permanent
# firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent
# firewall-cmd --reload

Para confirmar que la nueva zona tiene la configuración requerida como se agregó anteriormente, verifique sus detalles con el siguiente comando.

# firewall-cmd --zone=mariadb-access --list-all 

Eliminar puerto y zona de Firewalld

Puede eliminar la dirección IP de origen o la red como se muestra.

# firewall-cmd --zone=mariadb-access --remove-source=10.24.96.5/20 --permanent
# firewall-cmd --reload

Para eliminar el puerto de la zona, ejecute el siguiente comando y vuelva a cargar la configuración de firewalld:

# firewall-cmd --zone=mariadb-access --remove-port=3306/tcp --permanent
# firewall-cmd --reload

Para eliminar la zona, ejecute el siguiente comando y vuelva a cargar la configuración de firewalld:

# firewall-cmd --permanent --delete-zone=mariadb-access
# firewall-cmd --reload

Por último, pero no en la lista, también puede usar reglas enriquecidas de firewalld. Aquí hay un ejemplo:

# firewall-cmd --permanent –zone=mariadb-access --add-rich-rule='rule family="ipv4" source address="10.24.96.5/20" port protocol="tcp" port="3306" accept'

Referencia: Uso y configuración de firewalld en la documentación de RHEL 8.

¡Eso es! Esperamos que las soluciones anteriores le hayan funcionado. Si es así, háganoslo saber a través del formulario de comentarios a continuación. También puede hacer preguntas o compartir comentarios generales sobre este tema.