安全组是什么
安全组是作用在实例网卡上的虚拟防火墙,通过规则控制进出流量:方向、协议、端口范围、来源或目的、允许或拒绝这五个要素构成一条规则。实例可以加入多个安全组,规则叠加生效;入方向默认拒绝、出方向默认允许是主流云厂商的默认口径。
基本信息
| 定义 | 关联实例的网络访问控制规则集合,连接有状态 |
|---|---|
| 规则要素 | 方向(入/出)、协议、端口范围、来源或目的、允许或拒绝 |
| 默认行为 | 入方向默认拒绝、出方向默认允许;同安全组内实例是否默认互通视厂商而定 |
| 三厂名称 | 安全组(三家同名) |
| 生效范围 | 实例网卡级,与实例数量、镜像、是否绑定公网地址无关 |
典型使用场景
- 按角色划分安全组:Web 组只放 80/443,应用组只放内部端口,数据组只允许应用组访问
- 把管理端口收窄:远程登录只对堡垒机或办公网段开放,杜绝全网可连
- 多层架构的纵深防御:每层单独成组,一层被攻破也无法直接连到下一层
- 临时排障:给特定来源地址临时放行,查完立刻删除,避免留下长期宽放行
- 环境隔离:测试与生产使用不同安全组,测试机器的压测流量到不了生产
- 合规审计的基础:公网暴露面可以直接从安全组规则里统计出来
常见端口放行建议
| 端口 | 用途 | 来源建议 |
|---|---|---|
| 80/443 | Web 服务 | 对全网开放,或收窄为 CDN 回源地址段 |
| 22/3389 | 远程管理 | 堡垒机或办公网段,禁止对全网开放 |
| 3306/5432 | 数据库 | 仅应用层安全组引用 |
| 6379 | 缓存 | 仅应用层安全组引用,并开启密码认证 |
| 9200/5601 | 搜索与可视化 | 仅运维网段访问 |
放行规则示例
放行规则示例
aliyun ecs AuthorizeSecurityGroup --RegionId cn-hangzhou --SecurityGroupId sg-xxxx --IpProtocol tcp --PortRange 443/443 --SourceCidrIp 0.0.0.0/0
aliyun ecs AuthorizeSecurityGroup --SecurityGroupId sg-xxxx --IpProtocol tcp --PortRange 22/22 --SourceCidrIp 10.0.100.0/24
aliyun ecs DescribeSecurityGroupAttribute --RegionId cn-hangzhou --SecurityGroupId sg-xxxx # 核对已生效规则
# 加规则前先翻一遍已有规则,确认没有更宽的放行存在安全组是有状态的:放行了入方向的请求,这条连接的返回流量会自动放行,不需要再配一条反向规则;出方向收紧时也要注意,这不会影响请求的返回报文。
生产环境禁止把 22、3306、6379 这类端口对全网开放;数据库安全组只允许应用层安全组作为来源,管理端口只允许堡垒机或办公网段。
实例加入多个安全组时,规则叠加后按允许取并集、拒绝优先的方向理解;发现放行不生效或多出放行,都要把所有关联的安全组一起看。
安全组规则变更即时生效,但已建立的连接不一定立刻中断,排障时以新建连接的结果为准,别被旧连接误导。
放行不生效的排查顺序
- 先确认实例到底挂了哪些安全组:多组叠加时,漏看一个组就会得出错误结论
- 再把入方向规则按优先级重排,确认没有更靠前的拒绝规则命中
- 接着查来源地址是否正确:客户端出口地址常与预期不同,尤其在多层代理之后
- 然后核对系统内的防火墙与服务监听:云上放行不代表主机层面也放行
- 最后用抓包确认报文是否到达网卡,把云网络与主机内的问题彻底分开