安全组是云平台虚拟化网络层的有状态分布式策略控制器,工作在vSwitch或Hypervisor层,不依赖内核防火墙;它管控流量能否到达实例,而系统防火墙负责进程级访问控制,二者分层协作实现纵深防御。

安全组不运行在内核层,本质是虚拟化网络层的策略控制器
安全组不是内核模块,也不依赖 iptables、nftables 或 netfilter 钩子。它工作在阿里云或 AWS 的虚拟化网络层(vSwitch 或 HyperVisor 层),属于云平台控制面下发的分布式访问控制策略。流量在到达 ECS 实例网卡前,已在宿主机的虚拟交换机上完成五元组匹配与过滤。这意味着:即使实例操作系统被完全攻陷,安全组规则依然生效;系统防火墙被清空,也不影响安全组对入向流量的拦截。
与内核防火墙的关键差异:有状态 vs 无状态、分布 vs 单点
安全组是有状态的——允许某端口入站后,自动放行对应连接的返回流量,无需额外配置出站规则;而内核防火墙(如 iptables INPUT/OUTPUT 链)默认无状态,需显式放行 ESTABLISHED/RELATED 连接。更重要的是,安全组规则由云平台统一编译、分发至所有相关宿主机,实现跨实例批量管控;iptables 规则仅作用于单台 OS 内核,无法集中管理,也无法感知 VPC 内其他实例的网络行为。
为什么不能替代系统防火墙?二者职责根本不同
安全组管“能不能到这台机器”,系统防火墙管“到了之后能不能被某个进程接收”。例如:
- 安全组开放了 22 端口,但系统防火墙可进一步限制只允许特定 IP 段通过 SSH 登录;
- 攻击者利用合法开放的 80 端口发起 SQL 注入,安全组无法识别该应用层攻击,而 WAF 或应用层防护机制(如 SELinux 上下文约束 Nginx 对数据库文件的访问)才能拦截;
- VPC 内两台同属一个安全组的服务器之间通信,默认全部放行——此时横向移动风险靠系统防火墙或 SELinux 控制进程间通信来收敛。
实际部署建议:分层启用、各司其职
推荐采用三层防护组合:
- 外层(云平台级):用安全组收紧公网暴露面,例如只允许可信运维 IP 访问 22/3389,Web 服务仅开 80/443;
- 中层(网络虚拟化级):如使用云防火墙,补充入侵检测(IPS)、威胁情报联动、七层协议识别能力;
- 内层(OS 内核级):启用 iptables/nftables 做连接状态精细化控制,并配合 SELinux/AppArmor 实现进程级资源隔离。
这种结构避免单点失效,也符合纵深防御设计原则。










