Защита от bruteforce средствами Nginx
Используем модуль ngx_http_limit_req_module
www-servers/nginx-1.12.2-r1
Redmine
Конфиг для redmine-3.1.1 ограничивает не более 10 запросов в минуту
/etc/nginx/sites-enabled/redmine
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
/etc/nginx/sites-enabled/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; } }
Обсуждение