Wiki source for IPTablesRulesToBlockDDOSTrafficES


Show raw source

[[IPTablesRulesToBlockDDOSTraffic English]]

(Original Brianko, traducción alex24)

Traducido de la lista de correo:

%%
Aquí hay algunas reglas iptables que Jeff, Brianko y alex24 han testeado para
determinar su efectividad en reducir trafico DNS abusivo.
Los tres hemos visto ritmos de 20-50 paquetes entrantes por segundo desde varias IPs simultaneamente y de forma continuada.
La carga en mi propio T2 en ciertos momentos fue de 4-5.
Despues de implementar las reglas siguientes, la carga de mi T2 cayó
hasta un 1.0 estable, con una disminución dramática de trafico DNS "malo".

Aqui están las reglas que hemos estado probando:

iptables -N filtrodns
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 53 -j filtrodns
iptables -A filtrodns -p udp -m hashlimit --hashlimit-srcmask 24 --hashlimit-mode srcip --hashlimit-upto 30/m --hashlimit-burst 10 --hashlimit-name filtroDNS --dport 53 -j ACCEPT
iptables -A filtrodns -p udp -m udp --dport 53 -j DROP

Explicación básica (tengan en cuenta que no soy experto en iptables, de forma que
mi entendimiento puede no ser preciso):

La primera linea crea una cadena de nombre filtrodns donde vamos a meter el resto de reglas.

La segunda linea simplemente abre el puerto 53 al trafico UDP entrante y lo desvia a la cadena de reglas filtrodns.

La tercera linea tiene:
'-m hashlimit' para especificar filtrado por resumen de contenido (hash)
'--hashlimit-scrmask 24' trabaja en conjunto con '--hashlimit-mode srcip' para agrupar las IPs entrantes
en "bloques de red" con una mascara de /24 bits. Esto permite procesar juntas multiples IPs que vienen del mismo bloque de red,
pero de diferentes hosts.
'--hashlimit-upto 30/m' junto a '-j ACCEPT' permite el paso del trafico que tiene un ritmo promedio menor que 30 paquetes por minuto.
'--hashlimit-burst 10' permite 10 paquetes "gratis" antes de empezar el calculo del promedio.
'--hashlimit-name filtrodns' genera el archivo /proc/net/ipt_hashlimits/filtrodns con la lista de los bloques de IP bloqueados.
Se puede usar cualquier nombre para esta opción.

La cuarta línea es necesaria para bloquear (DROP) todos los paquetes entrantes que no satisfacen la regla precedente.

Para borrar las reglas y dejar el iptables limpio usen:

iptables -D INPUT -p udp -m state --state NEW -m udp --dport 53 -j filtrodns
(Borra la referencia a filtroDNS de la cadena estandar "INPUT")

iptables -F filtrodns
(Elimina todas las reglas de la cadena filtrodns)

iptables -X filtrodns
(Borra la cadena filtrodns)

Para borrar no solo estas, sino todas las reglas del iptables y dejarlo limpio y abierto de par en par:

iptables -F


Para ver el estado de nuestras reglas iptables vigentes usen:

iptables -L

%%


Los usuarios de Shorewall pueden meter las siguientes lineas en su archivo "rules" para limitar el trafico de igual manera:
%%
DNS(ACCEPT) net $FW ;rate=s:DNSTHROTTLE:30/min:10
DNS(DROP) net $FW
%%

Estas dos lineas se deben incluir antes de cualquier otra regla DNS que acepte paquetes.
La segunda linea solo bloquea (dejar caer = drop = ignorar) aquellos paquetes que no entran en los limites.
Igual que en el modelo iptables, esta regla admite 30 paquetes por minuto de una IP, con un "arranque libre" de 10 paquetes.

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki