Перейти к содержимому

О сервисе

Fail2ban уже формировал HTML-отчёты, но по ним было трудно быстро ответить на вопросы: «Какой jail заметил этот IP?» и «Блокировка ещё действует?».

Поэтому я сохранил прежний сбор данных и добавил отдельный API для поиска. HTML-отчёты при этом никуда не исчезли.

Архитектура

Путь от записи Fail2ban до ответа публичного API выглядит так:

Fail2ban (FreeBSD / PF, Linux / nftables)
  → f2b-report: HTML + JSON
  → submission queue: HTTPS, retries, heartbeat when nothing changed
  → f2b-ingest Worker: input validation, normalization, diff application
  → Cloudflare D1: per-jail collection state and IP observation history
  → f2b-api Worker: public GET API and this static site

f2b-ingest принимает и проверяет снимки состояния, а f2b-api отвечает на GET-запросы и раздаёт сайт Hugo. Они используют одну базу D1, но публичный API не может принимать новые записи или управлять PF и nftables. Что именно блокировать, решает Fail2ban на каждом исходном сервере.

Смысл этого сайта — не только показать записи, но и объяснить, по каким правилам они появились.

Языки

Сайт доступен на японском, английском, русском языках, а также на упрощённом и традиционном китайском. Запросы к корню направляются в /ja/, /en/, /ru/, /zh-cn/ или /zh-tw/ в зависимости от сохранённой настройки, языка браузера и страны подключения. Выбор языка в навигационной панели сохраняет предпочтение в cookie.

Существующие HTML-отчёты продолжают формироваться. Этот сайт описывает API и публичные политики и ссылается на сами отчёты.

Исходный код

  • f2b-api: API, спецификация OpenAPI и этот сайт Hugo.
  • f2b-report: разбор состояния Fail2ban и вывод HTML/JSON.

Содержимое Hugo и конфигурация темы находятся в f2b-api/site/. Сборка сайта и логика доставки Worker управляются в одном репозитории.

Лицензия

Исходный код f2b-api и оригинальная документация распространяются по лицензии BSD 2-Clause. Copyright (c) 2026, haturatu

Поиск по сайту использует FlexSearch, распространяемый по лицензии Apache 2.0. Текст лицензии и уведомление об авторских правах сохраняются в поставляемых ресурсах.