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

¿Cómo puedo permitir tráfico desde una dirección IP específica en mi red privada o permitir 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á a 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 usando una zona firewalld. Por lo tanto, debe crear una nueva zona que contenga las nuevas configuraciones (o puede usar cualquiera de las zonas predeterminadas seguras disponibles).

Abra el puerto para una dirección IP específica en Firewalld

Primero cree un nombre de zona apropiado (en nuestro caso, hemos utilizado 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 se produzca un error al intentar usar el nuevo nombre de la zona. Esta vez, la nueva zona debe aparecer en la lista de zonas como se resalta en la siguiente captura de pantalla.

# firewall-cmd --reload# firewall-cmd --get-zones
Comprobar Zona Firewalld
Comprobar Zona Firewalld

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. A continuación, 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
Puerto abierto para IP específica en Firewalld
Puerto abierto para IP específica en Firewalld

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 
Ver Detalles de la zona de Firewalld
Ver detalles de la zona de Firewalld

Eliminar puerto y zona de Firewalld

Puede eliminar la dirección IP o la red de origen 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

Última pero no lista, también puede usar reglas enriquecidas con firewalld. Este es 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'