一次安全组配错引发的安全事件复盘

举报
yd_254135879 发表于 2026/10/30 10:39:17 2026/10/30
【摘要】 事件概述某次线上环境例行检查时,监控告警显示一台 ECS 的 22 端口在 10 分钟内收到了 2,300+ 次来自境外 IP 的登录尝试。幸运的是,SSH 使用了密钥认证,攻击者未能登录成功。但这件事暴露了一个严重问题:安全组规则配错了,22 端口对公网完全敞开。 根因分析出问题的安全组规则是这样的:方向:入方向 (ingress)协议:TCP端口:22源地址:0.0.0.0/0 ←...

事件概述

某次线上环境例行检查时,监控告警显示一台 ECS 的 22 端口在 10 分钟内收到了 2,300+ 次来自境外 IP 的登录尝试。幸运的是,SSH 使用了密钥认证,攻击者未能登录成功。但这件事暴露了一个严重问题:安全组规则配错了,22 端口对公网完全敞开。

根因分析

出问题的安全组规则是这样的:

方向:入方向 (ingress)
协议:TCP
端口:22
源地址:0.0.0.0/0   ← 问题在这
策略:允许

0.0.0.0/0 意味着允许任意 IP 访问。这条规则最初是为了"方便远程调试"临时加上的,后来忘了收紧,就一直挂在线上。

为什么会犯这个错?

  1. 图省事:开发阶段不想逐个加白名单 IP,直接放通所有。
  2. 没有回收机制:临时规则加完没有工单跟踪,没人记得删。
  3. 对安全组的认知偏差:把安全组当防火墙策略随便加规则,没有遵循最小权限原则。

影响评估

维度 实际影响
数据泄露 未发生(SSH 密钥认证挡住)
暴力破解 2,300+ 次尝试,持续约 10 分钟
资源消耗 CPU 短时波动,未影响业务
合规风险 安全审计不通过,需整改报告
信任损失 客户得知后要求安全说明

如果当时用的是密码认证而非密钥认证,后果不堪设想。

整改措施

1. 立即收紧安全组规则

将 0.0.0.0/0 替换为运维团队的固定出口 IP:

方向:入方向
协议:TCP
端口:22
源地址:203.0.113.10/32   ← 仅允许运维出口 IP
策略:允许

2. 用 Terraform 管理安全组,杜绝手动改

resource "huaweicloud_networking_secgroup" "ops_sg" {
  name        = "ops-ssh-restricted"
  description = "仅允许运维出口 IP 访问 SSH"
}

resource "huaweicloud_networking_secgroup_rule" "ssh_rule" {
  direction         = "ingress"
  ethertype         = "IPv4"
  protocol          = "tcp"
  port_range_min    = 22
  port_range_max    = 22
  remote_ip_prefix  = "203.0.113.10/32"  # 绝不写 0.0.0.0/0
  security_group_id = huaweicloud_networking_secgroup.ops_sg.id
}

用 IaC 管理的好处:所有规则有版本记录,谁改的、改了什么、什么时候改的,一查便知。

3. 建立安全组巡检机制

定期用脚本扫描所有安全组,发现 0.0.0.0/0 规则立即告警:

# 简易巡检:列出所有放通 0.0.0.0/0 的安全组规则
hcloud ECS ListSecurityGroups --query 'SecurityGroups[].SecurityGroupRules[?remote_ip_prefix==`0.0.0.0/0`]' --output table

4. 更优方案:跳板机 + 私有子网

根本解法是不让 ECS 直接暴露 SSH:

  • ECS 放在私有子网,不绑 EIP
  • 通过**跳板机(Bastion)**统一接入,跳板机安全组仅允许指定 IP
  • 或使用华为云 DataSec / 云堡垒机(CBH) 统一管控运维入口

经验总结

教训 行动项
0.0.0.0/0 是安全组最大的坑 永远不要对管理端口(22/3389/3306)放通全部
临时规则容易忘记回收 所有临时变更走 Terraform + 代码评审
手动改配置不可追溯 安全组必须 IaC 管理,禁止控制台直接改
密码认证是最后一道防线薄弱点 管理端口一律用密钥/证书认证
单台暴露风险可控,批量暴露是灾难 巡检脚本定期扫描,发现即告警

一句话总结

安全组不是防火墙策略,它是你云上资产的最后一道门。每一扇门都应该知道该让谁进——0.0.0.0/0 等于把门卸了。


本文为原创技术心得,基于真实事件复盘整理。如果你也遇到过类似的安全组配置问题,欢迎交流。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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