Introducción a firewalld-config
En el mundo de la administración de sistemas Linux, la seguridad perimetral es uno de los pilares fundamentales. Firewalld es el daemon de firewall que ha sustituido a iptables en muchas distribuciones modernas, ofreciendo una interfaz dinámica y basada en zonas. Esta guía explora cómo utilizar tanto la herramienta de línea de comandos firewall-cmd como la interfaz gráfica firewall-config para gestionar reglas de forma eficaz y segura.
¿Qué es firewalld?
Firewalld actúa como una capa de administración que trabaja con netfilter del kernel. En lugar de manipular reglas directamente, permite definir zonas que representan distintos niveles de confianza. Cada zona puede tener asociados servicios, puertos y reglas personalizadas. La principal ventaja es la posibilidad de aplicar cambios en tiempo real sin interrumpir las conexiones establecidas, y de hacerlos permanentes mediante la opción --permanent.
Instalación y habilitación
En distribuciones basadas en RHEL como CentOS, Fedora o Rocky Linux, firewalld viene preinstalado. En caso de que no esté presente, se puede instalar con el gestor de paquetes:
- sudo dnf install firewalld -y (en Fedora/Rocky)
- sudo yum install firewalld -y (en RHEL/CentOS 7)
Una vez instalado, habilítelo e inícielo con:
- sudo systemctl enable firewalld
- sudo systemctl start firewalld
Para verificar su estado, use sudo firewall-cmd --state.
Conceptos básicos: zonas y servicios
Firewalld incluye varias zonas predefinidas, ordenadas de menos a más confiable:
- drop: descarta todo el tráfico entrante sin respuesta.
- block: rechaza el tráfico con mensaje icmp-host-prohibido.
- public: zona recomendada para servidores expuestos a Internet.
- external: usada en interfaces que actúan como puerta de enlace NAT.
- dmz: para equipos situados en una zona desmilitarizada.
- work: para estaciones de trabajo en redes internas confiables.
- home: entorno doméstico.
- internal: para redes internas de confianza.
- trusted: acepta todas las conexiones.
Los servicios son definiciones preconfiguradas que abren puertos y aplican reglas específicas. Por ejemplo, el servicio http abre el puerto 80/tcp. Puede listar los servicios disponibles con sudo firewall-cmd --get-services y añadir uno a una zona con:
sudo firewall-cmd --zone=public --add-service=http
Para hacerlo permanente, agregue la bandera --permanent.
Uso de firewall-cmd (CLI)
La línea de comandos es la forma más rápida y scriptable de administrar firewalld. Algunos comandos útiles:
- Listar zonas activas:
sudo firewall-cmd --get-active-zones - Mostrar la configuración de una zona:
sudo firewall-cmd --zone=public --list-all - Agregar un puerto específico:
sudo firewall-cmd --zone=public --add-port=8080/tcp - Crear una regla rica (rich rule) para permitir tráfico desde una IP concreta:
sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.1.100/32 port protocol=tcp port=22 accept'
Recuerde que sin --permanent los cambios se pierden al reiniciar el servicio.
Uso de firewall-config (GUI)
Para quienes prefieren una interfaz visual, firewall-config ofrece una vista gráfica de zonas, servicios y reglas. Para lanzarlo, simplemente ejecute:
sudo firewall-config
La ventana principal muestra un árbol de zonas en el panel izquierdo. Al seleccionar una zona, puede marcar o desmarcar servicios en el panel central, añadir puertos mediante el botón Add y crear reglas ricas desde el menú Options. Los cambios se aplican en tiempo real y, si marca la casilla Permanent, se guardan de forma persistente.
Creación de reglas avanzadas (rich rules)
Las reglas ricas permiten una granularidad que va más allá de puertos y servicios. Algunas aplicaciones comunes:
- Limitar el número de conexiones simultáneas desde una IP:
sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 limit value=10/m accept'
- Registrar intentos de acceso denegados:
sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 log prefix=FIREWALL_DROP drop'
Para eliminar una regla rica, use el mismo comando sustituyendo --add-rich-rule por --remove-rich-rule. Siempre verifique la lista de reglas con --list-rich-rules antes de hacer cambios en producción.
Buenas prácticas de seguridad
- Defina una zona predeterminada que corresponda al nivel de exposición de su servidor (por ejemplo,
publicpara hosts en Internet). - Evite usar la zona
trusteden entornos de producción. - Revise periódicamente las zonas activas y los servicios habilitados con
firewall-cmd --list-all-zones. - Utiliza reglas ricas para limitar el tráfico según fuentes geográficas o horarios cuando sea necesario.
- Mantenga una copia de seguridad de la configuración ejecutando
sudo firewall-cmd --exporty guárdela en un repositorio de versiones.
Siguiendo estas recomendaciones, podrá mantener un firewall robusto y adaptable a las cambiantes necesidades de su infraestructura Linux.
Conclusión
Firewalld, junto con sus herramientas de configuración firewall-cmd y firewall-config, ofrece una forma potente y flexible de administrar el filtrado de paquetes en sistemas Linux modernos. Ya sea que prefiera la velocidad de la línea de comandos o la claridad de una interfaz gráfica, comprender los conceptos de zonas, servicios y reglas ricas le permitirá aplicar políticas de seguridad efectivas sin comprometer la disponibilidad de sus servicios. Con la práctica y la adopción de buenas prácticas, firewalld se convertirá en un aliado esencial en la protección de sus servidores y workstations.


