Разработка 4 мин чтения

Fail2Ban UI: одна панель для банов на нескольких серверах и её риски

Fail2Ban UI это веб-панель над обычным Fail2Ban для нескольких Linux-серверов: блокировки, поиск и разбан IP, jail и фильтры, уведомления. Разобрал лицензию AGPL-3.0, три способа подключения хостов, вход только через OIDC и почему панель нельзя выставлять в интернет.

Fail2Banбезопасность серверовopen sourceSSH
Коротко. Fail2Ban UI (репозиторий swissmakers/fail2ban-ui, AGPL-3.0, Go, около 370 звёзд) это веб-панель над обычным Fail2Ban. Баны по-прежнему решает демон на каждом сервере, а панель собирает блокировки со всех хостов, ищет IP, снимает бан, правит jail и фильтры и шлёт уведомления. Хосты подключаются через сокет, SSH или агента. Войти можно только через OIDC, пароля я не нашёл, HTTPS панель сама не делает. Панель правит конфигурацию, которую Fail2Ban исполняет от root, поэтому в открытый интернет её выставлять нельзя. Проект молодой, ведёт его в основном один аккаунт, документация на английском. Сам я его не запускал.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Защита серверов и настройка Fail2Ban под ключ

Пять серверов и один заблокированный сотрудник

Условный пример. У вас пять VPS: два сайта, бот, CRM и база. Сотрудник пять раз ошибся паролем в админке и попал в бан, на каком сервере, неизвестно. Остаётся пять SSH-сессий и команда fail2ban-client status по каждой «тюрьме», а в логах тем временем тысячи попыток подбора пароля SSH.

Ключи вместо паролей и файрвол я описывал в статье про свой VPS с нуля. Тяжёлый вариант с анализом логов разобран в статье про Wazuh. Fail2Ban UI стоит между ними и собирает работу Fail2Ban в одно окно.

Что за проект и что я проверил

Проверял 18.10.2026 по репозиторию и документации. Описание на GitHub совпадает с постом. Файл LICENSE содержит GNU AGPL версии 3, по README платной редакции нет.

Репозиторий создан 25 января 2025 года, звёзд около 373, форков 41, не архивирован. Последний релиз v1.6.1 вышел 11 октября 2026, тогда же был последний коммит в ветке dev, она здесь основная. Проект ведёт компания Swissmakers GmbH «в свободное время», но по коммитам это один аккаунт: около 124 из 147, у остальных четырнадцати участников от одного до четырёх. Если он потеряет интерес, чинить будет некому. Документация на английском, среди восьми переводов интерфейса русского нет.

Как панель управляет хостами

Подключения три. Локальное: панель стоит рядом с Fail2Ban, работает с сокетом /var/run/fail2ban/fail2ban.sock и файлами в /etc/fail2ban. SSH: панель заходит на удалённый хост по ключу под отдельной учётной записью и вызывает sudo fail2ban-client. Документация просит sudo минимум на fail2ban-client * и systemctl restart fail2ban, запись в /etc/fail2ban через ACL, на хосте нужны jq и curl. Агент: маленький HTTP-сервис fail2ban-ui-agent, порт 9700 по умолчанию, доступ по токену. Репозиторий агента отдельный, AGPL-3.0, 5 звёзд, создан в апреле 2026, и его README просит считать агента ориентированным на разработку, пока вы не защитите секреты, TLS и сеть.

Обратная сторона: на каждом хосте панель ставит действие Fail2Ban, которое при бане шлёт на панель POST с общим секретом. Если хост не может достучаться до панели из-за NAT, включается обратный SSH-туннель. Постоянной очереди на хосте нет, при долгом простое события могут потеряться. Раз в 45 секунд панель проверяет серверы и показывает Healthy, Degraded или Down. Перед перезагрузкой Fail2Ban она запускает fail2ban-client -t и хранит копию прежнего файла.

Вход, HTTPS, что хранится и как приходят уведомления

Встроенного логина с паролем я не нашёл. Есть OIDC (Keycloak, Authentik, Pocket-ID) и роли admin и support. В коде pkg/web/auth.go при выключенном OIDC запрос проходит без проверки, то есть любой, кто достучался до порта, получает панель целиком. Сессия лежит в зашифрованном cookie, выход не отзывает украденный токен до конца срока, по умолчанию это час.

