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:
- Inspección profunda de paquetes (DPI) integrada.
- Integración con IPS (Intrusion Prevention System).
- Conciencia de aplicaciones: Capacidad de identificar y controlar más de 1.000 aplicaciones independientemente del puerto o protocolo.
- Filtrado de URLs y categorías de contenido.
- Inteligencia de amenazas en la nube: Actualizaciones de firmas y feeds de reputación en tiempo real.
- 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:
-
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).
-
Configurar NAT para salida a Internet:
- Ir a Firewall → NAT → Outbound.
- Seleccionar Hybrid Outbound NAT.
- Agregar regla: Source
LAN net→ Translation AddressWAN address.
-
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.
-
Activar logging: En cada regla, marcar la casilla "Log packets that are handled by this rule".
-
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-saveo 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:
- Solicitud: El solicitante documenta qué tráfico necesita, desde dónde, hacia dónde y por qué.
- Revisión: Un segundo administrador revisa la solicitud.
- Aprobación: El responsable de seguridad aprueba el cambio.
- Implementación: Se aplica la regla con un ticket de seguimiento.
- Verificación: Se prueba que la regla funciona como se esperaba.
- 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
- Seguridad en Redes: Defensa Perimetral — Fundamentos de firewalls, IDS/IPS, segmentación y monitorización.
- Nmap: Guía de Escaneo de Redes — Aprende a identificar puertos abiertos y servicios detrás de firewalls.
- Seguridad en la Nube: AWS, Azure y GCP — Security Groups, NSGs, Cloud Firewall y mejores prácticas de seguridad en la nube.
- Zero Trust: Guía Completa — Modelo de confianza cero, microsegmentación y verificación continua.
- Seguridad en OT/ICS/SCADA Industrial — Firewalls industriales, segmentación Purdue y protección de infraestructura crítica.
- Seguridad en Contenedores Docker y Kubernetes — Network Policies en Kubernetes, segmentación de pods y microsegmentación en contenedores.