本文针对网站提供Web服务、远程连接实例等常见场景,介绍如何基于安全组的特性配置安全组规则。

背景信息

本文中安全组规则示例的说明如下:
  • 均针对网络类型为专有网络的安全组,一条安全组规则同时适用于控制公网和内网访问。对于网络类型为经典网络的安全组,请注意为控制公网和内网访问分别创建安全组规则。
  • 均针对典型应用的默认端口。应用通过服务器的端口对外提供服务,更多信息,请参见常用端口

网站提供Web服务

在未添加安全组规则时,安全组拒绝所有入方向访问。如果您在实例上搭建对外提供Web服务的网站,需要允许访问相应服务的端口,例如HTTP(80)、HTTPS(443),安全组规则的配置示例如下表所示。
规则方向 授权策略 优先级 协议类型 端口范围 授权对象
入方向 允许 1 自定义TCP 目的:80/80 源:0.0.0.0/0
入方向 允许 1 自定义TCP 目的:443/443 源:0.0.0.0/0
说明 如果添加安全组规则后仍无法访问网站,排查思路请参见检查TCP 80端口是否正常工作

从本地服务器远程连接实例

在未添加安全组规则时,安全组拒绝所有入方向访问。从本地服务器远程连接实例前,需根据连接方式允许访问相应服务的端口,例如通过SSH远程连接Linux实例时允许访问SSH(22),通过RDP远程连接Windows实例时允许访问RDP(3389),安全组规则的配置示例如下表所示。
规则方向 授权策略 优先级 协议类型 端口范围 授权对象
入方向 允许 1 自定义TCP 目的:22/22 源:0.0.0.0/0
入方向 允许 1 自定义TCP 目的:3389/3389 源:0.0.0.0/0
说明 0.0.0.0/0为允许所有IP远程连接实例。为安全起见,建议您在实际业务中将授权对象设置为特定的IP,遵循最小授权原则。
使用阿里云Workbench远程连接实例时,允许访问特定的服务器即可,安全组规则示例如下表所示。
规则方向 授权策略 优先级 协议类型 端口范围 授权对象
入方向 允许 1 自定义TCP 目的:22/22 源:47.96.60.0/24,118.31.243.0/24,100.104.0.0/16
入方向 允许 1 自定义TCP 目的:3389/3389 源:47.96.60.0/24,118.31.243.0/24,100.104.0.0/16
说明 关于使用Workbench连接经典网络实例的安全组规则说明,请参见Linux实例相关安全组规则详情Windows实例相关安全组规则详情

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

在未添加安全组规则时,不同安全组之间的实例内网隔离。在同一个专有网络中,如果在实例间进行数据共享等操作,例如安全组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仅为示例,请按实际情况替换。

提供数据库访问

如果您在实例上部署了数据库,需要允许其他实例通过内网获取数据,请根据数据库类型允许访问相应服务的端口,例如MySQL (3306)、Oracle(1521)、MS SQL(1433)、PostgreSQL(5432)、Redis(6379),安全组规则的配置示例如下表所示。
规则方向 授权策略 优先级 协议类型 端口范围 授权对象
入方向 允许 1 自定义TCP 目的:3306/3306 源:172.16.XX.XX
入方向 允许 1 自定义TCP 目的:1521/1521 源:192.168.XX.XX
入方向 允许 1 自定义TCP 目的:1433/1433 源:192.168.XX.XX/16
入方向 允许 1 自定义TCP 目的:5432/5432 源:sg-bp1hv6wvmegs036****
入方向 允许 1 自定义TCP 目的:6379/6379 源:160998252992****/sg-bp174yoe2ib1sqj5****
说明 IP地址、CIDR地址块、阿里云账号ID和安全组ID仅为示例,请按实际情况替换。

ping实例

ICMP协议用于传递控制消息,允许基于ICMP协议的访问后才能完成一些测试操作,例如在客户端执行ping命令测试网络可达性,安全组规则的配置示例如下表所示。
规则方向 授权策略 优先级 协议类型 端口范围 授权对象
入方向 允许 1 全部ICMP(IPv4) 目的:-1/-1 源:0.0.0.0/0
入方向 允许 1 全部ICMP(IPv6) 目的:-1/-1 源:::/0
说明 如果添加安全组规则后,仍然无法从客户端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
说明 网站的IP仅为示例,请按实际情况替换。

添加安全组规则后,您可以登录实例进行测试,例如执行ping命令。如果实例只能访问指定的IP地址,说明安全组规则已经生效。