No puedo acceder a la instancia después de configurar las reglas de iptables

No puedo acceder a la instancia después de configurar las reglas de iptables

Estoy intentando configurar algunas reglas para bloquear todos los puertos excepto el 21 y el 22 en TCP (SSH y FTP). Pero cuando intento ejecutar este script, se me bloquea el acceso a mi instancia y no puedo acceder a ella. Este es el guión:

# Flush the FW Rules 
iptables -F
iptables -X

# Block all traffic
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

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

# Allow FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

# Allow ICMP (ping)
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

En el script configura solicitudes entrantes y salientes para SSH y FTP, pero ¿por qué no puedo acceder a él?

Respuesta1

  1. Para las reglas de la OUTPUTcadena, debe especificar la coincidencia del puerto de origen ( --sport), no el puerto de destino ( --dport).
  2. De todos modos DROPla política en la OUTPUTcadena no es una práctica común.
  3. Lea el tutorial de iptables y los conjuntos de reglas de ejemplo.
  4. Para evitar la pérdida de la conexión, mejor uso iptables-savey iptables-applyherramientas.

Respuesta2

Deberías configurar el seguimiento del estado y perder las -A OUTPUT ... -j ACCEPTlíneas.

IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Es bueno ver que está utilizando un filtrado de salida explícito, pero implementarlo requiere más trabajo.

información relacionada