安全组规则是您自定义的访问控制规则,用于控制安全组内ECS实例的出入站流量,可以实现对云资源的访问控制和网络安全防护。
使用安全组规则时,您应了解以下信息:
在VPC网络下,安全组规则分为入方向和出方向,规则同时控制公网和内网流量。在经典网络下,安全组规则分为公网入方向、公网出方向、(内网)入方向、(内网)出方向,公网入方向和公网出方向规则控制公网流量,入方向和出方向规则控制内网流量。
安全组是有状态的应用。一个有状态的会话连接中,会话的最长保持时长是910秒。允许访问并建立会话后,安全组会默认放行同一会话中的通信。例如,在会话期内,如果连接的数据包在入方向是允许的,则在出方向也是允许的。
修改安全组规则,或通过修改网卡关联的安全组,从而改变作用于网卡的安全组规则时,如果修改前和修改后的安全组规则行为未改变,不会影响已经建立的会话。若您依赖普通安全组的组内互通进行流量放行,在修改网卡关联的安全组时,如果不希望影响已经建立的会话,您需要先将ECS实例或网卡加入新的安全组,延迟10s左右,再离开旧的安全组。
TCP 25端口是默认的邮箱服务端口。基于安全考虑,ECS实例的TCP 25端口默认受限,建议您使用465端口发送邮件。具体操作,请参见使用SSL加密465端口发送邮件。
在不添加任何安全组规则时,安全组对流量有默认访问控制规则,这些默认访问控制规则不可见。默认访问控制规则,与您自定义的规则共同作用,控制ECS实例的流量。普通安全组和企业级安全组的默认访问控制规则不同:普通安全组入方向默认仅放行同安全组内其他实例到来的内网流量,出方向放行所有流量;企业级安全组默认出入方向流量均不放行。更多信息,请参见普通安全组与企业级安全组。
普通安全组的组内连通策略,会影响该普通安全组对流量的默认访问控制规则。组内连通策略默认是组内互通,即入方向放行同安全组内其他实例到来的内网流量,出方向放行通往同安全组内其他实例的内网流量。在不需要普通安全组内实例内网互相访问的情况下,建议您遵循最小授权原则,将普通安全组的组内连通策略设置为组内隔离。更多信息,请参见修改普通安全组的组内连通策略。
在决定ECS实例的流量能否通过时,会将ECS实例多个安全组的规则汇总在一起,按照固定的策略排序,并与安全组对流量的默认访问控制规则一起,作用于ECS实例,决定允许或拒绝流量通过。更多信息,请参见安全组规则排序策略。
安全组规则的数量有上限,默认200条,可以调整安全组规则数与ECS实例可关联的安全组数量的档位,请参见安全组使用限制。您应尽量保持单个安全组内规则的简洁,以降低管理复杂度。使用安全组规则的健康检查,可以检测单个安全组中的冗余规则,请参见查看安全组是否存在冗余规则。
安全组规则的构成
单条自定义的安全组规则,由以下信息构成:
协议类型:匹配流量的协议类型。支持TCP、UDP、ICMP(IPv4)、ICMP(IPv6)和GRE。
端口范围:匹配流量的目的端口。对于TCP和UDP协议,可以指定一个斜线(/)分隔的端口范围,比如8000/9000,或22/22。对其他协议,该字段取值-1/-1。更多信息,请参见常用端口。
授权对象:入方向规则中匹配流量的源地址,出方向规则中匹配流量的目的地址。支持CIDR地址块(或IP地址)、安全组、前缀列表三种类型。具体如下:
IPv4地址:例如192.168.0.100。
IPv4 CIDR地址块:例如192.168.0.0/24。
IPv6地址:例如2408:4321:180:1701:94c7:bc38:3bfa:9。接口将会对IPv6地址进行标准化处理,比如,2408:180:0000::1将会被处理为2408:180::1。
IPv6 CIDR地址块:例如2408:4321:180:1701::/64。接口将会对IPv6 CIDR地址块进行标准化处理,比如,2408:4321:180:0000::/64将会被处理为2408:4321:180::/64。
安全组ID:支持授权当前账号下或其他账号下的目标安全组,使用目标安全组中ECS实例的内网IP来进行流量匹配,实现内网访问的控制。例如,安全组A中有ECS实例b,当您授权安全组A访问时,您实际授权的是安全组A中ECS实例b的内网IP的访问权限。
前缀列表ID:前缀列表是一些网络前缀(即CIDR地址块)的集合。授权对象为前缀列表时,该条规则占用的安全组规则配额数量,为前缀列表最大条目数,与前缀列表中已有条目数量无关。更多信息,请参见前缀列表概述。
授权策略:允许或拒绝。在基于流量的协议、端口和授权对象匹配到某条安全组规则后,会对流量执行授权策略指定的动作,来允许或拒绝流量放行。
优先级:取值范围为1~100,数值越小,代表优先级越高。安全组规则的排序,首先考虑优先级,其次考虑授权策略,更多信息,请参见安全组规则排序策略。
规则方向:分为入方向和出方向,入方向规则控制入站流量,出方向规则控制出站流量。
作用的网卡类型:仅在经典网络下进行区分,可以指定规则作用于经典网络ECS实例的公网或内网网卡,作用于公网网卡的安全组规则控制公网访问,作用于内网网卡的安全组规则控制内网访问。在专有网络VPC下的安全组规则,同时控制公网和内网访问。
规则ID:在您添加安全组规则时,系统会为每条安全组规则生成唯一的ID。若您需要修改或删除已有安全组规则,您可以通过安全组规则ID,来指定要进行操作的安全组规则。
安全组规则基于协议类型、端口范围、授权对象来匹配流量,并基于授权策略来允许或拒绝放通流量。对于一般的入方向规则,授权对象匹配流量的来源地址,端口范围匹配流量的目的端口。对于一般的出方向规则,授权对象匹配流量的目的地址,端口范围匹配流量的目的端口。当然,如果您有更精确的访问控制需求,可以使用五元组规则。更多信息,请参见安全组五元组规则。
安全组规则排序策略
ECS实例可以关联一个或多个安全组,在决定ECS实例的流量(以入方向流量为例)能否通过时,处理如下:
将多个安全组的入方向规则汇总,并按照以下优先级进行排序。
首先,考虑规则的优先级,优先级数值越小的规则优先级越高,高优先级的规则总是排在低优先级的规则之前。
其次,考虑授权策略,遵循拒绝(Drop)规则优先原则,授权策略为拒绝(Drop)的规则总是排在授权策略为允许(Accept)的规则之前。
流量按照协议、端口、授权对象,从前到后依次匹配每条规则,如果成功匹配某条规则,将会对流量执行规则授权策略指定的动作,允许或拒绝流量通行。
除了自定义的安全组规则,安全组还有一些不可见的默认访问控制规则,会影响流量的允许或拒绝,请参见普通安全组与企业级安全组。
安全组特殊规则
为确保ECS实例稳定运行,以及用户对部分云上功能的正常使用,安全组会默认放行某些特殊情况下的特定网络流量,并且您无法通过配置安全组规则来阻止这类默认的允许行为。包括以下特殊场景:
特定条件下的网络连通性检测:
当底层组件发生变更时,阿里云可能会对ECS实例进行按需Ping探测以验证网络连通性。这类探测是非常规性的,为了确保探测的准确性,安全组会识别这种探测流量并默认放行。
ICMP(PMTUD差错报文):
如果用户的ECS实例发送的数据包超出了路径MTU(最大传输单元)且设置了DF(禁止分片)标志,ECS实例将会收到一个携带正确路径MTU的ICMP差错报文。该报文会指示ECS减小数据包大小,安全组会识别这种特殊的网络流量并默认放行。更多信息,请参见网络最大传输单元MTU。
SLB流量:
网络流量通过服务器负载均衡(SLB),如ALB、NLB或CLB转发到后端ECS时,安全组会识别这种流量并默认放行。在这种情况下,将由SLB上的安全组或访问控制列表(ACL)来控制ECS实例的出入站流量。
MetaServer访问:
MetaServer提供了ECS实例必需的元数据服务,是确保实例正常运行的基础服务。安全组默认允许出站流量访问MetaServer(IP地址为100.100.100.200),您无需配置额外规则。
安全组应用案例
针对网站提供Web服务、远程连接实例等常见场景,为您提供了一些安全组规则配置示例。更多信息,请参见安全组应用案例。
安全组规则管理
有关如何管理安全组规则的操作指引,请参见安全组规则管理。