Si hallas algún problema en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
Un límite de tasa no es una prevención, sino una invitación a DoS, especialmente en el tipo presentado anteriormente donde los paquetes se descartarán si se supera una cierta tasa de paquetes no autenticados sin información de estado. Dado que todos pueden falsificar paquetes (incluidas las direcciones IP de origen) en este estado de conexión sin mayor esfuerzo, surgirá un nuevo vector de ataque DoS que aprovechará su capacidad de límite de velocidad.
Por lo general, un límite de tasa solo tendrá sentido si tiene
- ya sea un límite de conexión duro o suave predecible en su configuración
- establecer el límite de velocidad para el tráfico general por debajo de este límite para poder establecer conexiones para el tráfico prioritario o administrativo independientemente de la carga
Si bien 1. a menudo es lo suficientemente difícil de determinar como para molestarse, 2. obviamente solo funcionará si puede diferenciar de manera confiable el tráfico “prioritario o administrativo” del resto al configurar la conexión, por ejemplo, si proviene de una interfaz de red diferente.
En otros casos, preferiría reducir la resiliencia de su sistema que aumentarla.
El problema con el límite -m es la limitación de todos los paquetes TCP, independientemente de las direcciones IP de origen. Entonces, si tiene una limitación baja para paquetes de sincronización como
-A INPUT -p tcp --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP
solo un cliente con la línea de comando hping puede desactivar su servidor enviando tantos paquetes tcp con el indicador SYN porque la regla de límite coincidirá y eliminará muchos paquetes independientemente de las direcciones IP de origen. límite no hace diferencia entre buen tráfico y mal tráfico. También eliminará el buen tráfico entrante.
hping podría ser algo como:
hping thetargetedhostip -p 80 -S -c 1000 -i u20000
Es mejor usar hashlimit para limitar las conexiones tcp entrantes por dirección IP. La siguiente regla coincidirá solo si se reciben 30 paquetes por segundo, lo que reduce la cantidad de paquetes autorizados por IP a 15 paquetes por segundo.
-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT
-A INPUT -p tcp --syn -j DROP
De hecho, estoy CONVENCIDO de que muchos servidores que se desconectan hoy no se deben a que se quedaron sin recursos durante un ataque, sino a que el módulo de límite elimina todo el tráfico entrante.
Si posees alguna vacilación y disposición de arreglar nuestro enunciado te recordamos añadir un exégesis y con mucho placer lo ojearemos.