云服务器安全组配置实操:从规则设计到连通性验证
安全组是云服务器自带的虚拟防火墙,默认拒绝所有入站流量。
配置的核心顺序是:先放行管理端口(如 SSH 的 22 或 RDP 的 3389),再按业务需要放行 Web 端口(80/443),源地址尽量限定到具体 IP 或网段,不要图省事开放 0.0.0.0/0 的全部端口。
下面按准备、操作、避坑、验证四步展开。
配置前需要确认的三件事
动手改规则前,先确认以下信息,避免改完把自己锁在门外:
- 服务器公网 IP 和当前登录方式。如果你正通过 SSH 连接,记下自己本地网络的出口 IP,后面放行 22 端口时要用。
- 业务实际监听的端口。Web 服务默认 80/443,数据库通常 3306/5432,不要凭感觉开放。
- 云厂商控制台的入口。阿里云在 ECS 实例详情页的“安全组”标签,腾讯云在 CVM 实例的“安全组”页签,华为云在“弹性云服务器”的“安全组”配置项。
分步添加安全组规则
入站规则:先管理后业务
以阿里云为例,进入 ECS 控制台 → 实例 → 安全组 → 配置规则 → 入方向 → 手动添加,按顺序填:
| 优先级 | 协议类型 | 端口范围 | 授权对象 | 用途 |
| --- | --- | --- | --- | --- |
| 1 | SSH | 22/22 | 你的本地出口 IP/32 | 远程管理 |
| 2 | HTTP | 80/80 | 0.0.0.0/0 | Web 访问 |
| 3 | HTTPS | 443/443 | 0.0.0.0/0 | 加密 Web 访问 |
腾讯云的操作路径类似:CVM 控制台 → 实例 → 安全组 → 修改规则 → 入站规则 → 添加规则,字段名可能是“来源”“协议端口”“策略”。
关键点:授权对象不要写 0.0.0.0/0 加 22 端口,这等于把 SSH 暴露给全网扫描。
如果本地 IP 不固定,可以临时放行一个较小网段,用完再收紧。
出站规则:多数场景保持默认放行
出站规则控制服务器主动访问外网。
默认通常是“全部放行”,如果你没有特殊安全要求,不要改动。
只有需要限制服务器外联时(例如防止被入侵后外连),才按目标 IP 和端口收紧。
规则优先级与拒绝规则
安全组规则按优先级数字从小到大匹配,数字越小优先级越高。
如果你添加了“拒绝”规则,要确保它的优先级高于对应的“允许”规则,否则允许规则会先命中。
日常配置建议只添加允许规则,用“默认拒绝”兜底,减少优先级混乱。
常见配置错误与避坑
- 改完规则立刻断开 SSH:如果新规则没有放行你当前的源 IP,连接会立即中断。建议先在控制台确认规则已保存,再开一个新终端测试,旧连接先不要关。
- 端口范围写成 80-80 还是 80/80:不同厂商输入格式有差异,阿里云用
80/80,腾讯云用80或80-80,以控制台提示为准,填错会提示格式错误。 - 安全组和系统防火墙双重拦截:安全组放行了,服务器内部的
firewalld或ufw仍可能拦截。Linux 上可用sudo ufw status或sudo firewall-cmd --list-ports检查。 - 多个安全组叠加:一台实例可以绑定多个安全组,规则是并集关系。排查不通时,检查实例绑定的所有安全组,而不只是当前编辑的那个。
配置后如何验证连通性
规则保存后,从本地电脑执行以下检查:
# 测试 22 端口是否可达(替换为你的服务器 IP)
telnet 1.2.3.4 22
# 测试 Web 端口
curl -I http://1.2.3.4
telnet 显示 Connected 说明 TCP 握手成功;
如果卡住或提示 Connection refused,回到安全组确认规则方向、端口和源 IP 是否匹配。curl -I 返回 HTTP 状态码(如 200、301)说明 80 端口已通;
如果超时,先检查 Web 服务是否在监听:ss -tlnp | grep :80。
如果以上都正常但业务仍不可用,再检查服务器内部防火墙和应用程序绑定地址(是否只监听了 127.0.0.1)。
两个容易混淆的细节
安全组规则修改后立即生效吗? 多数云厂商是即时生效,但已有连接可能保持原状态。
建议修改后新建连接测试,不要只看旧会话。
能否只靠安全组做安全防护? 安全组是网络层的第一道过滤,不能替代系统补丁、强密码和密钥登录。
管理端口限定源 IP 后,仍建议关闭密码登录、改用密钥,并定期检查规则列表里是否有过期放行。
配置完成后,把最终规则截图或导出保存,后续新增业务端口时对照修改,避免规则越加越乱。