Как установить и настроить Fail2Ban в Linux

9 мин чтения - 14 мая 2026 г.

hero section cover
Содержание
  • Как установить и настроить Fail2Ban в Linux
  • Требования
  • Установка Fail2Ban на Ubuntu/Debian
  • Настройка Jails
  • Тестирование и мониторинг
  • Расширенная настройка
Поделиться

Пошаговое руководство по установке, настройке и тестированию Fail2Ban на Linux-серверах на базе Ubuntu, Debian и RHEL.

Как установить и настроить Fail2Ban в Linux

Fail2Ban отслеживает журналы вашего сервера на предмет подозрительной активности и автоматически блокирует нарушителей, обновляя правила брандмауэра. Он останавливает атаки методом перебора, уменьшает количество лишних записей в журналах и после настройки работает незаметно в фоновом режиме. В этом руководстве рассматриваются установка на Ubuntu/Debian, основная настройка, настройка jail и несколько дополнительных опций, о которых стоит знать.

Требования

Fail2Ban работает на большинстве дистрибутивов Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux и Fedora. Вам понадобится:

  • Python 3, установленный в системе
  • Права root или sudo для установки пакетов и изменения настроек брандмауэра
  • Активный брандмауэр (iptables, nftables, ufw или firewalld)
  • Файлы журналов, в которых фиксируются неудачные попытки входа (/var/log/auth.log в системах на базе Debian /var/log/secure в системах на базе RHEL)

В системах на базе RHEL сначала включите репозиторий EPEL. Перед установкой Fail2Ban убедитесь, что брандмауэр работает, с помощью ufw status или systemctl status firewalld.

Установка Fail2Ban на Ubuntu/Debian

Обновите пакеты и установите Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Включите службу, чтобы она запускалась при загрузке, а затем запустите ее:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Скопируйте конфигурацию по умолчанию в локальный файл переопределения. Всегда редактируйте jail.local, а не jail.conf, чтобы обновления пакетов не перезаписали ваши настройки:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Убедитесь, что все работает:

sudo systemctl status fail2ban
sudo fail2ban-client status

Первая команда должна отобразить «Active: active (running)». Вторая команда выводит список ваших активных jail. Убедитесь, что Fail2Ban включен при загрузке с помощью sudo systemctl is-enabled fail2ban.

Настройка Jails

Настройки по умолчанию

Откройте /etc/fail2ban/jail.local и настройте [DEFAULT] раздел. Эти настройки применяются ко всем jail, если не переопределены:

ПараметрРекомендуемое значениеЧто делает
bantime3600Блокирует IP-адрес на 1 час
findtime600Подсчитывает количество сбоев в течение 10-минутного интервала
maxretry3 до 5сбоев до срабатывания блокировки
ignoreip127.0.0.1/8 ::1IP-адреса, которые никогда не блокируются

Добавьте свой собственный IP-адрес администратора, чтобы ignoreip , чтобы не заблокировать себе доступ. Пример: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Защита SSH

Включите SSH-тюрьму в jail.local:

[sshd]
enabled = true

Убедитесь, что logpath указывает на правильный файл журнала для вашего дистрибутива. Если вы перенесли SSH на нестандартный порт (например, 2222), обновите port параметр соответствующим образом.

Защита веб-сервера

Включите jail, соответствующий вашему веб-серверу:

  • Nginx: [nginx-http-auth] при сбоях аутентификации, [nginx-botsearch] для вредоносных ботов
  • Apache: [apache-auth] для аутентификации, [apache-badbots] для ботов

Recidive Jail

Функция [recidive] jail отлавливает IP-адреса, которые постоянно попадают под бан в других jail и применяет более длительный штраф, обычно на одну неделю (604 800 секунд). Это полезно для настойчивых злоумышленников, которые меняют свои методы.

После внесения изменений перезагрузите страницу:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Тестирование и мониторинг

Тестирование блокировок

Прежде чем полагаться на Fail2Ban в рабочей среде, протестируйте его. С удаленного компьютера (не с вашего IP-адреса администратора) пытайтесь войти по SSH, пока не превысите maxretry. Вы должны быть заблокированы. Убедитесь в этом с помощью:

sudo fail2ban-client status sshd

Наблюдайте за блокировками в режиме реального времени:

tail -f /var/log/fail2ban.log

Если вы случайно заблокировали легитимный IP, разблокируйте его:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Ежедневный мониторинг

Просмотрите историю блокировок, выполнив поиск в журнале с помощью grep:

grep "Ban\|Unban" /var/log/fail2ban.log

Полезные команды управления:

КомандаНазначение
fail2ban-client statusВывести список всех активных блокировок
fail2ban-client bannedПоказать все IP-адреса, на которые в данный момент наложен бан
fail2ban-client set <jail> unbanip <IP>Снять запрет с определенного IP
fail2ban-client unban --allСнять все запреты
fail2ban-client set <jail> banip <IP>Забанить IP вручную

Блокировки сохраняются после перезапуска. Fail2Ban хранит их в базе данных SQLite по адресу /var/lib/fail2ban/fail2ban.sqlite3.

Расширенная настройка

Переход на nftables

nftables — это современная замена iptables. Она обрабатывает IPv4 и IPv6 в единой среде, лучше масштабируется при больших списках запретов и имеет встроенное ограничение скорости. Если вы используете Ubuntu 22.04+, Debian 11+ или любой другой современный дистрибутив, это лучший выбор.

Установите его в jail.local:

[DEFAULT]
banaction = nftables-multiport

Перезапустите Fail2Ban, затем проверьте с помощью sudo nft list ruleset. Вы должны увидеть f2b-table и f2b-chain в выводе. Оставайтесь на iptables только в том случае, если вы используете старую систему или у вас есть требования к совместимости.

Уведомления по электронной почте

По умолчанию Fail2Ban блокирует пользователей без уведомления. Чтобы получать уведомления по электронной почте, добавьте следующее в [DEFAULT] разделе jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

Действие action_mwl action отправляет письмо с подробностями блокировки, данными WHOIS и строками журнала, вызвавшими блокировку. Используйте action_mw , если вам нужны только данные WHOIS. Вам понадобится установленный агент передачи почты, такой как sendmail, или SMTP-ретранслятор, настроенный с помощью чего-то вроде msmtp.

Для уведомлений в Slack или Discord создайте скрипт, отправляющий веб-хук, и подключите его через файл пользовательского действия в /etc/fail2ban/action.d/.

Если вы ищете сервер с полным root-доступом и неограниченной пропускной способностью для запуска Fail2Ban, ознакомьтесь с выделенными серверами FDC.

background image
Ваш сервер сдерживает ваш рост?

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб. Готовы к модернизации?

Разблокируйте производительность прямо сейчас

Блог

События этой недели

Другие статьи
Почему важно иметь мощный и не тарифицируемый VPS

Почему важно иметь мощный и не тарифицируемый VPS

Неизмеряемый VPS предоставляет пропускную способность по фиксированной ставке при фиксированной скорости порта. Чем он отличается от дозированных тарифных планов, когда он окупается и что нужно проверить перед покупкой.

7 мин чтения - 9 мая 2025 г.

Управление памятью в Linux: Подкачка, убийца OOM и Cgroups

12 мин чтения - 31 мая 2026 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание