Fail2Ban针对Dovecot的防护配置失效,请求排查建议
我在Linux Mint上已经配置了UFW防火墙且运行正常,同时部署了Dovecot邮件服务,但最近发现有大量的登录失败尝试。于是我配置了Fail2Ban来拦截这些恶意请求,具体配置如下:
我的Fail2Ban Jail配置
[dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp] logpath = /var/log/ maxretry = 2 findtime = 1200 bantime = 1200
我的Filter配置(路径:/etc/fail2ban/filter.d/dovecot-pop2imap.conf)
[Definition] failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=`<HOST>`
但现在登录失败的尝试依然在持续,有没有大佬能给点排查建议?
下面是几个实用的排查方向,你可以一步步验证:
检查Filter文件名与Jail配置的匹配性
你在Jail里指定的filter是dovecot-pop3imap,但实际的filter文件名是dovecot-pop2imap.conf(注意是pop2不是pop3),这会导致Fail2Ban找不到对应的过滤规则,自然无法触发封禁。赶紧把filter文件名改成dovecot-pop3imap.conf,或者把Jail里的filter字段改成dovecot-pop2imap,确保两者名称完全一致。修正日志路径配置
你设置的logpath = /var/log/是一个目录路径,Fail2Ban需要指向具体的日志文件。Dovecot的日志通常存放在/var/log/mail.log或者/var/log/dovecot.log,你可以先查看系统里实际的日志位置(比如用tail /var/log/mail.log看看有没有Dovecot的日志条目),然后把logpath改成具体的文件路径,比如/var/log/mail.log。测试正则表达式的匹配有效性
用Fail2Ban自带的fail2ban-regex工具验证你的规则是否能匹配实际的登录失败日志,执行以下命令:fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/dovecot-pop3imap.conf查看输出中的匹配统计,如果匹配数为0,说明正则表达式和实际日志格式不匹配。你可以先提取几条真实的登录失败日志条目,再针对性调整
failregex的内容,比如有些系统里Dovecot日志的rip格式可能是rip=<HOST>而不是带反引号的形式,这时候就需要修正正则里的对应部分。检查Fail2Ban服务运行状态
先重启Fail2Ban服务,然后查看它的运行日志,排查是否有配置错误:sudo systemctl restart fail2ban sudo tail -f /var/log/fail2ban.log如果日志里出现“找不到filter文件”“日志文件无法访问”之类的报错,按照提示修复即可。
验证UFW与Fail2Ban的规则兼容性
虽然UFW运行正常,但Fail2Ban默认操作iptables规则,可能存在规则冲突的情况。你可以检查iptables中是否存在Fail2Ban添加的Dovecot封禁规则:sudo iptables -L | grep dovecot如果看不到相关规则,可以尝试把Jail里的
action改成适配UFW的类型,比如ufw[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp],然后重启Fail2Ban再测试。
备注:内容来源于stack exchange,提问作者Athon

