Prevenire un attacco di forza bruta su API tramite limitatore

1

Ho un'API a cui gli utenti possono accedere. Non voglio che sia hackerato. Cosa succede se limito ogni utente a 60 richieste al minuto? Non rallenterà in modo significativo gli hacker in una situazione di forza bruta?

    
posta Jacob Henning 09.04.2017 - 20:32
fonte

2 risposte

0

Configura Fail2Ban o il suo equivalente prima per ridurre rapidamente gli attacchi.

Quindi guarda uno strumento come mod_security per stringere ciò che è autorizzato ad accedere alla tua API. Se hai tempo crea una whitelist rigorosa di ciò che è permesso e blocca tutto il resto. Configura Fail2Ban per vedere i tuoi regs di mod_security. Ottenere le basi qui aiuta a bloccare gli attacchi, ma dovrai anche eseguire un tuning a lungo termine su questo sistema, specialmente con l'evolversi dell'API.

Guarda i log per gli attacchi comuni contro i percorsi che non esistono nella tua API, quindi aggiungili a mod_security come elementi per attivare i ban in Fail2Ban.

Idealmente, puoi fare tutto quanto sopra su un server proxy dedicato in esecuzione davanti al sistema che esegue l'API, ma questi possono anche essere implementati sull'API sistema stesso.

Se esiste un modo per autorizzare gli IP degli utenti che accedono a o richiedono loro di utilizzare una VPN ciò ridurrebbe radicalmente la superficie di attacco disponibile per gli aggressori.

Una volta che hai più tempo, inizia a misurare il rendimento di ogni query contro la tua API se ne hai uno che richiede molto più tempo per rispondere (query di ricerca) questo potrebbe diventare un bersaglio per gli attacchi DoS in modo da potrebbe voler costruire regole più difensive intorno a questo.

Inoltre, è molto importante che consolidi costantemente la tua API e il / i sistema / i su cui è in esecuzione. Vuoi veramente eseguire la scansione delle vulnerabilità, utilizzare gli strumenti di test di penetrazione e un'analisi statica del codice del tuo codice su base regolare.

Qualcosa su cui pensare anche , se hai dei dati sensibili sul database dietro questa API che non saranno mai richiesti tramite l'API, qualcosa come le carte di credito potrebbe essere un buon esempio. Potrebbe essere saggio esportare il sottoinsieme di dati non sensibili dal database principale e ospitarli su un server dedicato da utilizzare solo per l'API e bloccare l'accesso da questo sistema al resto della rete (Think firewall unidirezionale ). In molti casi, questo può essere un modo molto efficace per prevenire la perdita di dati rimuovendo completamente la superficie di attacco esterna dal sistema con dati sensibili. Non tutte le implementazioni di un'API possono farlo, ma quando funziona può davvero aiutare.

Riguardo alle 60 richieste al minuto per utente, non c'è nulla che impedisca a un utente malintenzionato di utilizzare migliaia di account utente fasulli nel loro attacco in modo tale da non fermare i seri aggressori, ma limiterà gli utenti violenti che potrebbero essere qualcosa che tu anche voglia di fare. Allo stesso modo, ci sono MOLTI tipi diversi di attacchi di forza bruta. Se un utente malintenzionato punta a un terabit del traffico botnet verso la tua API, in realtà non importa come hai configurato le cose. Strumenti come Cloudflare aiuteranno in questo scenario, ma di nuovo c'è un limite a ciò che può essere fatto.

Assicurati di leggere anche il foglio Cheat di sicurezza OWASP REST

    
risposta data 09.04.2017 - 22:16
fonte
0

Ciò contribuirebbe a proteggere dagli attacchi automatici. La maggior parte degli scanner e dei fuzzer invierà migliaia di permutazioni, questo rallenterebbe questi sforzi. Non proteggerà dal controllo manuale e da un attaccante metodico e persistente. Assicurati di seguire pratiche di programmazione sicure all'interno del codice del servizio web stesso, questa è la miglior difesa contro gli aggressori.

Se si è interessati solo alla forza bruta credenziale, quindi implementare i blocchi degli account. Poiché si tratta di un servizio Web, è possibile impostare la soglia di blocco su qualcosa di abbastanza elevato (600 tentativi non riusciti). Se la soglia è soddisfatta, sai che sta succedendo qualcosa di strano. Vorrei anche limitare l'accesso ai tuoi servizi web solo da quegli host che hanno bisogno di interagire con esso.

    
risposta data 09.04.2017 - 20:47
fonte

Leggi altre domande sui tag