Solo para visitantes de nuestro blog Obtenga 3 meses adicionales gratis + 10% de descuento en el plan trianual YSBLOG10
Agarra el trato

¿Cómo usar FirewallD en un servidor Linux 2026? (Guía paso a paso para instalar y habilitar FirewallD)

Última actualización: marzo 7, 2026 8 minutos de lectura Sanjeet Chauhan
Utilice FirewallD en un servidor Linux

FirewallD es un firewall dinámico manager para Linux que le permite controlar el tráfico de red con zonas, servicios y reglas enriquecidas sin desconectar las sesiones actuales.

Para usar FirewallD en un servidor Linux, instálelo, habilite el servicio, seleccione una zona predeterminada, permita los servicios o puertos necesarios y, a continuación, reinicie el sistema para que las reglas se mantengan tras los reinicios. Aprender a usar FirewallD en un servidor Linux es una de las maneras más rápidas de mejorar su seguridad.

En esta guía para principiantes, le mostraré cómo instalar, configurar y manage FirewallD usando comandos prácticos y ejemplos del mundo real, además de las mejores prácticas listas para producción que utilizamos en manageservidores d en YouStable.


¿Qué es FirewallD (y por qué usarlo)?

FirewallD es un demonio que manageEl firewall controla dinámicamente las reglas mediante zonas y servicios. En segundo plano, utiliza nftables en distribuciones modernas. (o iptables en los más antiguos).

A diferencia de las herramientas de firewall estáticas, FirewallD actualiza las reglas sin interrumpir las conexiones, se integra con los servicios del sistema a través de D-Bus y ofrece “reglas enriquecidas” granulares para un control avanzado.

Requisitos previos y distribuciones de Linux compatibles

FirewallD está disponible en RHEL 8/9, CentOS Stream, AlmaLinux, Rocky Linux, Fedora, openSUSE y Ubuntu/Debian.

Necesitarás sudo o root acceso y SSH a tu servidorSi está en una nube (AWS, Azure, GCP), asegúrese de que los grupos de seguridad o las ACL de red de su proveedor también permitan los mismos puertos que abre localmente.


Instalar y habilitar FirewallD

RHEL, CentOS Stream, AlmaLinux, Rocky, Fedora

sudo dnf install -y firewalld
# For CentOS 7 or very old systems: sudo yum install -y firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --state    # should print: running

Ubuntu y Debian

sudo apt update
sudo apt install -y firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --state

Consejo: Si utilizaste UFW anteriormente, desactívalo para evitar conflictos.

sudo ufw disable
sudo systemctl stop ufw

Entendiendo Zonas y Servicios

Zonas en FirewallD

Las zonas representan los niveles de confianza de las conexiones de red. Se asignan interfaces (eth0, ens3) o rangos de IP de origen a las zonas y, a continuación, se permiten servicios/puertos en ellas. Las zonas comunes incluyen: zona de descarte, zona de bloqueo, zona pública, zona externa, zona interna, zona desmilitarizada, zona de trabajo, zona de confianza. La configuración predeterminada suele ser "pública" en los servidores.

sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all --zone=public

Servicios de FirewallD

Los servicios son reglas predefinidas (como http, https, ssh, dns) que incluyen los puertos y protocolos necesarios. Se encuentran en /usr/lib/firewalld/services/ (a nivel del sistema) y /etc/firewalld/services/ (personalizadas). Úselas siempre que sea posible en lugar de recordar los números de puerto.

sudo firewall-cmd --get-services
sudo firewall-cmd --info-service=http

Comandos de FirewallD que usarás a diario

FirewallD tiene dos configuraciones: de ejecución (temporal) y permanente (permanece después del reinicio). Añada –permanent para guardar y, a continuación, recargue.

# Set the default zone
sudo firewall-cmd --set-default-zone=public

# Allow a service
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

# Allow a port (single or range)
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --add-port=30000-30100/tcp --permanent
sudo firewall-cmd --reload

# Remove access
sudo firewall-cmd --remove-service=http --permanent
sudo firewall-cmd --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

# List current rules
sudo firewall-cmd --list-all

Una configuración segura por defecto (paso a paso)

  • Confirmar tu SSH de la máquina funciona en el puerto correcto y desde tu IP.
  • Establezca la zona predeterminada en pública y vincule su interfaz a ella.
  • Permitir sólo los servicios mínimos necesarios (ssh, http/https, base de datos si es necesario).
  • Habilitar el registro de paquetes denegados durante la prueba.
  • Recargar y verificar la conectividad.
