El problema con un DDoS es de dos partes:
1) Dado que los bots son tantos, no tienen que tener un acelerador de solicitud tan alto como un solo bot, y por lo tanto no son tan fáciles de reconocer como los bots.
2) Todo lo que ves son direcciones IP (y User-Agent
s dependiendo de cómo filtres el tráfico del bot). Cualquier dirección IP podría ser un bot DDoS y cualquier dirección IP podría ser un visitante legítimo. Algunas direcciones IP tendrán un bot DDoS y un visitante legítimo. ¿Qué haces?
Digamos que su sitio puede manejar 1000 req / sy un visitante nunca hace más de 10 req / s. Un bot a 100 req / s es fácil de bloquear, diez bots a 100 req / s son fáciles de bloquear. Pero 200 bots a 5 req / s son difíciles de bloquear, porque se están comportando correctamente.
200 bots a 100 req / s también son difíciles de bloquear, ya que ni siquiera pueden hacer más de 5 req / s, lo que parece que se comportan correctamente. Esta situación es mucho peor que 200 bots a 5 req / s, ya que un visitante tiene ahora 10 entre 10010 solicitudes que intentan integrarse en la conexión en lugar de los 10 más manejables entre 1010 que llegan al servidor con éxito.
1000 bots a 100 req / s harían improbable que cada visitante real se conecte al sitio en absoluto. Y un ataque de esta magnitud también causará problemas en otros lugares.
Una defensa fuerte para tu sitio es un arma poderosa para un atacante:
Si su sitio bloquea las direcciones IP (o incluso los navegadores específicos en las IP) si se comportan mal, alguien podría decidir abusar de su defensa para provocar un ataque DoS en el lado del cliente.
Ejemplo: Mallory crea una página web que tiene cien "imágenes" con margin-left: -1000em; width: 1px; height: 1px;
y todas esas imágenes son algunas URL "sensibles" en su sitio. Cuando un visitante visita la página de Mallory, enviará 100 solicitudes abusivas a su servidor y, por lo tanto, se bloquearán.
Por lo tanto, obtener una defensa más agresiva contra los ataques (D) DoS también causará otra vulnerabilidad.
Una defensa "inteligente" como CAPTCHAs (para dar a los visitantes la oportunidad de demostrar que también son visitantes y no solo bots maliciosos) también tendrá el efecto secundario de que realmente requieren recursos del servidor.
Cargar imágenes cuando la conexión está obstruida no parece una buena idea. Tampoco se recuerda una gran cantidad de sesiones para los CAPTCHA, CAPTCHA que no serán respondidas, en parte porque las imágenes no pudieron enviarse, en parte porque la mayoría de los visitantes no son humanos.
Y en un sitio dinámico (altamente o sin caché), estarías combatiendo fuego con gasolina.