Hosting PERU 18 Años
(01) 433-3745

9 8180 8180

Configurar Firewalld en AlmaLinux: Guía de Seguridad

Indice

Configurar Firewalld en AlmaLinux: Guía de Seguridad

Configurar correctamente Firewalld en AlmaLinux es esencial para proteger tu servidor VPS. Esta guía te enseña a usar firewall-cmd para abrir puertos, gestionar zonas, crear reglas personalizadas y mantener tu servidor seguro ante ataques.

Firewalld es el firewall predeterminado en AlmaLinux y RHEL, ofreciendo una interfaz moderna para gestionar reglas de iptables/nftables. Aprende a configurarlo correctamente para tu servidor VPS.

1. ¿Qué es Firewalld?

Firewalld es un gestor de firewall dinámico que proporciona una interfaz D-Bus para gestionar reglas de red. A diferencia de iptables, firewalld permite cambios en caliente sin perder conexiones activas.

Características principales:

  • Zonas: Agrupan interfaces y conexiones con reglas predefinidas
  • Servicios: Conjuntos de puertos predefinidos (ssh, http, https)
  • Cambios en caliente: No requiere reiniciar para aplicar reglas
  • Runtime vs Permanente: Cambios temporales o persistentes
  • Rich rules: Reglas complejas con sintaxis extendida

Verificar estado de Firewalld

# Ver estado del servicio
sudo systemctl status firewalld

# Verificar si está activo
sudo firewall-cmd --state
# running

# Instalar si no está disponible
sudo dnf install firewalld -y

# Iniciar y habilitar
sudo systemctl enable --now firewalld

2. Comandos Básicos

Comandos esenciales de firewall-cmd

# Ver configuración actual
sudo firewall-cmd --list-all

# Ver todas las zonas y sus configuraciones
sudo firewall-cmd --list-all-zones

# Ver zona activa
sudo firewall-cmd --get-active-zones

# Ver zona por defecto
sudo firewall-cmd --get-default-zone

# Recargar configuración (aplicar cambios permanentes)
sudo firewall-cmd --reload

Runtime vs Permanente

# Cambio RUNTIME (temporal, se pierde al reiniciar)
sudo firewall-cmd --add-service=http

# Cambio PERMANENTE (persiste después de reiniciar)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

# Hacer un cambio runtime permanente
sudo firewall-cmd --runtime-to-permanent

3. Abrir y Cerrar Puertos

Usando servicios predefinidos

# Ver servicios disponibles
sudo firewall-cmd --get-services

# Agregar servicio (HTTP, HTTPS, SSH)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh

# Remover servicio
sudo firewall-cmd --permanent --remove-service=telnet

# Aplicar cambios
sudo firewall-cmd --reload

# Verificar servicios activos
sudo firewall-cmd --list-services

Abriendo puertos específicos

# Abrir puerto TCP
sudo firewall-cmd --permanent --add-port=8080/tcp

# Abrir puerto UDP
sudo firewall-cmd --permanent --add-port=53/udp

# Abrir rango de puertos
sudo firewall-cmd --permanent --add-port=3000-3100/tcp

# Cerrar puerto
sudo firewall-cmd --permanent --remove-port=8080/tcp

# Aplicar cambios
sudo firewall-cmd --reload

# Ver puertos abiertos
sudo firewall-cmd --list-ports

Puertos comunes para servidores

# Servidor web típico
sudo firewall-cmd --permanent --add-service=http    # 80/tcp
sudo firewall-cmd --permanent --add-service=https   # 443/tcp

# MySQL/MariaDB (solo si acceso remoto)
sudo firewall-cmd --permanent --add-port=3306/tcp

# PostgreSQL
sudo firewall-cmd --permanent --add-port=5432/tcp

# FTP
sudo firewall-cmd --permanent --add-service=ftp

# Mail (SMTP, IMAP, POP3)
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-service=smtps
sudo firewall-cmd --permanent --add-service=imap
sudo firewall-cmd --permanent --add-service=imaps

# cPanel/WHM
sudo firewall-cmd --permanent --add-port=2082/tcp
sudo firewall-cmd --permanent --add-port=2083/tcp
sudo firewall-cmd --permanent --add-port=2086/tcp
sudo firewall-cmd --permanent --add-port=2087/tcp

sudo firewall-cmd --reload

4. Zonas de Firewalld

