Generador iptables

Generador de Reglas de Cortafuegos Linux iptables y Scripts Shell

Construya reglas iptables para cadenas INPUT/FORWARD/OUTPUT, inspección con estado, protección anti SYN flood, reenvío NAT y exportación a shell script.

Plantillas de Cortafuegos
Añadir Regla de Cortafuegos
Reglas configuradas (5)Marcar/desmarcar casilla para activar/desactivar
#1INPUTTCP :22
ACCEPT
#2INPUTTCP :80
ACCEPT
#3INPUTTCP :443
ACCEPT
#4INPUTTCP :9100 from 10.0.0.0/16
ACCEPT
#5INPUTALL
LOG
#!/usr/bin/env bash
# ==============================================================================
# Linux iptables Firewall Configuration Script
# Generated by ToolsAA iptables Rule Generator (https://toolsaa.com)
# 100% Client-Side Netfilter Firewall Builder
# ==============================================================================
set -euo pipefail

# Verify root privileges
if [[ $EUID -ne 0 ]]; then
   echo "Error: This script must be executed as root (e.g. sudo bash $0)" >&2
   exit 1
fi

# Find iptables binaries
IPTABLES="$(command -v iptables || echo '/sbin/iptables')"
SYSCTL="$(command -v sysctl || echo '/sbin/sysctl')"

echo "==> Applying Linux iptables firewall rules..."

# ------------------------------------------------------------------------------
# 1. Kernel Parameter Hardening & Anti-Spoofing (sysctl)
# ------------------------------------------------------------------------------
$SYSCTL -w net.ipv4.tcp_syncookies=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.default.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_source_route=0 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_redirects=0 >/dev/null
$SYSCTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 >/dev/null
$SYSCTL -w net.ipv4.icmp_ignore_bogus_error_responses=1 >/dev/null

# ------------------------------------------------------------------------------
# 2. Flush Existing Rules & Reset Counters
# ------------------------------------------------------------------------------
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F || true
$IPTABLES -t nat -X || true
$IPTABLES -t mangle -F || true
$IPTABLES -t mangle -X || true
$IPTABLES -t raw -F || true
$IPTABLES -t raw -X || true

# ------------------------------------------------------------------------------
# 3. Set Default Chain Policies
# ------------------------------------------------------------------------------
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# ------------------------------------------------------------------------------
# 4. Core Defensive Rules: Loopback, Conntrack & Invalid Drops
# ------------------------------------------------------------------------------
# Allow unlimited loopback traffic (localhost)
$IPTABLES -A INPUT -i lo -j ACCEPT -m comment --comment "Allow all loopback inbound"
$IPTABLES -A OUTPUT -o lo -j ACCEPT -m comment --comment "Allow all loopback outbound"
# Drop packets in INVALID connection state immediately
$IPTABLES -A INPUT -m conntrack --ctstate INVALID -j DROP -m comment --comment "Drop invalid packets"
# Stateful connection tracking: Allow established and related traffic
$IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"
$IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"

# ------------------------------------------------------------------------------
# 5. Anti-DDoS: TCP SYN Flood Protection Chain
# ------------------------------------------------------------------------------
$IPTABLES -N SYN_FLOOD || true
$IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
$IPTABLES -A SYN_FLOOD -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A SYN_FLOOD -j DROP -m comment --comment "Drop excess SYN flood packets"

# ------------------------------------------------------------------------------
# 6. Port Scan & Malicious Flag Mitigation
# ------------------------------------------------------------------------------
# Drop NULL packets (no flags set)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP -m comment --comment "Drop NULL scan packets"
# Drop XMAS packets (FIN, PSH, URG flags)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP -m comment --comment "Drop XMAS scan packets"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP -m comment --comment "Drop XMAS variants"
# Drop SYN-FIN scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP -m comment --comment "Drop SYN-FIN packets"
# Drop SYN-RST scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP -m comment --comment "Drop SYN-RST packets"

# ------------------------------------------------------------------------------
# 7. ICMP / Ping Echo-Request Control
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT -m comment --comment "Rate-limited ICMP ping"
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP -m comment --comment "Drop excess ICMP pings"

# ------------------------------------------------------------------------------
# 8. SSH Anti-Bruteforce Rate Limiter (iptables recent module)
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name SSH_ATTEMPTS
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP -m comment --comment "Drop SSH bruteforce flood"

