Встроенный стоп-лист Битрикс блокирует IP на уровне PHP — то есть сервер всё равно принимает запрос, запускает интерпретатор и тратит ресурсы. fail2ban блокирует IP на уровне iptables, до того как запрос попадает в приложение. Разберём, как настроить его для Битрикс на CentOS/Alma Linux (BitrixVM).
Установка fail2ban
yum install -y fail2ban systemctl enable fail2ban systemctl start fail2ban
Как это работает
fail2ban читает лог-файлы, ищет в них паттерны (например, неудачные попытки авторизации), и при превышении порога — добавляет IP в iptables. Через заданное время блокировка снимается.
Настройка для Битрикс
1. Создаём jail для Битрикс
# /etc/fail2ban/jail.d/bitrix.conf [bitrix-admin] enabled = true port = http,https filter = bitrix-admin logpath = /home/bitrix/www/bitrix/modules/main/admin/auth.log maxretry = 5 findtime = 300 bantime = 3600 action = iptables-multiport[name=bitrix, port="http,https", protocol=tcp]
2. Создаём фильтр
# /etc/fail2ban/filter.d/bitrix-admin.conf
[Definition]
failregex = ^.* - .* \[.*\] "POST /bitrix/admin/index.php.* 200
^.* - .* \[.*\] "POST /login/.* 200
ignoreregex =
3. Для Apache/Nginx логов
# /etc/fail2ban/jail.d/nginx-http-auth.conf [nginx-http-auth] enabled = true filter = nginx-http-auth port = http,https logpath = /var/log/nginx/error.log maxretry = 5 bantime = 3600
Блокировка по количеству 404-ошибок
Сканеры уязвимостей генерируют множество 404-ответов. Блокируем их:
# /etc/fail2ban/jail.d/nginx-404.conf [nginx-404] enabled = true filter = nginx-404 port = http,https logpath = /var/log/nginx/access.log maxretry = 30 findtime = 60 bantime = 86400
# /etc/fail2ban/filter.d/nginx-404.conf [Definition] failregex = ^.* "(GET|POST|HEAD) .*" 404 ignoreregex = \.css|\.js|\.png|\.jpg|\.ico|\.woff
Полезные команды
# Статус всех jail fail2ban-client status # Статус конкретного jail fail2ban-client status bitrix-admin # Заблокированные IP fail2ban-client status bitrix-admin | grep "Banned IP" # Разблокировать IP вручную fail2ban-client set bitrix-admin unbanip 192.168.1.100 # Проверить фильтр fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-404.conf # Перезагрузить конфигурацию fail2ban-client reload
Белый список IP
Добавьте свои IP в /etc/fail2ban/jail.local, чтобы не заблокировать себя:
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 ВАШ.IP.АДРЕС
Итог
fail2ban + стоп-лист Битрикс дают двухуровневую защиту: Битрикс блокирует на уровне приложения и ведёт историю, fail2ban блокирует на уровне сети и снижает нагрузку на сервер. Установка занимает 15–20 минут и не требует изменений в самом Битриксе.
