安全组应用案例

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

为满足您在网站提供Web服务、管理远程连接访问等常见场景下的网络流量管理需求,本文介绍如何利用安全组的特性来配置相应的安全组规则,保障云资源网络流量的安全性和可靠性。

注意事项

在查阅安全组应用案例之前,您需要注意以下几点信息:

  • 安全组默认拒绝所有入方向访问。

  • 普通安全组默认允许所有出方向访问。

  • 不同安全组之间的实例默认内网隔离。

  • 在网络类型为专有网络的安全组中,一条安全组规则可以同时适用于公网和内网访问控制。即通过配置一条规则,您可以限制或允许来自公网和内网的流量访问。

  • 在网络类型为经典网络的安全组中,由于经典网络中公网和内网使用相同的IP地址空间,为了控制公网和内网访问,需要分别创建不同的安全组规则。

  • 典型的应用通常使用默认的端口来提供服务。这些应用会通过服务器的特定端口与外部进行通信。更多信息,请参见常用端口

警告

授权对象为0.0.0.0/0,表示允许所有IP访问实例。请您根据实际业务需求,按照最小范围开放原则配置安全组规则,尽量避免全开(慎用::/0或者0.0.0.0/0)以免引发安全问题。关于安全组支持的授权对象类型,请参见安全组规则

网站提供Web服务

对于开放公网访问的网站服务器,可以设置安全组规则,只允许来自任何源的TCP端口80(HTTP)和443(HTTPS)的入站流量,确保网站可以被外部访问,但限制了对服务器上其他服务的直接访问。

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

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

自定义TCP

服务的开放端口:

  • HTTP(80)

  • HTTPS(443)

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

源:0.0.0.0/0

说明

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

管理远程连接访问

为了远程连接ECS实例,通常需要开放TCP端口22(SSH)或自定义的SSH端口。您可以通过设置安全组规则,将允许访问实际远程端口的授权对象限定为特定用户(如管理员)或特定服务器的IP,以减少被恶意攻击的风险。

警告

建议您谨慎管理远程连接端口的授权对象,遵循最小范围开放原则,尽量避免全开(慎用::/0或者0.0.0.0/0),以免引发安全问题。

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

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

自定义TCP

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

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

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

源:192.168.XX.XX

说明

特定用户或特定服务器的IP地址,根据是公网连接还是私网连接输入公网IP或者私网IP。

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

授权策略

优先级

协议类型

端口范围

授权对象

允许

1

自定义TCP

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

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

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

  • 如果通过实例的公网IP(包括固定公网IP和EIP)连接:添加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。

说明

关于使用Workbench连接经典网络实例的安全组规则说明,请参见使用Workbench连接经典网络实例时相关安全组设置

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

在同一个专有网络中,如果需要在实例之间进行数据共享等操作,例如安全组A的实例需要通过FTP访问安全组B的实例中的共享文件,您可以通过授权安全组的方式实现内网互通。相比于授权单个IP地址或CIDR地址块,授权安全组能够更加便捷地实现多个实例之间的访问。您可以轻松地允许一组实例访问另一组实例,而无需逐个配置每个实例的访问权限。

说明

如果实例分别属于不同的专有网络,则不能通过安全组实现内网互通。您可以使用云企业网连接不同专有网络之间的实例,更多信息,请参见云企业网快速入门

  • 情况一:

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

    规则方向

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    入方向

    允许

    1

    自定义TCP

    目的:21/21

    源:sg-bp1hv6wvmegs036****

    说明

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

  • 情况二:

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

    规则方向

    授权策略

    优先级

    协议类型

    端口范围

    授权对象

    入方向

    允许

    1

    自定义TCP

    目的:21/21

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

    说明

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

数据库服务访问控制

数据库服务通常需要更严格的安全策略。您可以通过配置安全组,仅允许来自特定IP地址或安全组(例如应用服务器所在的安全组)的对应端口的入站连接,确保数据库访问的私密性和安全性。

警告

建议您谨慎管理数据库服务的授权对象,遵循最小范围开放原则,尽量避免全开(慎用::/0或者0.0.0.0/0),以免引发安全问题。

以下是一些常见数据库在默认端口下的安全组规则配置:

数据库类型

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

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。

特定协议访问

根据业务需求,可能需要限制特定的网络协议,例如只允许TCP或UDP的某些端口通信。ICMP协议主要用于在IP主机、路由器之间传递控制消息。在进行一些测试操作之前,需要允许基于ICMP协议的访问。例如,在客户端执行ping命令来测试网络连通性时,就需要允许ICMP协议的访问。安全组规则的配置示例如下表所示:

规则方向

授权策略

优先级

协议类型

端口范围

授权对象

入方向

允许

1

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

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

目的:-1/-1

客户端IP地址

说明

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

说明

如果添加安全组规则后,仍然无法从客户端ping通实例,请查阅Linux系统的ECS中没有禁ping却ping不通的解决方法文档进行排查。

限制实例访问外部网站

如果您需要限制实例只能访问指定网站,可以将安全组作为白名单使用,设置默认拒绝所有出方向访问,然后仅允许访问指定网站的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.XX上80端口的HTTP服务和访问121.199.XX.XX上443端口的HTTPS服务,除此之外其他出方向的访问均不允许。