fbpx iptables en Linux: Guía Completa de Firewall con Ejemplos | Certificação Linux

iptables en Linux: Configurar Firewall con Reglas Prácticas

📅 21/05/2026 ⏱ 7 min ✍️ Uira Ribeiro
iptables en Linux: Configurar Firewall con Reglas Prácticas
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

El iptables es el firewall estándar del kernel Linux. Presente en prácticamente todas las distribuciones, inspecciona y filtra cada paquete de red que entra, sale o pasa por el sistema. Entender iptables es fundamental para proteger servidores en producción, configurar redes y aprobar certificaciones como LPIC-2 y CompTIA Linux+.

En esta guía aprenderás la sintaxis, las principales reglas y los casos de uso más comunes — con ejemplos listos para usar.

Cómo funciona iptables: tablas y chains

El iptables organiza las reglas en tablas, cada una con un propósito diferente:

TablaUso
filterFiltrado de paquetes (predeterminada — usada en la mayoría de las reglas)
natTraducción de direcciones (NAT, masquerade, port forwarding)
mangleModificación de encabezados de paquetes (QoS, TTL)
rawControl de seguimiento de conexión (conntrack)

Cada tabla tiene chains (cadenas) que determinan cuándo se evalúan las reglas:

ChainCuando se evalúa
INPUTPaquetes destinados al propio servidor
OUTPUTPaquetes generados por el propio servidor
FORWARDPaquetes que pasan por el servidor (enrutamiento)
PREROUTINGAntes del enrutamiento (nat/mangle)
POSTROUTINGDespués del enrutamiento (nat/mangle)

Comandos básicos de iptables

# Listar regras com detalhes (números de linha, contadores)
iptables -L -n -v --line-numbers

# Listar regras de uma tabela específica
iptables -t nat -L -n -v

# Adicionar regra no final da chain (-A = append)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Inserir regra em posição específica (-I = insert)
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

# Deletar regra pelo número da linha
iptables -D INPUT 3

# Deletar regra pela especificação
iptables -D INPUT -p tcp --dport 80 -j ACCEPT

# Limpar todas as regras de uma chain (-F = flush)
iptables -F INPUT

# Limpar todas as regras de todas as chains
iptables -F

# Definir política padrão de uma chain
iptables -P INPUT DROP

Targets (objetivos) más comunes

TargetComportamiento
ACCEPTAcepta el paquete
DROPDescarta silenciosamente (sin respuesta)
REJECTDescarta y envía mensaje de error al remitente
LOGRegistra el paquete en syslog y continúa
RETURNVuelve a la chain que llamó a esta
MASQUERADENAT dinámico (tabla nat)
DNATRedirige a otro IP/puerto (tabla nat)

Ejemplos prácticos

1. Configuración básica de servidor: política DROP + excepciones

El enfoque más seguro: bloquea todo por defecto y permite solo lo necesario.

# Salva as regras atuais antes de começar
iptables-save > /tmp/iptables_backup.rules

# Define política padrão: DROP em INPUT e FORWARD, ACCEPT em OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Permite tráfego loopback (necessário para o sistema funcionar)
iptables -A INPUT -i lo -j ACCEPT

# Permite conexões já estabelecidas e relacionadas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera HTTP e HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

2. Permitir puerto para IP específica únicamente

# Permite SSH apenas do escritório (192.168.1.100)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

# Libera acesso ao banco de dados apenas do servidor de aplicação
iptables -A INPUT -p tcp --dport 3306 -s 10.0.1.50 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

3. Bloquear IP o rango de IPs

# Bloquear IP específico
iptables -A INPUT -s 203.0.113.99 -j DROP

# Bloquear faixa de IPs (CIDR)
iptables -A INPUT -s 203.0.113.0/24 -j DROP

# Bloquear e registrar tentativas antes de dropar
iptables -A INPUT -s 203.0.113.0/24 -j LOG --log-prefix "BLOCKED: "
iptables -A INPUT -s 203.0.113.0/24 -j DROP

4. Proteger contra ataques comunes

# Bloquear pacotes inválidos
iptables -A INPUT -m state --state INVALID -j DROP

# Limitar tentativas de conexão SSH (anti-brute force)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
  -m recent --set --name SSH_BRUTE
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
  -m recent --update --seconds 60 --hitcount 4 --name SSH_BRUTE -j DROP

# Limitar ping (ICMP) para evitar flood
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# Bloquear pacotes SYN suspeitos (SYN flood)
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

5. NAT y compartir internet (Masquerade)

Para que máquinas en la red interna accedan a internet a través del servidor Linux:

# Habilitar IP forwarding no kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
# Para tornar permanente, adicione no /etc/sysctl.conf:
# net.ipv4.ip_forward = 1

# Masquerade: toda saída pela interface eth0 usa o IP do servidor
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Permite o tráfego entre as interfaces
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

6. Port forwarding (redireccionamiento de puerto)

# Redirecionar porta 80 pública para porta 8080 interna
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

# Redirecionar para outro servidor interno
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT

7. Registrar paquetes para debug

# Registrar e depois aceitar
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-ENTRADA: " --log-level 4
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Ver logs em tempo real
tail -f /var/log/syslog | grep "SSH-ENTRADA"
# ou
journalctl -f | grep "SSH-ENTRADA"

Guardar y restaurar reglas

Las reglas de iptables se pierden al reiniciar. Para hacerlas persistentes:

# Salvar regras atuais
iptables-save > /etc/iptables/rules.v4    # Debian/Ubuntu
iptables-save > /etc/sysconfig/iptables   # CentOS/RHEL

# Restaurar manualmente
iptables-restore < /etc/iptables/rules.v4

# No Ubuntu/Debian: instalar o pacote que restaura automaticamente no boot
apt install iptables-persistent
netfilter-persistent save

# No CentOS/RHEL: usar o serviço
systemctl enable iptables
systemctl start iptables

Verificar reglas y diagnóstico

# Listar tudo com contadores (quantos pacotes cada regra processou)
iptables -L -v -n

# Listar com números de linha (útil para deletar por posição)
iptables -L INPUT --line-numbers

# Zerar contadores sem apagar regras
iptables -Z

# Ver regras da tabela NAT
iptables -t nat -L -n -v

iptables vs nftables

El nftables es el sustituto moderno de iptables, disponible desde el kernel 3.13. En distros más recientes (Debian 10+, Ubuntu 20.04+, RHEL 8+) ya es el estándar por debajo, con el comando iptables siendo un wrapper sobre nftables.

# Ver se você está usando iptables-legacy ou nftables
iptables --version
# iptables v1.8.7 (nf_tables) ← já usa nftables por baixo
# iptables v1.8.2 (legacy)    ← iptables clássico

# Equivalente nftables de uma regra iptables:
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
nft add rule inet filter input tcp dport 22 accept

Para fines de certificación LPIC-2, el contenido evaluado aún es iptables clásico. Para instalaciones nuevas, considera aprender nftables.

Referencia rápida

# Ver regras
iptables -L -n -v --line-numbers

# Regra básica de servidor seguro
iptables -P INPUT DROP && iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Anti-brute force SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

# NAT simples
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Salvar (Debian/Ubuntu)
iptables-save > /etc/iptables/rules.v4
Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp