网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的网络流量。
如图1所示。
图1 安全组与网络ACL
网络ACL与安全组类似,都是安全防护策略,当您想增加额外的安全防护层时,就可以启用网络ACL。安全组对云服务器、云容器、云数据库等实例进行防护,网络ACL对子网进行防护,两者结合起来,可以实现更精细、更复杂的安全访问控制。
网络ACL与安全组的详细区别请参见VPC访问控制简介。
网络ACL基本信息须知:对于已建立的长连接,流量断开后,不会立即建立新的连接,需要超过连接跟踪的老化时间后,才会新建立连接并匹配新的规则。比如,对于已建立的ICMP协议长连接,当流量中断后,需要超过老化时间30s后,将会新建立连接并匹配新的规则,详细说明如下:
- 不同协议的连接跟踪老化时间不同,比如已建立连接状态的TCP协议连接老化时间是600s,ICMP协议老化时间是30s。对于除TCP和ICMP的其他协议,如果两个方向都收到了报文,连接老化时间是180s,如果只是单方向收到了报文,另一个方向没有收到报文,则连接老化时间是30s。
- TCP协议处于不同状态下的连接老化时间也不相同,比如TCP连接处于ESTABLISHED(连接已建立)状态时,老化时间是600s,处于FIN-WAIT(连接即将关闭)状态时,老化时间是30s。
网络ACL默认规则每个网络ACL都包含一组默认规则,如下所示:
- 默认放通同一子网内的流量。
- 默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。
- 默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。
- 默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。
- 默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。
- 除上述默认放通的流量外,其余出入子网的流量全部拒绝,如表1所示。该规则不能修改和删除。表1 网络ACL默认规则[]
方向 | | | | | | |
入方向 | * | 拒绝 | 全部 | 0.0.0.0/0 | 0.0.0.0/0 | 拒绝所有入站流量 |
出方向 | * | 拒绝 | 全部 | 0.0.0.0/0 | 0.0.0.0/0 | 拒绝所有出站流量 |
流量匹配网络ACL规则的顺序一个子网只能绑定一个网络ACL,当网络ACL存在多条规则时,流量按照规则的优先级进行匹配。优先级的数字越小,优先级越高,越先执行该规则。默认规则优先级的值为“*”,优先级最低。
以入方向的流量为例,子网的网络流量将按照以下原则匹配网络ACL规则,入方向和出方向的流量匹配顺序相同。- 当流量匹配上自定义规则,则根据规则策略决定流量走向。
- 当策略为拒绝时,则拒绝该流量流入子网。
- 当策略为允许时,则允许该流量流入子网。
- 当流量未匹配上任何自定义规则,则执行默认规则,拒绝流量流入子网。
图2 网络ACL匹配顺序
应用场景- 由于应用层需要对外提供服务,因此入方向规则必须放通所有地址,如何防止恶意用户的非正常访问呢?
解决方案:通过网络ACL添加拒绝规则,拒绝恶意IP的访问。
- 隔离具有漏洞的应用端口,比如Wanna Cry,关闭445端口。
解决方案:通过网络ACL添加拒绝规则,拒绝恶意协议和端口,比如TCP:445端口。
- 子网内的通信无防护诉求,仅有子网间的访问限制。
解决方案:通过网络ACL设置子网间的访问规则
- 对访问频繁的应用,调整安全规则顺序,提高性能。
解决方案:网络ACL支持规则编排,可以把访问频繁的规则置顶。
网络ACL配置流程子网配置网络ACL的流程,如图3所示。
图3 网络ACL配置流程
- 参考创建网络ACL创建网络ACL。
- 参考添加网络ACL规则添加网络ACL规则。
- 参考将子网关联至网络ACL将子网与网络ACL关联。子网关联后,网络ACL将自动开启并生效。
约束与限制- 默认情况下,一个区域内,一个用户最多可以创建200个网络ACL。
- 建议一个网络ACL单方向拥有的规则数量不要超过100条,否则会引起网络ACL性能下降。
- 在一个网络ACL的入方向中,最多可以有124条规则关联IP地址组,出方向同理。