15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
22.10.2024
1 +1

Cómo Configurar Reglas de Firewall: Una Guía Técnica Completa

Una regla de firewall es una entrada de política que instruye a un motor de firewall para permitir, denegar o registrar el tráfico de red basándose en criterios definidos como la dirección IP de origen/destino, el número de puerto, el protocolo de transporte y la dirección del tráfico. Las reglas de firewall correctamente configuradas forman la capa de aplicación principal entre su infraestructura e internet público, convirtiéndolas en el control de seguridad más importante en cualquier servidor o dispositivo de red.

Esta guía cubre la arquitectura de reglas de firewall, UFW en Linux, firewalld, Windows Defender Firewall, nftables, y las prácticas operativas que distinguen un entorno reforzado de uno mal configurado.

Qué Controlan Realmente las Reglas de Firewall

Cada regla en un conjunto de reglas de firewall se evalúa contra cinco atributos principales de paquetes, comúnmente llamados la 5-tupla:

  • Dirección IP de origen — el host o subred de origen (p. ej., 192.168.1.0/24)
  • Dirección IP de destino — el host o rango objetivo
  • Puerto de origen — el puerto efímero en el lado iniciador
  • Puerto de destino — el puerto de servicio en el lado receptor (p. ej., 443 para HTTPS, 22 para SSH)
  • ProtocoloTCP, UDP, ICMP, o número de protocolo

Más allá de la 5-tupla, los firewalls con estado también rastrean el estado de conexión (NEW, ESTABLISHED, RELATED, INVALID), lo que les permite permitir el tráfico de retorno para conexiones salientes sin escribir reglas entrantes explícitas para cada respuesta.

Firewalls con Estado vs. sin Estado

CaracterísticaCon estadoSin estado
Rastrea el estado de conexiónNo
Permite el tráfico de retorno automáticamenteNo — requiere reglas explícitas
Sobrecarga de rendimientoModeradaMuy baja
Caso de uso típicoFirewalls de host, NGFWsRouters principales, ACLs de alto rendimiento
Resistencia a suplantaciónAltaBaja
Complejidad de reglasMenorMayor
Herramientas de ejemploiptables (conntrack), UFW, Windows DefenderAWS NACL, ACL básica en Cisco IOS

Para prácticamente todas las implementaciones de servidores — incluyendo Hosting VPS y Servidores Dedicados — un firewall de host con estado es la opción predeterminada correcta.

Procesamiento de Reglas de Firewall: El Problema del Orden

Una de las fuentes más comunes de mala configuración es malentender el orden de las reglas. La mayoría de los firewalls evalúan las reglas de arriba a abajo y aplican la primera regla que coincide, luego se detienen. Esto significa:

  • Una regla amplia ALLOW colocada por encima de una regla específica DENY la anulará silenciosamente.
  • Un DENY ALL en la parte superior de una cadena bloquea todo, independientemente de lo que siga.
  • Las reglas duplicadas o sombreadas desperdician ciclos de procesamiento y crean confusión en las auditorías.

Mejor práctica: Siempre coloque las reglas específicas antes que las generales. Coloque las reglas explícitas DENY para fuentes conocidas como maliciosas cerca de la parte superior, seguidas de reglas específicas ALLOW para servicios de confianza, y termine cada cadena con una política predeterminada DENY.

Configuración de Reglas de Firewall en Linux con UFW

UFW (Uncomplicated Firewall) es una interfaz para iptables y nftables en sistemas basados en Debian/Ubuntu. Abstrae la sintaxis de cadenas de bajo nivel en comandos legibles por humanos mientras preserva el control total sobre el filtrado de puertos, protocolos, IP e interfaces.

Paso 1: Instalar y Habilitar UFW

UFW viene preinstalado en Ubuntu. Verifique su estado antes de habilitarlo:

sudo ufw status verbose

Si está inactivo, habilítelo:

sudo ufw enable

Advertencia crítica: Si está conectado vía SSH y aún no ha permitido el puerto 22, habilitar UFW lo bloqueará. Siempre permita SSH antes de habilitar el firewall en un servidor remoto.

Paso 2: Establecer Políticas Predeterminadas

Las políticas predeterminadas definen qué sucede con el tráfico que no coincide con ninguna regla explícita. La línea base segura es:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Esto descarta todas las conexiones entrantes no solicitadas mientras permite todo el tráfico saliente. Si su política de seguridad requiere filtrado de egreso (p. ej., prevenir la exfiltración de datos o callbacks C2), cambie el predeterminado de salida:

