服务器安全组设置完全指南:从入门到最佳实践
一、什么是安全组?
安全组(Security Group)是云计算环境中一种虚拟防火墙,用于控制云服务器(如 ECS、CVM、EC2 等)的入站和出站网络流量。它是云安全的第一道防线,通过定义一系列规则来决定哪些流量可以进入或离开服务器。
可以把它理解为一栋大楼的门禁系统:只有持有合法凭证(IP、端口、协议)的人才能进出,其余一律拒之门外。
安全组的核心特征
- 有状态(Stateful):如果一条入站规则允许某个请求进入,那么该请求的响应流量会自动被允许出站,无需额外配置出站规则。
- 白名单机制:默认拒绝所有流量,只有明确允许的规则才会放行。
- 实例级别:安全组作用于单个或多个云服务器实例,而非子网级别(子网级别的是网络 ACL)。
- 多组叠加:一个实例可以绑定多个安全组,最终生效的是所有规则的并集。
二、安全组 vs 网络 ACL
| 特性 | 安全组 | 网络 ACL |
|---|---|---|
| 作用层级 | 实例级别 | 子网级别 |
| 状态 | 有状态 | 无状态 |
| 规则类型 | 仅允许规则 | 允许 + 拒绝规则 |
| 生效顺序 | 所有规则同时评估 | 按规则编号顺序评估 |
| 默认行为 | 拒绝所有入站 | 允许所有入站/出站 |
三、常见端口与协议速查
在配置安全组前,需要明确业务需要开放哪些端口:
| 端口 | 协议 | 用途 | 建议来源 |
|---|---|---|---|
| 22 | TCP | Linux SSH 远程登录 | 仅限办公 IP |
| 3389 | TCP | Windows 远程桌面 | 仅限办公 IP |
| 80 | TCP | HTTP Web 服务 | 0.0.0.0/0 |
| 443 | TCP | HTTPS Web 服务 | 0.0.0.0/0 |
| 3306 | TCP | MySQL 数据库 | 仅限应用服务器 IP |
| 6379 | TCP | Redis | 仅限应用服务器 IP |
| 8080 | TCP | 应用服务/Tomcat | 按需限制 |
| ICMP | ICMP | Ping 探测 | 按需限制 |
四、安全组配置的核心原则
1. 最小权限原则
只开放业务必需的端口,其余一律关闭。例如:
- ❌ 错误做法:开放
0.0.0.0/0的 22 端口,导致服务器每天被暴力破解数万次 - ✅ 正确做法:仅允许公司固定 IP 访问 22 端口
2. 分层隔离原则
典型的 Web 应用架构应分为三层,每层使用独立安全组:
text
[互联网] → [Web 层安全组] → [应用层安全组] → [数据层安全组]
- Web 层:开放 80/443 给公网
- 应用层:仅接受来自 Web 层安全组的流量
- 数据层:仅接受来自应用层安全组的流量,绝不暴露公网
3. 精确指定来源
避免使用 0.0.0.0/0,尽量使用:
- 具体 IP:
203.0.113.10/32 - IP 段:
203.0.113.0/24 - 安全组 ID:
sg-xxxxxxxx(引用其他安全组,实现动态授权)
4. 出站规则同样重要
虽然很多云厂商默认允许所有出站流量,但高安全场景下应限制出站,防止服务器被入侵后向外发起恶意连接或数据外泄。
五、实战配置示例
场景:典型的 Web 应用服务器
Web 层安全组(sg-web)
text
入站规则:
- 协议:TCP,端口:80,来源:0.0.0.0/0
- 协议:TCP,端口:443,来源:0.0.0.0/0
- 协议:TCP,端口:22,来源:203.0.113.10/32(办公 IP)
出站规则:
- 协议:TCP,端口:3306,目标:sg-db(数据库安全组)
- 协议:TCP,端口:443,目标:0.0.0.0/0(用于更新补丁)
数据层安全组(sg-db)
text
入站规则:
- 协议:TCP,端口:3306,来源:sg-web(引用 Web 层安全组)
出站规则:
- 全部拒绝(或仅允许必要流量)
这样配置后,即使数据库密码泄露,攻击者也无法从公网直接连接数据库。
六、常见误区与风险
误区 1:图省事开放所有端口
text
入站:协议 ALL,端口 ALL,来源 0.0.0.0/0
这是最危险的做法,等同于把服务器直接暴露在互联网上,极易被扫描、入侵、植入挖矿程序。
误区 2:只配置入站,忽略出站
服务器被入侵后,攻击者可能利用服务器向外发起 DDoS 攻击或回传敏感数据。限制出站能有效降低损失。
误区 3:修改安全组后忘记验证
修改规则后应使用 telnet、nc 或在线端口扫描工具验证实际连通性,避免规则写错导致业务中断。
误区 4:长期不审计规则
随着业务变化,安全组会积累大量无用规则。建议每季度审计一次,清理僵尸规则。
七、进阶技巧
- 使用安全组引用替代 IP:在多实例架构中,直接引用其他安全组 ID,避免因 IP 变化频繁修改规则。
- 结合堡垒机:所有 SSH/RDP 访问统一经过堡垒机,安全组仅允许堡垒机 IP 访问。
- 启用流量日志:多数云平台支持安全组流量日志(如 AWS VPC Flow Logs),可用于安全审计和故障排查。
- 基础设施即代码(IaC):使用 Terraform、CloudFormation 等工具管理安全组,实现版本控制和自动化部署。
- 定期渗透测试:通过外部扫描验证安全组规则是否符合预期。
八、总结
安全组是云服务器安全的基础设施,配置质量直接决定了服务器的暴露面。核心要点可归纳为:
- 默认拒绝,按需放行
- 最小权限,精确到 IP 和端口
- 分层隔离,数据层永不暴露公网
- 入站出站双管齐下
- 定期审计,持续优化
安全不是一次性的工作,而是持续的过程。一个配置得当的安全组,能挡掉 90% 以上的自动化攻击扫描,为服务器筑起坚实的第一道防线。
- 点赞
- 收藏
- 关注作者
评论(0)