Режим наблюдения: как включить jail fail2ban и не забанить своих

4 мин чтения · обновлено 9 октября 2026

Новый jail fail2ban страшно включать сразу на бан. Фильтр для веба, который выглядел безобидно, может поймать мониторинг, вебхук платёжной системы или собственный офис, и узнаете вы об этом от клиента, который не может зайти на сайт. Безопаснее сначала посмотреть, кого jail забанил бы, ничего при этом не блокируя. Разберём, как сделать такой режим наблюдения в обычном fail2ban и как он устроен в KIPBan.

Шаг 0. Проверить фильтр на старом журнале

Первая проверка не требует включать jail вообще. Утилита fail2ban-regex прогоняет журнал через фильтр и показывает совпадения:

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-botsearch.conf --print-all-matched | less

Смотрите не на число совпадений, а на сами строки и адреса. Если среди них есть ваш мониторинг, офис или адреса партнёров, фильтр нужно поправить или добавить эти адреса в ignoreip.

Ограничение у такой проверки одно: она показывает совпавшие строки, а не забаны. Сколько адресов наберут порог maxretry за окно findtime, она не считает. Для этого и нужен режим наблюдения.

Шаг 1. Jail, который считает, но не банит

В поставке fail2ban есть действие dummy: оно ничего не блокирует, а только записывает забаненные адреса в файл. Если назначить jail только это действие, fail2ban будет работать как обычно, вести счётчики и «банить», но брандмауэр не тронет:

# /etc/fail2ban/jail.d/nginx-botsearch-watch.local
[nginx-botsearch]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/access.log
maxretry = 2
findtime = 10m
bantime  = 1h
action   = dummy
fail2ban-client reload
fail2ban-client status nginx-botsearch

Через несколько часов или сутки смотрите, кого jail «забанил»:

grep 'nginx-botsearch.*Ban ' /var/log/fail2ban.log
cat /var/run/fail2ban/fail2ban.dummy

Если в списке только сканеры и боты, переключайте jail на бан: уберите строку action = dummy, тогда сработает действие по умолчанию из banaction, и выполните fail2ban-client reload.

Как читать счётчик «забанил бы»

  • Своих адресов нет — переключайте на бан.
  • Свои есть, но их немного — добавьте их в ignoreip и понаблюдайте ещё сутки.
  • Своих много — фильтр слишком широкий. Типичные причины: правило на код 404 или 403 без уточнения, правило на пустой User-Agent или на пустой запрос. Так ходят мониторинг, балансировщики и клиенты API, банить их нельзя.
  • Никого нет — либо атак этого типа на сервер нет, либо jail смотрит не в тот журнал. Проверьте logpath командой fail2ban-client get ИМЯ logpath.

Порог и окно

Порог maxretry и окно findtime зависят от того, что ловит jail:

  • Однозначные признаки атаки: запрос к /.git/config, строка sqlmap в User-Agent, известный эксплойт в URL. Случайно так не ходят, порог 1. Сканеры почти всегда приходят с отдельного адреса и делают одну-две попытки, с порогом 5 они не попадут в бан никогда.
  • Перебор паролей: ошибиться может и живой человек, порог 3–5 за 10 минут.
  • Медленный перебор: боты, которые делают попытку раз в несколько минут, обходят окно в 10 минут. Для них подходит окно в час или сутки с тем же порогом.

Как это сделано в KIPBan

В KIPBan режим наблюдения — это режим по умолчанию для каждого нового jail:

  • Включение. Кнопкой «Включить jail» в отчёте анализа журналов или «Добавить jail» на странице сервера. Выбрать можно только шаблоны, которые подходят к найденным на сервере журналам.
  • Наблюдение. Новый jail считает, кого забанил бы, и ничего не блокирует. Счётчик виден в кабинете.
  • Переключение на бан — когда видно, что свои под него не попадают. Адрес блокируется как обычно в KIPBan: со сроками, растущими при повторах, с уведомлением в Telegram и с отправкой в общую базу.
  • Настройки. Порог от 1 до 100 срабатываний, окно от минуты до суток, до 20 jail на сервер.
  • Применение. Агент сам пишет конфигурацию fail2ban, проверяет её и перезапускает fail2ban без потери банов, всё в течение 5 минут. Если какой-то jail fail2ban не принимает, остальные применяются, а в кабинете видна ошибка.
  • Журналы. Jail берёт те же журналы, что нашёл анализ, и раз в час обновляет список. Новый сайт на сервере подхватывается сам.

Whitelist KIPBan действует и здесь: адреса из него не блокируются ни одним jail. Внесите туда офис и VPN до того, как переключать jail на бан.

Ограничения: jail из кабинета есть только для Linux с агентом 21.6 и новее, настраивается для каждого сервера отдельно, а выбирать можно только из каталога шаблонов KIPBan. Свои jail в jail.local агент, как и раньше, подключает к KIPBan сам.

Вопросы

Как включить jail fail2ban без блокировки?

Назначьте jail только действие dummy: action = dummy. fail2ban будет вести счётчики и записывать «забаненные» адреса в журнал и в файл /var/run/fail2ban/fail2ban.dummy, но брандмауэр не тронет.

Как посмотреть, какие строки ловит фильтр fail2ban?

Командой fail2ban-regex с ключом --print-all-matched: она прогоняет журнал через фильтр и выводит все совпавшие строки. Ничего при этом не блокируется.

Какой maxretry ставить для сканеров?

Для однозначных признаков сканирования, вроде запроса к .git/config или User-Agent sqlmap, порог 1. Сканеры обычно делают с одного адреса одну-две попытки и до порога 5 не доходят.