Рейтинг:0

fail2ban не блокирует «совпадающие» IP-адреса из журнала vsftp

флаг in

Использование fail2ban для защиты входа в vsftp:

тюрьма.местный

[всфтпд]
включено = верно
бантайм = 600
найти время = 5000
максимальная попытка = 1
порт = ftp, ftp-данные
действие = iptables-мультипорт
путь к журналу = /var/log/vsftpd/vsftpd.log

Regex соответствует, как вы можете видеть здесь:

fail2ban-regex /var/log/vsftpd/vsftpd.log /etc/fail2ban/filter.d/vsftpd.conf --print-all-matched

Запуск тестов
==============

Используйте файл фильтра failregex: vsftpd, на основе каталога: /etc/fail2ban
Использовать шаблон даты: {^LN-BEG}: детекторы по умолчанию
Используйте файл журнала: /var/log/vsftpd/vsftpd.log
Используйте кодировку: UTF-8


Результаты
=======

Failregex: всего 23
|- #) [количество совпадений] регулярное выражение
| 2) [23] ^ \[pid \d+\] \[[^\]]+\] FAIL LOGIN: Client "<HOST>"(?:\s*$|,)
`-

Игнорировать регулярное выражение: всего 0

Дата показа шаблона:
|- [количество просмотров] формат даты
| [385] {^LN-BEG}(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)?
`-

Строки: 385 строк, 0 проигнорировано, 23 совпало, 362 пропущено
[обработано за 0,03 секунды]

|- Совпадающие строки:
| Ср, 9 марта, 08:36:06 2022 [pid 2619415] [bla] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:36:13 2022 [pid 2619420] [bla] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:36:18 2022 [pid 2619422] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:36:30 2022 [pid 2619425] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:36:37 2022 [pid 2619508] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:36:45 2022 [pid 2619511] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:36:53 2022 [pid 2619514] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:47:39 2022 [pid 2620744] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:47:47 2022 [pid 2620746] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:47:55 2022 [pid 2620748] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:48:03 2022 [pid 2620763] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:48:12 2022 [pid 2620767] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:48:12 2022 [pid 2620766] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:55:07 2022 [pid 2621558] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:55:15 2022 [pid 2621560] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 08:55:23 2022 [pid 2621562] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:55:23 2022 [pid 2621564] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 08:55:26 2022 [pid 2621566] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 09:36:56 2022 [pid 2627379] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 09:37:48 2022 [pid 2627498] [blaas] FAIL LOGIN: Client "some_IP"
| Ср, 9 марта, 09:37:57 2022 [pid 2627500] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 09:37:57 2022 [pid 2627501] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
| Ср, 9 марта, 09:37:58 2022 [pid 2627504] [blaas] НЕУДАЧА ВХОДА: Клиент "some_IP"
`-
Пропущенные строки: слишком много для печати. Используйте --print-all-missed для печати всех 362 строк

Проверка с помощью fail2ban cli/fail2ban-client статуса vsftpd

Статус для джейла: vsftpd
|- Фильтр
| |- В настоящее время ошибка: 0
| |- Всего неудачно: 0
| `- Журнал соответствует:
`- Действия
   |- Сейчас забанено: 0
   |- Всего забанено: 0
   `- Список запрещенных IP:

Любая идея, что может привести к тому, что «совпадающие» IP-адреса не будут запрещены / как отлаживать дальше?

Рейтинг:0
флаг il

Любая идея, что может привести к тому, что «совпадающие» IP-адреса не будут запрещены / как отлаживать дальше?

Неправильный серверная часть (если это системад по умолчанию в вашей системе)? Попробуйте указать бэкенд = авто для этой тюрьмы (он автоматически выберет серверную часть мониторинга, связанную с файлами).

Другие возможные причины см. https://github.com/fail2ban/fail2ban/wiki/Как-fail2ban-работает

Рейтинг:0
флаг za

Почему вы решили, что это не запрет? Дело в том, что это не запрещено в настоящее время не значит, что тюрьма не работает.

Я вижу в вашем журнале определенный шаблон для тюрьмы блаас: шесть последовательных попыток, затем некоторая задержка (около 10 минут), потом снова ровно шесть попыток, потом некоторая задержка, потом снова шесть попыток...

Это можно интерпретировать двояко:

  1. Банит на 10 минут после 6 попыток. Потом снимает запрет.

  2. Вы столкнулись с умная бот, который знает о типичном поведении fail2ban и умеет определять настройки джейла (сколько попыток, в какой период времени срабатывает бан). Такие боты существуют достаточно давно. Так что, вероятно, он просто настроил себя, чтобы не срабатывать действие запрета.

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

Всегда читать лог-файл (возможно /var/log/fail2ban.log), а не помощник сопоставления регулярных выражений. Этот помощник предназначен именно для отладки совпадений, которые вызывают попадание. Отладка поведения бана не поможет, если средства сопоставления регулярных выражений уже отлажены и работают правильно.


Я перечитал ваш вопрос и заметил определение джейла: время бана действительно установлено на 10 минут. Если я смог это определить не заглядывая в настройки, то почему боты не могут?

sebres avatar
флаг il
Потому что он даже не находит никаких сбоев (связанных со статусом «Текущий сбой: 0» и «Всего сбой: 0» означают, что он ничего не находит)... И как он может вообще, если, опять же, связанный со статусом , из-за «соответствия журналов» тюрьма, похоже, использует бэкэнд «systemd», который никогда не будет отслеживать файлы журналов (он отслеживает только журнал systemd) ... Также обратите внимание на мой ответ выше о параметре «backend».
Nikita Kipriyanov avatar
флаг za
Где вы увидели, что бэкенд — это `systemd`? В выдержке из конфигурации об этом ничего не сказано. Тюрьма настроена с точным путем к файлу журнала. Это будет глупо по умолчанию, не так ли? Я действительно ожидаю увидеть там по умолчанию `auto`, и это есть во всех моих системах.
sebres avatar
флаг il
Потому что в противном случае `fail2ban-client status` будет показывать `Список файлов` с именем пути к журналу, а не `Соответствия журнала`. Настройка `logpath` не решает этого (во многих преднастроенных джейлах он тоже есть), это делает только `backend`. Просто поверьте мне, я разрабатываю fail2ban более 10 лет.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.