如何在本地fail2ban过滤器定义中“添加”规则?


10

我已经在我控制的服务器上安装了Debian打包的fail2ban。由于我以前有一些failregexes,因此将它们放到本地过滤器定义文件中,以便也将它们考虑在内。因此,我最终遇到了/etc/fail2ban/filter.d/sshd.conf和/etc/fail2ban/filter.d/sshd.local。建议您以这种方式进行设置,并且看起来确实可以正常工作。

但是,在.local文件中,实际上是从.conf文件中替换了failregexes的整个列表。该文档似乎没有表明还有其他方法可以使用,为了使它正常工作,我只是将发行版本提供的.conf文件复制到.local文件中,并做了一些补充。

如果我可以简单地修改列表,并受益于上游和Debian维护者的工作,以便及时了解分发维护的日志条目过滤器正则表达式的更改,那将是非常不错的。

我能想到的唯一真正的解决方法是实际创建两个监狱,一个使用发行版提供的配置,另一个使用我自己的。这似乎具有(相当显着)的缺点,即它们被视为独立的监狱(您期望通过这样的设置)。

当然,我不是唯一想要将我自己的failregexes添加到一个已经存在的集合中的人,而维护麻烦最少。

是否可以通过站点本地文件或主机本地文件来修改 fail2ban过滤器定义中的failregex和ignoreregex列表,而无需对相应的全局文件或发行版提供的文件进行任何更改?如果是,那该怎么办呢?

Answers:


4

让我们看一下/etc/fail2ban/filter.d/sshd.conf文件的一部分。

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

因此,您可能认为您可以在此处添加:,after = sshd.local并使其读取这样的文件;然后,其中的所有设置都会覆盖此文件中的设置。

而且有效。除非您不能简单地修改条目failregex或其他指令;您只能更换它们。

你的感觉是正确的。这绝对是fail2ban配置文件格式的缺点。我会向开发人员投诉。


2

我有相同的要求,并将其发布为问题。作者似乎正在研究它:https : //github.com/fail2ban/fail2ban/issues/867

合并后,它应该像这样工作(此示例由开发人员Serg Brester提供):

# filter test.conf:
[Definition]
failregex = failure test 1 (filter.d/test.conf) <HOST>

# filter test.local:
[Definition]
failregex = %(known/failregex)s
            failure test 2 (filter.d/test.local) <HOST>

和正则表达式可以以相同的方式添加到监狱中...

# jail.local
[test3known-interp]
filter=test
enabled = true
failregex = %(known/failregex)s
            failure test 3 (jail.local) <HOST>

由于以下原因:

$ bin/fail2ban-client -d -c config | grep addfail
['set', 'test3known-interp', 'addfailregex', 'failure test 1 (filter.d/test.conf)]
['set', 'test3known-interp', 'addfailregex', 'failure test 2 (filter.d/test.local)]
['set', 'test3known-interp', 'addfailregex', 'failure test 3 (jail.local) <HOST>']
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.