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.