fail2ban:多行“failregex”不起作用

fail2ban:多行“failregex”不起作用

fail2ban我在基于 debian-8 的主机上使用。我有几个单独的 jail 用于检测 SMTP 服务器上的攻击,我想将它们合并为一个 jail。每个 jail 都使用一个带有一行的过滤器failregex,这对我来说可以检测到这些攻击。但是,当我尝试将它们合并为一个 jail 和一个带有多行的过滤器时failregex,不再检测到攻击。

以下是目前正在运行的多重监狱多重过滤器设置的摘要:

## from the 'postfixauth.conf' filter for the 'postfixauth' jail ...
failregex = ^.*lost connection after AUTH from unknown\[<HOST>\].*$

## from the 'postfixconcur.conf' filter for the 'postfixconcur' jail ...
failregex = ^.*concurrency limit exceeded:.*from unknown\[<HOST>\].*$

## from the 'postfixconnect.conf' filter for the 'postfixconnect' jail ...
failregex = ^.*(timeout|lost connection) after (RSET|AUTH|CONNECT|EHLO|STARTTLS) from unknown\[<HOST>\].*$

## from the 'postfixresolve.conf' filter for the 'postfixresolve' jail ...
failregex = ^.*hostname \S+ does not resolve to address +<HOST>.*$

## from the 'postfixsasl.conf' filter for the 'postfixsasl' jail ...
failregex = ^.*unknown\[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed.*$

## from the 'postfixssl.conf' filter for the 'postfixssl' jail ...
failregex = ^.*SSL_accept error from unknown\[<HOST>\].*$

但是,如果我将这六个单独的监狱替换为一个监狱,并failregex在其过滤文件中包含以下内容,它似乎无法阻止这些攻击:

## from the 'postfix.conf' filter for the 'postfix' jail ...
failregex = ^.*lost connection after AUTH from unknown\[<HOST>\].*$
            ^.*concurrency limit exceeded:.*from unknown\[<HOST>\].*$
            ^.*(timeout|lost connection) after (RSET|AUTH|CONNECT|EHLO|STARTTLS) from unknown\[<HOST>\].*$
            ^.*hostname \S+ does not resolve to address +<HOST>.*$
            ^.*unknown\[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed.*$
            ^.*SSL_accept error from unknown\[<HOST>\].*$

我的理解(可能有误)是多failregex行是合法的,并且它们是通过“或”操作连接在一起的;IE,如果日志文件中的任何行与一个或多个正则表达式匹配,则该行被视为匹配并发出“失败”信号。

假设我的理解是正确的,有人能看出我这样做有什么问题吗?

先感谢您。

答案1

事实证明,我遇到的问题与将多个过滤器换成带有多条failregex线路的单个过滤器无关。我的机器上也出现了一个不相关的问题,这个问题大约在同一时间发生,我最初忽略了它,并误以为是过滤fail2ban器出了问题。

在修复不相关的问题并重新启动所有内容后,我上面展示的多行正则表达式确实有效。

更新:更详细地说,问题与 无关fail2ban。就在我将其更改为多行正则表达式的同时,我意外地运行了/etc/init.d/iptables off而不是/etc/init.d/iptables stop。这导致iptables重启后无法启动,并且我的所有fail2ban规则都不起作用。一旦我意识到这个错误并正确启动iptables,多行正则表达式就可以正常工作了。

相关内容