Fail2ban запрещает странные IP адреса, которых нет в логах (0.0.0.4, 0.0.0.5 и т.д.)

Сервер: Nginx

Версия Fail2ban: v0.9.3

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

/etc/fail2ban/filter/expanse-bot.conf:

[Definition]
failregex = ^(\d{2}|\d{3}) \| <HOST> \| .*\"Expanse indexes the network.*

The ^(\d{2}|\d{3}) ловит порт 80 или 443. Первоначально я попробовал использовать подстановочный знак в начале строки с ^.*, но это не сработало.

Запись в журнале:

443 | 34.77.162.32 | - | [14/Mar/2021:11:08:23 -0500] | redacted-domain.com | "GET / HTTP/1.1" | 200 | 144126 | "-" | "Expanse indexes the network perimeters of our customers. If you have any questions
 or concerns, please reach out to: scaninfo@expanseinc.com" | - | 123.45.67.89:1234

В /var/log/fail2ban.log, он показывает эти странные IP адреса, которые не существуют в журнале:

2021-03-14 11:07:02,716 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 0.0.0.3
2021-03-14 11:07:03,656 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 0.0.0.4
2021-03-14 11:07:03,865 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 0.0.0.5
2021-03-14 11:07:04,075 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 0.0.0.6

Однако, затем он запрещает правильно?:

2021-03-14 11:13:48,075 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.13
2021-03-14 11:13:51,288 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.27
2021-03-14 11:15:19,595 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.16
2021-03-14 11:16:30,884 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.12
2021-03-14 11:18:14,208 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.18
2021-03-14 11:19:39,513 fail2ban.actions        [10818]: NOTICE  [expanse-bot] Ban 34.77.162.11

Конфигурация в моем /etc/fail2ban/jail.local:

[expanse-bot]
enabled = true
filter = expanse-bot
logpath = /var/log/nginx/access.log
port = http,https
maxretry = 1
findtime = 3
bantime = 86400
action = iptables-allports[name=expanse-bot]

Как только он проходит через эти странные IP адреса, он делает все как задумано. Я просто не понимаю, что означает 0.0.0.*, когда его нет в журнале? Есть ли что-то, чего мне не хватает в основной конфигурации?

1
задан 16 March 2021 в 18:26
1 ответ

Хотя я не понимаю, как это возможно с привязанным failregex , вроде вашего, я попытаюсь объяснить, как работает fail2ban.

Тег может находить хосты также по его имени хоста. Чтобы избежать этого, вы можете использовать вместо него тег (только> = v.0.10) или установить usedns = no в тюрьме.

Разве у вас действительно нет строк, начинающихся с 2–3 цифр и вертикальной черты, и текста после них? Я имею в виду какую-то многострочную строку журнала ...

Fail2ban обычно сохраняет совпадения в базе данных, поэтому вы также можете получить оттуда совпавшие строки:

sqlite3 'file:/var/lib/fail2ban/fail2ban.sqlite3?mode=ro' "select * from bans where jail = 'expanse-bot' and ip like '0.0.0.%'"

Между прочим (\ d {2} | \ d {3}) можно заменить на \ d {2,3} и универсальный . * в конце не имеет никакого значения и может быть безопасно удален ( RE не привязан к концу сообщения). Но . * в середине (перед «Expanse индексирует сеть») можно заменить на что-то более точное.

Если ваш RE изначально был отключен (и эти нечетные адреса появляются во время перезапуска) - это могут быть старые, ранее сопоставленные и заблокированные билеты (fail2ban восстанавливает активные IP-адреса после перезапуска). Просто удалите их, отключив бан вручную см. fail2ban-client --help | grep unban .

1
ответ дан 24 April 2021 в 00:49

Теги

Похожие вопросы