文档中心

网络 ACL

  1. 网络 ACL 概述
  2. 网络 ACL 基本信息
  3. 网络 ACL 规则
  4. 使用场景
  5. 自定义网络 ACL 示例
  6. 临时端口
  7. 安全组与网络ACL的区别
  8. 操作指南

网络 ACL 概述

网络访问控制列表 (Access Control List,ACL)是一个子网级别无状态的可选安全层,可以精确到协议和端口粒度,可作为防火墙,以控制进出子网的数据流。您可以设置网络 ACL,使其规则与您的安全组相似,以便为您的 VPC 添加额外安全层。 ACL 无状态的特性,即使设置入站规则允许某些访问,如果没有设置相应的出站规则也会导致无法响应访问。

网络 ACL 基本信息

以下是您需要了解的有关网络 ACL 的基本信息:

  • 一个网络 ACL 可以绑定多个子网,但一个子网同一时间只能绑定一个网络 ACL
  • 网络 ACL 是规则的编号列表,以供我们按顺序评估(从编号最小的规则开始,编号越小优先级越高)以判断数据流是否被允许进入或离开任何与网络 ACL 关联的子网。您可以使用的最高规则编号为 32766。我们建议您从创建规则编号为 100 的倍数的规则开始,以使您可以在稍后需要时插入新的规则。
  • 同一个方向的ACL规则编号不允许重复。
  • 网络 ACL 有单独的入站和出站规则,每项规则是允许或是拒绝数据流。
  • 您可以创建自定义网络 ACL;每个自定义网络 ACL默认出入都放行,直至您添加规则为止。
  • 网络 ACL 没有任何状态;对允许入站数据流的响应会随着出站数据流规则的变化而改变(反之亦然),即您需要分别对请求和响应数据流设置规则。
  • 同一个子网内的主机不受关联的ACL策略控制。
  • 同一个网络ACL中的入站/出站规则最多各为20条。

网络 ACL 规则

您可以创建新的网络ACL规则,并绑定到指定子网。当您在网络 ACL 中添加或删除规则时,更改也会自动应用到与其绑定的子网。

网络 ACL 规则有如下部分组成:

  • 优先级:即规则编号,规则评估从编号最低的规则开始。优先级数值越小,优先级越高,只要有一条规则与流量匹配,即应用该规则,并忽略与之冲突的任意更高编号的规则。
  • 支持的协议:IP、UDP、TCP、ICMP
  • 行为:允许或者拒绝
  • 源数据(入站)或目标数据(出站):对于TCP,UDP,为源数据或目标数据的IP或者IP范围(用CIDR表示),对于ICMP协议为 icmp_type 和 icmp_code。

使用场景

用户可以为具有相同网络流量控制的子网绑定同一个网络 ACL,通过设置出站和入站允许/拒绝规则,对进出子网的流量进行精确控制。例如,您在金山云私有网关内托管多层 Web 应用,创建了不同子网分别部署 Web 层、逻辑层和数据层服务,通过网络 ACL 您可以控制这三个子网之间的访问:Web 层子网和数据库层子网无法相互访问,只有逻辑层可以访问 Web 层和数据层子网。

自定义网络 ACL 示例

下表展示了一个自定义网络 ACL 示例。其中包括允许 HTTP 和 HTTPS 数据流进入的规则(入站规则 100 和 110)。相应的出站规则,以允许响应入站数据流(出站规则 120,适用于临时端口 49152-65535) ,网络 ACL 还包括允许 SSH 和 RDP 数据流进入子网的入站规则。出站规则 120 允许离开子网的响应。 网络 ACL 出站规则(100 和 110)允许离开子网的 HTTP 和 HTTPS 数据流。存在相应的入站规则,以允许响应出站数据流(入站规则 140,适用于临时端口 49152-65535)。

入站规则

优先级 源IP 协议 端口范围 允许/拒绝 备注
100 0.0.0.0/0 TCP 80 允许 允许来自任何地方的入站 HTTP 数据流
110 0.0.0.0/0 TCP 443 允许 允许来自任何地方的入站 HTTP 数据流
120 192.0.2.0/24 TCP 49152-65535 允许 允许来自您的办公网络的公有 IP 地址范围内的入站 SSH 数据流(通过 Internet 网关)。
140 0.0.0.0/0 TCP 49152-65535 允许 允许从源于子网的请求返回的入站数据流
150 0.0.0.0/0 UDP 49152-65535 允许 允许从源于子网的请求返回的入站数据流
32766 0.0.0.0/0 All All 拒绝 拒绝所有尚未经前置规则(不可修改)处理的入站数据流。

出站规则

优先级 目标IP 协议 端口范围 允许/拒绝 备注
100 0.0.0.0/0 TCP 80 允许 允许从子网到 Internet 的出站 HTTP 数据流。
110 0.0.0.0/0 TCP 443 允许 允许从子网到 Internet 的出站 HTTPS 数据流。
120 192.0.2.0/24 TCP 1024-65535 允许 允许对 Internet 客户端进行出站响应(例如,向访问子网中 Web 服务器的人员开放网页)。
32766 0.0.0.0/0 All All 拒绝 拒绝所有尚未经前置规则(不可修改)处理的出站数据流。

随着数据包流向子网,我们会根据与子网关联的 ACL 的进入规则评估数据包(从规则列表的顶端开始向下移动)。 信息包被指定发往 SSL 端口 (443)。数据包不匹配第一项评估规则(规则 100)。它匹配第二条规则 (110),即允许数据包进入子网。如果数据包的目的地已经指定为端口 139 (NetBIOS),则最初两项规则可能无法匹配,但是“*”规则最终可能会拒绝这个数据包。 在您需要开放一系列端口、同时在此部分端口内您想拒绝部分数据,您需要添加一项拒绝规则,并确保将拒绝规则的优先级设置为大于放开一系列端口规则的优先级,即拒绝规则的优先级数值小于放开一系列端口的数值。

