Fail2Ban-Posfix-SASL 不起作用

Fail2Ban-Posfix-SASL 不起作用

我遇到一个问题,我的 fail2ban 不会禁止针对我的 postfix 的 sasl 身份验证。

这是来自 /var/log/syslog 的示例日志条目:

Jul 31 13:42:21 v50428 postfix/smtps/smtpd[635398]: warning: xxxx.de[xx.xx.xx.98]: SASL LOGIN authentication failed: authentication failure

这是 fail2ban 中的 Jail 过滤器“postfix-sasl”:

 [Definition]
_daemon = postfix/(submission/)?smtp(d|s)
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL ((?i)LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/:]*={0,2})?\s*$
ignoreregex = authentication failed: Connection lost to authentication server$

[INCLUDES]
before = common.conf

[Init]
journalmatch = _SYSTEMD_UNIT=postfix.service
ignoreregex = 

这是监狱:

[postfix-sasl]
enabled = true
filter = postfix-sasl
action = iptables-multiport[name=postfix-sasl, port="smtp,25,465,submission,imap3,imaps,pop3,pop3s"]
sendmail[dest="[email protected]", sender="[email protected]", sendername="Fail2Ban", name="apache"]
logpath = /var/log/syslog
maxretry = 3

这些是允许 sasl 身份验证的两种后缀服务类型:

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
submission inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission

答案1

我没有使用 postfix-sasl 过滤器,但根据我所看到的情况,问题似乎是由_daemon错误的指令引起的(对于您提供的日志条目),因此 failregex 不会匹配任何内容。

将指令替换_daemon为以下内容(取自 fail2ban 的当前库存后缀筛选):

_daemon = postfix(-\w+)?/\w+(?:/smtp[ds])?

另外,删除该部分之前的空格[Definition],以防复制粘贴时出现拼写错误。

如果你愿意的话可以测试一下正则表达式:

fail2ban-regex <log-file> /etc/fail2ban/filter.d/postfix-sasl.conf

重新加载 fail2ban 并尝试一下。

相关内容