hostingfaq.ru — отвечаем на вопросы о хостинге простым языком 45 провайдеров · 146 ответов · данные от 14.10.2026
hostingfaqвопрос — ответ Обновлено 14.10.2026

Fail2ban: как защитить сервер от подбора пароля — инструкция для новичка

Обновлено 8 октября 2026 Чтение 10 мин Раздел: Блог о хостинге и серверах: инструкции, разборы и настройки

В этой инструкции из блога HostingFAQ вы разберёте, что такое fail2ban, и настроите его на Ubuntu или Debian примерно за 15 минут: установите службу, включите защиту SSH, подберёте число попыток и срок бана, научитесь проверять блокировки и снимать их. Подойдёт, если у вас свой VPS и в журнале входа появляются чужие попытки подобрать пароль.

Fail2ban: как защитить сервер от подбора пароля — инструкция для новичка

Коротко

  • Fail2ban читает журналы сервера и банит IP-адреса, с которых много раз подряд вводят неверный пароль.
  • Установка на Ubuntu 24.04 и Debian 12 занимает одну команду: sudo apt install fail2ban.
  • По умолчанию действуют значения: 5 попыток (maxretry), окно поиска 10 минут (findtime), бан на 10 минут (bantime).
  • Свои настройки хранят в файле /etc/fail2ban/jail.local, а не в jail.conf: обновление пакета jail.conf перезаписывает.
  • В примере из статьи: 3 попытки за 10 минут и бан на 1 час для SSH на порту 22.
  • Состояние защиты показывает команда sudo fail2ban-client status sshd, снять бан — команда unbanip.
  • Fail2ban дополняет, а не заменяет вход по SSH-ключам: вместе они закрывают большую часть подбора паролей.

Что такое fail2ban и зачем он нужен на сервере

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

Проблема знакома каждому, у кого есть VPS (виртуальный сервер) с открытым портом 22. Боты сканируют интернет круглосуточно и начинают подбирать пароль в первые часы после запуска сервера. Файл журнала быстро заполняется строками Failed password for root from ..., а нагрузка и шанс угадать слабый пароль растут вместе с числом попыток. В примере этой статьи используется VPS на Ubuntu 24.04, вход по SSH (защищённому удалённому доступу, подробнее в материале про SSH-клиент) на порту 22 и подбор пароля к пользователю root.

Если вы только осваиваете администрирование, начните с материала про Linux для сервера, а ответы на базовые вопросы о выборе сервера соберены в разделе о VPS.

Что fail2ban защищает и что нет:

  • защищает SSH от подбора пароля;
  • закрывает повторные попытки входа в почтовые службы;
  • реагирует на подозрительные запросы к веб-серверу, например к странице входа;
  • не заменяет SSH-ключи: вместе они закрывают большую часть подбора паролей;
  • не спасает от распределённых атак, где запросы идут с тысяч адресов, — об этом читайте в статье про DDoS-атаку;
  • не исправляет слабые пароли и ошибки в настройках служб.

Как работает fail2ban: фильтры, jail и бан по IP

Fail2ban работает как цепочка из четырёх звеньев. Служба читает журнал, например записи SSH (Secure Shell, защищённого удалённого входа) о неверных паролях. Фильтр с регулярным выражением, то есть шаблоном поиска по тексту, вытаскивает из строки IP-адрес нарушителя. Счётчик считает неудачные попытки с этого адреса, а при превышении лимита файрвол получает правило блокировки.

Связку «журнал, фильтр, действие» fail2ban называет jail, то есть «тюрьма». Filter — файл с регулярными выражениями из каталога /etc/fail2ban/filter.d/. Action — реакция на нарушителя: по умолчанию в файрвол добавляется правило, которое закрывает адресу доступ к порту. На современных Ubuntu и Debian файла /var/log/auth.log может не быть, поэтому в нашем примере задан backend = systemd: fail2ban читает системный журнал systemd напрямую.

Бан временный. Когда срок bantime истекает, fail2ban сам удаляет правило, и адрес снова может подключаться. Значения по умолчанию такие:

  • maxretry = 5 — 5 неудачных попыток;
  • findtime = 10m — окно подсчёта 10 минут;
  • bantime = 10m — бан на 10 минут.

Получается, что 5 неудачных входов за 10 минут отправляют адрес в бан на 10 минут. В нашем примере мы сделаем строже: 3 попытки и бан на 1 час. Fail2ban отсекает только подбор паролей, а общий уровень защиты сервера помогает оценить проверка сайта на безопасность.

Схема работы fail2ban: журнал, фильтр, счётчик попыток и блокировка IP в файрволе
Как fail2ban превращает строки журнала в блокировку адреса

Как установить и настроить fail2ban для защиты SSH

Установка занимает одну команду, а основная работа — короткий файл настроек. Все шаги проверены на VPS (virtual private server, виртуальном сервере) с Ubuntu 24.04 или Debian 12, где вход по SSH (Secure Shell, защищённое удалённое подключение) идёт на порту 22. Если сервера ещё нет, арендуйте виртуальный сервер, а систему поставьте по инструкции установки Debian на сервер.

Свои правила храните в /etc/fail2ban/jail.local, а не в jail.conf: обновление пакета перезаписывает второй файл. Подключитесь любым клиентом, например по инструкции как пользоваться PuTTY, и заранее узнайте свой внешний IP-адрес: он нужен для белого списка. Выполните шаги по порядку:

  1. Подключитесь к серверу по SSH и обновите список пакетов: sudo apt update.
  2. Установите службу: sudo apt install fail2ban.
  3. Откройте файл настроек: sudo nano /etc/fail2ban/jail.local.
  4. Впишите настройки, подставив вместо 203.0.113.10 свой IP:
    [DEFAULT]
    ignoreip = 127.0.0.1/8 ::1 203.0.113.10
    bantime = 1h
    findtime = 10m
    maxretry = 3
    
    [sshd]
    enabled = true
    port = ssh
    backend = systemd
  5. Сохраните файл (Ctrl+O, Enter, Ctrl+X) и запустите службу: sudo systemctl enable --now fail2ban.
  6. Проверьте тюрьму SSH: sudo fail2ban-client status sshd. Вы увидите число неудачных входов и список забаненных адресов.
  7. Посмотрите журнал службы: sudo tail -n 20 /var/log/fail2ban.log.

Что означают параметры. maxretry = 3 — бан после третьей неудачной попытки (по умолчанию их 5). findtime = 10m — окно, в котором считаются попытки, то есть 10 минут. bantime = 1h — блокировка на 1 час вместо стандартных 10 минут. ignoreip защищает от бана вас самих, а backend = systemd заставляет читать системный журнал: файла /var/log/auth.log на свежих системах может не быть. После правок применяйте настройки командой sudo fail2ban-client reload. Если что-то не заработало, загляните в ответы на частые вопросы о VPS.

Терминал с выводом команды fail2ban-client status sshd и списком заблокированных IP-адресов
Проверка тюрьмы sshd: в списке заблокированных появился адрес 203.0.113.10 (иллюстрация интерфейса)

Параметры jail.local: bantime, findtime и maxretry

Три параметра работают вместе. maxretry задаёт число неудачных входов, findtime — окно, в которое они считаются, а bantime — срок блокировки. В нашем примере IP-адрес получает бан на 1 час, если сделал 3 ошибки за 10 минут. Если ошибки растянулись на 11 минут, счётчик не сработает. Fail2ban сверяет время записей в журнале, поэтому проверьте синхронизацию времени на сервере.

Ориентиры по сроку бана: от 10 минут для мягкой защиты до 1 недели для упорных перебирающих. Для тюрьмы recidive, которая банит повторных нарушителей, обычно ставят до 1 недели.

Не снижайте maxretry до 1: одна опечатка в пароле заблокирует вас самих. Добавьте свой адрес в ignoreip: узнайте внешний IP-адрес или IP компьютера и впишите его после 127.0.0.1/8 ::1.

Параметры из файла /etc/fail2ban/jail.local, их значения по умолчанию и в нашем примере:

Параметр Что делает По умолчанию В примере
ignoreip Адреса, которые не банятся 127.0.0.1/8 ::1 127.0.0.1/8 ::1 и ваш внешний IP
bantime Срок блокировки 10m 1h
findtime Окно подсчёта ошибок 10m 10m
maxretry Допустимое число ошибок 5 3
backend Откуда читать журналы auto systemd
port, banaction Защищаемый порт и способ блокировки через файрвол зависит от системы порт 22, действие по умолчанию

Как проверить работу fail2ban и разблокировать IP

Начните с команды sudo fail2ban-client status sshd. В выводе три ключевые строки: Currently failed показывает, сколько неудачных попыток сейчас учтено в окне findtime (10 минут), Total banned — сколько блокировок было с запуска службы, Banned IP list — какие адреса заблокированы прямо сейчас. Пустой список не ошибка: в данный момент никто не подбирает пароль.

Подробности хранит журнал службы. Выполните sudo grep -E "Ban|Unban" /var/log/fail2ban.log: строка Ban 203.0.113.10 означает блокировку IP (Internet Protocol, сетевой адрес), а Unban — снятие после истечения bantime, в нашем примере 1 часа. Чтобы следить за событиями вживую, запустите sudo tail -f /var/log/fail2ban.log. Для постоянного наблюдения за числом банов можно подключить систему мониторинга Zabbix.

Если ошиблись с паролем 3 раза и попали в бан, снимите блокировку вручную: sudo fail2ban-client set sshd unbanip 203.0.113.10. После правки /etc/fail2ban/jail.local примените настройки командой sudo fail2ban-client reload, перезапускать сервер не нужно.

Перед проверкой защиты учтите несколько вещей:

  • Проверяйте бан с тестового адреса: другого VPS (Virtual Private Server, виртуальный сервер) или мобильного интернета. Со своего рабочего IP вы рискуете запереть себя.
  • Рабочий адрес добавьте в ignoreip, чтобы он не блокировался.
  • Делайте неверные попытки входа по SSH (Secure Shell) на порту 22, пока адрес не появится в Banned IP list.
  • Если сервер стоит за маршрутизатором, сначала разберитесь, как работает проброс портов.
Редактор nano с настройками fail2ban в файле jail.local
Минимальный файл jail.local для защиты SSH (иллюстрация интерфейса)

Частые ошибки при настройке fail2ban

Новички чаще всего спотыкаются на четырёх вещах: блокируют сами себя, видят пустую тюрьму sshd, оставляют в настройках старый порт SSH или правят не тот файл. Каждую ошибку можно исправить за 1–5 минут. Ниже у каждой указаны причина и порядок действий.

1. Вы заблокировали сами себя

Причина: вы ошиблись с паролем 3 раза за 10 минут, и fail2ban забанил ваш IP-адрес на 1 час. Решение: зайдите через консоль хостинга в панели VPS и снимите бан командой sudo fail2ban-client set sshd unbanip 203.0.113.10. Чтобы ситуация не повторилась, добавьте в /etc/fail2ban/jail.local строку ignoreip = 127.0.0.1/8 ::1 и свой внешний IP через пробел, затем выполните sudo fail2ban-client reload.

2. Тюрьма sshd пуста, хотя попытки входа были

Причина: fail2ban ищет файл /var/log/auth.log, а на современных Ubuntu и Debian его может не быть: события SSH пишутся в журнал systemd. Решение: в секции [sshd] файла jail.local укажите backend = systemd, перезагрузите конфигурацию и проверьте результат командой sudo fail2ban-client status sshd.

3. Сменили порт SSH, а в jail.local остался порт 22

Причина: правило бана закрывает порт из параметра port, поэтому новый порт остаётся открытым для перебора. Решение: впишите в секцию [sshd] актуальный номер, например port = 2222, и выполните sudo fail2ban-client reload. Порты других служб, например порт 25 для почты или порт HTTPS, указывают так же.

4. Правки внесены в jail.conf и пропали после обновления

Причина: пакет перезаписывает /etc/fail2ban/jail.conf при каждом обновлении. Решение: перенесите свои значения в /etc/fail2ban/jail.local, оставив там только изменённые параметры. Перед переносом сделайте резервную копию рабочих настроек.

Важно. После каждой правки выполняйте sudo fail2ban-client reload и держите открытой вторую SSH-сессию. Если в конфигурации опечатка, вы сразу заметите её и сохраните доступ к серверу.

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

Альтернативы fail2ban и для кого он не подходит

Fail2ban — не единственный способ защитить сервер от подбора паролей, и ни один способ не работает идеально сам по себе. Сравните варианты в таблице.

Новичку подойдёт связка: вход по SSH-ключам (Secure Shell) с отключённым паролем плюс fail2ban. Ключи делают подбор пароля бессмысленным, а fail2ban банит нарушителей, например на 1 час после 3 неудачных попыток за 10 минут, и разгружает журнал.

Способ Что закрывает Сложность Минусы
fail2ban Повторный подбор пароля, бан по IP Средняя, около 15 минут Не защищает от распределённого DDoS
SSH-ключи, пароль отключён Подбор пароля целиком Низкая Потеряли ключ — потеряли доступ
Смена порта с 22 Часть автоматических сканеров Низкая Это маскировка, а не защита
Ограничение по IP в файрволе Вход только с ваших адресов Средняя Неудобно при меняющемся IP
CrowdSec Бан по общей базе нарушителей Средняя Отдельная служба и больше настроек

Fail2ban не стоит ставить в трёх случаях:

  • IP у вас часто меняется, а консоли хостинга нет: ошибочный бан закроет доступ к серверу.
  • Десятки пользователей сидят за одним NAT (Network Address Translation): ошибки одного заблокируют общий адрес для всех.
  • Нужна защита от распределённого DDoS (Distributed Denial of Service): это задача провайдера, начните с настройки Cloudflare.

Перед любыми правками доступа сделайте резервную копию VPS через restic. Если сомневаетесь в типе сервера, сравните варианты в материале про VDS, а затем выберите VPS с доступом к консоли.

Частые вопросы

Что такое fail2ban простыми словами?
Это служба для Linux, которая следит за журналами сервера. Если с одного IP-адреса несколько раз подряд ввели неверный пароль, fail2ban временно блокирует этот адрес в файрволе.
Как установить fail2ban на Ubuntu?
Подключитесь по SSH и выполните sudo apt update, затем sudo apt install fail2ban. После установки включите службу командой sudo systemctl enable --now fail2ban. На Debian команды те же.
Какие настройки fail2ban по умолчанию?
Обычно это 5 попыток (maxretry), окно поиска 10 минут (findtime) и бан на 10 минут (bantime). Значения зависят от версии и дистрибутива, поэтому в jail.local лучше задать их явно.
Где находится конфигурационный файл fail2ban?
Основной файл — /etc/fail2ban/jail.conf, но править его не стоит: пакет перезапишет его при обновлении. Свои настройки сохраняйте в /etc/fail2ban/jail.local.
Как посмотреть список заблокированных IP в fail2ban?
Выполните sudo fail2ban-client status sshd. В строке Banned IP list будут адреса, которые сейчас в бане. Историю блокировок смотрите в /var/log/fail2ban.log.
Как разблокировать IP в fail2ban?
Используйте команду sudo fail2ban-client set sshd unbanip 203.0.113.10, подставив нужный адрес. Если заблокировали себя, зайдите через консоль хостинга и выполните ту же команду.
Почему fail2ban не банит, хотя в журнале есть неудачные входы?
Чаще всего тюрьма sshd не включена (enabled = true) или служба читает не тот журнал. На новых Ubuntu и Debian помогает параметр backend = systemd. Ещё проверьте, что порт в настройках совпадает с портом SSH.
Нужен ли fail2ban, если я использую SSH-ключи?
Вход по ключам уже закрывает подбор паролей, если вы отключили парольную авторизацию. Fail2ban всё равно полезен: он снижает нагрузку от ботов и засорение журнала и защищает другие службы.
Защитит ли fail2ban от DDoS-атаки?
Нет, он рассчитан на повторяющиеся неудачные входы, а не на большой поток запросов с множества адресов. От DDoS защищает провайдер или сервис фильтрации трафика.
Как защитить себя от случайной блокировки в fail2ban?
Добавьте свой внешний IP в параметр ignoreip рядом с 127.0.0.1/8 ::1. Если адрес у вас динамический, держите под рукой консоль хостинга для снятия бана.
Можно ли банить повторных нарушителей надолго?
Да, для этого есть тюрьма recidive. Она отслеживает адреса, которые банили несколько раз, и блокирует их на более долгий срок, например на неделю.

Проверьте себя

  • Fail2ban установлен, служба fail2ban включена и запущена.
  • Настройки лежат в jail.local, а не в jail.conf.
  • В блоке [sshd] указано enabled = true и верный порт SSH.
  • Ваш IP добавлен в ignoreip, а доступ к консоли хостинга под рукой.
  • Команда fail2ban-client status sshd показывает работающую тюрьму.
  • В /var/log/fail2ban.log видны строки Ban и Unban, когда срабатывает защита.

На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.