安全组应用指导和案例

更新时间:
复制为 MD 格式

安全组用于控制ECS实例的入方向和出方向流量。本文介绍安全组规划原则,并提供Web服务、远程访问、数据库访问、内网互通等常见场景的规则配置示例。

安全组应用指导

1、规划安全组

配置安全组前,先明确业务边界和安全要求,例如哪些服务对公网开放,哪些服务仅允许内网访问。

  • 公网服务和内网服务使用不同安全组

    公网服务仅开放必要端口,其他端口和协议默认关闭,减少暴露面。

    数据库、缓存等内部服务建议部署在无公网访问权限的ECS实例上,并通过授权另一个安全组实现内网访问。

  • 不同应用使用不同安全组

    不同应用通常需要开放不同端口,建议分属不同安全组,避免规则互相影响。

    例如,Linux实例可能开放TCP 22端口用于SSH,Windows实例可能开放TCP 3389端口用于远程桌面。

    即使使用同一镜像类型,提供不同服务且无需内网互访时,也建议划入不同安全组,便于后续解耦和变更。

    规划应用时,可以结合网段和安全组划分服务边界。

  • 生产环境和测试环境使用不同安全组

    生产、测试、开发环境建议使用不同安全组,避免测试规则影响线上业务。

    多套测试环境也可以分配不同安全组,减少环境之间的互相干扰。

  • 不需要公网访问的资源不分配公网IP

    连接ECS实例时,优先使用Workbench、会话管理工具或跳板机,减少公网暴露。访问无公网或私网环境中的服务时,可使用端口转发功能,请参见通过会话管理CLI的端口转发访问无公网实例

    分布式应用中,不对公网提供服务的ECS实例建议不分配公网IP。多台服务器提供公网服务时,建议通过负载均衡服务分发流量,避免单点故障。

    ECS实例仅需出方向访问公网时,建议使用NAT网关配置SNAT规则,避免分配公网IPEIP后暴露服务。具体配置,请参见创建和管理SNAT条目

  • 以白名单的方式使用安全组

    安全组建议按白名单方式使用:默认拒绝访问,仅添加允许规则放通必要端口和授权对象。排查线上问题时,不建议临时分配公网IP或挂载EIP,以免扩大暴露面。

2、配置安全组规则

配置安全组规则时,仅开放业务必需的端口,并尽量限制源IP地址范围。

VPC网络中,一条安全组规则可同时控制公网和内网访问。
  • 普通安全组和企业级安全组默认策略有差异

    普通安全组和企业级安全组默认拒绝所有入方向访问。普通安全组默认允许所有出方向访问;企业级安全组默认拒绝所有出方向访问。

  • 不同安全组及不同类型安全组的内网互通性有差异

    即使是同一个账户下的ECS实例,如果分属不同安全组,内网网络也是隔离的。普通安全组默认组内内网互通;企业级安全组默认组内内网隔离。

  • 遵循最小授权原则添加安全组规则

    例如,开放Linux实例22端口用于远程登录时,仅允许特定IP访问。

    警告

    授权对象为0.0.0.0/0或::/0时,表示允许所有IP访问实例,风险较高。仅在必须对公网开放的场景使用,并只开放必要端口。

    请按最小范围开放原则配置规则,避免全开。关于安全组支持的授权对象类型,请参见安全组规则

  • 遵循最小权限原则设置组内隔离

    在不需要普通安全组内ECS实例互相内网互通时,将普通安全组的组内连通策略设置为组内隔离。

  • 尽量保持单个安全组内规则用途统一

    按照用途将规则维护在多个安全组中,并将实例关联到这些安全组。单个安全组的规则数量过多,会增加管理复杂度。

  • 谨慎选择安全组规则的授权对象

    安全组规则的授权对象可以是IP地址、安全组或者CIDR网段。

    不同安全组之间需要内网互通时,优先使用安全组ID授权,避免逐个维护IPCIDR网段。例如,Web层使用sg-web,数据库层使用sg-database,可在sg-database中授权sg-web访问MySQL(3306)端口。

    内网访问建议使用源安全组授权,而不是CIDR网段授权。

  • 典型的应用通常使用默认的端口提供服务

    这些应用会通过服务器的特定端口与外部进行通信,详情请参见常用端口

    说明

    如需检测ECS常用端口是否被安全组规则放行,或检测安全组规则是否允许特定IPECS网卡单向访问,可在自助问题排查下的安全组规则检测页签完成操作。具体操作,请参见安全组规则检测

3、持续优化调整

业务变化后,原有安全组规则可能不再适用,建议定期检查并调整。修改线上规则前,可克隆安全组并在测试环境验证,确认流量正常后再应用到生产环境,避免业务中断。

安全组应用案例

管控ECS实例的入站流量

入站流量指外部资源访问ECS实例的流量。安全组入方向规则默认拒绝访问,仅需配置允许规则。相关案例包含:

管控ECS实例的出站流量

出站流量指ECS实例访问外部资源的流量。安全组出方向规则默认允许访问,可通过拒绝规则限制实例访问指定外部资源。相关案例包含:

案例1:部署在ECS实例的网站业务提供Web服务

网站部署在ECS实例上并对公网提供服务时,仅开放TCP 80(HTTP)和443(HTTPS)入方向访问,其他服务端口保持关闭。

安全组规则示例如下表所示:

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

自定义TCP

服务的开放端口:

  • HTTP(80)

  • HTTPS(443)

  • 其他自定义端口:手动输入端口范围。

源:0.0.0.0/0

说明

