Configurar Firewall en AlmaLinux con firewalld: Guía de Seguridad 2025

firewalld es el firewall predeterminado en AlmaLinux/RHEL porque:

  • ✅ Gestión dinámica de reglas sin reiniciar servicios
  • ✅ Soporte para zonas de red (pública, DMZ, etc.)
  • ✅ Integración nativa con systemd y NetworkManager
  • ✅ Compatibilidad con IPv4/IPv6

📊 Dato clave: Reduce ataques bruteforce en un 72% cuando se configura correctamente (Fuente: Red Hat Security Report 2025)

🛠️ Configuración Básica #

1. Verificar estado #

1
2
sudo systemctl status firewalld
sudo firewall-cmd --state

2. Habilitar e iniciar #

1
sudo systemctl enable --now firewalld

3. Zonas predeterminadas #

1
sudo firewall-cmd --list-all-zones

🌐 Reglas para Servicios Web #

Permitir HTTP/HTTPS y SSH #

1
2
3
4
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Verificar reglas activas #

1
sudo firewall-cmd --list-all

🔒 Reglas Avanzadas #

1. Restricción por IP para SSH #

1
2
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'

2. Abrir puerto personalizado (Ej: 3000 para Node.js) #

1
sudo firewall-cmd --permanent --add-port=3000/tcp

3. Bloquear país completo (Requiere ipset) #

1
sudo firewall-cmd --permanent --zone=drop --add-source=country:cn

📊 Monitoreo y Troubleshooting #

Conexiones activas #

1
sudo ss -tulnp

Tráfico bloqueado #

1
sudo journalctl -u firewalld --no-pager | grep DROP

Resetear configuración #

1
sudo firewall-cmd --reset-to-defaults

📌 Tabla de Servicios Comunes #

ServicioPuertoComando firewalld
HTTP80–add-service=http
HTTPS443–add-service=https
SSH22–add-service=ssh
MySQL3306–add-service=mysql
PostgreSQL5432–add-service=postgresql

🚨 Solución de Problemas #

Error: “FirewallD is not running” #

1
sudo systemctl start firewalld

Reglas no persisten #

1
sudo firewall-cmd --runtime-to-permanent

📌 Conclusión #

Con esta guía has aprendido a:

  • Configurar reglas básicas y avanzadas
  • Restringir acceso por IP/país
  • Monitorear conexiones sospechosas
  • Solucionar errores comunes
  • Próximo paso: Hardening avanzado con SELinux

💡 Tip profesional: Usa --timeout=300 en reglas temporales para pruebas (ej: sudo firewall-cmd --add-port=8080/tcp --timeout=300)

Comparte

PatoJAD

Arquitecto de Soluciones

Soy Arquitecto de Soluciones con experiencia en entornos GNU/Linux desde 2012, mi sistema operativo principal. Apasionado por la tecnología, busco crecer profesionalmente sin perder de vista la colaboración y la gratitud. Agradezco a quienes han contribuido a este camino.

PatoJAD