Saltar al contenido principal
Firewall: Qué es, Tipos y Cómo Configurar uno en 2026

Firewall: Qué es, Tipos y Cómo Configurar uno en 2026

Aprende qué es un firewall, los tipos que existen (stateful, NGFW, WAF, cloud), cómo funciona la inspección de paquetes y cómo configurar iptables y pfSense paso a paso.

31 minCyberFlows Team
[Espacio publicitario — AdSense]

Introducción

El firewall es, sin exageración, el pilar fundamental de la seguridad de red moderna. Desde las primeras implementaciones en los routers de la década de 1980 hasta las plataformas de próxima generación potenciadas por inteligencia artificial que dominan el panorama de 2026, el cortafuegos ha evolucionado constantemente para adaptarse a las amenazas emergentes.

En sus inicios, los firewalls eran simples filtros de paquetes que examinaban cabeceras IP y comparaban direcciones origen y destino contra listas estáticas de reglas. Con el tiempo, la inspección de estado (stateful inspection) revolucionó el campo al rastrear el ciclo de vida de cada conexión, permitiendo decisiones mucho más informadas. Posteriormente, la inspección profunda de paquetes (deep packet inspection) trajo la capacidad de examinar el contenido de la carga útil, no solo las cabeceras. Y hoy, los firewalls de próxima generación (NGFW) integran clasificación de aplicaciones, prevención de intrusiones, análisis de comportamiento con machine learning y filtrado de URLs en un solo dispositivo.

Sin un firewall correctamente configurado, cualquier red está expuesta a escaneo de puertos, explotación de servicios desprotegidos, exfiltración de datos y movimiento lateral de atacantes comprometidos. Este artículo es una guía completa: desde qué es un firewall y cómo funciona internamente, pasando por todos los tipos que existen, hasta ejemplos prácticos de configuración con iptables, UFW, pfSense, Windows Defender Firewall y AWS Security Groups.


¿Qué es un Firewall?

Un firewall es un dispositivo de seguridad de red —puede ser hardware, software o una combinación de ambos— que monitorea el tráfico de red entrante y saliente, y lo filtra conforme a un conjunto de reglas de seguridad definidas por el administrador. Su función principal es actuar como el portero digital entre una red de confianza (trusted network) y una red no confiable (untrusted network), típicamente Internet.

Definición técnica

Según el NIST en su publicación SP 800-41 Rev.1 (Guidelines on Firewalls and Firewall Policy), un firewall se define como:

"Un sistema o grupo de sistemas que aplica reglas de control de acceso a una red para protegerla de accesos no autorizados, mal uso, modificación o denegación de servicio."

En términos prácticos, un firewall:

  • Inspecciona cada paquete de datos que cruza la frontera de red.
  • Evalúa el paquete contra un conjunto ordenado de reglas (firewall rules o ACLs).
  • Permite o bloquea el tráfico en función de los criterios de las reglas (dirección IP, puerto, protocolo, aplicación, contenido).
  • Registra las decisiones tomadas en un log para auditoría y análisis de incidentes.

¿Dónde se ubica un firewall en la red?

El firewall se posiciona estratégicamente en el punto de interconexión entre redes de distinto nivel de confianza. En una arquitectura típica:

Nivel Zona Descripción
Internet No confiable Tráfico externo
Firewall Perimetral Primera barrera Filtrado de tráfico entrante/saliente
DMZ Servidores Web, Mail, DNS externo Servicios accesibles desde Internet
Firewall Interno Segunda barrera Segmentación de red interna
Red Corporativa VLAN Usuarios, Servidores, IoT, Administración Zonas internas de confianza

Este modelo de defensa en profundidad con firewalls perimetral e interno es la práctica recomendada por el NIST y por los estándares de la industria.


Cómo Funciona un Firewall

Para entender un firewall, es necesario conocer las distintas capas de inspección que puede realizar. No todos los firewalls operan al mismo nivel del modelo OSI, y las diferencias son críticas.

Filtrado de paquetes (Packet Filtering — Estadoless)

Es el mecanismo más básico y antiguo. Examina únicamente las cabeceras de cada paquete IP de forma individual, sin mantener estado sobre las conexiones.

Los criterios de evaluación incluyen:

  • Dirección IP origen: ¿De dónde viene el paquete?
  • Dirección IP destino: ¿A dónde se dirige?
  • Puerto de origen y destino: ¿Qué servicio se solicita? (puerto 80 = HTTP, puerto 443 = HTTPS, puerto 22 = SSH, etc.)
  • Protocolo: TCP, UDP, ICMP, etc.
  • Interfaz de red: ¿En qué NIC se recibió el paquete?
  • Marcas de estado TCP: Flags SYN, ACK, FIN, RST (aunque sin contexto de conexión).

Ejemplo de paquete filtrado:

Campo Valor
Src IP 203.0.113.50
Dst IP 198.51.100.10
Protocolo TCP
Src Port 52431
Dst Port 22
Flags SYN

Reglas de filtrado aplicadas:

Regla Acción Resultado
Regla 1: Permitir SSH (22) ALLOW ← MATCH
Regla 2: Permitir HTTP (80) ALLOW
Regla 3: Bloquear todo DENY