sudo ufw default deny outgoing

Luego permita explícitamente solo los destinos salientes que necesita su aplicación.

Paso 3: Permitir Servicios y Puertos Específicos

UFW admite nombres de servicios de /etc/services o números de puerto explícitos:

# Allow SSH by service name
sudo ufw allow ssh

# Allow HTTP and HTTPS
sudo ufw allow http
sudo ufw allow https

# Allow a custom application port
sudo ufw allow 8080/tcp

# Allow a UDP service (e.g., DNS resolver)
sudo ufw allow 53/udp

Para permitir un rango de puertos (p. ej., FTP pasivo):

sudo ufw allow 49152:65535/tcp

Paso 4: Restringir el Acceso a IPs de Origen Específicas

Exponer puertos administrativos a 0.0.0.0/0 es una causa principal de compromiso por fuerza bruta. Bloquee SSH a una IP de gestión conocida:

sudo ufw allow from 203.0.113.50 to any port 22 proto tcp

Para permitir una subred de gestión completa:

sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp

Paso 5: Denegar Tráfico de IPs o Subredes Específicas

Bloquear una IP conocida como maliciosa:

sudo ufw deny from 198.51.100.77

Bloquear una subred completa (p. ej., un bloqueo geográfico o un rango ASN abusivo):

sudo ufw deny from 198.51.100.0/24

Caso límite: Las reglas UFW deny envían una respuesta TCP RST o ICMP puerto-inalcanzable, lo que confirma que el host existe. Use reject para descartar paquetes silenciosamente en su lugar:

sudo ufw reject from 198.51.100.0/24

Paso 6: Inspeccionar Reglas Activas

sudo ufw status numbered

El indicador numbered asigna un índice a cada regla, que es necesario para la eliminación dirigida:

[ 1] 22/tcp                     ALLOW IN    203.0.113.50
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

Para una salida detallada completa que incluya políticas predeterminadas y enlaces de interfaz:

sudo ufw status verbose

Paso 7: Eliminar Reglas

Eliminar por número de regla (preferido — evita ambigüedades):

sudo ufw delete 3

Eliminar por especificación de regla:

sudo ufw delete allow 8080/tcp

Paso 8: Recargar y Persistir Reglas

Las reglas UFW persisten automáticamente entre reinicios. Después de cambios masivos, recargue sin interrumpir las conexiones existentes:

sudo ufw reload

Para restablecer completamente todas las reglas y comenzar desde cero:

sudo ufw reset

UFW Avanzado: Perfiles de Aplicación

UFW admite perfiles de aplicación con nombre almacenados en /etc/ufw/applications.d/. Esto le permite definir reglas de múltiples puertos bajo un solo nombre:

sudo ufw app list
sudo ufw allow 'Nginx Full'
sudo ufw app info 'Nginx Full'

Creación de un perfil personalizado para una API Node.js:

[NodeAPI]
title=Node.js API Server
description=Custom Node.js application
ports=3000,3001/tcp

Luego aplíquelo:

sudo ufw allow NodeAPI

Configuración de Reglas de Firewall con firewalld (RHEL/CentOS/Fedora)

firewalld utiliza un modelo basado en zonas en lugar de un conjunto de reglas plano. Cada interfaz de red se asigna a una zona (p. ej., public, internal, dmz), y las reglas se aplican por zona. Esto es arquitectónicamente más flexible para servidores con múltiples interfaces de red.

Operaciones Básicas de firewalld

# Check status
sudo firewall-cmd --state

# List all active zones and their interfaces
sudo firewall-cmd --get-active-zones

# List rules in the public zone
sudo firewall-cmd --zone=public --list-all

Permitir y Eliminar Servicios

# Allow HTTPS permanently
sudo firewall-cmd --zone=public --add-service=https --permanent

# Allow a custom port
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent

# Remove a service
sudo firewall-cmd --zone=public --remove-service=http --permanent

# Reload to apply permanent changes
sudo firewall-cmd --reload

Reglas Enriquecidas para Políticas Específicas por IP

Las reglas enriquecidas de firewalld proporcionan la granularidad de iptables con una sintaxis más legible:

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

# Block all traffic from a subnet
sudo firewall-cmd --zone=public 
  --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" drop' 
  --permanent

sudo firewall-cmd --reload

Configuración de Reglas de Firewall con nftables

nftables es el reemplazo moderno de iptables, que ofrece un marco unificado para el filtrado de IPv4, IPv6, ARP y puentes con un rendimiento significativamente mejor y reemplazo atómico de reglas.

