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
#
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
#
| Servicio | Puerto | Comando firewalld |
|---|
| HTTP | 80 | –add-service=http |
| HTTPS | 443 | –add-service=https |
| SSH | 22 | –add-service=ssh |
| MySQL | 3306 | –add-service=mysql |
| PostgreSQL | 5432 | –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)