安全组为什么会失控
云安全组相当于分布式的状态防火墙,特点是创建成本极低:业务上线先加一条放行,测试临时再开一个端口,事后没人回收。几年下来,一个账号里躺着一堆 0.0.0.0/0 的放行,其中相当一部分对应的实例早已下线。暴露面治理在云上基本等同于规则台账治理。
基本信息
| 适用平台 | 公有云账号级(阿里云、腾讯云、AWS 等安全组/网络 ACL) |
|---|---|
| 导出方式 | 云 CLI 或 SDK 遍历安全组,输出为结构化清单 |
| 评审周期 | 建议每季度一次,重大变更后追加 |
| 必备字段 | 规则、方向、端口、来源、业务用途、责任人 |
典型使用场景
- 季度自查:把全部安全组导出成统一格式,按端口与来源排序逐条过
- 高危端口收口:筛出对全网放行的 22、3389、3306、6379 等端口
- 业务下线核对:与资产台账比对,删除已释放实例仍保留的规则
- 合规举证:安全组清单是「边界访问控制」条款最直接的证据材料
批量导出思路
批量导出思路
# 阿里云示例:先取安全组 ID 列表,再逐个导出规则
aliyun ecs DescribeSecurityGroups --RegionId cn-hangzhou \
| jq -r '.SecurityGroups.SecurityGroup[].SecurityGroupId' > sg.list
while read sg; do
aliyun ecs DescribeSecurityGroupAttribute --RegionId cn-hangzhou --SecurityGroupId "$sg" >> sg-rules.json
done < sg.list
# 与本机监听端口交叉核对,找出「开在云上但本机没监听」的规则
ss -tulnp | awk '{print $5}' | sort -u | head -40规则四要素读法
| 要素 | 说明 | 高危特征 |
|---|---|---|
| 方向 | 入方向(被访问)或出方向(主动访问) | 入方向风险通常更高 |
| 端口范围 | 允许的协议与端口/端口段 | 对全网开放的高危端口最需要收口 |
| 来源 | 允许访问的来源 IP 或网段 | 0.0.0.0/0 表示对全互联网开放 |
| 策略 | 允许或拒绝 | 只写允许而无兜底拒绝,规则语义不完整 |
评审输三列最有效:规则、业务用途、责任人。三个月内无使用记录且无人认领的放行直接收回,比口头追责可执行得多。
导出结果包含资产编号、内网网段与开放端口,属于敏感信息:按内部资料管理,不要随手发到外部群或个人网盘。