Conjunto de Reglas Básico de nftables

# Flush existing ruleset
sudo nft flush ruleset

# Create a basic filtering table
sudo nft add table inet filter

# Add input, forward, and output chains
sudo nft add chain inet filter input { type filter hook input priority 0 ; policy drop ; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 ; policy drop ; }
sudo nft add chain inet filter output { type filter hook output priority 0 ; policy accept ; }

# Allow established and related connections
sudo nft add rule inet filter input ct state established,related accept

# Allow loopback
sudo nft add rule inet filter input iif lo accept

# Allow SSH from a specific IP
sudo nft add rule inet filter input ip saddr 203.0.113.50 tcp dport 22 accept

# Allow HTTP and HTTPS from anywhere
sudo nft add rule inet filter input tcp dport { 80, 443 } accept

Para hacer persistente el conjunto de reglas, guárdelo en el archivo de configuración predeterminado:

sudo nft list ruleset > /etc/nftables.conf
sudo systemctl enable nftables

Configuración de Reglas de Firewall en Windows

Windows Defender Firewall con Seguridad Avanzada proporciona interfaces tanto de GUI como de línea de comandos (netsh, PowerShell) para la gestión de reglas.

Uso de la GUI

  1. Abra Windows Defender Firewall con Seguridad Avanzada a través de wf.msc.
  2. Seleccione Reglas de entrada o Reglas de salida en el panel izquierdo.
  3. Haga clic en Nueva regla en el panel derecho.
  4. Elija el tipo de regla:
  • Puerto — filtrar por número de puerto TCP/UDP
  • Programa — filtrar por ruta del ejecutable
  • Predefinida — usar una definición de servicio de Windows integrada
  • Personalizada — control total sobre todos los parámetros
  1. Especifique el puerto o programa, elija Permitir o Bloquear, seleccione los perfiles aplicables (Dominio, Privado, Público) y asigne un nombre a la regla.

Uso de PowerShell (Recomendado para Automatización)

# Allow inbound HTTPS
New-NetFirewallRule -DisplayName "Allow HTTPS Inbound" `
  -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

# Allow inbound SSH (Windows OpenSSH)
New-NetFirewallRule -DisplayName "Allow SSH Inbound" `
  -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow `
  -RemoteAddress 203.0.113.50

# Block inbound traffic from a specific IP
New-NetFirewallRule -DisplayName "Block Malicious IP" `
  -Direction Inbound -RemoteAddress 198.51.100.77 -Action Block

# View all inbound rules
Get-NetFirewallRule -Direction Inbound | Select-Object DisplayName, Enabled, Action

# Remove a rule by name
Remove-NetFirewallRule -DisplayName "Allow HTTPS Inbound"

Uso de netsh (Heredado pero Ampliamente Compatible)

:: Allow inbound port 443
netsh advfirewall firewall add rule name="Allow HTTPS" protocol=TCP dir=in localport=443 action=allow

:: Block a specific IP
netsh advfirewall firewall add rule name="Block IP" dir=in remoteip=198.51.100.77 action=block

:: Delete a rule
netsh advfirewall firewall delete rule name="Allow HTTPS"

Errores Críticos y Casos Límite en Reglas de Firewall

El Permiso Implícito para Tráfico ESTABLISHED

En firewalls con estado, no permitir explícitamente las conexiones ESTABLISHED y RELATED en la cadena de entrada interrumpirá todas las sesiones iniciadas de forma saliente (p. ej., apt update, curl, consultas DNS) incluso cuando la cadena de salida está configurada en ACCEPT. Esta es la mala configuración más común en configuraciones sin procesar de iptables o nftables.

# This rule MUST appear before any DROP rules in the input chain
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Paridad IPv6

Muchos administradores configuran las reglas IPv4 meticulosamente y olvidan IPv6 por completo. Si su servidor tiene una dirección IPv6 y el soporte IPv6 de UFW no está habilitado, un atacante puede eludir todas las reglas IPv4 conectándose a través de ::. Verifique que /etc/default/ufw contenga:

IPV6=yes

Interfaz de Loopback

Siempre permita explícitamente el tráfico en la interfaz de loopback (lo). Muchos servicios locales (bases de datos, colas de mensajes, APIs internas) se comunican a través de 127.0.0.1 o ::1. Bloquear el loopback interrumpe silenciosamente la comunicación entre procesos.

sudo ufw allow in on lo
sudo ufw allow out on lo

