【云安全实战】ECS频遭SSH暴力破解:基于 Fail2ban 与防火墙联动的自动化防御解法
只要你的云服务器绑定了弹性公网 IP(EIP)并开放了 22 端口,几分钟内就会被全球各地的黑客扫描器盯上。如果你在终端执行 grep "Failed password" /var/log/secure,往往会看到成千上万条使用 root 账号尝试登录的失败记录。
单纯依靠修改强密码只能防住破译,但无法阻止恶意的并发连接对云服务器 CPU 和带宽的消耗。标准的工程解法是:引入安全守护进程拦截恶意流量,在 Linux 网络内核层直接丢弃黑客的 TCP 握手。
1. 部署轻量级防御组件 Fail2ban
Fail2ban 是一个用 Python 编写的开源入侵防御框架。它会以极低的资源消耗在后台 tail 系统的各种安全日志。当某个 IP 的试错次数触发阈值,Fail2ban 会自动向云服务器的防火墙(iptables/firewalld)下发封禁规则。
# 在 CentOS/EulerOS 环境下极速安装
yum install epel-release -y
yum install fail2ban -y
2. 编写防护隔离规则(Jail 配置)
千万不要直接修改系统默认的 jail.conf,极易在升级时被覆盖。我们应该新建一个 jail.local 文件来覆盖默认配置:
cat <<EOF > /etc/fail2ban/jail.local
[DEFAULT]
# 设置默认封禁时间为 24 小时 (86400秒)
bantime = 86400
# 统计周期为 5 分钟
findtime = 300
# 允许的最大失败次数,超过 3 次立刻封禁
maxretry = 3
# 填入你自己的可信出口 IP,防止管理员因误操作把自己关在外面
ignoreip = 127.0.0.1/8 192.168.1.0/24
[sshd]
# 针对 SSH 守护进程开启监控
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
EOF
配置完成后,启动服务并设为开机自启:
systemctl enable --now fail2ban
3. 实时监控与自动化解封管理
Fail2ban 接管后,一切都在后台静默运行。你可以随时通过内置命令行查看当前的战况。一旦黑客触发规则,其 IP 会被立刻打入冷宫,所有发往 22 端口的报文会被操作系统直接 DROP。
# 查看当前 SSH 模块被封禁的恶意 IP 列表
fail2ban-client status sshd
# 若不慎误封,可手动强制解封指定 IP
fail2ban-client set sshd unbanip 203.0.113.5
总结: 云端安全决不能仅靠云厂商外部的安全组(Security Group),操作系统的内部防线同样重要。通过引入 Fail2ban 构建基于日志驱动的自动化响应机制,我们不仅彻底清除了恶意爆破产生的无效连接损耗,更为核心的业务云主机穿上了一层动态自适应的防弹衣。
- 点赞
- 收藏
- 关注作者
评论(0)