Защита от bruteforce средствами Nginx
Используем модуль ngx_http_limit_req_module
www-servers/nginx-1.12.2-r1
Redmine
Конфиг для redmine-3.1.1 ограничивает не более 10 запросов в минуту
upstream prod_redmine {
server 127.0.0.1:3000;
}
# Зона ограничения
# 'try_files' не работает с 'if' http://wiki.nginx.org/IfIsEvil поэтому используем map
limit_req_zone $bruteforce_var zone=bruteforce_zone:1m rate=10r/m;
map $request_method $bruteforce_var {
default "";
POST $binary_remote_addr;
}
server {
...
location ~* /login {
# Защита от перебора паролей
limit_req zone=bruteforce_zone burst=2 nodelay;
try_files $uri @redmine;
}
...
}
Zabbix
# Зона ограничения
limit_req_zone $bruteforce_var zone=bruteforce_zone:1m rate=10r/m;
map "$request_method:$request_uri" $bruteforce_var {
default "";
"~^POST:/index.php" $binary_remote_addr;
}
server {
...
location ~ \.php$ {
# Защита от перебора
limit_req zone=bruteforce_zone burst=2 nodelay;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php.sock;
}
}
Обсуждение