Revision [3139]
This is an old revision of IPTablesRulesToBlockDDOSTrafficES made by alex24 on 2013-11-26 06:38:46.
(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 minuto desde varias IPs. 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 -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 simplemente abre el puerto 53 al trafico UDP y lo desvia a las reglas siguientes. La segunda linea tiene: '-m hashlimit' para especificar filtrado por 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. Esto permite procesar multiples IPs que vienen del mismo bloque de red, pero 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 tercera línea es necesaria para bloquear (DROP) todos los paquetes entrantes que no satisfacen la regla precedente.
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.