云端安全组提供类似虚拟防火墙功能,用于设置单台或多台ECS实例的网络访问控制,是重要的安全隔离手段。创建ECS实例时,您必须选择一个安全组。您还可以添加安全组规则,对某个安全组下的所有ECS实例的出方向和入方向进行网络控制。
在使用安全组前,您应先了解以下实践建议:
- 最重要的规则:安全组应作为白名单使用。
- 开放应用出入规则时应遵循最小授权原则。例如,您可以选择开放具体的端口,如80端口。
- 不应使用一个安全组管理所有应用,因为不同的分层一定有不同的需求。
- 对于分布式应用来说,不同的应用类型应该使用不同的安全组,例如,您应对Web层、Service层、Database层、Cache层使用不同的安全组,暴露不同的出入规则和权限。
- 避免为每台实例单独设置一个安全组,控制管理成本。
- 优先考虑专有网络VPC。
- 不需要公网访问的资源不应提供公网IP。
- 尽可能保持单个安全组的规则简洁。因为一台实例最多可以加入五个安全组,一个安全组最多可以包括200条安全组规则,所以一台ECS实例可能同时应用数百条安全组规则。您可以聚合所有分配的安全规则以判断是否允许流入或流出,但是,如果单个安全组规则很复杂,就会增加管理的复杂度。
- 阿里云的控制台提供了克隆安全组和安全组规则的功能。如果您想要修改线上的安全组和规则,您应先克隆一个安全组,再在克隆的安全组上进行调试,避免直接影响线上应用。
当您创建专有网络类型的ECS实例时,可以使用系统提供的默认安全组规则,也可以选择VPC中已有的其它安全组。安全组是一种虚拟防火墙用来控制ECS实例的出站和入站流量。下面介绍一下常用的专有网络ECS实例的安全组设置。
案例一:内网互通
VPC类型的ECS实例互通分以下两种情况:
- 同一VPC内的相同安全组下的ECS实例,默认互通。
- 不同VPC内的ECS实例,无法互通。首先需要使用高速通道、VPN网关、云企业网等产品打通两个VPC之间的通信,然后确保两个VPC内的ECS实例的安全组规则允许互相访问,如下表所示。
安全组规则 规则方向 授权策略 协议类型和端口范围 授权类型 授权对象 VPC 1中的ECS实例的安全组配置 入方向 允许 Windows: RDP
3389/3389
地址段访问 要访问的VPC2中的ECS实例的私网IP。
说明 如果允许任意ECS实例登录,填写0.0.0.0/0。入方向 允许 Linux: SSH
22/22
地址段访问 入方向 允许 自定义TCP
自定义
地址段访问 VPC 2中的ECS实例的安全组配置 入方向 允许 Windows: RDP
3389/3389
地址段访问 要访问的VPC1中的ECS实例的私网IP。
说明 如果允许任意ECS实例登录,填写0.0.0.0/0。入方向 允许 Linux: SSH
22/22
地址段访问 入方向 允许 自定义TCP
自定义
地址段访问
案例二:拒绝特定IP或特定端口的访问
您可以通过配置安全组拒绝特定IP或特定端口对专有网络ECS实例的访问,如下表所示。
安全组规则 | 规则方向 | 授权策略 | 协议类型和端口范围 | 授权类型 | 授权对象 |
---|---|---|---|---|---|
拒绝特定IP地址段对ECS实例所有端口的入站访问 | 入方向 | 拒绝 |
全部 -1 |
地址段访问 |
要拒绝访问的IP地址段,如10.0.0.1/32。 |
拒绝特定IP地址段对ECS实例TCP 22端口的入站访问 | 入方向 | 拒绝 |
SSH(22) 22/22 |
地址段访问 |
要拒绝访问的IP地址段,如10.0.0.1/32。 |
案例三:只允许特定IP远程登录ECS
如果您为VPC中的ECS实例配置了公网IP,如NAT网关、EIP等。您可以根据具体情况,添加如下安全组规则允许Windows远程登录或Linux SSH登录。
安全组规则 | 规则方向 | 授权策略 | 协议类型和端口范围 | 授权类型 | 授权对象 |
---|---|---|---|---|---|
允许Windows远程登录 | 入方向 | 允许 |
RDP 3389/3389 |
地址段访问 |
允许登录ECS实例的指定IP地址。 说明 如果允许任意公网IP登录ECS,填写0.0.0.0/0。
|
允许Linux SSH登录 | 入方向 | 允许 |
SSH 22/22 |
地址段访问 |
允许登录ECS实例的指定IP地址。 说明 如果允许任意公网IP登录ECS,填写0.0.0.0/0。
|
案例四:允许从公网访问ECS实例部署的HTTP/HTTPS服务
如果您在专有网络的ECS实例上部署了一个网站,通过EIP、NAT网关对外提供服务,您需要配置如下安全组规则允许用户从公网访问您的网站。
安全组规则 | 规则方向 | 授权策略 | 协议类型和端口范围 | 授权类型 | 授权对象 |
---|---|---|---|---|---|
允许来自HTTP 80端口的入站访问 | 入方向 | 允许 |
HTTP 80/80 |
地址段访问 | 0.0.0.0/0 |
允许来自HTTPS 443端口的入站访问 | 入方向 | 允许 |
HTTPS 443/443 |
地址段访问 | 0.0.0.0/0 |
允许来自TCP 80端口的入站访问 | 入方向 | 允许 |
TCP 80/80 |
地址段访问 | 0.0.0.0 |