# ------------------------------------------------------------------------------
# 9. User-Configured Filter Chain Rules
# ------------------------------------------------------------------------------
# Rule 1: SSH administration (protected by recent anti-bruteforce)
$IPTABLES -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT -m comment --comment "SSH administration (protected by recent anti-bruteforce)"
# Rule 2: Standard HTTP Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT -m comment --comment "Standard HTTP Web traffic"
# Rule 3: Encrypted HTTPS / TLS Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT -m comment --comment "Encrypted HTTPS / TLS Web traffic"
# Rule 4: Prometheus node exporter restricted to private VPC
$IPTABLES -A INPUT -i eth0 -p tcp -s 10.0.0.0/16 --dport 9100 -j ACCEPT -m comment --comment "Prometheus node exporter restricted to private VPC"
# Rule 5: Log dropped unsolicited incoming packets
$IPTABLES -A INPUT -m limit --limit 5/min -j LOG --log-prefix "[IPT-DROP-WEB]: " --log-level 4 -m comment --comment "Log dropped unsolicited incoming packets"

echo "==> Linux iptables firewall rules successfully applied!"
echo "==> Active rules summary:"
$IPTABLES -L -v -n --line-numbers | head -n 35
Reglas de filtrado activas
5 Reglas · 0 Puertos NAT
Directivas NAT
SYN Flood · Anti-SSH
Directivas de seguridad
Bash .sh · rules.v4 · systemd

Generador 100% Privado en el Cliente

Sin transferencias al servidor ni telemetría. Las direcciones IP, subredes, puertos internos y topología de red se procesan estrictamente en la memoria del navegador.

Inspección de Estado y Mitigación DDoS

Inspección de paquetes con estado (conntrack), mitigación de ataques SYN flood, descarte de paquetes inválidos, interfaz loopback y protección anti-spoofing (rp_filter).

Script de Shell para Producción y Exportación Systemd

Exporte scripts de Bash listos para producción con temporizador de rollback preventivo, compatibilidad con iptables-save y comandos de persistencia para systemd.

Referencia técnica y guía de arquitectura

Generador de Reglas de Firewall iptables de Linux y Scripts Shell - Guía de Desarrollo — Guía de referencia

Construya reglas iptables para cadenas INPUT/FORWARD/OUTPUT, inspección con estado, protección anti SYN flood, reenvío NAT y exportación a shell script.

Parámetros clave y controles

Cadena y Política PredeterminadaCadena (Enum)

Cadena de netfilter de destino (INPUT, FORWARD, OUTPUT) junto con la política de seguridad base (-P DROP, ACCEPT, REJECT).

Por defecto: INPUT DROP
Protocolo y Módulos de CoincidenciaCadena

Protocolo de transporte (-p tcp, udp, icmp, all) combinado con extensiones del kernel (-m conntrack, -m multiport, -m limit).

Por defecto: tcp -m conntrack
Filtros de Origen / DestinoIPv4/CIDR / Lista de Puertos

Rangos IP de origen (-s) o destino (-d) junto con puertos de servicio (--sport, --dport, --dports).

Por defecto: -s 0.0.0.0/0 --dport 22,80,443
Estado de Conexión (ctstate)Lista de cadenas

Estados de seguimiento con estado (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED) para filtrado bidireccional.

Por defecto: ESTABLISHED,RELATED
Acción de Destino (Target)Cadena (Enum)

Acción ejecutada al coincidir la regla (-j ACCEPT, DROP, REJECT, LOG, MASQUERADE, DNAT, SNAT, REDIRECT).

Por defecto: ACCEPT

Consejos profesionales y mejores prácticas

Optimización con Stateful Conntrack

Coloque siempre 'iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT' en la primera línea de su conjunto de reglas. Esto omite la evaluación de reglas para conexiones ya establecidas, reduciendo drásticamente la carga de CPU.

Protocolo Anti-Bloqueo de SSH

Antes de cambiar la política predeterminada de INPUT a DROP en un servidor remoto, active un temporizador de marcha atrás en otra sesión: 'sleep 300 && iptables -P INPUT ACCEPT && iptables -F'. O use 'iptables-apply' para probar reglas de forma segura.

Mitigación de Ataques SYN Flood

Limite la tasa de intentos de conexión TCP incompletos para frenar ataques volumétricos: 'iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 100 -j ACCEPT' seguido de una regla DROP.

Permitir Interfaz Loopback e ICMP

Nunca descarte el tráfico de la interfaz de loopback ('-i lo -j ACCEPT'), ya que los servicios locales (MySQL, Redis, IPC) dependen de localhost. Permita solicitudes ICMP Echo con límite de tasa ('-p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT') para diagnósticos de red sin riesgo de ping flood.

Errores comunes y solución de problemas

La sesión remota de SSH se desconecta inmediatamente al aplicar las reglas

La política de INPUT se fijó en DROP antes de permitir el puerto 22 o el estado ESTABLISHED. Recupere acceso mediante la consola fuera de banda (IPMI/VNC), ejecute 'iptables -P INPUT ACCEPT' y asegúrese de que la regla que permite el puerto 22 se aplique antes de cambiar la política predeterminada.

