Las reglas de iptable solo funcionan a veces.

Las reglas de iptable solo funcionan a veces.

Bloqueé la IP de un atacante que me enviaba muchos paquetes UDP.

iptables -I ENTRADA 1 -s IP_OF_ATTACKER -j DROP

Esta regla estaba funcionando bien.

iptables -nvL --line-numbers

El tráfico 22G estuvo bloqueado durante 2 o 3 días:

num   pkts bytes target     prot opt in     out     source               destination
1    3203K   22G DROP       all  --  *      *       ATTACKER_IP          0.0.0.0/0

Sin embargo, desde los últimos 2 o 3 días, esta regla ya no funciona. El atacante envía paquetes UDP y iptables no los bloquea.

num   pkts bytes target     prot opt in     out     source               destination
1     707K 3553M DROP       all  --  *      *       ATTACKER_IP         0.0.0.0/0

¿Cuál podría ser la razón?

PD: No sugiera contactar al proveedor de hosting si fuera de alguna ayuda, no estaría aquí :)

Editar

Utilicé Wireshark/tcpdump para analizar/capturar paquetes. Muestra que todos los paquetes son UDP. Utilizo el comando iptables (como se mencionó anteriormente) para ver cuántos datos ha bloqueado la regla iptables. Arriba está la salida de los datos bloqueados de iptables. Cuando iptable estaba bloqueando todos los datos, nuestro servidor funcionaba bien.

**IP Table rules**
# Generated by iptables-save v1.4.21 on Mon Jun 15 23:26:40 2015
*raw
:PREROUTING ACCEPT [8393:667810]
:OUTPUT ACCEPT [7043:795032]
COMMIT
# Completed on Mon Jun 15 23:26:40 2015
# Generated by iptables-save v1.4.21 on Mon Jun 15 23:26:40 2015
*nat
:PREROUTING ACCEPT [2517:112725]
:INPUT ACCEPT [2517:112725]
:OUTPUT ACCEPT [1018:179752]
:POSTROUTING ACCEPT [1018:179752]
COMMIT
# Completed on Mon Jun 15 23:26:40 2015
# Generated by iptables-save v1.4.21 on Mon Jun 15 23:26:40 2015
*mangle
:PREROUTING ACCEPT [8393:667810]
:INPUT ACCEPT [8393:667810]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7043:795032]
:POSTROUTING ACCEPT [7043:795032]
COMMIT
# Completed on Mon Jun 15 23:26:40 2015
# Generated by iptables-save v1.4.21 on Mon Jun 15 23:26:40 2015
*filter
:INPUT ACCEPT [23:1500]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18:2068]
:fail2ban-ssh - [0:0]
-A INPUT -s xx.xxx.xx.xx/32 -j DROP
COMMIT
# Completed on Mon Jun 15 23:26:40 2015

Respuesta1

No entiendo completamente su listado de iptables, ni cómo llegó a serlo. Sin embargo, parece haber tablas nat y mangle y, por lo tanto, es completamente concebible que los paquetes problemáticos no atraviesen la cadena INPUT normal, sino que sean dirigidos a través de iptables a través de otra ruta en la etapa de preenrutamiento (que sólo sería atravesada una vez por conexión, por cierto). Podrías intentar agregar:

sudo iptables -t raw -A PREROUTING -s IP_OF_ATTACKER -j DROP

Lo hice en mi computadora de prueba y parece estar funcionando bien:

$ sudo iptables-save -c
# Generated by iptables-save v1.4.21 on Tue Jun 16 11:12:51 2015
*raw
:PREROUTING ACCEPT [40:2664]
:OUTPUT ACCEPT [33:4520]
[31:2696] -A PREROUTING -s 192.168.111.103/32 -j DROP
COMMIT
# Completed on Tue Jun 16 11:12:51 2015
# Generated by iptables-save v1.4.21 on Tue Jun 16 11:12:51 2015
*nat
:PREROUTING ACCEPT [15:1344]
...

Nota: publiqué esta misma respuesta en tuPublicación en foros de Ubuntu.

información relacionada