Ciò che probabilmente è più importante qui è che, per quanto riguarda la mitigazione, è quasi inutile distinguere gli attacchi DoS e DDoS in questi giorni. Nessun attacco denial-of-service del mondo reale avviene più da una singola sorgente IP fissa.
L'unica ovvia eccezione è quando un utente malintenzionato genera un pacchetto appositamente predisposto per sfruttare una vulnerabilità con potenziale DoS (ad esempio un null
pointer dereference da qualche parte in un codice di gestione pacchetti; ecco un esempio di tale vulnerabilità ). Ma bloccare un indirizzo IP sorgente che esegue un exploit non è davvero un buon modo per mitigarlo; l'applicazione di patch su un sistema vulnerabile è.
In teoria, sarebbe più semplice gestire un semplice attacco DoS rispetto a uno distribuito. Tuttavia, poiché sono troppo facili da mitigare, al giorno d'oggi sono per lo più estinti e lo strumento che stai chiedendo (Fail2Ban) non è lì per aiutare contro gli attacchi estinti, è scritto con l'applicazione del mondo reale in mente.
Considerando questo, bloccare un indirizzo IP (con Fail2Ban o manualmente) ha senso solo se vengono soddisfatte due condizioni contemporaneamente:
- L'attacco DDoS che è in corso riguarda solo le prestazioni del server stesso (o qualcosa dietro, come un server database dietro un'applicazione Web), ma non il trasporto di rete di fronte ad esso ;
- Può essere verificato in qualche modo che tutti gli indirizzi IP di origine coinvolti nell'attacco non siano falsificati. Per esempio. un attacco DDoS ha come target un handshake basato sul servizio di rete (dove puoi negoziare un segreto verso un cliente e verificare che il client abbia effettivamente ricevuto il segreto) e passa con successo l'handshake di base. Posso fare un altro esempio, ma la descrizione sopra riassume lo scenario più frequente.
Per quanto riguarda un tipico server HTTPS, è possibile utilizzare il blocco dell'intervallo IP contro, ad esempio, allacciamento TCP, handshake SSL / TLS flood, flood POST, Slowloris e così via (è piuttosto difficile classificare gli attacchi di livello 7 oltre le semplici inondazioni), che nella maggior parte dei casi soddisfano entrambi i requisiti.
Si noti, tuttavia, che un'inondazione POST sufficientemente grande potrebbe in effetti influire sul trasporto di rete di fronte al proprio server, ma il blocco IP può comunque aiutare in questo modo, poiché impedisce la creazione di connessioni TCP sottostanti e un bot dannoso non sarà in grado di inviare successivamente un grosso corpo POST al tuo server. Ciò limita efficacemente il traffico malintenzionato in entrata a un flood SYN a basso tasso, che nella maggior parte dei casi è facile da gestire.
Inoltre, l'effetto principale che un'inondazione basata su HTTP causerà sul trasporto di rete è dovuto al traffico in uscita generato dal server in risposta (che nell'odierno HTTP potrebbe essere circa 11-12 volte superiore a quello in entrata), e il blocco delle fonti IP di un flusso HTTP elimina anche questo a causa dei motivi sopra delineati.
Allo stesso tempo il blocco IP è per lo più inutile contro attacchi come flood ICMP, flood SYN, flood UDP e altri che non soddisfano almeno il requisito # 2; e contro attacchi di amplificazione che, nella maggior parte delle condizioni, sono così potenti in termini di traffico in entrata da non soddisfare il requisito # 1.
Si noti che il fatto che un indirizzo IP sorgente in un flood SYN, ad esempio, non possa essere verificato non significa necessariamente che sia stato falsificato. Tuttavia, il blocco di un intervallo di indirizzi IP potenzialmente falsificato può rendere il servizio non raggiungibile per gli utenti legittimi. Infatti, potrebbe essere l'intenzione di un utente malintenzionato di indurti a iniziare automaticamente (ad esempio tramite il suddetto strumento Fail2Ban) a bloccare gli indirizzi IP di origine di un'alluvione basata su pacchetti mentre ci sono solo poche sorgenti presenti nel traffico e quindi a spoofare importanti Intervalli di indirizzi IP, come gli intervalli IP degli ISP più grandi nel tuo paese, o persino l'intero intervallo di indirizzi IPv4 globale di ~ 4 miliardi di indirizzi che, con una frequenza di inondazione arbitraria di 100 Mbit al secondo, potrebbero essere elencati in circa un'ora - L'ho visto davvero nella mia vita un paio di volte.