更新时间:2024-03-05 GMT+08:00

网络ACL

网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的网络流量。

图1 安全组与网络ACL

网络ACL基本信息

  • 您的VPC默认没有网络ACL。当您需要时,可以创建自定义的网络ACL并将其与子网关联。关联子网后,网络ACL默认拒绝所有出入子网的流量,直至添加放通规则。
  • 网络ACL可以同时关联多个子网,但一个子网只能关联一个网络ACL
  • 每个新创建的网络ACL最初都为未激活状态,直至您关联子网为止。
  • 网络ACL使用连接跟踪来标识进出实例的流量信息,入方向和出方向网络ACL规则配置变更,对原有流量不会立即生效。

    当您在网络ACL内增加、删除、更新规则,或者在网络ACL内添加、移出子网时,由入方向/出方向流量建立的连接,已建立的长连接不会断开,依旧遵循原有网络ACL规则。入方向/出方向流量新建立的连接,将会匹配新的网络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添加拒绝规则,拒绝恶意IP的访问。

  • 隔离具有漏洞的应用端口,比如Wanna Cry,关闭445端口。

    解决方案:通过网络ACL添加拒绝规则,拒绝恶意协议和端口,比如TCP:445端口。

  • 子网间东西向无防护诉求,仅有南北向的访问限制。

    解决方案:通过网络ACL设置南北向规则。

  • 对访问频繁的应用,调整安全规则顺序,提高性能。

    解决方案:网络ACL支持规则编排,可以把访问频繁的规则置顶。