-1

我需要一个 fail2ban 过滤器的帮助,它应该与 openHAB 中的失败登录尝试匹配。

06-Apr.-2021 18:49:52.726 [WARN ] [core.io.http.auth.internal.AbstractAuthPageServlet] - Authentication failed: Wrong password for user UserThatFailedLogin

06-Apr.-2021 19:41:11.456 [WARN ] [core.io.http.auth.internal.AbstractAuthPageServlet] - Authentication failed: User not found: UserThatFailedLogin

这些都是 A) 错误密码和 B) 不存在用户的日志条目示例。

我玩过https://regex101.com并想出了以下 RegEx(我的第一个接触点);

(\bAuthentication failed: Wrong password\b|\bAuthentication failed: User not found\b)

虽然它在 regex101-tool 中匹配上述示例日志条目,但不幸的是,我在 fail2ban 中没有看到任何匹配项。

如果您能在这里帮助我,将不胜感激,在此先感谢您!

4

1 回答 1

0

你到底想禁止什么?

首先,您示例中的两条消息都不包含任何要被禁止的标识符 - 既不是 IP,也不是除用户名之外的其他东西。可以禁止所有内容,但您肯定不会禁止用户名。

然后你需要提供一个 custom datepattern,它会像下面这样(只是我不确定月份标记是否总是匹配(因为它.后面有)。

因此,假设我们在 之后有一个 IP 地址failed,如下所示:

06-Apr.-2021 18:49:52.726 [WARN ] [core.io.http.auth.internal.AbstractAuthPageServlet] - Authentication failed from 192.0.2.1: Wrong password for user UserThatFailedLogin
06-Apr.-2021 19:41:11.456 [WARN ] [core.io.http.auth.internal.AbstractAuthPageServlet] - Authentication failed from 192.0.2.1: User not found: UserThatFailedLogin

您的过滤器可能如下所示:

[Definition]
datepattern = %%d-%%b\.-%%Y %%H:%%M:%%S\.%%f
failregex = ^\s*\[WARN\s*\] \[core.io.http.auth.internal.AbstractAuthPageServlet\] - Authentication failed from <ADDR>: (?:Wrong password for user|User not found:) <F-USER>\S+</F-USER>

但是没有任何标识符可以禁止,嗯...

于 2021-04-09T16:43:53.807 回答