[инфа]

от: asunvk 2020-11-17 10:58:15

fail2ban nginx-limit-req debian
[просмотров|27] 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:

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 = Off

и перезагрузить ваш сервер, на котором крутится php
service apache2 restart или service php7.3-fpm restart

7. перезагружаем сервисы fail2ban и nginx

service fail2ban restart
service nginx restart

fizord.ru © 2020
Андрей Исаков