Perder sesiones SSH al aplicar reglas de iptables

Perder sesiones SSH al aplicar reglas de iptables

Tengo un problema que no puedo explicar sólo con SSH e iptables. En pocas palabras: si estoy conectado en un host remoto (que ejecuta Ubuntu 18.04) con SSH y ejecuto un script para aplicar las reglas de iptables, pierdo mi sesión SSH en ejecución. Puedo conectarme nuevamente, pero mi sesión de carrera se perdió.

El script vacía las reglas de iptables con el comando netfilter-persistent flushy luego aplica este conjunto de reglas en iptables-saveel formato:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -s x.x.x.x/XX -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j LOG --log-prefix "INPUT DROP: "
-A FORWARD -j LOG --log-prefix "FORWARD DROP: "
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -d x.x.x.x/XX -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -d x.x.x.x/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d x.x.x.x/32 -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -d x.x.x.x/32 -p tcp -m tcp --dport 3128 -j ACCEPT
-A OUTPUT -j LOG --log-prefix "OUTPUT DROP: "
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT

Una vez que se completa el script, mi sesión se pierde y puedo ver paquetes SSH bloqueados en ambas direcciones en /var/log/kern.log. Esto tendría sentido si se perdiera la información de seguimiento de la conexión, pero aún puedo mantener la conexión conntrack -L(el servidor es una máquina virtual, por lo que puedo verificar incluso cuando se pierde mi conexión SSH).

Lo que es más extraño, si lo hago netfilter-persistent flush && ./myscript, mi conexión se mantiene; pero si ejecuto los dos comandos uno tras otro, pierdo la conexión. Además, si ejecuto los dos comandos en VM TTY, no pierdo la conexión.

¿Alguien puede explicar este comportamiento?

Respuesta1

Su política predeterminada está configurada en "DROP".

Entonces, en el tiempo entre la descarga y la adición de las reglas, no se acepta ningún paquete y usted pierde la conexión...

Si su script no agrega las reglas, está jodido.

Debe configurar la política para aceptar y agregar una regla al final (de cada cadena) para descartar todo lo que no coincida...

información relacionada