服务器建好了,外面却访问不了,十有八九是安全组没放行对应端口。阿里云 ECS 的安全组挡在实例前面,只放行规则里写明的流量。下面用一个常见场景来说:网站要开 80 和 443,运维只允许公司办公网 IP 通过 22 端口登录。

添加规则的步骤
- 进入 ECS 控制台,左侧选”网络与安全”,再点”安全组”。
- 顶部先确认地域和实例所在地域一致,否则会找不到安全组。找到目标安全组,点”配置规则”。
- 切到”入方向”,点”手动添加”。
- 填好参数确定,规则一般几秒内生效。
几个参数怎么填
- 授权策略:放行选”允许”,要封某个段选”拒绝”。
- 优先级:1 到 100,数字越小越先匹配,默认 1。两条规则优先级相同时,拒绝规则先生效。如果你想让某个 IP 段被挡住,又不想删掉上层的宽松规则,就把拒绝规则的优先级调高一点。
- 协议类型:TCP、UDP、ICMP 可选,常用端口也可以直接点 HTTP(80)、HTTPS(443)、SSH(22)、RDP(3389) 这些预设,省得手填。
- 端口范围:单个端口写成 80/80,连续端口写成 8000/8100。很多人只写一个数字,提交会报错。
- 授权对象:IPv4 地址段。单个 IP 写 203.0.113.10/32,全网放开写 0.0.0.0/0。注意 /32 是单个地址,漏了斜杠后面的部分,系统一般会当成非法格式拦下来。
- 描述:写清用途,比如”运维登录 公司出口”。半年后没人记得为什么开了这条,描述就是唯一线索。
实际例子:网站服务器的规则怎么配
假设一个电商团队的网站服务器既要对外提供访问,又要运维人员远程管理,他们的规则大致是这样:
- TCP 80/80,来源 0.0.0.0/0,给所有用户访问网站。
- TCP 443/443,来源 0.0.0.0/0,证书启用之后用。证书还没上线时可以先不开,免得暴露一个没配好的 HTTPS 入口。
- TCP 22/22,来源 203.0.113.0/24,即公司出口网段,只给运维登录。
- 数据库 3306 不对外开放。授权对象选”安全组访问”,只允许同一安全组内的应用服务器连进来。
配完之后,办公网里的运维可以正常 SSH 登录。换一个地区的 IP,就算知道服务器地址,22 端口也连不上。
怎么验证
在外部网络执行 telnet 公网IP 80 或 nc -zv 公网IP 443,能通就说明安全组这一层没问题。如果超时,按下面的顺序查,大多数问题在前两步就能解决:
- 确认实例确实绑定了这个安全组,规则方向是入方向。绑错安全组是最常见的原因。
- 核对协议、端口和授权对象,尤其是 CIDR 的写法。
- 检查服务器本机的防火墙,firewalld、iptables、ufw 都可能单独拦截,安全组放行了也没用。
- 看应用监听的地址。如果服务只绑在 127.0.0.1 上,外部再怎么放行也进不来,应该改成 0.0.0.0 或公网网卡地址。
批量添加用 CLI
实例一多,逐台点控制台很耗时间,也容易点错。阿里云命令行可以直接写脚本。下面这条命令给一个安全组加一条 HTTPS 规则,sg-xxxx 换成你的安全组 ID:
aliyun ecs AuthorizeSecurityGroup –RegionId cn-hangzhou –SecurityGroupId sg-xxxx –IpProtocol tcp –PortRange 443/443 –SourceCidrIp 0.0.0.0/0 –Priority 1 –Description “HTTPS”
凭证建议单独建一个 RAM 子账号,只给安全组相关的权限,然后用 aliyun configure 写入本机配置。AccessKey 别直接写进脚本或代码里,仓库一旦公开,密钥就跟着公开了。
几个容易踩的坑
- 22、3389 和数据库端口别开给 0.0.0.0/0。这几个端口是暴力破解的主要目标,服务器上线没几天就会有扫描记录。
- 改或删规则之前,先把原来的配置截图或导出存一份。规则删错了,业务中断时很难凭记忆还原。
- 临时开的规则用完要及时关,比如调试时开的 8080。规则一多,哪条是谁加的、为什么加的,就越来越难查。
- 安全组只在网络层过滤流量。服务器内部的防火墙和应用的监听配置,还得单独检查。