Ventajas: Extremadamente rápido, bajo consumo de recursos. Desventajas: No puede distinguir entre un paquete legítimo de una conexión existente y un paquete malicioso que simplemente emula las cabeceras correctas.

Inspección de estado (Stateful Inspection)

El firewall stateful mantiene una tabla de seguimiento de conexiones (connection tracking table) que almacena el estado de cada conexión activa. Esto le permite saber si un paquete pertenece a una conexión ya establecida o si es el inicio de una nueva.

El flujo del TCP 3-Way Handshake se monitorea así:

Paso Dirección Mensaje Estado
1 Cliente → Servidor SYN NEW
2 Servidor → Cliente SYN-ACK SYN-RECEIVED
3 Cliente → Servidor ACK ESTABLISHED

Una vez que la conexión está en estado ESTABLISHED, todos los paquetes asociados se permiten automáticamente sin necesidad de reglas adicionales explícitas. Las tablas de estado típicas incluyen:

Estado Descripción
NEW Primer paquete de una conexión (SYN)
ESTABLISHED Conexión completamente establecida
RELATED Paquete asociado a una conexión existente (ej. FTP data)
INVALID Paquete que no encaja en ningún estado conocido
# En iptables, permitir solo tráfico de conexiones establecidas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Inspección de aplicación (Deep Packet Inspection — DPI)

La inspección profunda de paquetes va más allá de las cabeceras y examina el contenido real de la carga útil (payload) del paquete. Esto permite:

  • Detectar aplicaciones específicas independientemente del puerto (ej. identificar tráfico de BitTorrent en puerto 443).
  • Inspeccionar contenido HTTP para bloquear inyección SQL, XSS o malware.
  • Analizar protocolos de aplicaciones (DNS, HTTP, SMTP) en busca de anomalías.

Firewall Proxy / Gateway de Aplicación

El proxy actúa como intermediario entre el cliente y el servidor. El cliente nunca se conecta directamente al destino; el proxy termina la conexión del lado del cliente y establece una nueva conexión hacia el servidor. Esto proporciona:

  • Anonimización de la dirección IP del cliente.
  • Posibilidad de inspeccionar y modificar el contenido en tiempo real.
  • Caché de contenido para optimizar el rendimiento.
  • Control granular por usuario y aplicación.

Tipos de Firewall

Firewall de Filtrado de Paquetes (Packet Filtering)

Opera en las capas 3 y 4 del modelo OSI. Es el tipo más básico y se implementa típicamente en routers o en el kernel del sistema operativo con herramientas como iptables o nftables en Linux.

Características:

  • Evalúa cada paquete de forma aislada.
  • Reglas basadas en IP origen/destino, puerto y protocolo.
  • No mantiene estado de conexión.
  • Muy rápido pero fácilmente evadible.

Ejemplo con nftables (sucesor moderno de iptables):

#!/usr/sbin/nft -f
flush ruleset

table inet filtro {
    chain entrada {
        type filter hook input priority 0; policy drop;
        
        # Permitir loopback
        iif lo accept
        
        # Permitir conexiones establecidas
        ct state established,related accept
        ct state invalid drop
        
        # Permitir ICMP (ping)
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept
        
        # Permitir SSH desde red local
        ip saddr 192.168.1.0/24 tcp dport 22 accept
        
        # Permitir HTTP y HTTPS
        tcp dport { 80, 443 } accept
        
        # Loggear y bloquear el resto
        log prefix "[FIREWALL-DROP] " drop
    }
    
    chain salida {
        type filter hook output priority 0; policy accept;
    }
}

Firewall Stateful (Stateful Inspection)

Combina el filtrado de paquetes con el seguimiento de estado. Es el estándar actual para firewalls de red perimetral. Herramientas como iptables con el módulo conntrack, pfSense con su motor de estado, o los firewalls de hardware de fabricantes como Fortinet y Palo Alto implementan este enfoque.

Diferencia clave: Mientras que un firewall stateless examina cada paquete de forma independiente, un firewall stateful solo necesita definir reglas para el inicio de conexiones; el resto del tráfico asociado se permite automáticamente.

Firewall de Proxy / Gateway de Aplicación

Termina las conexiones en ambos extremos y actúa como intermediario. Ejemplos incluyen Squid (proxy de caché y filtrado) y Apache mod_security como reverse proxy con WAF.

Ventajas:

  • Inspección completa del contenido de la aplicación.
  • Capacidad de modificar tráfico en tránsito.
  • Logging detallado a nivel de aplicación.

Desventajas:

  • Punto único de fallo.
  • Overhead de latencia por la doble conexión.
  • No todos los protocolos son compatibles con proxy.

Next-Generation Firewall (NGFW)

