Защита Nginx и Fail2ban: готовые регулярные выражения и фильтры от ботов и брутфорса
Практический справочник готовых правил и фильтров для мгновенной блокировки парсеров, сканеров уязвимостей и брутфорс-атак на Linux-сервере.
Совет по безопасности: Перед применением правил в продакшене всегда проверяйте регулярные выражения командой
fail2ban-regex /path/to/log /etc/fail2ban/filter.d/your_filter.conf.
1. Базовый конфиг /etc/fail2ban/jail.local
Создайте или добавьте в конец файла jail.local настройки для защиты Nginx от частых повторных запросов (HTTP Flood) и сканеров:
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/access.log
findtime = 60
maxretry = 30
bantime = 86400
[nginx-bad-bots]
enabled = true
filter = nginx-bad-bots
action = iptables-multiport[name=BadBots, port="http,https", protocol=tcp]
logpath = /var/log/nginx/access.log
maxretry = 2
bantime = 604800
2. Фильтры и Регулярные выражения (Regex)
Блокировка сканеров уязвимостей (.env, wp-config, phpmyadmin)
Файл: /etc/fail2ban/filter.d/nginx-scanners.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD) .*\.(env|git|config|phpmyadmin|aws|xmlrpc\.php).* HTTP/.*" (403|404|400)
ignoreregex =
Фильтрация вредоносных User-Agent (Bad Bots)
Файл: /etc/fail2ban/filter.d/nginx-bad-bots.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*"(?:sqlmap|nikto|cyverse|python-requests|curl|wget|go-http-client).*
ignoreregex =
3. Блокировка частых ботов средствами самого Nginx
Если сервер слаб и не хочется нагружать Fail2ban, можно отсекать ботов прямо в `nginx.conf` через модуль map:
map $http_user_agent $bad_bot {
default 0;
~*(360Spider|AhrefsBot|SemrushBot|MJ12bot|Bytespider) 1;
}
server {
if ($bad_bot = 1) {
return 444; # Закрывает соединение без ответа
}
}
Полезные команды управления:
fail2ban-client reload— перезапуск конфигурации без разрыва сессий.fail2ban-client status nginx-bad-bots— просмотр текущих заблокированных IP.fail2ban-client set nginx-bad-bots unbanip 1.2.3.4— разблокировка IP-адреса.