Limitación de Velocidad para Prevenir Fuerza Bruta

UFW admite la limitación de velocidad de conexión de forma nativa, lo cual es esencial para SSH y otros servicios de autenticación:

sudo ufw limit ssh

Esto permite un máximo de 6 intentos de conexión por 30 segundos desde una sola IP antes de activar un bloqueo temporal automático — una alternativa ligera a fail2ban para implementaciones básicas.

Tráfico ICMP y de Diagnóstico

Bloquear todo ICMP es una práctica común pero contraproducente. Interrumpe ping, traceroute, el descubrimiento de MTU de ruta y algunos protocolos de enrutamiento. El enfoque correcto es permitir tipos específicos de ICMP:

  • Tipo 0 (Respuesta de eco) y Tipo 8 (Solicitud de eco) — para ping
  • Tipo 3 (Destino inalcanzable) — para el descubrimiento de MTU de ruta
  • Tipo 11 (Tiempo excedido) — para traceroute

Bloquee el Tipo 17 (Solicitud de máscara de dirección) y el Tipo 18 (Respuesta de máscara de dirección), que no tienen ningún uso moderno legítimo.

Reglas de Firewall y Entornos de Hosting

La estrategia correcta de firewall depende en gran medida de su capa de infraestructura.

En Hosting Web Compartido, el firewall es gestionado a nivel de plataforma por el proveedor. Los inquilinos generalmente configuran controles de acceso a nivel de aplicación en lugar de filtros de paquetes a nivel de kernel.

En un VPS con cPanel, cPanel/WHM incluye ConfigServer Security & Firewall (CSF), que envuelve iptables con una interfaz de alto nivel, detección automática de fuerza bruta y soporte de port knocking. CSF es la solución de firewall estándar para entornos cPanel y debe usarse con preferencia sobre UFW sin procesar en esos sistemas.

En Hosting VPS no administrado o Servidores Dedicados, tiene control total sobre el firewall del kernel. Aquí es donde UFW, firewalld y nftables son las herramientas apropiadas. La línea base de refuerzo debe incluir:

  • Política de entrada de denegación predeterminada
  • SSH restringido a IPs de gestión conocidas o una puerta de enlace VPN
  • Todos los puertos no esenciales cerrados
  • Limitación de velocidad en puertos de autenticación
  • Registro habilitado para el tráfico denegado

Si está ejecutando cargas de trabajo GPU o servicios de inferencia ML en Hosting GPU, preste especial atención a los puertos expuestos por los notebooks Jupyter, TensorBoard y las APIs de servicio de modelos — estos son frecuentemente atacados por bots de criptominería que escanean puertos de numeración alta abiertos.

Lista de Verificación para Auditoría y Mantenimiento de Reglas de Firewall

Las auditorías regulares de reglas son tan importantes como la configuración inicial. Las reglas se acumulan con el tiempo y se vuelven obsoletas, creando una superficie de ataque innecesaria.

Tareas de auditoría a realizar trimestralmente:

  • Ejecute sudo ufw status numbered o equivalente y revise cada regla contra el inventario de servicios actual
  • Elimine las reglas para servicios desmantelados, direcciones IP antiguas y excepciones temporales que nunca se limpiaron
  • Verifique que las políticas predeterminadas sigan siendo deny incoming
  • Compruebe que las reglas IPv6 reflejen las reglas IPv4
  • Confirme que el registro está habilitado y que los registros de tráfico denegado están siendo ingeridos por su SIEM o agregador de registros
  • Pruebe las reglas con nmap desde un host externo para verificar que la superficie de ataque coincide con su intención
# Scan your own server from an external host to verify exposed ports
nmap -sS -sV -p 1-65535 --open YOUR_SERVER_IP
  • Valide que las reglas ESTABLISHED/RELATED estén presentes y correctamente ordenadas
  • Revise las reglas de limitación de velocidad y ajuste los umbrales según los patrones de tráfico observados

Matriz de Decisión: Elegir la Herramienta de Firewall Correcta

EscenarioHerramienta RecomendadaJustificación
Servidor Ubuntu/Debian, conjunto de reglas simpleUFWSintaxis legible por humanos, persistente por defecto
Servidor RHEL/CentOS/FedorafirewalldIntegración nativa, el modelo de zonas se adapta a configuraciones multi-NIC
Filtrado complejo o de alto rendimientonftablesActualizaciones atómicas, marco único para IPv4/IPv6/ARP
RHEL/CentOS 6 heredadoiptablesÚnica opción en kernels más antiguos
Windows ServerWindows Defender + PowerShellNativo, gestionable por GPO, scriptable
VPS con cPanelCSF (ConfigServer Firewall)Diseñado específicamente para cPanel, incluye el daemon LFD
VM en la nube (AWS/GCP/Azure)Grupos de seguridad en la nube + firewall de hostDefensa en profundidad; los SGs de la nube son con estado y gratuitos

