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 predecible de conexión fuerte o blanda en su configuración
- establezca el límite de velocidad para el tráfico general por debajo de este límite para poder configurar conexiones para 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, p. si viene a través de una interfaz de red diferente.
En otros casos, preferiría reducir la resistencia de su sistema en lugar de 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.