El NGFW representa la evolución más reciente del firewall perimetral. Según Gartner, un NGFW debe incluir:

  1. Inspección profunda de paquetes (DPI) integrada.
  2. Integración con IPS (Intrusion Prevention System).
  3. Conciencia de aplicaciones: Capacidad de identificar y controlar más de 1.000 aplicaciones independientemente del puerto o protocolo.
  4. Filtrado de URLs y categorías de contenido.
  5. Inteligencia de amenazas en la nube: Actualizaciones de firmas y feeds de reputación en tiempo real.
  6. Soporte para identidad de usuario: Reglas basadas en usuarios o grupos de directorio activo.

Fabricantes destacados en 2026:

Fabricante Producto Características principales
Palo Alto Networks PA-Series / Prisma App-ID, User-ID, Content-ID, WildFire sandboxing
Fortinet FortiGate ASIC dedicado FortiGuard, integración SD-WAN, threat intelligence
Cisco Firepower Integración con Umbrella, Snort IPS, ThousandEyes
Sophos XGS Series Synchronized Security con endpoint, Deep Learning
Check Point Quantum ThreatCloud AI, IPS y anti-bot integrados

Flujo de inspección NGFW:

Paso Componente Acción
1 App-ID Clasificar la aplicación que genera el tráfico
2 IPS Bloquear exploits y firmas conocidas
3 URL Filter Categorizar el contenido del sitio web
4 Threat Intelligence Cloud Correlacionar con inteligencia global de amenazas
5 Decisión Permitir / Bloquear / Log

Web Application Firewall (WAF)

Un WAF se especializa exclusivamente en la protección de aplicaciones web. Opera en la capa 7 (capa de aplicación) del modelo OSI y examina el tráfico HTTP/HTTPS para detectar y bloquear ataques específicos contra aplicaciones web.

El WAF protege contra las vulnerabilidades del OWASP Top 10:

  • A01 – Broken Access Control: Bypass de controles de acceso.
  • A02 – Cryptographic Failures: Exposición de datos sensibles.
  • A03 – Injection: SQL injection, XSS, command injection.
  • A04 – Insecure Design: Flaws en el diseño de la aplicación.
  • A05 – Security Misconfiguration: Configuraciones por defecto inseguras.

Tipos de WAF:

  • WAF basado en negación (Denylist): Bloquea patrones conocidos maliciosos.
  • WAF basado en permisos (Allowlist): Solo permite tráfico que cumple con reglas positivas.
  • WAF híbrido: Combina ambos enfoques.

Soluciones WAF populares:

  • Cloudflare WAF: WAF basado en la nube con reglas gestionadas y personalizadas. Protege contra DDoS, bots y OWASP Top 10.
  • AWS WAF: Integrado con ALB, CloudFront y API Gateway. Reglas basadas en IP, cabeceras, cuerpo de la petición y Rate Limiting.
  • ModSecurity: WAF open-source que funciona como módulo de Apache, Nginx o IIS. Incluye el OWASP Core Rule Set (CRS).
# Ejemplo de regla ModSecurity para bloquear SQL Injection
SecRule REQUEST_URI|REQUEST_HEADERS|REQUEST_BODY \
    "(?i:(?:union\s+(?:all\s+)?select|select\s+.*\s+from|insert\s+into|delete\s+from|drop\s+table))" \
    "id:1001,phase:1,block,log,msg:'SQL Injection Attempt',tag:'OWASP_CRS'"

Ejemplo de regla AWS WAF con CLI:

aws wafv2 create-web-acl \
    --name "ProtectWebApp" \
    --scope REGIONAL \
    --default-action Allow={} \
    --rules '[
        {
            "Name": "SQLInjectionRule",
            "Priority": 1,
            "Statement": {
                "SqliMatchStatement": {
                    "FieldToMatch": {"UriPath": {}},
                    "TextTransformations": [
                        {"Priority": 0, "Type": "URL_DECODE"}
                    ]
                }
            },
            "Action": {"Block": {}},
            "VisibilityConfig": {
                "SampledRequestsEnabled": true,
                "CloudWatchMetricsEnabled": true,
                "MetricName": "SQLInjectionMetric"
            }
        }
    ]' \
    --visibility-config '{
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "ProtectWebAppMetric"
    }' \
    --region us-east-1

Cloud Firewall / Firewall as a Service (FWaaS)

Los cloud firewalls son controles de seguridad de red ofrecidos nativamente por los proveedores de nube. Se implementan como parte de la infraestructura virtualizada y se gestionan a través de consolas web o APIs.

AWS ofrece tres niveles de filtrado de red:

Componente Capa OSI Alcance Dirección
Security Groups Capa 4 (Transporte) Por instancia ENI Stateful, reglas de entrada y salida
Network ACLs Capa 3-4 (Red/Transporte) Por subred Stateless, reglas de entrada y salida
AWS Network Firewall Capa 3-7 Por VPC Stateful/Stateless, inspectión TLS
# Crear Security Group con AWS CLI
aws ec2 create-security-group \
    --group-name "web-server-sg" \
    --description "Security group for web servers" \
    --vpc-id vpc-0123456789abcdef0

# Regla de entrada: permitir HTTP
aws ec2 authorize-security-group-ingress \
    --group-id sg-0123456789abcdef0 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/0

