提醒:本文最后更新于 2871 天前,文中所描述的信息可能已发生改变,请仔细核实。
分享一个Fail2ban过滤器,它可以对那些针对Postfix的恶意扫描及攻击,进行自动加入黑名单。
据我分析邮件日志,主要是有一些恶意访客和安全软件,尝试relay测试,看看能不能利用你的服务器发送邮件;还有就是端口扫描,经常有一些超时连接。
针对此,我对那些无法通过认证的,尝试连接后无动作超时的,还有一些故意浪费资源(helo之后无动作),做了策略。24小时内同IP,2次任意匹配规则,一周内无法访问服务器。
使用很简单,编辑/etc/fail2ban/jail.conf
,添加如下配置:
[postfix-ddos] enabled = true filter = postfix-ddos action = iptables-allports[name=MAIL, protocol=all] logpath = /var/log/maillog maxretry = 2 findtime = 86400 bantime = 604800
然后在/etc/fail2ban/filter.d
中,创建一个文件,命名为postfix-ddos.conf
,添加如下内容:
# Fail2Ban filter for Postfix DDOS attacks # [INCLUDES] before = common.conf [Definition] _daemon = postfix/(submission/)?smtp(d|s) failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$ ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$ ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 454 4\.7\.1 Service unavailable; Client host \[\S+\] blocked using .* from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$ ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$ ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 504 5\.5\.2 .*$ ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$ ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$ ^%(__prefix_line)slost connection after \S+ from [^[]*\[<HOST>\]:?$ ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL ((?i)LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/:]*={0,2})?\s*$ ^%(__prefix_line)sstatistics: max connection rate \S+ for \(smtp:<HOST>\):?$ ignoreregex = lost connection after .* from unknown\[unknown\]$ authentication failed: Connection lost to authentication server$ statistics: max connection rate .* for \(smtp:unknown\).*$ [Init] journalmatch = _SYSTEMD_UNIT=postfix.service # Author: kn007
重启Fail2ban即可生效。需要注意的是确保你的Postfix日志写入位置是/var/log/maillog
。
同时,我在Github也建立了一个repo:kn007/fail2ban-filters。这个repo后续会分享我自用的一些fail2ban过滤器,也欢迎大家进行PR完善它。
值得一提的是,目前Wordpress评论回复通知邮件提醒同时包含text/plain与text/html两个版本,这使得HTML版本的邮件也能获得满分。并且全新的邮件风格,具有不错的兼容性(响应式)。
更多Postfix相关文章,详见《进阶的Postfix小结》。
转载请注明转自:kn007的个人博客的《[Postfix进阶]利用Fail2ban防止爆破和攻击》