Cómo restringir el acceso a la red mediante FirewallD


Como usuario de Linux, puede optar por permitir o restringir el acceso a la red a algunos servicios o direcciones IP utilizando el firewall firewalld que es nativo de CentOS/RHEL 8 y la mayoría de las distribuciones basadas en RHEL como Fedora.

El cortafuegos firewalld utiliza la utilidad de línea de comandos firewall-cmd para configurar las reglas del cortafuegos.

Antes de que podamos realizar cualquier configuración, primero habilitemos el servicio firewalld usando la utilidad systemctl como se muestra:

$ sudo systemctl enable firewalld

Una vez habilitado, ahora puede iniciar el servicio firewalld ejecutando:

$ sudo systemctl start firewalld

Puede verificar el estado de firewalld ejecutando el comando:

$ sudo systemctl status firewalld

El resultado a continuación confirma que el servicio firewalld está en funcionamiento.

Configurar reglas usando Firewalld

Ahora que tenemos Firewalld en ejecución, podemos ir directamente a realizar algunas configuraciones. Firewalld le permite agregar y bloquear puertos, listas negras, así como direcciones IP en listas blancas para proporcionar acceso al servidor. Una vez que haya terminado con las configuraciones, asegúrese siempre de volver a cargar el cortafuegos para que entren en vigor las nuevas reglas.

Para agregar un puerto, diga el puerto 443 para HTTPS, use la sintaxis a continuación. Tenga en cuenta que debe especificar si el puerto es un puerto TCP o UDP después del número de puerto:

$ sudo firewall-cmd --add-port=22/tcp --permanent

De manera similar, para agregar un puerto UDP, especifique la opción UDP como se muestra:

$ sudo firewall-cmd --add-port=53/udp --permanent

El indicador --permanent asegura que las reglas persistan incluso después de un reinicio.

Para bloquear un puerto TCP, como el puerto 22, ejecute el comando.

$ sudo firewall-cmd --remove-port=22/tcp --permanent

Del mismo modo, el bloqueo de un puerto UDP seguirá la misma sintaxis:

$ sudo firewall-cmd --remove-port=53/udp --permanent

Los servicios de red se definen en el archivo/etc/services. Para permitir un servicio como https, ejecute el comando:

$ sudo firewall-cmd --add-service=https

Para bloquear un servicio, por ejemplo, FTP, ejecute:

$ sudo firewall-cmd --remove-service=https

Para permitir una sola dirección IP a través del firewall, ejecute el comando:

$ sudo firewall-cmd --permanent --add-source=192.168.2.50

También puede permitir un rango de IP o una subred completa usando una notación CIDR (Classless Inter-Domain Routing). Por ejemplo, para permitir una subred completa en la subred 255.255.255.0, ejecute.

$ sudo firewall-cmd --permanent --add-source=192.168.2.0/24

Si desea eliminar una IP incluida en la lista blanca en el firewall, use la marca --remove-source como se muestra:

$ sudo firewall-cmd --permanent --remove-source=192.168.2.50

Para toda la subred, ejecute:

$ sudo firewall-cmd --permanent --remove-source=192.168.2.50/24

Hasta ahora, hemos visto cómo puede agregar y eliminar puertos y servicios, así como incluir y eliminar IP en listas blancas. Para bloquear una dirección IP, se utilizan "reglas enriquecidas" para este propósito.

Por ejemplo, para bloquear la IP 192.168.2.50 ejecute el comando:

$ sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.50' reject"

Para bloquear toda la subred, ejecute:

$ sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.0/24' reject"

Si ha realizado algún cambio en las reglas del firewall, debe ejecutar el siguiente comando para que los cambios se apliquen de inmediato:

$ sudo firewall-cmd --reload

Para tener que echar un vistazo a todas las reglas en el firewall, ejecute el comando:

$ sudo firewall-cmd --list-all

Con esto concluye esta guía sobre cómo permitir o restringir el acceso a la red usando FirewallD en CentOS/RHEL 8. Esperamos que esta guía le haya resultado útil.