我已经在我控制的服务器上安装了 Debian 打包的 fail2ban。由于我之前有一些失败的正则表达式,因此我将它们放入本地过滤器定义文件中,以便它们也将被考虑。因此,我最终得到例如 /etc/fail2ban/filter.d/sshd.conf 和 /etc/fail2ban/filter.d/sshd.local。这是建议的设置方式,它似乎工作得很好。
但是,在 .local 文件中,我实际上是在替换.conf 文件中的整个失败正则表达式列表。该文档似乎没有表明有任何其他方法可以做到这一点,为了让它工作,我只是将分发提供的 .conf 文件复制到一个 .local 文件并进行了一些添加。
如果我可以简单地修改列表,那将非常好,这将受益于上游和 Debian 维护人员的工作,以跟上对分发维护的日志条目过滤器正则表达式的更改。
我能想到的唯一真正的解决方法是实际创建两个监狱,一个使用分发提供的配置,一个使用我自己的。这似乎具有(相当重要的)缺点,即它们被视为独立的监狱(您会期望这样的设置)。
当然,我不可能是唯一一个想将我自己的一些失败正则表达式添加到已经存在的集合中的人,而维护麻烦最少。
是否可以通过站点本地或主机本地文件修改fail2ban过滤器定义中的failregex和ignoreregex列表,而不对相应的全局或分发提供的文件进行任何更改?如果是,那该怎么做?
让我们看一下
/etc/fail2ban/filter.d/sshd.conf
文件的一部分。所以你可能认为你可以在这里添加:
after = sshd.local
并让它读取这样的文件;然后,其中的任何设置都会覆盖此文件中的设置。它有效。除非您不能简单地修改条目
failregex
或任何其他指令;你只能更换它们。你的感觉是对的。这绝对是fail2ban 配置文件格式的一个缺点。我会向开发商投诉。
我有相同的要求并将其作为问题发布。作者似乎正在研究它:https ://github.com/fail2ban/fail2ban/issues/867 。
合并后,它应该像这样工作(此示例由开发人员 Serg Brester 提供):
并且正则表达式可以以相同的方式添加到监狱中......
结果: