Как установить и настроить fail2ban на VPS
Любой VPS с белым IP уже через минуты после запуска начинают перебирать боты, подбирая пароль к SSH тысячами попыток в сутки. Fail2ban автоматически замечает такие атаки и банит адреса нарушителей на уровне фаервола. Разберём, как установить и настроить fail2ban на VPS: защитить SSH от перебора, задать разумные пороги бана и убедиться, что защита реально работает. Это один из первых шагов при настройке нового сервера.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Как работает fail2ban
Принцип fail2ban прост и элегантен. Он следит за логами сервисов и ищет в них признаки атаки — например, повторяющиеся неудачные попытки входа по SSH с одного адреса. Когда число неудач за отведённое время превышает порог, fail2ban добавляет правило в фаервол, блокирующее этот адрес на заданный срок. Атакующий, перебиравший пароли, внезапно теряет доступ к серверу целиком.
Ключевые понятия — джейлы, или тюрьмы. Джейл это набор правил для конкретного сервиса: какой лог читать, по какому шаблону распознавать атаку, сколько попыток допустить и на сколько банить. Из коробки идёт джейл для SSH, но fail2ban умеет защищать и веб-серверы, почту, панели и другие сервисы. Важно понимать: fail2ban не заменяет надёжные пароли или вход по ключу, а дополняет их, отсекая массовый автоматический перебор и снижая шум в логах.
Стоит трезво оценивать, от чего fail2ban защищает, а от чего нет. Он отлично справляется с шумными автоматическими атаками, которые долбят сервер тысячами попыток с одного адреса, — именно такие составляют основную массу фонового сканирования интернета. Но против распределённой атаки, где каждая попытка идёт с нового адреса, пороговая логика бесполезна: ни один адрес не наберёт достаточно промахов, чтобы попасть под бан. Поэтому fail2ban это не панацея, а один слой обороны. Настоящую устойчивость к перебору даёт отказ от парольного входа в пользу ключей, когда подбирать становится нечего. Fail2ban же ценен тем, что резко сокращает поток мусорных попыток и чистит логи, делая реальные события заметнее.
Установка fail2ban
На Ubuntu и Debian установка сводится к одной команде. После установки сервис запускается с базовой конфигурацией, но настраивать его мы будем в отдельном файле.
apt update
apt install -y fail2ban
systemctl enable --now fail2ban
systemctl status fail2ban
Проверьте, что сервис активен. Fail2ban поставляется с основным конфигом jail.conf, но править его напрямую нельзя — при обновлении пакета он перезапишется, и ваши настройки пропадут. Правильный способ — создать собственный файл jail.local, который переопределяет нужные параметры и не затрагивается обновлениями. Это стандартная практика, которой стоит придерживаться с самого начала.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНастройка через jail.local
Создайте файл /etc/fail2ban/jail.local и задайте в нём глобальные параметры и джейл для SSH. Разберём ключевые настройки: сколько попыток допускать, за какое время их считать и на сколько банить.
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
[sshd]
enabled = true
port = ssh
Параметры означают следующее. maxretry — число неудачных попыток, после которого следует бан, здесь пять. findtime — окно времени, в котором эти попытки считаются, десять минут: пять промахов за десять минут приведут к бану. bantime — срок блокировки, здесь час. backend = systemd указывает читать журнал через systemd, что правильно для современных систем, где логи идут в journald, а не в текстовый файл. Секция sshd включает защиту SSH.
Порог банов и бэкенд логов
Пороги стоит настроить под свои задачи. Слишком строгие значения могут забанить вас самих при случайной опечатке пароля, слишком мягкие — пропустят часть перебора. Разумный компромисс для SSH — три-пять попыток за десять минут с баном на час или больше. Для повторных нарушителей полезен растущий бан: параметр bantime.increment включает увеличение срока для тех, кого банят снова и снова, так что упорные боты получают всё более длительные блокировки.
Отдельно про бэкенд. На современных Ubuntu 22.04, 24.04 и Debian логи SSH идут в systemd journal, а не в файл /var/log/auth.log. Поэтому backend = systemd — важный параметр: без него fail2ban может не находить события и молча не работать, создавая ложное ощущение защиты. Если вы используете бэкенд systemd, убедитесь, что джейл читает именно журнал. Это одна из частых причин, почему fail2ban вроде установлен, но никого не банит.
Применение настроек и перезапуск
После правки jail.local перезапустите fail2ban, чтобы настройки вступили в силу, и проверьте, что джейл SSH поднялся.
systemctl restart fail2ban
fail2ban-client status
Команда fail2ban-client status покажет список активных джейлов — среди них должен быть sshd. Если джейл активен, защита работает. Посмотреть детали конкретного джейла, включая число забаненных адресов и текущие баны, можно отдельной командой.
fail2ban-client status sshd
Этот вывод — главный индикатор работы. Он показывает, сколько попыток замечено, сколько адресов сейчас забанено и полный их список. На активно сканируемом сервере уже через несколько часов вы увидите первые баны — это подтверждает, что защита реально отсекает перебор.
Проверка, разбан и эксплуатация
Убедиться, что fail2ban действительно банит, можно по логу самого сервиса и по списку банов. Если нужно разбанить адрес — например, вы случайно забанили себя, — это делается одной командой.
fail2ban-client set sshd unbanban ВАШ_IP
Чтобы не блокировать себя, добавьте свои доверенные адреса в белый список параметром ignoreip в секции DEFAULT — они никогда не будут забанены. Это разумная страховка для администратора. В эксплуатации fail2ban не требует внимания: он работает в фоне, но раз в какое-то время полезно заглянуть в статус джейлов, чтобы оценить масштаб атак. Fail2ban — обязательный элемент защиты, но работает он в связке: настройте вход по SSH-ключам вместо пароля, включите фаервол UFW и своевременно обновляйтесь. Вместе это даёт надёжную оборону.
Развернуть защищённый сервер удобно на VPS у MAATRIX: чистый белый IP, на котором вы с первых минут выстроите fail2ban и остальную защиту, локация на выбор и оплата из России картой, СБП или криптой. Сервер поднимается за минуты — останется закрыть двери от ботов.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Fail2ban установлен, но никого не банит — почему?
Частая причина — неверный бэкенд. На современных Ubuntu и Debian логи SSH идут в systemd journal, поэтому в jail.local нужен параметр backend = systemd, иначе fail2ban не находит события.
Как не забанить самого себя?
Добавьте свои доверенные адреса в параметр ignoreip в секции DEFAULT — они попадут в белый список и никогда не будут заблокированы. Если уже забанили себя, разбаньте командой fail2ban-client set sshd unban.
Заменяет ли fail2ban вход по ключу и фаервол?
Нет, он их дополняет. Fail2ban отсекает массовый перебор паролей и снижает шум в логах, но полноценную защиту даёт связка с SSH-ключами, фаерволом UFW и обновлениями.
Как проверить, что fail2ban работает?
Командой fail2ban-client status sshd — она показывает число замеченных попыток и список забаненных адресов. На сканируемом сервере первые баны появляются уже через несколько часов.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.