我已经安装了 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 交换错误的操作添加到 IP 表中,并带有 DROP 标志。在得到初始问题的答案后,我可能会对我的过滤器和其他问题产生更多疑问。
答案1
是的,你可以停在那里,fail2ban 会执行它的工作。你可以使用fail2ban-regex(1)效用。摘要如下:
fail2ban-regex [OPTIONS] <LOG> <REGEX> [IGNOREREGEX]
因此使用您已完成的工作(请注意,我必须在您提供的日志条目的开头添加日期时间,否则它会抱怨。)
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