Las zonas definen el nivel de confianza para conexiones de red:

Zona Descripción Uso típico
drop Descarta todo, sin respuesta Máxima seguridad
block Rechaza conexiones entrantes Denegar con respuesta
public Redes públicas no confiables VPS, servidores públicos
external Redes externas con NAT Routers
dmz Zona desmilitarizada Servidores accesibles públicamente
work Redes de trabajo Oficina
home Redes domésticas Casa
internal Redes internas Intranet
trusted Acepta todas las conexiones Solo redes 100% confiables

Gestionar zonas

# Ver zona por defecto
sudo firewall-cmd --get-default-zone
# public

# Cambiar zona por defecto
sudo firewall-cmd --set-default-zone=public

# Asignar interfaz a una zona
sudo firewall-cmd --zone=public --change-interface=eth0

# Ver configuración de una zona
sudo firewall-cmd --zone=public --list-all

# Agregar servicio a zona específica
sudo firewall-cmd --zone=public --permanent --add-service=http

5. Reglas Avanzadas (Rich Rules)

Las rich rules permiten reglas más complejas:

Permitir IP específica

# Permitir acceso SSH solo desde IP específica
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'

# Permitir acceso desde subred
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'

Bloquear IP

# Bloquear IP específica
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject'

# Bloquear subred
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop'

Limitar conexiones (rate limiting)

# Limitar conexiones SSH a 3 por minuto por IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" accept limit value="3/m"'

Logging

# Registrar conexiones bloqueadas
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" log prefix="Blocked-IP: " level="info" drop'

Ver y eliminar rich rules

# Ver rich rules
sudo firewall-cmd --list-rich-rules

# Eliminar rich rule (usar la misma sintaxis)
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="10.0.0.100" reject'

sudo firewall-cmd --reload

6. Troubleshooting

Problemas comunes y soluciones

No puedo acceder al servidor después de configurar firewall

# Desde consola VNC/KVM (si perdiste acceso SSH):
# Opción 1: Deshabilitar temporalmente
sudo systemctl stop firewalld

# Opción 2: Abrir SSH
sudo firewall-cmd --add-service=ssh
sudo firewall-cmd --runtime-to-permanent

Verificar si un puerto está abierto

# Desde el servidor
sudo ss -tulnp | grep :80

# Verificar en firewalld
sudo firewall-cmd --query-port=80/tcp

# Desde otra máquina
nc -zv ip_servidor 80
nmap -p 80 ip_servidor

Ver logs de firewall

# Ver logs del kernel
sudo dmesg | grep -i firewall

# Ver logs de journald
sudo journalctl -u firewalld

# Ver logs en tiempo real
sudo journalctl -f -u firewalld

Resetear configuración

# Restaurar zona a valores por defecto
sudo firewall-cmd --zone=public --set-default --permanent

# O eliminar todas las reglas personalizadas
sudo rm /etc/firewalld/zones/public.xml
sudo firewall-cmd --reload

Preguntas Frecuentes

¿Cómo abrir el puerto 80 en AlmaLinux?

Ejecuta sudo firewall-cmd --permanent --add-service=http para abrir el puerto 80, o sudo firewall-cmd --permanent --add-port=80/tcp. Luego aplica los cambios con sudo firewall-cmd --reload. Verifica con sudo firewall-cmd --list-all.

¿Cómo ver qué puertos están abiertos en el firewall?

Usa sudo firewall-cmd --list-ports para ver puertos individuales y sudo firewall-cmd --list-services para ver servicios (que incluyen sus puertos asociados). Para ver toda la configuración: sudo firewall-cmd --list-all.

¿Cuál es la diferencia entre firewalld e iptables?

Firewalld es una interfaz moderna sobre nftables/iptables. Las ventajas de firewalld incluyen: cambios en caliente sin perder conexiones, concepto de zonas para diferentes niveles de confianza, y configuración más simple. En AlmaLinux 9+, firewalld usa nftables como backend por defecto.

¿Necesitas un VPS con AlmaLinux?

Nuestros servidores VPS vienen con AlmaLinux preinstalado, firewall configurado y soporte técnico en español 24/7.

Ver Planes VPS

¿Necesitas un VPS con AlmaLinux?

Nuestros servidores VPS vienen con AlmaLinux preinstalado y soporte técnico en español 24/7.

Ver Planes VPS