Я не делаю ничего особенного. Я просто использую управление доступом Apache2 для защиты каталога паролем.
Я подумал, что было бы разумно, если бы Apache ограничивал частоту попыток пользователей аутентифицировать имя пользователя и пароль с заданного IP-адреса. Это был бы дешевый способ предотвратить попытки перебора пароля без DoSing-атак законных попыток входа пользователя.
Я искал и не смог найти ничего специфического для этого, и я был удивлен. Как это сделать? Есть ли что-нибудь получше?
В этом сообщении в блоге указано, что вы можете сделать это с помощью mod_security , используя что-то вроде следующего:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
Дополнительное обсуждение на этот ответ .