Come faccio ad eliminare le connessioni IP che sembrano inviare molte richieste allo stesso url? Diciamo che ho qualcuno che richiede lo stesso URL per più di 10 volte in 5 secondi, voglio "rinfrescarlo". Qualche idea su come è stata fatta?
On * nix, puoi usare fail2ban con qualcosa di simile nel tuo jail.conf (100 richieste in 30 secondi significa un divieto di 5 minuti). Ovviamente, dovrai aggiustare ciò per quante richieste ti aspetti da un utente legittimo, come indicato da @Jeff Ferland nei commenti qui sotto, devi tenere conto del numero di richieste che ricevi su un normale caricamento della pagina (ad es. hai molte immagini sulla pagina).
[apache-spammer]
enabled = true
banaction = apache
port = http,https
filter = apache-spammer
logpath = /srv/*/log/access.log
maxretry = 100
findtime = 30
bantime = 300
e un filtro come questo in /etc/fail2ban/filter.d/apache-spammer.conf
:
[Definition]
# Option: failregex
# Notes.: regex to match the request messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
#
failregex = ^<HOST>.*/path/to/content.html
Questo è non testato - dovrai sperimentare un po 'per trovare ciò che funziona. Guarda il tuo fail2ban.log per verificare che non stai vietando gli utenti innocenti!
Un'alternativa sarebbe una regola del firewall che limita le richieste da un particolare indirizzo IP.
Sarebbe mod_evasive essere quello che stai cercando? Si concentra su attacchi DoS e limita il numero di richieste a una pagina al secondo. Altrimenti, potresti essere in grado di adattare fail2ban per dare una mano.