如果添加安全组规则后仍无法访问网站,请检查服务的开放端口是否正常工作。具体操作,请参见无法访问ECS实例中的服务的排查方法

案例2:特定用户需要远程访问ECS实例

需要远程连接ECS实例时,仅对管理员或指定服务器IP开放远程登录端口,例如TCP 22(SSH)或自定义SSH端口,降低被攻击风险。

安全组规则示例如下表所示:

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

自定义TCP

  • Linux实例默认开放22端口:选择SSH(22)

  • Windows实例默认开放3389端口:选择RDP(3389)

  • 如果手动开放了其他端口,请手动输入端口范围。

源:192.168.XX.XX

说明

根据连接方式填写特定用户或服务器的公网IP或私网IP。

可通过IP地址查询等网站获取本地公网IP地址。

使用阿里云Workbench远程连接实例时,仅需允许特定授权对象。安全组入方向规则示例如下表所示。

授权策略

优先级

协议类型

端口范围

授权对象

允许

1

自定义TCP

  • Linux实例默认开放22端口:选择SSH(22)

  • Windows实例默认开放3389端口:选择RDP(3389)

  • 如果手动开放了其他端口,请手动输入端口范围。

  • 如果通过实例的公网IP(包括固定公网IPEIP)连接:添加47.96.60.0/24、118.31.243.0/24、8.139.112.0/24、8.139.99.192/26

  • 如果通过实例的专有网络私网IP连接:添加100.104.0.0/16。

案例3:数据库服务部署在ECS的安全策略

数据库服务建议仅允许特定IP地址或应用服务器安全组访问对应端口,避免直接暴露到公网。

如果入方向规则已包含0.0.0.0/0,请检查是否确有公网访问需求。不需要公网访问时,可添加拒绝规则。例如MySQL默认不应向公网开放3306端口,可添加如下拒绝规则,并将优先级设为100。

常见数据库默认端口的安全组规则如下表所示:

数据库类型

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

MySQL

入方向

允许

1

自定义TCP

目的:3306/3306

源:172.16.XX.XX

Oracle

入方向

允许

1

自定义TCP

目的:1521/1521

源:192.168.XX.XX

MS SQL

入方向

允许

1

自定义TCP

目的:1433/1433

源:192.168.XX.XX/16

PostgreSQL

入方向

允许

1

自定义TCP

目的:5432/5432

源:sg-bp1hv6wvmegs036****

Redis

入方向

允许

1

自定义TCP

目的:6379/6379

源:160998252992****/sg-bp174yoe2ib1sqj5****

说明

请根据实际情况替换IP地址、CIDR地址块、阿里云账号ID和安全组ID。

案例4:只允许特定协议的业务访问

如需测试网络连通性,可允许ICMP协议访问。例如,在客户端执行ping命令前,需要放通ICMP。安全组规则示例如下表所示:

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

  • IPv4网络环境:选择全部ICMP(IPv4)

  • IPv6网络环境:选择全部ICMP(IPv6)

目的:-1/-1

客户端IP地址

说明

根据网络环境不同,输入IPv4地址或者IPv6地址。

说明

如果添加规则后仍无法从客户端ping通实例,请参见无法pingECS实例公网IP的排查方法排查。

案例5:不同安全组的实例实现内网互通

同一VPC内,不同安全组的实例需要互访时,建议通过授权安全组实现。例如,安全组A中的实例需要通过FTP访问安全组B中的共享文件,可授权安全组A访问安全组B的对应端口,无需逐个维护实例IP。

说明

如果实例属于不同VPC,不能仅通过安全组实现内网互通。

  • 如果业务支持将所有ECS实例部署到同一VPC,可通过更换ECS实例的VPC实现VPC内网互通。

  • 如果ECS实例必须部署在不同VPC中,可使用VPC对等连接、私网连接或云企业网等方案。更多信息,请参见VPC互连

  • 情况一:

    安全组A和安全组B属于同一账号时,授权对象填写安全组ID。规则示例如下表所示。

    规则方向

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    入方向

    允许

    1

    自定义TCP

    目的:21/21

    源:sg-bp1hv6wvmegs036****

    说明

    请根据实际情况替换安全组ID。

  • 情况二:

    安全组A和安全组B属于不同账号时,授权对象填写阿里云账号ID和安全组ID。规则示例如下表所示。

    规则方向

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    入方向

    允许

    1

    自定义TCP

    目的:21/21

    源:160998252992****/sg-bp174yoe2ib1sqj5****

    说明

    请根据实际情况替换阿里云账号ID和安全组ID。

案例6:限制ECS实例访问外部网站

如果只允许实例访问指定网站,可将出方向规则按白名单方式配置:先拒绝全部出方向访问,再允许访问指定网站IP。

说明

设置安全组规则时需注意:

  • 当协议、端口和授权对象匹配到多条规则时,系统根据优先级和授权策略判断最终生效规则。仅最终结果为允许时,才建立会话。

  • 安全组规则优先级数值越小,优先级越高。相同优先级下,拒绝规则优先生效。因此,拒绝全部出方向访问的规则优先级应低于允许规则,确保指定网站访问能命中允许规则。

安全组规则示例如下表所示:

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

出方向

拒绝

2

全部

目的:-1/-1

目的:0.0.0.0/0

出方向

允许

1

自定义TCP

目的:80/80

目的:47.96.XX.XX

出方向

允许

1

自定义TCP

目的:443/443

目的:121.199.XX.XX

以上规则表示:安全组内实例仅允许访问47.96.XX.XX80端口和121.199.XX.XX443端口,其他出方向访问均被拒绝。