Error del kernel: 'nf_conntrack: table full, dropping packet'

La tabla de seguimiento de conexiones se ha saturado por alto tráfico. Incremente el límite con sysctl ('sysctl -w net.netfilter.nf_conntrack_max=262144'), acorte los tiempos de espera ('net.netfilter.nf_conntrack_tcp_timeout_established=600') o desactive el seguimiento de puertos sin estado con '-t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK'.

Docker sobrescribe o ignora las reglas personalizadas de FORWARD y NAT

Docker gestiona iptables directamente e inyecta sus propias cadenas (DOCKER, DOCKER-USER). En lugar de editar la cadena FORWARD directamente, agregue sus reglas personalizadas a la cadena 'DOCKER-USER' para que persistan tras reiniciar el demonio de Docker.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia fundamental entre iptables, nftables y UFW/firewalld?▼

iptables interactúa directamente con los ganchos Netfilter del kernel de Linux mediante tablas estáticas (filter, nat, mangle). nftables es su sustituto moderno con máquina virtual de bytecode y transacciones atómicas. UFW y firewalld son demonios de abstracción de alto nivel que generan reglas de iptables o nftables por debajo.

¿Por qué se prefiere DROP sobre REJECT en interfaces expuestas a internet?▼

DROP descarta silenciosamente los paquetes sin responder, obligando a los escáneres a esperar el tiempo de espera (timeout) y ocultando la existencia del servidor. REJECT responde con paquetes ICMP port-unreachable o TCP RST, confirmando al atacante que la IP está activa y consumiendo ancho de banda de salida.

¿En qué se diferencian las cadenas NAT PREROUTING y POSTROUTING en el reenvío de puertos?▼

PREROUTING se evalúa antes de la decisión de enrutamiento para modificar la dirección de destino (-j DNAT --to-destination IP:puerto), reenviando tráfico externo hacia un servidor interno. POSTROUTING se evalúa tras el enrutamiento para modificar la IP de origen (-j MASQUERADE o -j SNAT), permitiendo que subredes privadas salgan a internet.

¿Cómo se hacen persistentes las reglas de iptables tras reiniciar el servidor?▼

Las reglas de iptables residen únicamente en la memoria volátil del kernel. En Debian/Ubuntu, instale 'iptables-persistent' y ejecute 'netfilter-persistent save'. En RHEL/AlmaLinux, instale 'iptables-services', ejecute 'iptables-save > /etc/sysconfig/iptables' y habilite el servicio correspondiente en systemd.

¿Cómo consultar en tiempo real el conteo de paquetes y bytes de cada regla?▼

Ejecute 'iptables -nvL --line-numbers' para ver el número de línea, paquetes acumulados y bytes por regla. Para monitoreo continuo en vivo durante pruebas de carga, use 'watch -n 1 iptables -nvL INPUT'.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía para Desarrolladores del Generador y Analizador de Registros DNS SPFSeguridad

Cree, valide y optimice registros SPF TXT conformes con RFC 7208 con rangos CIDR IPv4/IPv6, MX, A, mecanismos include y políticas de fallo.

Abrir herramienta→
Generador de Registros de Política DMARC DNS y Validador de SintaxisSeguridad

Genere y valide registros DNS TXT DMARC conformes a RFC 7489 con políticas de aplicación (none/quarantine/reject), reportes agregados rua/ruf y etiquetas de alineación.

Abrir herramienta→
Guía de Desarrollo del Generador de Registros DNS CAA (Certification Authority Authorization)Seguridad

Genere registros DNS CAA conformes a la RFC 8659 para restringir la emisión de certificados SSL/TLS únicamente a autoridades de confianza (Let's Encrypt, DigiCert, Sectigo).

Abrir herramienta→
Guía de Desarrollo: Generador de Registros DNS DKIM TXT y SelectoresSeguridad

Cree registros DNS DKIM TXT compatibles con RFC 6376 con selector, formato de clave pública (v=DKIM1; k=rsa; p=...), división de 255 caracteres y verificación.

Abrir herramienta→
Guía para Desarrolladores del Generador de Políticas MTA-STS y Registros DNS TLS-RPTSeguridad

Referencia técnica integral y mejores prácticas para generar archivos de directivas RFC 8461 MTA-STS, registros DNS TXT _mta-sts y registros de informes RFC 8460 TLS-RPT.

Abrir herramienta→
Decodificador e Inspector de Seguridad de Tokens JWTSeguridad

Utilidad para desarrolladores que decodifica tokens JWT del lado del cliente, inspecciona claims RFC 7519 y OIDC, audita tiempos de expiración y verifica firmas HMAC localmente.

Abrir herramienta→