# Regla de entrada: permitir HTTPS
aws ec2 authorize-security-group-ingress \
    --group-id sg-0123456789abcdef0 \
    --protocol tcp \
    --port 443 \
    --cidr 0.0.0.0/0

# Regla de entrada: permitir SSH solo desde IP específica
aws ec2 authorize-security-group-ingress \
    --group-id sg-0123456789abcdef0 \
    --protocol tcp \
    --port 22 \
    --cidr 203.0.113.50/32

Azure utiliza Network Security Groups (NSGs) que funcionan de manera similar a los Security Groups de AWS, con la diferencia de que soportan reglas de salida y se pueden asociar a subredes o interfaces de red.

Google Cloud Platform ofrece Cloud Firewall con reglas de tipo clásico (basadas en rangos de IP y puertos) y reglas de Firewall Policies jerárquicas que se aplican a la organización, carpetas o proyectos.

Host-based Firewall (HFW)

Un firewall basado en host se ejecuta directamente en el sistema operativo de cada dispositivo y protege exclusivamente a ese host. Es la última línea de defensa cuando el tráfico ya ha cruzado los firewalls de red perimetral.

En Windows: Windows Defender Firewall (ahora Microsoft Defender Firewall) permite configurar reglas por aplicación, puerto, dirección IP y perfil de red (Dominio, Privado, Público).

# Configurar Windows Defender Firewall con netsh
# Bloquear todo el tráfico entrante y permitir solo lo específico
netsh advfirewall set allprofiles state on
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound

# Permitir SSH entrante
netsh advfirewall firewall add rule name="Allow SSH In" dir=in action=allow protocol=TCP localport=22

# Permitir RDP solo desde una IP específica
netsh advfirewall firewall add rule name="Allow RDP from Admin" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.1.100

# Bloquear una aplicación específica
netsh advfirewall firewall add rule name="Block App" dir=in action=block program="C:\path\to\app.exe"

# Ver todas las reglas activas
netsh advfirewall firewall show rule name=all dir=in

En Linux: ufw (Ubuntu/Debian) o firewalld (Red Hat/CentOS) gestionan las reglas de iptables/nftables del kernel.

# UFW en Ubuntu
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow from 192.168.1.0/24 to any port 3306   # MySQL solo desde LAN
sudo ufw enable
sudo ufw status verbose

UTM (Unified Threat Management)

Los dispositivos UTM son appliances todo-en-uno diseñados para pequeñas y medianas empresas (PYMES). Integran en un solo aparato:

  • Firewall stateful
  • antivirus y anti-malware
  • IDS/IPS
  • Filtrado de URLs y contenido
  • VPN (IPSec y SSL)
  • Control de aplicaciones
  • Antispam para correo

Fabricantes como Untangle, Sophos UTM, SonicWall y WatchGuard ofrecen soluciones UTM con licencias por función, lo que permite escalar la protección según las necesidades del negocio.


Firewalls Populares y Comparativas

pfSense

pfSense es una distribución open-source basada en FreeBSD que se instala en hardware dedicado o en máquinas virtuales para crear un firewall/router completo. Es ampliamente utilizada en entornos empresariales, proveedores de servicios (ISPs) y laboratorios de ciberseguridad.

Características principales:

  • Firewall stateful basado en pf (el firewall nativo de FreeBSD).
  • Soporte para VPN IPSec y WireGuard.
  • High Availability (CARP / pfsync).
  • Captive Portal para WiFi público.
  • Paquetes adicionales: Snort (IDS/IPS), Squid (proxy cache), Suricata, pfBlockerNG (bloqueo por IPs).
  • Interfaz web completa para gestión.

Caso de uso: Ideal para redes medianas que necesitan funcionalidades empresariales sin costos de licenciamiento de fabricantes comerciales.

OPNsense

OPNsense es un fork de pfSense lanzado en 2015, con una interfaz web moderna, arquitectura de plugins más modular y ciclo de release más rápido. Utiliza el mismo motor pf de FreeBSD pero incorpora mejoras como:

  • Interfaz de administración basada en Deciso.
  • Soporte nativo para WireGuard.
  • Integración con Elasticsearch/Kibana para análisis de logs.
  • Plugin de ZFS para almacenamiento.

iptables / nftables

iptables es el sistema de firewall del kernel Linux a través del framework Netfilter. Ha sido la columna vertebral de la seguridad de red en Linux durante más de dos décadas. nftables es su sucesor oficial, disponible desde Linux 3.13 (2014) y convertido en el estándar en distribuciones modernas.

Característica iptables nftables
Sintaxis cadenas y reglas individuales tablas y sets atomizados
Rendimiento Lineal Sets atómicos y reglas empaquetadas
Soporte IPv6 ip6tables (binario separado) nativo en nft
Tablas filter, nat, mangle Cualquier nombre
Compatibilidad Universal Requiere migración

UFW (Uncomplicated Firewall)

UFW es una capa de simplificación sobre iptables/nftables para Ubuntu. Reduce la complejidad de las reglas a comandos intuitivos.

