首页/云/云网络与负载均衡速查/安全组基础:有状态的实例级防火墙

安全组基础:有状态的实例级防火墙

安全组是绑定在实例与弹性网卡上的虚拟防火墙,采用白名单模型:只有被规则放行的流量才能通过。它是有状态的——请求方向被放行后,该连接的返回流量自动通过,无需再加反向规则。

安全组是什么

安全组是绑定在实例与弹性网卡上的虚拟防火墙,采用白名单模型:只有被规则放行的流量才能通过,未匹配任何放行规则的流量被丢弃。它是有状态的——请求方向被放行后,该连接的返回流量自动通过,不需要再补一条反向规则。安全组可以同时绑定多张,实例的实际放行结果是各张安全组规则的并集。

基本信息

绑定对象云服务器实例 / 弹性网卡(实例级粒度)
模型白名单:未匹配放行规则即拒绝
状态有状态:放行方向的返回流量自动放行
规则要素方向、协议、端口范围、授权对象(CIDR 或另一个安全组)、优先级
数量限制单实例可绑定的安全组数量、单安全组规则条数均有配额上限
默认行为新建安全组通常入方向无规则即全部拒绝,出方向多数平台默认放行

典型使用场景

  • 分层管控:Web 层安全组放行 80/443,数据层安全组只允许应用层安全组访问 3306
  • 运维入口收敛:SSH/RDP 只放行跳板机网段,不对全网开放
  • 实例级差异配置:同一子网内不同职责的实例挂不同安全组
  • 按安全组引用授权:应用层扩缩容时数据库侧规则无需改动
  • 临时放行:调试期间精确放行某个来源 IP,结束后立即收回

从实例侧区分拦截与服务故障

从实例侧区分拦截与服务故障
nc -zv -w 3 10.10.3.20 3306      # 端口连通性探测
curl -s --connect-timeout 3 http://10.10.3.20:8080/health
# 表现为「超时无响应」时多半是被安全组/网络 ACL 丢弃
# 表现为「connection refused」时说明报文已到达,是主机侧服务未监听
telnet 10.10.3.20 3306            # 不支持 nc 的老系统可替代使用

常见现象与判断

现象更可能的原因
连接超时、无任何响应安全组或网络 ACL 丢弃了报文
connection refused主机可达但端口未监听或系统防火墙拒绝
内网通、公网不通缺少 EIP/NAT 出口或公网入方向未放行
同安全组的机器互相通、不同组不通按安全组引用的授权规则未覆盖该来源
安全组作用在实例上、粒度细;网络 ACL 作用在子网上、粒度粗且无状态。两者同时存在时,任何一层不放行流量都不通,排查要两层一起看。
生产环境避免长期保留「入方向全部放行」的安全组,这类配置等同于关闭访问控制,实例一旦存在漏洞会直接被外部利用。

规则设计习惯

  • 先按业务角色建安全组(Web、应用、数据、运维),再挂到对应实例上
  • 层与层之间用安全组引用授权,避免写死 IP 导致扩缩容时改规则
  • 管理端口只放行跳板机或运维网段,不对全网开放
  • 临时放行的规则记录在案并在完成后清理,避免规则长期沉淀
  • 变更前确认影响范围,先梳理该安全组被哪些实例引用

用安全组引用授权

用安全组引用授权
数据层安全组入方向规则:
  协议 TCP   端口 3306   授权对象 sg-app(应用层安全组 ID)
效果:应用层实例增减时无需修改数据库侧规则
注意:授权对象为安全组时,生效范围随该组内实例变化而自动变化
安全组规则条数有配额上限;当规则数量接近上限,通常说明授权方式过度依赖单个 IP,改用安全组引用往往能大幅收敛规则条数。

易错点

  • 白名单模型下漏放端口表现为连接超时,容易被误判成「服务没启动」,白白排查应用日志
  • 各厂商预置规则不同:购买实例后先确认入方向是否放行管理端口,否则会出现「新机器无法登录」
  • 安全组是有状态的,反向补一条规则通常不需要;反过来,误加显式拒绝规则会先于放行规则生效
  • 多张安全组并存时只核对了其中一张,实际生效的是各张规则的并集
  • 删除或修改正在被多台实例引用的安全组,影响面远超预期;变更前先查清引用关系

数据来源与参考

  • 阿里云 安全组文档
  • 腾讯云 安全组文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