Настройка Fail2ban на Ubuntu 24.04 LTS и защита от брутфорса

Настройка Fail2ban на Ubuntu 24.04 LTS и защита от брутфорса

Даже при надёжных паролях брутфорс-атаки всё равно представляют угрозу для любого сервера. В новой статье разбираем, как настроить Fail2ban на Ubuntu 24.04 — инструмент для автоматической блокировки подозрительных IP. Вы узнаете, как правильно настроить время блокировки, частоту срабатывания и интеграцию с UFW.

Fail2ban — это утилита, которая отслеживает системные журналы. Обнаружив подозрительную активность, он временно блокирует IP-адреса, с которых поступают попытки взлома. Чаще всего его применяют для защиты SSH, но он умеет работать и с другими сервисами: FTP, почтовыми демонами, веб-серверами. На VPS такие попытки особенно часты, поэтому важно заранее настроить защиту. Главное условие — чтобы сервис писал логи, по которым можно определить неудачные попытки входа или атаки.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Как работает Fail2ban

Принцип работы Fail2ban прост. Он запускает демона, который следит за логами (например, /var/log/auth.log для SSH), и если за определённое время с одного и того же IP идёт слишком много попыток войти, заканчивающихся неудачей, этот IP блокируется через брандмауэр. По умолчанию в Ubuntu 24.04 Fail2ban взаимодействует именно с UFW, но может использовать и iptables напрямую, если нужно. 

Установка и настройка Fail2ban 

Для установки Fail2ban на Ubuntu 24.04 никаких сторонних источников подключать не нужно. Сначала обновляем индекс: 

sudo apt update

Затем устанавливаем пакет:

sudo apt install fail2ban

Во время установки все необходимые зависимости будут установлены автоматически. После завершения сервис запускается сам, но на этом этапе он ещё не делает ничего полезного: все фильтры по умолчанию выключены.

Стандартные настройки находятся в файле:

/etc/fail2ban/jail.conf

Не изменяйте файл jail.conf — это основной конфигурационный файл, и при обновлении пакета он может быть перезаписан. Настраивать утилиту следует через файл jail.local, он создаётся вручную на основе jail.conf и в нём переопределяются только нужные параметры.

Создадим этот файл, затем откроем его:

sudo nano /etc/fail2ban/jail.local

Добавим защиту для SSH. Самая простая рабочая конфигурация может выглядеть так:

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd

Эта секция включает защиту сервиса sshd, указывает порт, на котором работает SSH (можно задать явно, если вы используете нестандартный, например port = 2222), и путь к логу. Используемая переменная %(sshd_log)s берёт путь из глобальных настроек, и в Ubuntu 24.04 она указывает на journal, так как systemd — основной менеджер журналов. Поэтому параметр backend = systemd или auto здесь уместен.

Теперь настроим параметры срабатывания. Самые важные из них:

  • bantime — на сколько времени блокируется IP, по умолчанию это 10 минут (600 секунд). Можно указать в удобной форме, например bantime = 1h, чтобы блокировка длилась час.
  • findtime — период, за который анализируются попытки входа. Если за это время было слишком много ошибок, то IP блокируется. Например, findtime = 10m.
  • maxretry — максимальное число попыток до бана. Часто используется значение 5.

Все эти параметры можно задать глобально или для конкретного jail. Лучше задавать явно в той же секции:

[sshd]
bantime = 1h
findtime = 10m
maxretry = 5

Настроенный таким образом, Fail2ban будет блокировать IP на час, если за 10 минут с него поступит 5 неудавшихся попыток входа.

Сохраните конфигурацию и перезапустите службу:

sudo systemctl restart fail2ban

Проверьте, работает ли jail:

sudo fail2ban-client status

Команда покажет, какие jails включены. Для просмотра конкретного — например, sshd — используем:

sudo fail2ban-client status sshd

Если всё настроено правильно, вы увидите информацию о забаненных IP и количестве попыток. Можно также посмотреть, какие именно адреса были забанены, и при необходимости разблокировать:

sudo fail2ban-client set sshd unbanip 1.2.3.4

Такой настройки достаточно, чтобы защитить SSH от атак перебора паролей. Если есть и другие сервисы, которые могут быть атакованы, включите для них аналогичные секции в jail.local — например, [nginx-http-auth] или [postfix]. Но важно настраивать только то, что реально используется, иначе можно легко заблокировать легитимный трафик.

Интеграция Fail2ban с UFW и тестирование защиты

Когда Fail2ban фиксирует подозрительную активность — например, серию неудачных попыток входа по SSH, — он блокирует IP-адрес источника. Для этого используются действия (action), которые указывает, каким способом банить IP. В большинстве случаев это добавление правила в файрвол.

По умолчанию Fail2ban на Ubuntu 24.04 умеет работать с UFW. Чтобы активировать именно этот способ бана, нужно в секции нужного jail (например, [sshd]) задать действие ufw. Это делается через параметр action:

[sshd]
action = ufw

После этого Fail2ban будет применять команды ufw deny from <ip> to any для бана и ufw delete deny from <ip> to any для разблокировки. Такой подход удобен, если вы уже полностью управляете файрволом через UFW и хотите, чтобы все действия логировались в одном месте.

Однако учитывайте, что UFW и Fail2ban могут конфликтовать, если одновременно использовать несколько разных способов управления правилами. Например, если вы используете нестандартные iptables-действия в других jails, то правила могут накладываться некорректно. Лучше придерживаться одного метода на всём сервере — или только UFW, или только iptables.

Когда настройка завершена, убедитесь, что защита системы работает. Самый простой способ — попытаться войти по SSH с другого IP, несколько раз введя неправильный пароль. После пяти неудачных попыток IP-адрес должен быть заблокирован. Для контроля используется команда:

sudo fail2ban-client status sshd

Она покажет, сколько IP в бане, и с какого момента в разделе «Banned IP list».

В логах можно проследить, какие действия были выполнены. Для Fail2ban это:

/var/log/fail2ban.log

В нём будет видно, что IP попал в бан, с указанием jail и действия. UFW, в свою очередь, ведёт собственный лог (если логирование включено), который можно просматривать через journalctl или напрямую в /var/log/ufw.log.

Если защита не работает, проверьте:

  • Активен ли jail (fail2ban-client status), и действительно ли он мониторит логи.
  • Корректно ли задан путь к логу, правильный ли backend. Например, в Ubuntu, где логи идут через journald, почти всегда нужен backend = systemd.
  • Проверьте, не конфликтуют ли правила Fail2ban и UFW — особенно если ранее вручную изменялись цепочки iptables.

Если Fail2ban сообщает, что IP заблокирован, но доступ к серверу по-прежнему возможен, скорее всего, дело в action: либо действие настроено неправильно, либо UFW не включён. Активен ли UFW можно проверить с помощью:

sudo ufw status

Заключение

Мы рассмотрели установку Fail2ban на Ubuntu 24.04, настройку конфигурации на примере SSH, интеграцию с UFW и проверку логов. Один раз настроенный Fail2ban обеспечивает автоматическую защиту сервера от перебора паролей и других атак.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях