Home » Как настроить Fail2ban на VPS?
Как настроить Fail2ban на VPS?

Как настроить Fail2ban на VPS?

Почему Fail2ban — must-have для любого VPS?

Ты только что поднял свой первый VPS, поставил туда WordPress, phpMyAdmin или какой-нибудь свой любимый движок? Или у тебя уже давно крутится сайт, но в логах ssh видишь десятки (а то и сотни) попыток подобрать пароль? Привет, ты в реальном интернете, где любой сервер — лакомый кусочек для ботов, сканеров и скрипт-кидди. Вот почему Fail2ban — это не просто модная штука, а реальный щит, который спасает от самых банальных, но опасных атак: перебора паролей (brute force), попыток взлома через уязвимости и прочих радостей.

В этой статье я расскажу, как быстро и грамотно внедрить Fail2ban на VPS, чтобы спать спокойно и не ловить инфаркты при виде логов. Будет много практики, примеры, подводные камни, а еще — советы, которые сэкономят тебе часы и нервы.

Что такое Fail2ban и как он работает?

Fail2ban — это легковесный, но мощный инструмент, который мониторит логи (например, sshd, nginx, apache, dovecot и т.д.) и автоматически банит IP-адреса, которые слишком часто косячат: неправильно вводят пароль, делают подозрительные запросы и т.п. По сути, это умный фильтр, который ставит временные блокировки на уровне iptables или firewalld.

  • Работает на Linux (Debian, Ubuntu, CentOS, Fedora и др.).
  • Гибко настраивается: можно определить свои правила (jail), фильтры, время бана и многое другое.
  • Не требует больших ресурсов, не конфликтует с другими фаерволами.

Схема работы Fail2ban:

  1. Fail2ban читает логи (например, /var/log/auth.log).
  2. Находит подозрительные действия (например, 5 неудачных попыток входа по ssh за 10 минут).
  3. Добавляет IP-адрес нарушителя в бан-лист (обычно через iptables).
  4. Через заданное время автоматически разбанивает IP.

Установка Fail2ban: быстро и без боли

Рассмотрим установку на самых популярных дистрибутивах. Всё просто:

Debian/Ubuntu:


sudo apt update
sudo apt install fail2ban

CentOS/RHEL/Fedora:


sudo dnf install fail2ban

или (для старых версий):


sudo yum install fail2ban

После установки сервис обычно не стартует автоматически (особенно на CentOS!). Запускаем и добавляем в автозагрузку:


sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Базовая настройка Fail2ban: шаг за шагом

Fail2ban использует два типа конфигов:

  • /etc/fail2ban/jail.conf — основной файл, но НЕ редактируй его напрямую (он может перезаписаться при обновлении).
  • /etc/fail2ban/jail.local — твои кастомные настройки. Если файла нет — просто создай его.

Пример минимальной настройки для защиты SSH


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600
findtime = 600

  • enabled: включаем джейл (правило) для sshd
  • port: порт, который защищаем (по умолчанию 22, если менял — укажи свой)
  • maxretry: сколько раз можно ошибиться прежде чем забанят
  • bantime: на сколько секунд банить IP (3600 = 1 час)
  • findtime: за какой период времени считать попытки (600 = 10 минут)

После изменений не забудь перезапустить Fail2ban:


sudo systemctl restart fail2ban

Проверь, что работает:


sudo fail2ban-client status
sudo fail2ban-client status sshd

В ответе увидишь список активных jail’ов и забаненных IP (если уже кто-то пытался ломиться).

Настраиваем Fail2ban под себя: кейсы и советы

Защита Nginx/Apache

Веб-серверы — любимая цель ботов. Fail2ban умеет банить IP за 404, попытки зайти в /wp-admin, /xmlrpc.php, /admin и другие подозрительные действия.

Пример для защиты WordPress от брутфорса:


[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 1800

Фильтр wordpress можно взять из готовых (или написать свой). Смотри официальный репозиторий фильтров.

Бан за спам в почтовых сервисах (Postfix/Dovecot)

Если у тебя свой почтовик, Fail2ban поможет отсеять спамеров и брутфорсеров.

Комбинируем с iptables/ufw/firewalld

  • Fail2ban не конфликтует с UFW (Uncomplicated Firewall) — они дополняют друг друга.
  • Если у тебя кастомные правила iptables — проверь, чтобы Fail2ban мог их добавлять.

Позитивный кейс: спасли сервер от ботнета

На одном из моих VPS после поднятия WordPress за ночь в логе было 3000+ попыток подобрать пароль к /wp-login.php. После настройки Fail2ban (бан за 3 попытки на 2 часа) — атаки прекратились, нагрузка на сервер снизилась, а я стал спать спокойнее.

Негативный кейс: сам себя забанил

Если ты часто ошибаешься с паролем или используешь нестандартные порты, легко забанить себя. Решение — добавить свой IP в whitelist:


ignoreip = 127.0.0.1/8,::1,ТВОЙ.IP.АДРЕС

или быстро разбанить себя:


sudo fail2ban-client set sshd unbanip ТВОЙ.IP.АДРЕС

Плюсы и минусы Fail2ban

  • Плюсы:
    • Легко ставится и настраивается
    • Мало ест ресурсов
    • Гибкая настройка под любые сервисы
    • Работает даже на слабых VPS
  • Минусы:
    • Не защищает от сложных атак (например, 0-day уязвимостей)
    • Можно случайно забанить себя или легитимного пользователя
    • Не заменяет полноценный firewall (но отлично его дополняет)

Бонус: типичные ошибки, мифы и лайфхаки

  • Ошибка #1: Редактируешь jail.conf — потом обновление всё сотрёт. Всегда используй jail.local!
  • Ошибка #2: Не добавил свой IP в ignoreip — банишь сам себя на раз-два.
  • Ошибка #3: Банишь на 1 минуту — боты возвращаются через 2 минуты. Делай bantime >= 1 часа.
  • Миф: «Fail2ban тормозит сервер». На практике — потребляет 20-50 МБ RAM, CPU почти не грузит.
  • Лайфхак: Можно настроить отправку уведомлений на email при бане (action = %(action_mwl)s).
  • Похожее решение: CrowdSec — современный аналог Fail2ban с обменом данными о злоумышленниках между серверами.

Заключение: стоит ли заморачиваться с Fail2ban?

Fail2ban — это реально must-have для любого VPS, где открыт SSH, веб-сервер или почтовик. Он не спасёт от всех бед, но отсеет 90% самых тупых и массовых атак. Настраивается за 10-15 минут, работает годами без вмешательства, экономит кучу нервов и времени. Не ленись — поставь и настрой Fail2ban сегодня, и завтра твой сервер скажет тебе спасибо.

Официальная документация — https://www.fail2ban.org/
Гитхаб с фильтрами — https://github.com/fail2ban/fail2ban/tree/master/config/filter.d

Если остались вопросы — пиши в комменты или ищи ответы на ServerFault или профильных Telegram-каналах.

Безопасных тебе серверов! 😉


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked