阿里云安全组最小权限配置

阿里云安全组最小权限配置

  • admin admin
  • 2026-09-12
  • 3554
  • 0

阿里云安全组最小权限配置是指仅放行业务必需的网络流量,默认拒绝所有未明确允许的入站和出站连接。最小权限配置的核心要求安全组规则由方向、协议类型、端口范围、授权对象和优先级组成,最小权限配置应遵循以下要求:入方向默认拒绝所有流量,只放行明确需要的外部访问端口...

优惠价格:¥ 0.00
当前位置:首页 > 阿里云物理服务器 > 阿里云安全组最小权限配置
详情介绍

阿里云安全组最小权限配置是指仅放行业务必需的网络流量,默认拒绝所有未明确允许的入站和出站连接。

阿里云安全组最小权限配置  第1张

最小权限配置的核心要求

安全组规则由方向、协议类型、端口范围、授权对象和优先级组成,最小权限配置应遵循以下要求:

  • 入方向默认拒绝所有流量,只放行明确需要的外部访问端口。

  • 出方向默认拒绝所有流量,只放行明确的主动外联需求。

  • 授权对象不得使用 0.0.0/0 承载管理类端口。

  • 优先使用安全组ID、精确IP段或域名服务商回源地址作为授权对象。

  • 每条规则添加用途描述,定期清理无效规则。

入方向规则配置

入方向规则控制外部访问ECS实例的流量,最小权限配置中,管理端口、业务端口和数据库端口必须分离。

管理端口

Linux SSH 22/TCP、Windows RDP 3389/TCP 仅允许运维堡垒机出口IP或企业办公网段访问,禁止使用 0.0.0/0,如果使用跳板机,来源填写跳板机所在安全组ID。

Web业务端口

80/TCP、443/TCP 仅对实际需要公网访问的Web服务器开放,来源可以是 0.0.0/0,但更小权限应填写CDN、WAF或负载均衡的回源地址段,源站ECS不应直接暴露给公网,应先经过SLB或WAF,安全组来源填写其内网IP或安全组ID。

应用端口

8080、8443、9000等应用端口只对负载均衡或应用网关安全组开放,不直接对公网开放,来源填写应用网关的安全组ID,实现实例级访问控制。

数据库与缓存端口

MySQL 3306/TCP、PostgreSQL 5432/TCP、Redis 6379/TCP、MongoDB 27017/TCP、SQL Server 1433/TCP 只能对应用服务器安全组开放,禁止任何公网来源,来源填写应用安全组ID,不允许IP地址 0.0.0/0 或任意互联网网段。

运维监控端口

Zabbix 10050/TCP、Node Exporter 9100/TCP、Prometheus 9090/TCP 等仅允许监控服务器内网IP或安全组访问,ICMP协议按需对监控网段开放。

其他端口

NFS 2049/TCP、SMB 445/TCP、LDAP 389/TCP 等仅在内网安全组之间开放,不得跨VPC或对公网暴露。

出方向规则配置

出方向规则控制ECS实例主动访问外部资源,最小权限原则要求出方向同样不能默认放行全部流量,否则可能导致数据外传、恶意下载或横向移动。

域名解析

仅允许UDP 53、TCP 53访问可信DNS服务器地址,例如阿里云公共DNS 223.5.5.5、223.6.6.6或自建DNS服务器IP,不开放所有目的地址。

软件更新与系统补丁

操作系统更新和软件源通常通过HTTPS,出方向允许TCP 443访问官方更新服务器域名对应的IP段,若无法维护精确IP,可暂时对更新域名解析地址段放行,但不应开放全部TCP 80/443到 0.0.0/0

对外API调用

业务需要调用第三方API时,只允许目标API服务的固定IP或域名解析地址段,协议为TCP 443或指定端口,不使用 0.0.0/0

内部服务互通

ECS访问内部服务时,出方向目的地填写目标安全组ID或内网网段,如 0.0.0/816.0.0/12168.0.0/16,端口仅开放必要端口。

禁止通用出站

除上述明确放行规则外,其他出方向流量应通过低优先级拒绝规则全部丢弃,拒绝规则可设置为所有协议、所有端口、目的 0.0.0/0,优先级设置为较低,如100。

规则优先级与授权对象

阿里云安全组规则优先级范围为1-100,数字越小越先匹配,最小权限配置建议:

  • 高优先级放置精确允许规则,如来源为单一IP或安全组的规则。

  • 低优先级放置默认拒绝规则。

  • 避免使用相同优先级放置冲突规则,若存在相同优先级,拒绝规则优先于允许规则,这可能造成非预期阻断。

  • 授权对象优先使用安全组ID,可自动适配ECS实例扩容、缩容和替换,例如数据库安全组只接受来源为应用安全组ID,新增加的应用实例自动获得数据库访问权限。

安全组嵌套与分层

安全组支持嵌套引用,最小权限配置应利用该能力分层控制。

  • 公网入口层:只开放80、443,来源为 0.0.0/0 或CDN回源地址。

  • 应用层:只接受来自入口层安全组的80/443转发流量,同时出方向访问数据库层。

  • 数据层:只接受来自应用层安全组的3306/6379等数据库端口,不直接响应公网流量。

  • 管理层:单独运维安全组,允许22/3389等管理端口,只授权给堡垒机或办公网段。

通过安全组分层,可以缩小每层暴露面,避免单台ECS同时暴露多个高危端口。

常见最小权限端口模板

场景方向协议端口授权对象备注
Linux SSH运维TCP22堡垒机安全组ID或办公网段禁止 0.0.0/0
Windows远程桌面TCP3389堡垒机安全组ID或办公网段禁止 0.0.0/0
Web服务TCP80,4430.0.0/0 或CDN回源段源站不直接暴露
应用转发TCP8080SLB安全组ID仅内网
MySQLTCP3306应用安全组ID禁止公网
RedisTCP6379应用安全组ID建议加密码
Zabbix监控TCP10050监控服务器IP仅内网
DNS解析UDP/TCP535.5.5,223.6.6.6可信DNS
系统更新TCP443更新服务器IP段按需
默认拒绝入/出全部全部0.0.0/0低优先级

默认规则清理

新建安全组可能包含默认放行规则,例如同一安全组内互访、出方向全部允许,最小权限配置必须删除或修改这些默认规则。

  • 删除同安全组内所有端口互访规则,如需互通可单独配置必要端口。

  • 删除出方向全部允许规则,改为仅允许可信DNS、更新服务器和必要API。

  • 删除入方向默认允许规则,确认不存在任何 0.0.0/0 覆盖22、3389、3306、6379等高危端口。

审计与变更管理

安全组不是一次性配置,最小权限需要通过持续审计保持。

  • 每月导出安全组规则,逐条核对来源、端口、协议和用途。

  • 0.0.0/0 规则单独标记,确认是否必须。

  • 结合VPC流日志或安全组日志,分析实际流量,关闭长期未命中的放行规则。

  • 变更时使用最小范围原则,先在测试环境验证,再发布生产环境。

  • 禁止在默认安全组上随意新增 0.0.0/0 规则,所有变更需记录原因和有效期。

与网络ACL的配合

安全组粒度到实例,网络ACL粒度到子网,最小权限部署时,应在网络ACL层同步设置粗粒度拒绝规则,安全组层设置细粒度允许规则,例如子网ACL入方向仅放行80、443,安全组再按实例角色放行22、3306等端口,双重过滤可以防止单点配置疏漏导致数据库端口直接暴露。

错误配置及风险

以下配置不符合最小权限:

  • 入方向 0.0.0/0 允许22、3389、3306、6379、27017。

  • 出方向 0.0.0/0 允许全部端口。

  • 数据库端口允许互联网网段。

  • 规则优先级混乱,导致拒绝规则先于允许规则生效。

  • 使用默认安全组且保留默认互通规则。

  • 规则描述缺失,无法判断用途。

这些配置会增加暴力免费、漏洞利用、数据泄露和横向移动风险,应通过上述规则模板逐一纠正。

十一、自动化配置示例

通过阿里云API或Terraform管理安全组,将最小权限规则代码化。

resource"alicloud_security_group_rule""allow_ssh"{
type="ingress"
ip_protocol="tcp"
port_range="22/22"
security_group_id=alicloud_security_group.web.id
source_security_group_id=alicloud_security_group.bastion.id
priority=1
description="AllowSSHfrombastion"
}

用代码管理可以防止控制台随意变更,将规则纳入版本控制。

十二、多账号与多环境隔离

生产、测试、开发环境使用不同安全组,不允许跨环境复用规则,生产安全组仅允许生产堡垒机和生产应用安全组访问,测试环境即使需要公网调试,也不允许复用生产数据库端口规则,跨账号授权时,只允许特定账号的安全组ID,不开放互联网地址段。

0