我有一个在 Ubuntu 18.04lts 上运行的 postfix 服务器,并启用了身份验证。
(来自 main.cf)
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtp_tls_note_starttls_offer = yes
我想配置fail2ban来阻止暴力登录的尝试。我看到这样的活动爆发:
Jul 3 06:39:33 liv-e01-pg-inmail postfix/smtpd[27594]: disconnect from unknown[194.31.98.76] ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
(我相信“auth=0/1”表示身份验证尝试失败。)
互联网上有几个fail2ban方法,但是我见过的所有方法都在日志中寻找显式的身份验证失败报告,例如来自https://bobcares.com/blog/fail2ban-postfix-sasl/:
Aug 31 22:23:52 hostxyz postfix/smtpd[38697]: warning: unknown[192.168.xx.xx]: SASL LOGIN authentication failed: authentication failure
我的主机上没有记录此类日志条目(检查了 mail.log、syslog 和 auth.log)。我也没有看到日志中报告成功的身份验证事件(但我可以看到电子邮件正在处理)。
rsyslog 使用默认配置运行:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
我在这里缺少什么?
** 更新**
我做在 mail.log 中看到成功的身份验证尝试 - 但没有登录失败的迹象。
答案1
发现发生了什么事。
首先我尝试进行实验:
- 使用错误的用户名/密码访问服务会产生预期的日志条目(但 postfix 需要几秒钟才能响应)
- 在等待 postfix 响应时终止连接仍然会产生预期的日志条目
- 输入用户名后但输入密码之前终止连接会产生预期的日志条目
因此,我然后设置 tcpdump 来侦听来自不断触发这些事件的地址之一的活动。
我发现客户端在没有先运行 STARTTLS 的情况下尝试进行身份验证,导致503 5.5.1 错误:未启用身份验证
尽管这似乎带来的风险很小,并且由于所有失败的身份验证尝试(包括这一次)都会导致包含“auth=0/[1-9]”的日志条目,因此我将其用于我的fail2ban 过滤器。