今天遇到了一个问题,客户端配置的邮件服务器之前好好的,今天上午反馈连接超时,本地telnet 发现正常,防火墙,安全组均没有改动过,
看到 Connection refused ,直接从防火墙,安全组入手,当时在邮件服务器查看了firewalld
firewall-cmd --list-port
和安全组,均正常 因为本地是通的所以也没有多想
然后从客户端出口到服务器入口均检查了一遍没有找到问题,不得不工单求助,技术人员让我检查客户端IP是否申请25端口解封情况,经查看正常。
各种查看未果,最后又重头检查
iptable -nL
发现端倪,iptables 链表中发现 一条
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587 match-set f2b-postfix src reject-with icmp-port-unreachable
很是诧异,百度之
multiport: 检查条件一样时,支持多个离散或连续的端口用一条规则实现,最多支持15个端口
match-set: 指定地址集合
怀疑这条规则中的 f2b-postfix 地址是否有我们客户端的出口IP,百度“f2b-postfix ” ,
发现问题果然在这里,系 Fail2ban 服务作祟,自家邮件客户端发件太过频繁导致触发Fail2ban 自动禁用掉了自家IP
Fail2ban是一个基于日志的IP自动屏蔽工具。可以通过它来防止暴力破解攻击。
Fail2ban是一个基于日志的IP自动屏蔽工具。可以通过它来防止暴力破解攻击。
Fail2ban通过扫描日志文件(例如/var/log/apache/error_log),并禁止恶意IP(太多的密码失败、寻找漏洞等),Fail2Ban会更新防火墙规则,以在指定的时间范围内拒绝IP地址,不过也可以配置任何任意的其他操作(例如发送电子邮件)。开箱即用的
Fail2Ban附带各种服务的过滤器(apache、ssh 等)。
也可以监控我们的nginx、apache或其他服务的日志,从日志中提取我们需要屏蔽的一些恶意请求,比如大量的404—通过扫描器扫描产生,ssh暴力破解,v2ray的暴力尝试爆破ID等等。
fail2ban-client status
查看状态
fail2ban-client status postfix
查看规则链信息
发现我们的IP就存在其中
$ fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: postfix, sshd
-----------------------------------
$ fail2ban-client status postfix
Status for the jail: postfix
|- Filter
| |- Currently failed: 19
| |- Total failed: 72361
| `- Journal matches:
`- Actions
|- Currently banned: 5
|- Total banned: 450
`- Banned IP list: a.b.c.d 212.70.149.87(外网非法IP) 212.70.149.56(外网非法IP) 103.147.184.193(外网非法IP) 87.246.7.227(外网非法IP)
修改配置排除自家IP
vim /etc/fail2ban/jail.local
[postfix]
enabled = true
filter = postfix.ewomail
banaction = firewallcmd-ipset
action = %(action_mwl)s
logpath = /var/log/maillog
maxretry = 10
bantime = 36000
findtime = 3600
ignoreip = 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 a.b.c.d/32
重启: fail2ban 问题解决
systemctl restart fail2ban