Использование fail2ban в среде виртуализации KVM/QEMU
Дата публикации: 14.10.2026

Использование fail2ban в среде виртуализации KVM/QEMU

Хочу себе такие же кнопки


Использование fail2ban в среде виртуализации KVM/QEMU

Администрирование Linux fail2ban

Fail2ban – это инструмент для защиты серверов Linux от bruteforce атак путем мониторинга лог-файлов и автоматического блокирования IP-адресов, которые демонстрируют подозрительную активность. Администратор системы настраивает jailконфигурации, определяя, какие службы защищать и какие пороги срабатывания применять.

Основные компоненты fail2ban

Система состоит из следующих элементов:

Установка fail2ban

В большинстве дистрибутивов Linux пакет fail2ban доступен в официальных репозиториях. Администратор выполняет следующие шаги:

  1. Обновляет список пакетов:
    • sudo apt update (Debian/Ubuntu) или sudo dnf check-update (Fedora/RHEL)
  2. Устанавливает пакет fail2ban:
    • sudo apt install fail2ban или sudo dnf install fail2ban
  3. Проверяет статус службы после установки:
    • sudo systemctl status fail2ban

Настройка jail.local

Файл /etc/fail2ban/jail.local используется для переопределения значений, заданных в jail.conf. Администратор создаёт или редактирует его, следуя рекомендациям:

Для удобства ссылка на дополнительные материалы размещена здесь: Администрирование Linux fail2ban.

Мониторинг и отладка

После настройки администратор регулярно проверяет работу fail2ban:

Обновление и поддержка

Для обеспечения актуальной защиты администратор следует этим практикам:

FAQ

Как настроить fail2ban для защиты вебсервера Nginx от атак типа bruteforce на страницу логина?

Для защиты Nginx администратор создаёт отдельный jail, который мониторит логфайл доступа и блокирует IP, совершающие множество неудачных попыток входа на защищённый путь. Ниже приведён подробный порядок действий, включающий пять абзацев и практический чеклист.

Первым шагом необходимо определить, какой логфайл Nginx содержит информацию о запросах к скрипту логина. Обычно это /var/log/nginx/access.log. В этом файле ищутся строки с кодом состояния 401 или 403, либо специфические URLпути, например, /login.php или /wp-login.php. Администратор формирует регулярное выражение, которое будет соответствовать таким записям.

Далее создаётся пользовательский фильтр в директории /etc/fail2ban/filter.d/. Файл может называться, например, nginx-login.conf и содержать следующее содержимое:

[Definition]
failregex = ^ -.*\"(?:POST|GET) .*login.*\" 401
ignoreregex =

Это выражение ловит любые POST/GET запросы к пути, содержащему слово login, завершившиеся кодом 401. При необходимости можно добавить варианты для 403 или собственных скриптов.

Следующий этап – добавление jailконфигурации в файл /etc/fail2ban/jail.local. Администратор вставляет блок:

[nginx-login]
enabled   = true
filter    = nginx-login
action    = iptables[name=NGINX-LOGIN, port=http, protocol=tcp]
logpath   = /var/log/nginx/access.log
maxretry  = 5
bantime   = 3600
findtime  = 600

Здесь указано, что после пяти неудачных попыток в течение десяти минут IP будет заблокирован на один час через iptables.

Наконец, администратор перезапускает fail2ban и проверяет работу нового jail:

  • sudo systemctl restart fail2ban
  • sudo fail2ban-client status nginx-login – должно показывать активный jail и текущие счётчики;
  • Выполнить тестовые попытки входа с неверными учётными данными и убедиться, что после пятой попытки IP появляется в списке заблокированных (sudo iptables -L NGINX-LOGIN -v -n).

Практический чеклист по реализации защиты Nginx через fail2ban

  1. Определить путь к логфайлу Nginx и шаблон строки, указывающий наfailed login attempt.
  2. Создать файл фильтра /etc/fail2ban/filter.d/nginx-login.conf с подходящим failregex.
  3. Проверить фильтр командой sudo fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-login.conf – должен совпадать с ожидаемыми строками.
  4. Добавить блок jail в /etc/fail2ban/jail.local (см. пример выше), установив нужные значения maxretry, bantime и findtime.
  5. Перезапустить демон: sudo systemctl restart fail2ban.
  6. Убедиться, что jail активен: sudo fail2ban-client status nginx-login.
  7. Выполнить тестовые неудачные запросы к скрипту логина и проверить, что IP попадает в блокировку через iptables (sudo iptables -L NGINX-LOGIN -v -n).
  8. При ложных срабатываниях отрегулировать failregex или параметры maxretry/findtime и повторить шаги 46.
  9. Записать изменения в систему контроля версий или сделать резервную копию файлов jail.local и пользовательских фильтров.

 




Анимированный фон