Fail2Ban 的自定义过滤器

loc*_*ron 5 fail2ban

我已经安装了 fail2ban 并且我正在尝试将其设置为阻止出现在系统日志中的特定消息中的 IP 地址。系统日志中的消息是:

racoon: ERROR: Invalid exchange type 243 from 103.14.62.181[11950]

通常每条消息都有不同的 IP 地址,括号中的数字(端口?)也不同。看起来我可以通过执行以下操作来创建自定义过滤器:

racoon: ERROR: Invalid exchange type 243 from <HOST>

但我的问题是,我可以停在那里并让fail2ban做它的事情,还是我需要指定这样的东西:

racoon: ERROR: Invalid exchange type 243 from <HOST>[IDONTKNOWWHATGOESHERE]

如果我需要指定类似上面的内容,应该出现在括号中的有效通配符是什么?有关 OpenVPN 的 fail2ban 文档(最接近的示例)显示了这一点:

http://www.fail2ban.org/wiki/index.php/OpenVPN

* <HOST>:[0-9]{4,5} Connection reset, restarting \[[0-9]{1,2}\]

看起来他们使用 [0-9]{4,5} 作为端口号的通配符。这在我的情况下是否有效?

我是否完全偏离了我的过滤器示例?

这里的最终目标是将任何因 243 交换错误而失败的内容添加到带有 DROP 标志的 IP 表中。我可能有更多关于我的过滤器的问题,以及在我得到最初的问题回答后没有的问题。

use*_*517 5

是的,你可以停在那里,fail2ban 会做到这一点。您可以使用fail2ban-regex(1)实用程序对此进行测试。总结是

fail2ban-regex [OPTIONS] <LOG> <REGEX> [IGNOREREGEX]
Run Code Online (Sandbox Code Playgroud)

所以使用你所做的工作(请注意,我必须在你提供的日志条目的开头添加一个日期时间,否则它会抱怨。)

fail2ban-regex "Mar  3 07:36:19 racoon: ERROR: Invalid exchange type 243 from 103.14.62.181[11950]" "racoon: ERROR: Invalid exchange type 243 from <HOST>"

Running tests
=============

Use regex line : racoon: ERROR: Invalid exchange type 243 from <HOST>
Use single line: Mar  3 07:36:19 racoon: ERROR: Invalid exchange ty...

Matched time template MONTH Day Hour:Minute:Second
Got time using template MONTH Day Hour:Minute:Second

Results
=======

Failregex: 1 total
|- #) [# of hits] regular expression
|  1) [1] racoon: ERROR: Invalid exchange type 243 from <HOST>
`-

Ignoreregex: 0 total

Summary
=======

Addresses found:
[1]
    103.14.62.181 (Mon Mar 03 07:36:19 2014)

Date template hits:
2 hit(s): MONTH Day Hour:Minute:Second

Success, the total number of match is 1
Run Code Online (Sandbox Code Playgroud)