Quindi ho implementato una lista nera IP per l'endpoint /login sul mio server.
Se qualche IP non riesce ad accedere più di x numero di tentativi in x numero di minuti l'IP richiedente è nella lista nera per x numero di minuti.
Questo è un modo per mitigare tutti gli attacchi di forza bruta che tentano di determinare la password di un utente aggiungendo grandi ritardi al mix quando troppe richieste /login fallite sono ricevute da un dato IP.
Ma c'è uno scenario in cui questo potrebbe essere problematico, e in realtà essere uno strumento per un utente malintenzionato per lanciare un attacco DOS contro il mio legittimo utente, in questo modo:
- Blackhat vuole utilizzare il sito Web di DOS LegitUser
- LegitUser ha un server con l'IP
11.22.33.44 - Il server di LegitUser deve comunicare con il mio sistema per rimanere online.
- Blackhat scopre quale IP del server di LegitUser è
- Blackhat utilizza un server proxy come uno Spoofing IP per inviare un gran numero di tentativi di
/loginintenzionalmente falliti al mio sistema, sapendo che questi tentativi falliti otterranno l'IP richiedente (che è stato spoofato in11.22.33.44) nella lista nera. - A Blackhat non interessa se riceve una risposta dal mio sistema per le richieste di
/loginintenzionalmente fallite perché il punto di questo attacco non è quello di forzare le credenziali, è di ingannare il mio sistema facendogli credere che l'IP11.22.33.44ha superato i suoi errori di accesso assegnati per un determinato periodo di tempo. - Il risultato è che l'IP
11.22.33.44è nella lista nera dal mio sistema. Ma questo IP non appartiene a Blackhat, appartiene a LegitUser, che non ha mai giocato alcun ruolo in questo attacco. - Il risultato della blacklist dell'IP
11.22.33.44è che il sito web servito da quell'host è ora offline, perché dipende dal fatto che il mio sistema rimanga online.
Come potrei fare per proteggermi da questo?