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
/login
intenzionalmente 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
/login
intenzionalmente 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.44
ha 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?