【云安全实战】ECS频遭SSH暴力破解:基于 Fail2ban 与防火墙联动的自动化防御解法

举报
yd_271832976 发表于 2026/10/24 01:42:02 2026/10/24
【摘要】 针对暴露在公网的弹性云服务器(ECS)高频遭遇恶意脚本 SSH 字典爆破,导致安全日志爆满、甚至存在被提权勒索风险的痛点,本文提供一套基于 Fail2ban 的自动化封禁工程解法。通过实时扫描系统日志并联动 iptables,实现对攻击源 IP 的秒级屏蔽。

只要你的云服务器绑定了弹性公网 IP(EIP)并开放了 22 端口,几分钟内就会被全球各地的黑客扫描器盯上。如果你在终端执行 grep "Failed password" /var/log/secure,往往会看到成千上万条使用 root 账号尝试登录的失败记录。

单纯依靠修改强密码只能防住破译,但无法阻止恶意的并发连接对云服务器 CPU 和带宽的消耗。标准的工程解法是:引入安全守护进程拦截恶意流量,在 Linux 网络内核层直接丢弃黑客的 TCP 握手。

1. 部署轻量级防御组件 Fail2ban

Fail2ban 是一个用 Python 编写的开源入侵防御框架。它会以极低的资源消耗在后台 tail 系统的各种安全日志。当某个 IP 的试错次数触发阈值,Fail2ban 会自动向云服务器的防火墙(iptables/firewalld)下发封禁规则。

Bash
# 在 CentOS/EulerOS 环境下极速安装
yum install epel-release -y
yum install fail2ban -y

2. 编写防护隔离规则(Jail 配置)

千万不要直接修改系统默认的 jail.conf,极易在升级时被覆盖。我们应该新建一个 jail.local 文件来覆盖默认配置:

Bash
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

配置完成后,启动服务并设为开机自启:

Bash
systemctl enable --now fail2ban

3. 实时监控与自动化解封管理

Fail2ban 接管后,一切都在后台静默运行。你可以随时通过内置命令行查看当前的战况。一旦黑客触发规则,其 IP 会被立刻打入冷宫,所有发往 22 端口的报文会被操作系统直接 DROP。

Bash
# 查看当前 SSH 模块被封禁的恶意 IP 列表
fail2ban-client status sshd

# 若不慎误封,可手动强制解封指定 IP
fail2ban-client set sshd unbanip 203.0.113.5

总结: 云端安全决不能仅靠云厂商外部的安全组(Security Group),操作系统的内部防线同样重要。通过引入 Fail2ban 构建基于日志驱动的自动化响应机制,我们不仅彻底清除了恶意爆破产生的无效连接损耗,更为核心的业务云主机穿上了一层动态自适应的防弹衣。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。