重要提示: 如果您的主机是作为SLB的后端Real Sever,而且主机所在子网有一个网络 ACL,并在其中针对源为 0.0.0.0/0 的所有流量添加了拒绝访问规则,那么您的负载均衡器将无法对这些实例执行运行状况检查。要确保可执行健康检查,请为已连接到您的负载均衡器的每个子网添加入站 允许访问 规则:允许监控检查流量访问您的后端服务器;另外为您的子网添加一个适用于临时端口 1024 至 65535 的出站 ALLOW 规则。

临时端口

临时端口是客户端发起请求时配置的端口,设置网络 ACL 出站规则时需注意这点。由于网络 ACL 无状态的特性,即使设置入站规则允许某些访问,如果没有设置相应的出站规则会导致无法响应访问。

某客户端向 VPC 内某子网中主机发起请求,该子网关联了网络 ACL。客户端默认配置的端口属于临时端口范围。如果网络 ACL 出站规则中没有设置允许对应临时端口的流量,那么客户端的请求将无法返回。根据客户端的操作系统不同,临时端口范围也随之不同。

  • 许多 Linux 内核(包括 KSC Linux 内核)使用端口 32768-61000,生成自 Sever Load Balancing 的请求使用端口 1024-65535
  • Windows Server 2003 使用端口 1025-5000
  • Windows Server 2008 使用端口 49152-65535

实际上,为涵盖不同客户端类型可能进入到您 VPC 中的公有实例的数据流,您需要开放临时端口 1024-65535。但是,您也可以在 ACL 中添加规则以拒绝任何在此范围内的来自恶意端口的数据流。您只需确保拒绝规则的优先级大于允许一系列临时端口数据流的规则。

安全组与网络ACL的区别

安全组 网络ACL
云服务器实例级别的流量控制(第一层防御) 子网级别的流量控制(第二层防御)
只支持允许规则 支持允许与拒绝规则
对VPC内的云服务器, 出站流量默认允许,入站流量拒绝,直至添加规则为止 每个自定义网络 ACL 默认出入都放行,直至添加规则为止。
有状态:返回数据流会被自动允许,不受任何规则的影响 无状态:返回数据流必须被规则明确允许
在决定是否允许数据流前评估所有规则 在决定是否允许数据流时按照数字顺序处理所有规则
只有在启动 KEC 实例的同时指定安全组、或稍后将安全组与实例关联的情况下,操作才会被应用到实例 自动应用到关联子网内的所有 KEC 实例(备份防御层,因此您便不需要依靠别人为您指定安全组)

操作指南

1、创建网络 ACL

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入 ACL 页面。

2) 点击【新建】按钮,在新建 ACL 页面中输入名称、选择所属的私有网络,点击确定完成。

2、查看网络 ACL 列表

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 在顶部选择地域及虚拟私有网络,即可查看属于此私有网络的网络 ACL 列表。

3、编辑网络 ACL 入站规则

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 在列表中选中要编辑的网络 ACL 的 名称,点击上方的【编辑入站规则】按钮或者点击下方【入站规则】选项卡,然后点击【编辑入站规则】按钮,进入入站规则页面。

3) 可以编辑已有的入站规则,也可以点击下方的【新增一行】按钮添加新的入站规则。

4)输入新增入站协议的优先级、协议、行为、端口范围、源IP,点击【确定】按钮,提示“编辑ACL入站规则成功”,跳回 ACL 页面。

5) 新增的规则根据设置的优先级进行排序,优先级越高(数值越小)越靠前,如下图所示

:出站规则的编辑方式与入站规则类似,只是在编辑出站协议时,源IP改变为目的IP。

4、删除网络 ACL 入站规则

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 在列表中选中要删除入站规则的网络 ACL 的 名称,点击下方【入站规则】选项卡,在下方显示的入站规则列表中,选中需要删除的入站规则,点击上方的【删除】按钮

3) 在跳出的删除确认页面,点击【删除】 。

4) 看到删除成功的提示,表示删除成功

:删除出站规则与删除入站规则操作类似,只需在步骤2) 改为选择 【出站规则】 选项卡即可。

5、子网绑定网络 ACL

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 选中需要绑定子网的 ACL 的 名称,在下方的页面选择【子网信息】选项,下方展示该 ACL 已绑定的子网信息,点击【绑定子网】按钮,进入绑定子网页面。

3) 在跳出的绑定子网页面,选择需要绑定的子网(名称和网段),点击【绑定】按钮。

4) 跳出“绑定成功”的提示框,代表绑定子网成功

:一个子网只能绑定一个 ACL ,一个 ACL 可以绑定多个子网。

6、子网解绑网络 ACL

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 选中需要解绑子网的 ACL 的 名称,在下方的页面选择【子网信息】选项,下方展示该 ACL 已绑定的子网信息,选中需要解绑的子网,点击【解绑】按钮

3) 在跳出的解绑子网确认页面,点击【解绑】按钮。

4) 跳出“绑定成功”的提示框,代表解绑子网成功

7、删除网络 ACL

1) 登录 金山云控制台 依次点击【网络】--【虚拟私有网络】--【ACL】,进入ACL页面。

2) 选中需要删除的 ACL 的 名称,点击上方的【删除】按钮

3) 在跳出的删除确认页面,点击【删除】按钮。

4) 跳出“删除成功”的提示框,代表删除成功

:在删除网络 ACL 前,需要先解绑与 ACL 绑定的子网,否则系统会提示“请先解绑ACL关联的子网,再删除ACL”的信息。