为满足您在网站提供Web服务、管理远程连接访问等常见场景下的网络流量管理需求,本文介绍如何利用安全组的特性来配置相应的安全组规则,保障云资源网络流量的安全性和可靠性。
注意事项
在查阅安全组应用案例之前,您需要注意以下几点信息:
安全组默认拒绝所有入方向访问。
普通安全组默认允许所有出方向访问。
不同安全组之间的实例默认内网隔离。
在网络类型为专有网络的安全组中,一条安全组规则可以同时适用于公网和内网访问控制。即通过配置一条规则,您可以限制或允许来自公网和内网的流量访问。
在网络类型为经典网络的安全组中,由于经典网络中公网和内网使用相同的IP地址空间,为了控制公网和内网访问,需要分别创建不同的安全组规则。
典型的应用通常使用默认的端口来提供服务。这些应用会通过服务器的特定端口与外部进行通信。更多信息,请参见常用端口。
授权对象为0.0.0.0/0,表示允许所有IP访问实例。请您根据实际业务需求,按照最小范围开放原则配置安全组规则,尽量避免全开(慎用::/0或者0.0.0.0/0)以免引发安全问题。关于安全组支持的授权对象类型,请参见安全组规则。
网站提供Web服务
对于开放公网访问的网站服务器,可以设置安全组规则,只允许来自任何源的TCP端口80(HTTP)和443(HTTPS)的入站流量,确保网站可以被外部访问,但限制了对服务器上其他服务的直接访问。
安全组规则的配置示例如下表所示:
规则方向 | 授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
入方向 | 允许 | 1 | 自定义TCP | 服务的开放端口:
| 源:0.0.0.0/0 |
如果添加安全组规则后仍无法访问网站,请检查服务的开放端口是否正常工作。具体操作,请参见无法访问ECS实例中的服务的排查方法。
管理远程连接访问
为了远程连接ECS实例,通常需要开放TCP端口22(SSH)或自定义的SSH端口。您可以通过设置安全组规则,将允许访问实际远程端口的授权对象限定为特定用户(如管理员)或特定服务器的IP,以减少被恶意攻击的风险。
建议您谨慎管理远程连接端口的授权对象,遵循最小范围开放原则,尽量避免全开(慎用::/0或者0.0.0.0/0),以免引发安全问题。
安全组规则的配置示例如下表所示:
规则方向 | 授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
入方向 | 允许 | 1 | 自定义TCP |
| 源:192.168.XX.XX 说明 特定用户或特定服务器的IP地址,根据是公网连接还是私网连接输入公网IP或者私网IP。 |
使用阿里云Workbench远程连接实例时,只需允许特定的授权对象即可,安全组入方向规则示例如下表所示。
授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
允许 | 1 | 自定义TCP |
|
警告 您也可以添加0.0.0.0/0,但存在安全风险,请谨慎使用。 |
关于使用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。
数据库服务访问控制
数据库服务通常需要更严格的安全策略。您可以通过配置安全组,仅允许来自特定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 |
| 目的:-1/-1 | 客户端IP地址 说明 根据网络环境不同,输入IPv4地址或者IPv6地址。 |
限制实例访问外部网站
如果您需要限制实例只能访问指定网站,可以将安全组作为白名单使用,设置默认拒绝所有出方向访问,然后仅允许访问指定网站的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服务,除此之外其他出方向的访问均不允许。