¿Cómo puedo eliminar las conexiones IP que parecen estar enviando muchas solicitudes al mismo URL? Digamos que tengo a alguien que solicita el mismo url por más de 10 veces en 5 segundos, quiero "enfriarlo". ¿Alguna idea sobre cómo se hace?
En * nix, puedes usar fail2ban con algo como esto en tu jail.conf (100 solicitudes en 30 segundos significa una suspensión de 5 minutos). Por supuesto, tendrá que ajustar esto para la cantidad de solicitudes que espera de un usuario legítimo. Como @Jeff Ferland señala en los comentarios a continuación, debe tener en cuenta la cantidad de solicitudes que recibe en una carga de página normal. (por ejemplo, tiene muchas imágenes en la página).
[apache-spammer]
enabled = true
banaction = apache
port = http,https
filter = apache-spammer
logpath = /srv/*/log/access.log
maxretry = 100
findtime = 30
bantime = 300
y un filtro como este en /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
Esto es no probado : tendrás que experimentar un poco para encontrar lo que funciona. Mira tu fail2ban.log para verificar que no estás prohibiendo a usuarios inocentes.
Una alternativa sería una regla de firewall que limite las solicitudes de una dirección IP en particular.
¿ mod_evasive sería lo que estás buscando? Se centra en los ataques DoS y limita la cantidad de solicitudes a una página por segundo. De lo contrario, podrías adaptar fail2ban para ayudar.