先说结论:小型网站建议这样配
公网网站
入方向只开放 TCP 80、443,来源可为 0.0.0.0/0;未使用的公网服务端口全部关闭。
SSH 管理
TCP 22 或自定义端口只允许办公网、VPN 或跳板机的固定 IP,不要长期对全网开放。
数据库与缓存
不配置公网访问,应用通过同一 VPC 的内网地址连接,并在数据库安全组中授权来源安全组。
测试与生产
分开使用安全组,先在测试环境验证规则,再调整生产,避免临时放行影响线上业务。
本文以阿里云 ECS VPC 场景为主。安全组不是操作系统防火墙,也不是 WAF、DDoS 防护或身份认证;实际排查时要把云网络、系统服务和应用配置一起检查。服务器产品选型可参考ECS 与轻量应用服务器对比。
安全组是什么,入方向和出方向怎么理解
安全组通过规则控制 ECS 实例的入方向和出方向流量。入方向是外部客户端访问实例,例如浏览器访问 443、管理员连接 SSH;出方向是实例访问外部资源,例如服务器更新软件、调用 API 或下载依赖。
阿里云官方把安全组视为实例级虚拟防火墙,并建议按最小权限原则配置。普通网站最常见的错误是只为了“先跑起来”把所有端口和来源都打开,之后没有回收,导致管理面板、数据库和远程登录服务长期暴露。
22、80、443 和 3306 分别怎么配
| 端口 | 用途 | 常见规则 | 来源建议 |
|---|---|---|---|
| 22/TCP | Linux SSH 远程管理 | 入方向允许 | 办公网、VPN、跳板机固定 IP;不要长期 0.0.0.0/0 |
| 80/TCP | HTTP 网站 | 入方向允许 | 网站需要 HTTP 跳转或兼容访问时可对公网开放 |
| 443/TCP | HTTPS 网站 | 入方向允许 | 公开网站通常对公网开放,并配置有效证书 |
| 3389/TCP | Windows RDP | 入方向允许 | 只允许管理员固定 IP,非 Windows 服务器不需要开 |
| 3306/TCP | MySQL 数据库 | 入方向按需允许 | 优先授权应用安全组,不要对公网开放 |
| 6379/TCP | Redis | 入方向按需允许 | 只允许应用安全组或内网来源,并启用认证和加密策略 |
| 面板自定义端口 | 运维面板 | 入方向按需允许 | 只给管理员 IP,安装完成后记录真实端口 |
公开网站可以开放 80/443,但要确认网站进程确实监听对应端口。SSH、RDP、宝塔等管理端口即使改成非标准端口,也不能替代白名单、密钥登录、强密码和多因素认证。
SSH 白名单怎么做才不容易把自己锁在门外
- 先确认当前出口 IP。办公室、家庭宽带、VPN 和移动网络的公网 IP 可能不同;填写的是管理员真正访问服务器时的公网 IP 或 CIDR。
- 先添加新规则,再删除旧规则。用新终端测试密钥登录成功后,再收紧原来的全网规则,避免当前 SSH 会话断开后无法进入。
- 给规则写备注。标明“办公室”“VPN”“跳板机”和有效期,人员或网络变化时及时回收。
- 使用密钥而不是只依赖密码。安全组只能限制网络来源,不能替代 SSH 密钥、禁止 root 直登、系统更新和登录审计。
- 临时放开必须有回收时间。排障时可以短暂扩大来源,但完成后立即删除或改回白名单。
如果管理员来自多个固定网络,可以分别添加多个窄范围 CIDR;不要为了省事直接写很大的网段。IPv6 环境还要单独检查 IPv6 规则,不能认为 IPv4 白名单会自动覆盖 IPv6。
网站 80/443 的推荐规则
对外提供网站的 ECS,可以建立一组“Web”安全组,只放行必要的公网端口:
| 方向 | 动作 | 协议 | 端口 | 来源 | 说明 |
|---|---|---|---|---|---|
| 入方向 | 允许 | TCP | 80 | 0.0.0.0/0 | HTTP 访问或跳转到 HTTPS |
| 入方向 | 允许 | TCP | 443 | 0.0.0.0/0 | HTTPS 公网访问 |
| 入方向 | 允许 | TCP | 22 | 管理员固定 IP | 仅远程管理 |
| 入方向 | 删除或不添加 | TCP | 3306、6379、面板端口 | 公网 | 除非有明确业务理由 |
阿里云官方示例对公开 Web 服务开放 TCP 80 和 443;对 SSH 远程访问则建议只授权特定用户或管理员 IP。不要把“允许所有端口”当成网站上线的快捷方式。
数据库应该通过内网访问
典型的两层架构是:Web 服务器对公网提供 80/443,数据库服务器不分配公网 IP,应用通过同一 VPC 的私有地址连接。数据库安全组只允许来自 Web 安全组的 3306、6379 或实际服务端口。
内网授权也不代表数据库自动安全。仍要配置数据库账号权限、密码或密钥、TLS、监听地址、备份和审计;安全组放行的范围应与数据库本身的访问策略一致。
默认规则、优先级和安全组类型
创建安全组时要确认是基础安全组还是企业安全组,因为默认出方向行为和同组实例的内网互通方式可能不同。阿里云官方资料指出,两者默认都拒绝入方向流量;基础安全组默认允许出方向流量,企业安全组的默认出方向策略可能更严格。
规则优先级数值越小,优先级越高。同一优先级下,拒绝规则优先于允许规则。配置“允许指定地址、拒绝其他地址”时,必须让允许规则先匹配、全量拒绝规则放在更低优先级,否则可能把自己写的允许规则一起挡住。
同一基础安全组内的实例默认可能允许互通;如果生产和测试不应该互相访问,应拆分安全组或调整内部访问策略。不要把所有机器都塞到一个安全组里,再用大量例外规则补救。
出方向要不要限制
普通网站通常需要出方向访问系统更新、证书服务、第三方 API、对象存储和监控平台。基础安全组默认允许出方向时,先确认业务依赖并做好监控;如果是高安全等级环境,可以把出方向做成白名单,只允许必要的目的地址和端口。
出方向白名单比入方向更容易误伤更新、DNS、时间同步和依赖下载。实施前应列出域名背后的 IP 变化、端口、代理和 CDN 依赖,并先在测试环境验证。规则复杂时,优先使用专门的出站控制、NAT 网关或云防火墙能力,不要把安全组当成所有安全产品的替代品。
放行后仍无法访问,按这个顺序排查
- 确认实例和安全组。检查域名解析到的公网 IP 是否属于目标 ECS,目标网卡是否关联了正在修改的安全组。
- 确认端口监听。在服务器上检查 Nginx、Caddy、Apache、SSH 或应用是否监听正确地址和端口;只监听 127.0.0.1 的服务无法直接接受公网访问。
- 检查系统防火墙。UFW、firewalld、iptables 或云镜像预置规则可能继续拦截流量。
- 检查云网络。确认公网 IP、路由、VPC、交换机、EIP、负载均衡和 DNS 记录没有配错。
- 检查规则匹配。核对协议、端口范围、来源 CIDR、优先级和允许/拒绝动作;不要只看规则列表里“有一条 443”。
- 从真实来源测试。用管理员的实际出口网络测试 SSH,用手机网络和主要用户地区测试网站;必要时使用 ECS 安全组规则诊断工具。
如果网站访问正常但 SSH 不通,优先检查 22 端口来源白名单和当前出口 IP;如果 SSH 正常但网站不通,优先检查 80/443 监听、证书、Web 服务状态和 DNS。
上线前检查清单
- □ 80/443 只为公开网站开放;
- □ 22、3389 和管理面板端口只允许可信来源;
- □ 3306、6379 等数据库和缓存端口未暴露公网;
- □ 生产、测试、Web、数据库按用途拆分安全组;
- □ 已记录每条规则的用途、来源和负责人;
- □ 已在测试环境验证新规则,再调整生产;
- □ 已检查系统防火墙、监听地址、路由和 DNS;
- □ 已设置登录审计、系统更新和异常流量监控。
常见问题
网站需要开放哪些 ECS 安全组端口?
普通网站通常只需要开放入方向 TCP 80 和 443。SSH 22 或自定义管理端口应只允许固定管理员 IP,数据库端口不应直接暴露到公网。
SSH 端口 22 可以开放给 0.0.0.0/0 吗?
不建议长期这样配置。0.0.0.0/0 表示所有 IPv4 地址,SSH 应尽量限制为办公网络、VPN 或跳板机的固定 IP;临时放开后应立即收紧并检查登录日志。
数据库服务器要不要开放 3306?
如果数据库只供同一 VPC 内的应用访问,建议在数据库安全组中授权来源安全组 ID,而不是把 3306 开给公网或大范围 CIDR。
安全组已经放行,为什么网站仍然打不开?
还要检查服务是否监听正确端口、系统防火墙、实例是否有公网 IP、路由和 DNS。安全组只负责网络层过滤,不会自动启动 Nginx、Caddy 或应用进程。
官方参考资料
- Alibaba Cloud:Security groups——创建安全组、常见端口和默认行为。
- Alibaba Cloud:Security group application and use cases——网站、SSH、数据库和安全组间通信示例。
- Alibaba Cloud:Security group rules——规则、授权对象和优先级说明。
发布于 ,由阿里云折扣网整理。端口、配额、网络能力和安全组控制台可能调整,生产环境修改前请以阿里云国际站官方文档、控制台和实际网络验证为准。