Fail2ban 禁止日志中没有的奇数 IP 地址(0.0.0.4、0.0.0.5 等)

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.*

捕获^(\d{2}|\d{3})端口 80 或 443。我最初尝试在行首使用通配符^.*<HOST>,但是没有用。

日志条目:

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: [email protected]" | - | 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

尽管我不明白如何通过failregex像你这样的锚定来实现这一点,但我会尝试在这里解释 fail2ban 的工作原理。

标签<HOST>也可以通过主机名找到主机。为了避免这种情况,你可以使用标签<ADDR>(>= v.0.10 以上)或设置usedns = nojail。

你真的没有几行以 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},末尾的 catch-all.*完全无关紧要,可以安全删除(RE 未固定在消息末尾)。但.*中间(在“Expanse 索引网络之前”)可以用更精确的内容替换。

如果您的 RE 最初未锚定(并且这些奇怪的地址在重启时出现) - 这可能是旧的、之前匹配和被禁止的票证(fail2ban 在重启后恢复活动 IP)。只需通过手动取消禁止来删除它们,请参阅fail2ban-client --help | grep unban

相关内容