# Comandos esenciales de UFW
sudo ufw status              # Estado actual
sudo ufw status numbered     # Reglas numeradas
sudo ufw allow 22/tcp        # Permitir SSH
sudo ufw deny 23/tcp         # Bloquear Telnet
sudo ufw delete allow 22/tcp # Eliminar regla
sudo ufw logging on          # Activar logging
sudo ufw logging medium      # Nivel de logging

firewalld

firewalld es el gestor de firewall predeterminado en RHEL 7+, CentOS 7+, Fedora y sus derivados. Utiliza el concepto de zonas (zones) para clasificar interfaces de red según su nivel de confianza.

# Zonas disponibles
firewall-cmd --get-zones
# block dmz drop external home internal public trusted work

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

# Abrir un servicio
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent

# Abrir un puerto específico
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# Recargar para aplicar cambios
firewall-cmd --reload

# Verificar reglas activas
firewall-cmd --list-all

Cloudflare

Cloudflare ofrece protección perimetral basada en la nube que actúa como WAF, CDN y mitigador de DDoS. Su red global de más de 300 data centers inspecciona el tráfico antes de que llegue al servidor de origen.

  • WAF Managed Rules: Reglas preconfiguradas por Cloudflare para OWASP Top 10, CVEs y amenazas activas.
  • Custom Rules: Reglas basadas en URI, headers, IP, Country, JA3 fingerprint, etc.
  • Rate Limiting: Protección contra abuso y scraping.
  • Bot Management: Detección de bots maliciosos con Machine Learning.
  • DDoS Protection: Mitigación de ataques volumétricos, de protocolo y de capa de aplicación.

Soluciones comerciales

Palo Alto Networks PA-Series: Considerados referencia del mercado NGFW. App-ID identifica más de 3.000 aplicaciones. Threat Prevention IPS, WildFire sandboxing en la nube, URL Filtering y GlobalProtect VPN. Modelos desde PA-410 (SOHO) hasta PA-7500 (data center de alta densidad).

Fortinet FortiGate: Utiliza ASICs de seguridad dedicados (FortiASIC) para inspección de alto rendimiento. Integración con FortiGuard Labs threat intelligence, FortiSwitch (NAC) y FortiAP (WiFi). FortiOS 7.x ofrece Zero Trust Network Access (ZTNA) integrado.

Cisco Firepower: Evolución de la línea ASA. Integra Snort IPS, Advanced Malware Protection (AMP), integración con Cisco Umbrella (DNS security) y ThousandEyes (observabilidad de red).


Cómo Configurar un Firewall — Ejemplos Prácticos

Configuración completa con iptables

Este ejemplo muestra un conjunto completo de reglas para un servidor Linux que ofrece servicios web:

#!/bin/bash
# ============================================
# Script de configuración de iptables
# Servidor Web - Política por defecto: DROP
# ============================================

# Limpiar reglas existentes
iptables -F
iptables -X
iptables -Z

# Establecer políticas por defecto
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# ---- LOOPBACK ----
# Permitir todo tráfico en interfaz de loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# ---- CONEXIONES ESTABLECIDAS ----
# Permitir tráfico de conexiones ya establecidas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# ---- ICMP ----
# Permitir ping (rate limiting para prevenir flood)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT

# ---- SSH (solo desde IP administrador) ----
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.50/32 -m conntrack --ctstate NEW -j ACCEPT

# ---- HTTP y HTTPS ----
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

# ---- DNS (si el servidor actúa como DNS resolver) ----
iptables -A INPUT -p udp --dport 53 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -s 192.168.1.0/24 -j ACCEPT

# ---- LOGGING ----
# Loggear paquetes bloqueados (última regla antes del DROP final)
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "[IPTABLES-DROP] " --log-level 4

# ---- REGLAS DE FORWARD (si el servidor actúa como router) ----
# NAT para clientes internos
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -o eth0 -m conntrack --ctstate NEW -j ACCEPT

# Guardar reglas
iptables-save > /etc/iptables/rules.v4
echo "Reglas iptables aplicadas correctamente."

Configuración equivalente con UFW

El mismo conjunto de reglas se expresa mucho más simple con UFW:

#!/bin/bash
# ============================================
# Configuración equivalente con UFW
# ============================================

# Resetear UFW
sudo ufw --force reset

# Políticas por defecto
sudo ufw default deny incoming
sudo ufw default deny forward
sudo ufw default allow outgoing

# Permitir SSH solo desde IP administrador
sudo ufw allow from 203.0.113.50 to any port 22 proto tcp comment "SSH Admin Only"

# Permitir HTTP y HTTPS
sudo ufw allow 80/tcp comment "HTTP"
sudo ufw allow 443/tcp comment "HTTPS"

# Permitir DNS desde LAN
sudo ufw allow from 192.168.1.0/24 to any port 53 comment "DNS LAN"

# Activar y verificar
sudo ufw enable
sudo ufw status verbose
sudo ufw status numbered

Configuración básica con pfSense

La configuración de pfSense se realiza a través de su interfaz web. Los pasos fundamentales son:

  1. Configurar interfaces WAN y LAN:

    • WAN: Asignar la interfaz conectada a Internet (obtiene IP por DHCP o IP estática del ISP).
    • LAN: Asignar la interfaz de red interna (típicamente 192.168.1.1/24).
  2. Configurar NAT para salida a Internet:

    • Ir a Firewall → NAT → Outbound.
    • Seleccionar Hybrid Outbound NAT.
    • Agregar regla: Source LAN net → Translation Address WAN address.
  3. Crear reglas de firewall en LAN:

    • Ir a Firewall → Rules → LAN.
    • Regla 1: Action: Pass | Protocol: TCP | Source: LAN net | Destination: any | Port: 80,443 → Allow Web.
    • Regla 2: Action: Pass | Protocol: TCP | Source: LAN net | Destination: any | Port: 22 → Allow SSH.
    • Regla 3: Action: Pass | Protocol: ICMP | Source: LAN net | Destination: any → Allow Ping.
    • La regla por defecto de LAN en pfSense es PASS, pero es buena práctica cambiarla a DENY y crear reglas explícitas.
  4. Activar logging: En cada regla, marcar la casilla "Log packets that are handled by this rule".

  5. Instalar paquetes adicionales (desde System → Package Manager):

    • pfBlockerNG-devel: Bloqueo de IPs y dominios maliciosos.
    • Snort o Suricata: IDS/IPS integrado.
    • OpenVPN Client Export: Facilita la exportación de configs de VPN.

Configuración de Windows Defender Firewall

# ============================================
# Script de configuración de Windows Firewall
# ============================================

# Activar firewall en todos los perfiles
netsh advfirewall set allprofiles state on

# Política por defecto: bloquear entrante, permitir saliente
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound

# ---- REGLAS DE ENTRADA ----

# Permitir SSH (solo desde IP administrador)
netsh advfirewall firewall add rule `
    name="Allow SSH - Admin Only" `
    dir=in action=allow `
    protocol=TCP localport=22 `
    remoteip=203.0.113.50 `
    profile=any

# Permitir RDP desde subred corporativa
netsh advfirewall firewall add rule `
    name="Allow RDP - Corporate" `
    dir=in action=allow `
    protocol=TCP localport=3389 `
    remoteip=192.168.1.0/24 `
    profile=domain,private

# Permitir WinRM para gestión remota
netsh advfirewall firewall add rule `
    name="Allow WinRM" `
    dir=in action=allow `
    protocol=TCP localport=5985,5986 `
    remoteip=192.168.1.0/24 `
    profile=domain

# Permitir HTTP/HTTPS si es servidor web
netsh advfirewall firewall add rule `
    name="Allow HTTP/HTTPS" `
    dir=in action=allow `
    protocol=TCP localport=80,443 `
    remoteip=any `
    profile=any

