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

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

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

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

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

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

Необходимые условия

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)". Во второй - список активных тюрем. Убедитесь, что Fail2Ban включен при загрузке с помощью sudo systemctl is-enabled fail2ban.

Настройка тюрьмы

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

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

ПараметрРекомендуемое значениеЧто делает
bantime3600Блокирует IP-адрес на 1 час
findtime600Подсчитывает отказы в течение 10-минутного окна
maxretryот3 до 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), обновите параметр порта, чтобы он соответствовал.

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

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

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

Рецидивирующая тюрьма

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

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

sudo systemctl restart fail2ban
sudo fail2ban-client status

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

Тестирование запретов

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

sudo fail2ban-client status sshd

Посмотрите, как происходят запреты в реальном времени:

tail -f /var/log/fail2ban.log

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

sudo fail2ban-client set sshd unbanip 203.0.113.50

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

Просматривайте историю запретов, просматривая журнал:

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 отправляет электронное письмо с деталями запрета, данными WHOIS и строками журнала, вызвавшими запрет. Используйте action_mw, если вам нужны только данные WHOIS. Вам понадобится установленный агент передачи почты, например sendmail, или SMTP-реле, настроенное через что-то вроде msmtp.

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

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

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

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

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

Блог

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

Другие статьи
Контрольный список по укреплению серверов Linux

Контрольный список по укреплению серверов Linux

Пошаговый контрольный список для защиты сервера Linux. Охватывает SSH, брандмауэры, исправления, разрешения на файлы, SELinux/AppArmor и ведение журнала аудита

15 мин чтения - 8 мая 2026 г.

самоучитель iperf3: Тест скорости сети в Linux и Windows

10 мин чтения - 7 мая 2026 г.

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

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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