# Bind interface and restrict to minimal services
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

# (Optional) Log denied packets during audits
sudo firewall-cmd --set-log-denied=all

sudo firewall-cmd --reload
sudo firewall-cmd --list-all --zone=public

If SSH Se ejecuta en un puerto no estándar; permítalo explícitamente y asegúrese de que SELinux permita ese puerto (familia RHEL):

# Allow custom SSH port 2222
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

# SELinux context for custom SSH port (RHEL/Alma/Rocky)
sudo semanage port -a -t ssh_port_t -p tcp 2222

Gestión de puertos y servicios

Reglas de permiso comunes

# Web
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent

# SSH
sudo firewall-cmd --add-service=ssh --permanent

# DNS, SMTP, MariaDB (use only if needed and secure access)
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --add-service=smtp --permanent
sudo firewall-cmd --add-service=mysql --permanent

sudo firewall-cmd --reload

Rangos de puertos y protocolos

# TCP/UDP toggle
sudo firewall-cmd --add-port=1194/udp --permanent

# Port range (e.g., passive FTP or game servers)
sudo firewall-cmd --add-port=50000-50100/tcp --permanent

sudo firewall-cmd --reload

Eliminación de acceso innecesario

sudo firewall-cmd --remove-service=mysql --permanent
sudo firewall-cmd --remove-port=50000-50100/tcp --permanent
sudo firewall-cmd --reload

Control granular con reglas enriquecidas

Las reglas enriquecidas ofrecen coincidencias avanzadas, restricciones de origen, registro y limitación de velocidad. Úselas para bloquear managepuertos a direcciones IP o subredes confiables.

# Allow SSH only from a single IP
sudo firewall-cmd --add-rich-rule='rule family="ipv4" 
source address="203.0.113.10" service name="ssh" accept' --permanent

# Allow SSH from a subnet with rate limiting
sudo firewall-cmd --add-rich-rule='rule family="ipv4" 
source address="203.0.113.0/24" service name="ssh" 
limit value="15/m" accept' --permanent

# Log & drop everything else hitting SSH (example)
sudo firewall-cmd --add-rich-rule='rule family="ipv4" 
service name="ssh" log prefix="FW-SSH " level="info" limit value="5/m"' --permanent
sudo firewall-cmd --add-rich-rule='rule family="ipv4" 
service name="ssh" drop' --permanent

sudo firewall-cmd --reload

Zonas para servidores multi-NIC o multi-inquilino

Asignar interfaces a zonas

# Public-facing NIC
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent

# Internal/private NIC
sudo firewall-cmd --zone=internal --change-interface=eth1 --permanent

sudo firewall-cmd --reload

Zonas basadas en la fuente

# Treat a trusted office subnet as "trusted"
sudo firewall-cmd --zone=trusted --add-source=10.0.10.0/24 --permanent
sudo firewall-cmd --reload

Con este modelo, su zona pública puede exponer solo puertos web, mientras que las zonas internas o de confianza pueden permitir SSH o acceso a la base de datos desde rangos privados específicos.


Enmascaramiento, NAT y reenvío de puertos

Para servidores perimetrales o puertas de enlace, puede aplicar NAT al tráfico saliente y reenviar puertos internamente mediante FirewallD.

# Enable NAT (masquerading) on the external zone
sudo firewall-cmd --zone=public --add-masquerade --permanent

# Forward external port 80 to local 8080
sudo firewall-cmd --zone=public 
--add-forward-port=port=80:proto=tcp:toport=8080 --permanent

# Forward 443 to an internal host
sudo firewall-cmd --zone=public 
--add-forward-port=port=443:proto=tcp:toaddr=10.0.0.10 --permanent

sudo firewall-cmd --reload

Asegúrese de que el reenvío de IP del kernel esté habilitado para los escenarios de enrutamiento y revise las reglas de firewall del proveedor de la nube para evitar conflictos o sorpresas de doble NAT.

IPv6 Consideraciones

FirewallD aplica la mayoría de las reglas a ambos IPv4 y IPv6 por defecto. Si su servidor tiene AAAA DNS registros o globales IPv6 direcciones, confirme sus políticas con pruebas sobre IPv6 y considere reglas enriquecidas que incluyan family=”ipv6″ al restringir las fuentes.

Prueba y solución de problemas

# Validate configuration syntax
sudo firewall-cmd --check-config

# See zones and rules
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all --zone=public

# Save runtime rules to permanent
sudo firewall-cmd --runtime-to-permanent

# Inspect logs and denied packets
journalctl -u firewalld --since "1 hour ago"
sudo firewall-cmd --set-log-denied=all  # during troubleshooting

# Cross-check with sockets and nftables
sudo ss -tulpen
sudo nft list ruleset

Si tu pierdes SSH Para acceder durante las pruebas, utilice la consola de su nube/VPS para revertir los cambios o permitir temporalmente el puerto y la IP necesarios desde el panel del proveedor.

FirewallD frente a iptables frente a UFW

  • CortafuegosD: Actualizaciones dinámicas, modelo basado en zonas, reconocimiento de servicios, reglas completas, integración con herramientas del sistema. Ideal para familias RHEL/Fedora y servidores multizona.
  • iptables (legado): Potente, pero de bajo nivel y estático. Es fácil bloquearse; reemplazado por nftables en muchas distribuciones.
  • UFW: Sintaxis simple de permitir/denegar en Ubuntu; ideal para configuraciones de zona única, menos funciones avanzadas que las ricas reglas/zonas de FirewallD.

Mejores prácticas de producción

  • Principio del mínimo privilegio: Abre sólo lo que debes hacer.
  • Restringir SSH con reglas detalladas para direcciones IP conocidas; considere la autenticación solo con clave y los límites de velocidad.
  • Zonas separadas: público para la web, interno/confiable para acceso de administrador y base de datos.
  • Documente cada regla; utilice la configuración managemento (Ansible) a las políticas de versiones.
  • Evite mezclar reglas nft manuales con FirewallD; deje que una herramienta sea dueña del firewall.
  • Primero pruebe los cambios en tiempo de ejecución; luego confirme con –permanent y vuelva a cargar.
  • Habilite el registro de denegación durante las auditorías y luego reviértalo para reducir el ruido.
  • Revisar grupos de seguridad en la nube y balanceadores de carga junto con locales reglas.

FAQ’s

¿Es FirewallD mejor que iptables para servidores?

Para la mayoría de los servidores modernos, sí. FirewallD ofrece actualizaciones dinámicas, políticas basadas en zonas y definiciones de servicio, lo que reduce los errores y el tiempo de inactividad. Utiliza nftables por defecto en las distribuciones más recientes y mantiene las reglas consistentes tras reinicios con mecanismos de "permanent" y "reload".

¿Cómo abro un puerto en FirewallD?

Utilice add-port con protocolo y hágalo permanente, luego vuelva a cargar:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

¿Cuál es la diferencia entre tiempo de ejecución y permanente en FirewallD?

Las reglas de ejecución se aplican inmediatamente, pero desaparecen al reiniciar. Las reglas permanentes persisten tras reinicios, pero requieren una recarga para surtir efecto. Puede probar los cambios en ejecución primero y luego guardarlos con –runtime-to-permanent o volver a ejecutar con –permanent y recargar.

¿Cómo permito un servicio solo desde una IP?

Utilice una regla enriquecida dirigida al servicio y a la IP de origen:
sudo firewall-cmd --add-rich-rule='rule family="ipv4" \
source address="203.0.113.10" service name="ssh" accept' --permanent
sudo firewall-cmd --reload

¿Funciona FirewallD con? IPv6?

Sí. La mayoría de las normas de servicio y portuarias se aplican a ambos. IPv4 y IPv6 automáticamente. Para controles estrictos, utilice reglas enriquecidas con family=”ipv6″ y pruebe la conectividad a través de IPv6 para verificar que su póliza funcione como se espera.


Conclusión

Dominar FirewallD en Linux es sencillo una vez que se comprenden las zonas, los servicios y el flujo de trabajo permanente/en tiempo de ejecución. Empiece con lo mínimo, pruebe con cuidado y aplique reglas ricas en capas para mayor precisión. Si prefiere un refuerzo de seguridad experto y sin intervención, YouStable, managed alojamiento El equipo puede diseñar y mantener una política de FirewallD sólida y adaptada a sus cargas de trabajo.

Deja Tu Comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

Ir al Inicio