弹性云服务器ECS安全组配置:原理与六个常见坑

举报
yd_282720827 发表于 2026/10/25 11:30:35 2026/10/25
【摘要】 结合华为云官方文档,梳理安全组的有状态、白名单与优先级匹配机制,并总结端口不通、规则不生效等六个常见坑及排查思路。

前言

在华为云上部署服务时,“服务明明起来了,外网就是访问不了”几乎是每个开发者都遇到过的问题。很多时候,原因不在应用本身,而在安全组。安全组规则看起来只是几行“协议、端口、源地址”,但其背后的匹配机制如果没理解清楚,很容易出现放通了却不通、拒绝了却没拦住的情况。本文基于华为云虚拟私有云 VPC 的官方文档,先梳理安全组的核心原理,再总结六个实践中常见的坑。

一、安全组的核心原理

安全组是一个逻辑分组,为具有相同安全需求并相互信任的实例(云服务器、云数据库等)提供访问策略。创建云服务器时必须关联安全组,一个实例也可以关联多个安全组。理解下面四点,就能解释大多数现象:

  1. 白名单原则:没有被规则明确允许的流量一律拒绝。因此入方向一般不需要专门配置“拒绝”规则。
  2. 有状态:如果入方向放通了某个请求,它的响应流量会自动放行,不需要再单独配置出方向;反之亦然。
  3. 匹配顺序:实例关联多个安全组时,先按安全组的顺序匹配;同一安全组内按规则优先级(1~100,数字越小优先级越高)匹配;优先级相同时,“拒绝”高于“允许”。
  4. 默认规则:默认情况下,入方向只允许同一安全组内实例互访,出方向允许所有流量流出。也就是说,外部请求默认是进不来的。

一条入方向规则通常包含以下要素,可以用这样的思路来记录:

方向: 入方向   策略: 允许   优先级: 1
协议端口: TCP 22
源地址: 203.0.113.10/32   # 示例地址,替换为你自己的公网出口IP

二、六个常见坑

坑1:只放通了安全组,系统防火墙没放通

安全组放行的是“到达云服务器网卡”之前的流量,进入操作系统后还要经过系统自带的防火墙。如果镜像里启用了 firewalld 或 ufw,端口仍然会被拦截。排查时可以先在服务器上检查:

# firewalld
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload

# ufw
sudo ufw status
sudo ufw allow 8080/tcp

坑2:服务只监听了 127.0.0.1

安全组和防火墙都放通了,外部依旧访问不了,常见原因是应用只绑定了本地回环地址。用下面的命令确认监听地址:

sudo ss -lntp | grep 8080

如果显示 127.0.0.1:8080,需要把应用的监听地址改为 0.0.0.0 或网卡的私有IP。这个问题和安全组无关,但经常被误判为安全组问题。

坑3:远程登录端口对 0.0.0.0/0 开放

为了方便,很多人把 SSH(22)或 RDP(3389)直接对所有地址开放,这会让服务器暴露在公网的扫描和暴力破解之下。官方文档建议遵循最小授权原则,只允许指定IP访问远程登录端口。如果需要授权的地址较多且经常变化,可以使用“IP地址组”统一管理,地址变化时只改地址组即可。不需要公网登录时,也可以考虑 CloudShell、VNC 或云堡垒机等方式,不为服务器分配 EIP。

坑4:拒绝规则优先级没设对

有人想“先拒绝某个网段,再允许其他地址”,结果发现拒绝规则不生效。原因通常是允许规则的优先级数字更小,流量先命中允许规则就被放行了。记住:先比较优先级数字,只有优先级相同时,拒绝才高于允许。需要精细拦截时,应给拒绝规则设置更高的优先级(更小的数字)。

坑5:删掉了默认的出方向规则

默认出方向规则允许实例访问任意外部地址。如果为了“更安全”把它删了,又没有补充必要的出方向规则,服务器将无法访问外部,比如无法下载软件包、无法调用外部接口。收紧出方向前,应先梳理业务真正需要访问的目的地址和端口。

坑6:不同安全组之间默认不互通

同一账号下的云服务器,如果属于不同的安全组,内网默认是相互隔离的。典型场景是 Web 服务器和数据库分属两个安全组,应用连不上数据库。推荐做法是在数据库所在安全组的入方向,添加源地址为 Web 服务器所在“安全组”的规则,只放通数据库端口,而不是填写一大段网段。需要注意,如果流量经过虚拟IP等中间实例转发,以安全组作为源地址可能无法匹配,此时需改用中间实例的私有IP或子网网段。

三、规则变更的生效细节

安全组通过连接跟踪识别流量。官方文档说明:入方向规则变更对原有流量立即生效;出方向规则变更不影响已建立的长连接,只对新连接生效。因此调整出方向规则后,如果发现旧连接仍在通信,不必惊讶。另外,修改正在使用的安全组存在影响线上业务的风险,建议先克隆一个测试安全组调试,确认无误后再修改生产规则。

四、推荐的排查顺序

遇到“端口不通”,可以按由外到内的顺序逐层排查:

  1. 确认实例关联的所有安全组,以及入方向规则的协议、端口、源地址和优先级;
  2. 确认实例是否有公网访问能力(EIP、ELB 等);
  3. 检查操作系统防火墙;
  4. 用 ss -lntp 检查服务是否在正确的地址和端口上监听;
  5. 查看应用自身日志。

总结

安全组是云服务器的第一道网络防线,核心记住三点:白名单、有状态、按优先级匹配。实践中,应按业务和环境划分安全组,远程登录端口只对指定IP开放,不同层级之间用“安全组授权安全组”的方式放通,修改生产规则前先在克隆的安全组上验证。遇到端口不通时由外到内逐层排查,大多数问题都能快速定位。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。