Сервер отдаёт обычный HTTP на порту 8080 и по умолчанию слушает все адреса. TLS должен делать reverse proxy, примеры лежат в docs/reverse-proxy.md. Команда запуска из README использует --network=host, так что на VPS без файрвола порт окажется открыт всему интернету.

Хранится всё в SQLite в каталоге /config: события банов (по умолчанию 180 дней), список серверов, настройки, постоянные блокировки. Там же секреты: общий секрет колбэков, пароль SMTP, токены агентов, API-ключи. SSH-ключ в контейнере лежит в /config/.ssh. Страны по IP встроенный провайдер узнаёт через ip-api.com по незашифрованному HTTP и отправляет туда каждый забаненный адрес. Для приватности документация советует локальную базу MaxMind.

Уведомления: почта по SMTP, webhook и Elasticsearch. В Telegram напрямую слать нельзя, нужен посредник вроде n8n или своего маленького сервиса, пример есть в docs/webhooks.md. ntfy принимает webhook без посредника.

Чем панель опасна и чего в ней нет

Панель, которая банит, разбанивает и правит конфигурацию на всех серверах сразу, становится одной точкой входа. Документация сама говорит, что значение адреса колбэка попадает в команду, которую Fail2Ban запускает от root. По моей оценке (в документации этого нет, тестов не было), доступ к панели равен контролю над защитой всех хостов, а SSH-ключи к ним лежат в ней же. Захватив панель, можно заблокировать ваших сотрудников и клиентов или снять бан со своего адреса.

Fail2Ban сам по себе не заменяет ключи SSH и закрытые порты. В README самого Fail2Ban сказано, что он снижает число неудачных попыток входа, но риск слабой аутентификации не убирает, и советуют двухфакторный вход или ключи. Порядок такой: ключи, файрвол, потом Fail2Ban, потом панель.

CrowdSec по его README (лицензия MIT) читает те же логи, отделяет обнаружение от блокировки и добавляет общий список адресов, которые заблокировали другие пользователи. В деле я его не сравнивал. Fail2Ban UI имеет смысл, когда Fail2Ban уже стоит. Для двух-трёх серверов панель может оказаться лишней.

Что можно сделать уже сейчас

Проверьте на каждом сервере, что вход по паролю в SSH выключен, ключ работает и файрвол пропускает только нужные порты.

Поставьте Fail2Ban с правилами для sshd и для ваших сайтов. Свой адрес добавьте в ignoreip, чтобы не запереть себя.

Если серверов больше трёх, поднимите панель на отдельной машине в пробном режиме: BIND_ADDRESS=127.0.0.1, доступ по VPN или через прокси с OIDC, один сервер по SSH под учётной записью с узкими sudo-правилами. Закрытый доступ к внутренним сервисам разобран в статье про Pangolin. Проверьте три сценария: найти IP, снять бан, получить уведомление. Образы есть на Docker Hub и ghcr.io, доступность из России уточняйте.

Правила для любой панели, которая запускает команды на сервере, те же, что в разборе веб-панели для cron. Fail2Ban, правила, закрытую панель и уведомления я настраиваю в рамках услуги по кибербезопасности.

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

Заменяет ли панель Fail2Ban?

Нет, Fail2Ban должен стоять на каждом сервере, и решение о бане принимает он. Панель только управляет им и показывает события.

Можно ли открыть панель в интернет, если включить OIDC?

Документация проекта этого не советует и при OIDC. Она рекомендует VPN или прокси со списком разрешённых адресов и TLS.

Что будет с защитой, если панель упала?

Fail2Ban на хостах продолжит банить, потому что решение принимает демон на самом хосте. События за время простоя могут не попасть в историю, об этом сказано в документации.

Коротко о главном

Fail2Ban UI под AGPL-3.0 собирает работу Fail2Ban с нескольких серверов в одно окно: блокировки, поиск и разбан IP, jail и фильтры, уведомления. Платить не нужно. Входа по паролю нет, а доступ к панели равен контролю над всеми серверами.

Хотите, чтобы я поставил Fail2Ban на ваши серверы, настроил правила и развернул панель за VPN? Напишите мне в Telegram кодовое слово «ЗАПРЕТ».

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх