Il problema con un DDoS è diviso in due parti:
1) Poiché i bot sono così tanti, non devono avere una limitazione delle richieste pari a quella di un singolo bot e quindi non sono così facili da riconoscere come bot.
2) Tutto ciò che vedi sono gli indirizzi IP (e User-Agent
a seconda di come filtri il traffico dei bot). Qualsiasi indirizzo IP potrebbe essere un bot DDoS e qualsiasi indirizzo IP potrebbe essere un visitatore legittimo. Alcuni indirizzi IP avranno sia un bot DDoS che un visitatore legittimo. Cosa fai?
Supponiamo che il tuo sito possa gestire 1000 req / se un visitatore non fa mai più di 10 req / s. Un bot a 100 req / s è facile da bloccare, dieci bot a 100 req / s sono facili da bloccare. Ma 200 bot a 5 req / s sono difficili da bloccare, perché si comportano correttamente.
Anche 200 bot a 100 req / s sono difficili da bloccare, perché non possono nemmeno fare più di 5 req / s, facendo sembrare che si comportino correttamente. Questa situazione è di gran lunga peggiore di 200 bot a 5 req / s reali, perché un visitatore ora è 10 su 10010 richieste che cercano di entrare nella connessione piuttosto che i 10 più gestibili tra 1010 che stanno raggiungendo con successo il server.
1000 bot a 100 req / s renderebbe improbabile per ogni visitatore reale connettersi al sito. E un attacco di questa portata causerà problemi anche altrove.
Una forte difesa per il tuo sito è un'arma potente per un aggressore:
Se il tuo sito blocca gli indirizzi IP (o anche browser specifici sugli IP) se si comportano male, qualcuno potrebbe decidere abusare della tua difesa per provocare un attacco DoS sul lato client.
Esempio: Mallory crea una pagina web che ha un centinaio di "immagini" con margin-left: -1000em; larghezza: 1px; altezza: 1px;
e tutte quelle immagini sono alcuni URL "sensibili" del tuo sito. Quando un visitatore visita la pagina di Mallory, invierà 100 richieste abusive al tuo server e verrà quindi bloccato.
Quindi ottenere una difesa più aggressiva contro gli attacchi (D) DoS causerà anche un'altra vulnerabilità.
Una difesa "intelligente" come i CAPTCHA (per dare ai visitatori la possibilità di dimostrare che sono anche visitatori e non solo bot dannosi) avrà anche l'effetto collaterale di richiedere effettivamente le risorse del server.
Caricare immagini quando la connessione è intasata non sembra una buona idea. Né ricorda un numero enorme di sessioni per i CAPTCHA, CAPTCHA a cui non verrà data risposta, in parte perché le immagini non sono state inviate, in parte perché la maggior parte dei visitatori non è umana.
un sito dinamico (altamente o non memorizzato nella cache), dovresti combattere il fuoco con la benzina.