Conclusiones Prácticas Clave

  • Establezca la denegación predeterminada de entrada antes de escribir cualquier regla de permiso. Esto garantiza que cualquier regla que olvide escribir resulte en una conexión bloqueada, no en una abierta.
  • Nunca exponga SSH a 0.0.0.0/0 en un servidor de producción. Restrínjalos a una IP de gestión, una subred VPN, o use port knocking.
  • Escriba las reglas de permiso tan específicas como sea posible. Prefiera from 203.0.113.50 to any port 22 proto tcp sobre allow 22.
  • Refleje las reglas IPv4 en IPv6. Un firewall que solo filtra IPv4 es medio firewall.
  • Habilite la limitación de velocidad de conexión en todos los puertos de autenticación como mitigación básica de fuerza bruta.
  • Registre el tráfico denegado. Las caídas silenciosas sin registro hacen que la respuesta a incidentes sea casi imposible.
  • Audite las reglas según un calendario. Las reglas obsoletas son una responsabilidad, no una red de seguridad.
  • Pruebe desde el exterior. Use nmap o un escáner de puertos externo después de cada cambio significativo de reglas para confirmar la superficie de ataque efectiva.
  • Use ufw reload en lugar de ufw disable && ufw enable para evitar interrumpir las conexiones activas durante las actualizaciones de reglas.
  • En nftables y iptables, siempre coloque la regla de aceptación ESTABLISHED/RELATED en la parte superior de la cadena de entrada para evitar interrumpir las sesiones iniciadas de forma saliente.

Preguntas Frecuentes

¿Cuál es la diferencia entre una regla de firewall y un grupo de seguridad en entornos de nube?

Un grupo de seguridad (AWS, GCP, Azure) es un filtro de paquetes con estado gestionado en la nube que se aplica a nivel del hipervisor antes de que el tráfico llegue a su VM. Una regla de firewall basada en host (UFW, firewalld) se ejecuta dentro del kernel del sistema operativo. Ambos deben usarse simultáneamente para la defensa en profundidad — el grupo de seguridad de la nube como perímetro exterior y el firewall del host como capa de aplicación interior.

¿Por qué UFW muestra una regla como activa pero el tráfico sigue bloqueado?

La causa más común es el orden de las reglas. Una regla DENY anterior en la cadena coincide antes que su regla ALLOW. Ejecute sudo ufw status numbered y verifique el orden. También compruebe que existen reglas IPv6 si el cliente se conecta a través de IPv6, y confirme que la interfaz correcta está siendo apuntada si el servidor tiene múltiples interfaces de red.

¿Debo bloquear ICMP completamente por seguridad?

No. Bloquear todo ICMP interrumpe el descubrimiento de MTU de ruta, lo que provoca que las sesiones TCP se cuelguen en redes con MTUs no estándar. También interrumpe traceroute y hace que el diagnóstico de red sea significativamente más difícil. Bloquee solo los tipos de ICMP sin uso operativo legítimo (tipos 17 y 18). Permita solicitud/respuesta de eco, destino inalcanzable y tiempo excedido.

¿Qué sucede con las conexiones SSH activas cuando recargo UFW?

sudo ufw reload recarga el conjunto de reglas sin vaciar las entradas de estado conntrack existentes. Las sesiones SSH activas permanecen conectadas porque la tabla de seguimiento de conexiones del kernel aún mantiene su estado ESTABLISHED. Solo sudo ufw disable seguido de sudo ufw enable vaciaría el estado y potencialmente interrumpiría las conexiones activas.

¿Cómo evito que las reglas de firewall se pierdan después de un reinicio del sistema?

UFW persiste las reglas automáticamente entre reinicios a través de los archivos de configuración /etc/ufw/. Para firewalld, use el indicador --permanent en cada regla y ejecute sudo firewall-cmd --reload. Para nftables sin procesar, guarde el conjunto de reglas con sudo nft list ruleset > /etc/nftables.conf y asegúrese de que el servicio systemd nftables esté habilitado. Para iptables, use iptables-save > /etc/iptables/rules.v4 e instale el paquete iptables-persistent.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar