





от: cloud 2020-11-17 10:58:15
fail2ban nginx-limit-req debian
[1104]
linux
nginx у вас предположительно уже установлен, необходимо установить и настроить fail2ban для работы блокировки нарушителей, грузящих ресурсы сервера, по ип-адресу.
1. apt-get install fail2ban
2. nano /etc/fail2ban/jail.local
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 300
bantime = 600
maxretry = 5
3. nano /etc/fail2ban/filter.d/nginx-limit-req.conf
[Definition]
failregex = limiting requests, excess:.* by zone.*client: <HOST>
4. в конфиге /etc/nginx/nginx.conf
включаем логи ошибок
...
http {
error_log /var/log/nginx/error.log;
# настраиваем лимиты
# rate=10r/s - лимит 10 запросов в секунду
# burst=15 - после достижения 10 запросов в секунду, будут выдаваться дополнительные 15
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_req zone=one burst=15;
...
}
...
5. в каждом файле домена, дополнительно меняем данные /etc/nginx/sites-available/example.ru
server {
# для домена, дополнительные 60 запросов в секунду
limit_req zone=one burst=60 nodelay;
...
}
6. так как логи ошибок включены в nginx, то файл /var/log/nginx/error.log будет забиваться вашими ошибками кода php, поэтому в php.ini (в моём случае, файл находится в /etc/php/7.3/fpm/php.ini) необходимо изменить данные:
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
display_errors = Off
display_startup_errors = Off
log_errors = ...
[1104]

nginx у вас предположительно уже установлен, необходимо установить и настроить fail2ban для работы блокировки нарушителей, грузящих ресурсы сервера, по ип-адресу.
1. apt-get install fail2ban
2. nano /etc/fail2ban/jail.local
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 300
bantime = 600
maxretry = 5
3. nano /etc/fail2ban/filter.d/nginx-limit-req.conf
[Definition]
failregex = limiting requests, excess:.* by zone.*client: <HOST>
4. в конфиге /etc/nginx/nginx.conf
включаем логи ошибок
...
http {
error_log /var/log/nginx/error.log;
# настраиваем лимиты
# rate=10r/s - лимит 10 запросов в секунду
# burst=15 - после достижения 10 запросов в секунду, будут выдаваться дополнительные 15
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_req zone=one burst=15;
...
}
...
5. в каждом файле домена, дополнительно меняем данные /etc/nginx/sites-available/example.ru
server {
# для домена, дополнительные 60 запросов в секунду
limit_req zone=one burst=60 nodelay;
...
}
6. так как логи ошибок включены в nginx, то файл /var/log/nginx/error.log будет забиваться вашими ошибками кода php, поэтому в php.ini (в моём случае, файл находится в /etc/php/7.3/fpm/php.ini) необходимо изменить данные:
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
display_errors = Off
display_startup_errors = Off
log_errors = ...
загрузить
ещё
ещё