# Bloquear SMB desde Internet (prevenir EternalBlue y variants)
netsh advfirewall firewall add rule `
    name="Block SMB Internet" `
    dir=in action=block `
    protocol=TCP localport=445 `
    remoteip=any `
    profile=public

# ---- LOGGING ----
# Activar logging de paquetes bloqueados
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable
netsh advfirewall set allprofiles logging maxfilesize 16384

# ---- VERIFICAR ----
netsh advfirewall show allprofiles

Configuración de AWS Security Groups (CLI)

# Crear VPC y configurar Security Groups para un entorno web

# 1. Crear Security Group para el ALB (Application Load Balancer)
ALB_SG=$(aws ec2 create-security-group \
    --group-name "alb-web-sg" \
    --description "ALB - Allow HTTP/HTTPS from Internet" \
    --vpc-id vpc-0123456789abcdef0 \
    --query 'GroupId' --output text)

aws ec2 authorize-security-group-ingress \
    --group-id $ALB_SG --protocol tcp --port 80 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress \
    --group-id $ALB_SG --protocol tcp --port 443 --cidr 0.0.0.0/0

# 2. Crear Security Group para los servidores web (EC2)
WEB_SG=$(aws ec2 create-security-group \
    --group-name "web-ec2-sg" \
    --description "EC2 - Allow traffic only from ALB" \
    --vpc-id vpc-0123456789abcdef0 \
    --query 'GroupId' --output text)

# Permitir tráfico solo desde el ALB (no del Internet directamente)
aws ec2 authorize-security-group-ingress \
    --group-id $WEB_SG --protocol tcp --port 8080 \
    --source-group $ALB_SG

# Permitir SSH desde bastion host
BASTION_SG=$(aws ec2 create-security-group \
    --group-name "bastion-sg" \
    --description "Bastion - Allow SSH from admin IP" \
    --vpc-id vpc-0123456789abcdef0 \
    --query 'GroupId' --output text)

aws ec2 authorize-security-group-ingress \
    --group-id $BASTION_SG --protocol tcp --port 22 --cidr 203.0.113.50/32

aws ec2 authorize-security-group-ingress \
    --group-id $WEB_SG --protocol tcp --port 22 \
    --source-group $BASTION_SG

# 3. Regla de salida explícita (por defecto permite todo, pero se puede restringir)
aws ec2 create-security-group-egress \
    --group-id $WEB_SG --protocol tcp --port 443 \
    --cidr 0.0.0.0/0 \
    --source-groups "Permitir HTTPS outbound"

echo "Security Groups creados:"
echo "ALB: $ALB_SG"
echo "WEB: $WEB_SG"
echo "BASTION: $BASTION_SG"

Firewall Rules — Mejores Prácticas

La efectividad de un firewall depende directamente de la calidad de sus reglas. Una mala configuración puede ser peor que no tener firewall, ya que da una falsa sensación de seguridad.

1. Política por defecto: denegar todo (Whitelist Approach)

La regla de oro es establecer la política por defecto en DENEGAR (default deny) y crear reglas explícitas para permitir solo el tráfico necesario. Esto se conoce como enfoque de lista blanca (whitelist):

# En iptables
iptables -P INPUT DROP
iptables -P FORWARD DROP

# En UFW
sudo ufw default deny incoming

2. Principio de mínimo privilegio

Cada regla debe permitir el acceso mínimo necesario. En lugar de permitir SSH desde cualquier IP, restríngelo a las IPs administradoras:

# MAL: Permite SSH desde cualquier lugar
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# BIEN: Solo permite SSH desde IPs específicas
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.50/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 198.51.100.25/32 -j ACCEPT

3. El orden de las reglas importa

Los firewalls evalúan las reglas de arriba hacia abajo. La primera regla que coincide (first match wins) determina la acción. Las reglas más específicas deben ir antes que las generales:

Regla 1: Permitir SSH desde 203.0.113.50  → MATCH → ALLOW
Regla 2: Permitir HTTP desde cualquier lugar
Regla 3: Bloquear todo el resto             → DENY

Si las reglas estuvieran en orden inverso, el SSH quedaría bloqueado porque la regla 3 lo deniega antes de llegar a la regla 1.

4. Logging y monitoreo

Sin logging, un firewall es una caja negra. Active el logging en las reglas de bloqueo y en las reglas críticas de permitido:

# Loggear conexiones SSH permitidas
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.50/32 \
    -j LOG --log-prefix "[SSH-ALLOW] " --log-level 4

# Loggear intentos de acceso bloqueados
iptables -A INPUT -m limit --limit 10/min -j LOG \
    --log-prefix "[FIREWALL-DROP] " --log-level 4

Integre los logs con un SIEM (Splunk, ELK Stack, Wazuh) para correlacionar eventos y detectar patrones de ataque.

5. Auditoría periódica de reglas

Las reglas de firewall tienden a acumularse con el tiempo (rule sprawl). Realice auditorías trimestrales:

  • Elimine reglas obsoletas o redundantes.
  • Verifique que cada regla tenga un propietario y una justificación documentada.
  • Compruebe que no existan reglas que permitan tráfico innecesario.
  • Use herramientas como iptables-save o las APIs de los firewalls comerciales para exportar y analizar las reglas.

6. Proceso de gestión de cambios

Cada modificación de reglas debe seguir un proceso formal:

  1. Solicitud: El solicitante documenta qué tráfico necesita, desde dónde, hacia dónde y por qué.
  2. Revisión: Un segundo administrador revisa la solicitud.
  3. Aprobación: El responsable de seguridad aprueba el cambio.
  4. Implementación: Se aplica la regla con un ticket de seguimiento.
  5. Verificación: Se prueba que la regla funciona como se esperaba.
  6. Documentación: Se actualiza el inventario de reglas.

Firewall en la Arquitectura de Seguridad

Defensa en profundidad

El firewall no es una solución aislada; es una pieza dentro de la estrategia de defensa en profundidad (Defense in Depth). Ningún firewall, por avanzado que sea, debe ser la única barrera de seguridad.

Capa Controles
1 Firewall Perimetral (NGFW)
2 DMZ con Servidores Externos
3 Firewall Interno (Segmentación)
4 IDS/IPS en red
5 Endpoint Protection (EDR/XDR)
6 Segmentación de Red (VLANs / Microsegmentación)
7 Autenticación y Acceso (MFA / Zero Trust)
8 Cifrado de Datos (en tránsito y en reposo)
9 Monitorización y SIEM
10 Respuesta a Incidentes

Zona Desmilitarizada (DMZ)

La DMZ es una subred perimetral que alberga los servicios accesibles desde Internet (servidores web, mail, DNS externo) mientras mantiene aislada la red interna.

Zona Componentes
Internet Tráfico externo
Firewall Perimetral Filtrado perimetral
DMZ Servidor Web (Nginx/Apache), Mail Gateway (Postfix/Exim), DNS Externo (BIND/Unbound), Proxy Reverso (HAProxy)
Firewall Interno Segmentación interna
Red Corporativa Recursos internos

Las reglas típicas de una DMZ son:

  • Internet → DMZ: Permitir puertos 80, 443, 25, 53 (servicios públicos).
  • DMZ → Internet: Permitir respuestas DNS, actualizaciones de software.
  • DMZ → Red Interna: DENEGAR todo (o permitir solo lo estrictamente necesario, como consultas a Active Directory).
  • Red Interna → DMZ: Permitir administración desde IPs de red de gestión.

Arquitectura multi-tier con firewalls

En entornos empresariales avanzados, se utilizan múltiples firewalls en cascada para crear zonas de seguridad con distintos niveles de confianza:

Nivel Zona Firewall
1 Internet
2 DMZ Pública NGFW Externo — Palo Alto
3 Zona de Aplicaciones NGFW Interno — FortiGate
4 Zona de Datos (BD) Firewall de Base de Datos

Zero Trust y microsegmentación

El modelo de Zero Trust (Confianza Cero) eliminate la suposición de que todo lo que está dentro de la red es confiable. En lugar de confiar en la ubicación de red, cada solicitud de acceso se verifica independientemente.

La microsegmentación divide la red en segmentos ultra-pequeños (incluso a nivel de workload) y aplica políticas de firewall entre ellos. Herramientas como Illumio, VMware NSX o las Security Groups de AWS implementan microsegmentación nativa.

# Ejemplo de microsegmentación con Security Groups de AWS
# Cada tier tiene su propio SG y solo permite tráfico desde el tier anterior

# SG para Base de Datos: solo permite tráfico desde App Tier
aws ec2 authorize-security-group-ingress \
    --group-id sg-db-tier \
    --protocol tcp --port 5432 \
    --source-group sg-app-tier

# SG para App Tier: solo permite tráfico desde Web Tier
aws ec2 authorize-security-group-ingress \
    --group-id sg-app-tier \
    --protocol tcp --port 8080 \
    --source-group sg-web-tier

# SG para Web Tier: permite tráfico desde Internet
aws ec2 authorize-security-group-ingress \
    --group-id sg-web-tier \
    --protocol tcp --port 443 \
    --cidr 0.0.0.0/0

Limitaciones de los firewalls

Es fundamental entender qué no puede hacer un firewall:

  • Ingeniería social: Un firewall no protege contra un usuario que hace clic en un enlace malicioso en un correo de phishing.
  • Malware cifrado: Si el tráfico está cifrado con TLS 1.3 y el firewall no realiza inspección TLS (o el malware usa canales cifrados como DNS over HTTPS), la inspección DPI pierde efectividad.
  • Amenazas internas: Un empleado malicioso dentro de la red tiene tráfico que el firewall perimetral no ve.
  • Evasión por túneles: Atacantes pueden encapsular tráfico malicioso en protocolos permitidos (DNS tunneling, ICMP tunneling).
  • Ataques de capa 7 sofisticados: Un WAF no es infalible; bypasses de WAF son un campo activo de investigación.

Errores Comunes en Configuración de Firewalls

1. Dejar reglas por defecto de "permitir todo"

Muchos firewalls de fábrica vienen con políticas que permiten todo el tráfico. Si no se cambian estas reglas, el firewall es inútil. Verifique siempre la política por defecto después de la instalación.

2. No actualizar firmware

Los fabricantes lanzan actualizaciones periódicas que corrigen vulnerabilidades críticas. Un firewall desactualizado puede ser explotado para comprometer toda la red. Establezca un ciclo de actualización trimestral como mínimo.

3. Demasiados puertos abiertos

Cada puerto abierto es un vector de ataque potencial. Revise periódicamente qué puertos están abiertos y cierre los que no son estrictamente necesarios:

# Verificar puertos abiertos en Linux
ss -tlnp
netstat -tlnp

# Verificar con nmap desde dentro de la red
nmap -sS -p- 192.168.1.1

4. No habilitar logging

Un firewall sin logs es como una puerta sin cerradura: puede estar bloqueando, pero nunca sabrás qué está bloqueando o dejando pasar. El logging es esencial para la detección de incidentes y el cumplimiento normativo.

5. Ignorar el filtrado de salida (egress filtering)

La mayoría de las configuraciones se enfocan en filtrar tráfico entrante (ingress), pero el tráfico saliente (egress) es igual de importante. Un servidor comprometido que puede comunicarse libremente con el exterior puede exfiltrar datos o conectarse a un servidor de comandos y control (C2).

# Ejemplo: Solo permitir salida a Internet en puertos necesarios
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT    # DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT    # DNS over TCP
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT     # LAN interna
iptables -P OUTPUT DROP

6. No probar las reglas después de implementarlas

Siempre verifique que las reglas funcionan como se esperaba:

# Probar desde un host externo con nmap
nmap -sV -p 22,80,443 198.51.100.10

# Probar conectividad SSH desde IP autorizada
ssh -v admin@198.51.100.10

# Probar que el tráfico bloqueado realmente se bloquea
nc -zv 198.51.100.10 23   # Telnet debería fallar

# Verificar logs del firewall
tail -f /var/log/kern.log | grep IPTABLES
dmesg | grep IPTABLES-DROP | tail -20

Artículos Relacionados

Aviso legal: Este contenido es estrictamente educativo. CyberFlows no apoya actividades ilegales. Úsalo solo en entornos autorizados.

[Espacio publicitario — AdSense]

Newsletter de Ciberseguridad

Resumen semanal con los mejores artículos, CVEs críticos y tendencias del mercado. Sin spam.

🔒 Tu email no se compartirá. Puedes darte de baja en cualquier momento.