如何理解NACL

概念介绍

网络访问控制列表 (ACL) 是 VPC 的一个可选安全层,可用作防火墙来控制进出一个或多个子网的流量。您可以设置网络 ACL,使其规则与您的安全组相似,以便为您的 VPC 添加额外安全层

网络 ACL 的基本信息

您的 VPC 自动带有可修改的默认网络 ACL。默认情况下,它允许所有入站和出站 IPv4 流量以及 IPv6 流量 (如果适用)。

您可以创建自定义网络 ACL 并将其与子网相关联。默认情况下,每个自定义网络 ACL 都拒绝所有入站和出站流量,直至您添加规则。

您的 VPC 中的每个子网都必须与一个网络 ACL 相关联。如果您没有明确地将子网与网络 ACL 相关联,则子网将自动与默认网络 ACL 关联。

您可以将一个网络 ACL 与多个子网关联;但是,一个子网一次只能与一个网络 ACL 关联。当您将一个网络 ACL 与一个子网关联时,将删除之前的关联。

网络 ACL 包含规则的编号列表,以供我们按顺序评估 (从编号最小的规则开始) 以判断流量是否被允许进入或离开任何与网络 ACL 关联的子网。您可以使用的最高规则编号为 32766。我们建议您开始先以增量方式创建规则(例如,以 10 或 100 的增量增加),这样您可以在稍后需要时插入新的规则。

网络 ACL 有单独的入站和出站规则,每项规则都或是允许或是拒绝数据流。

网络 ACL 没有任何状态;对允许入站数据流的响应会随着出站数据流规则的变化而改变 (反之亦然)。

网络 ACL 规则

您可以在默认网络 ACL 中添加或删除规则,或为您的 VPC 创建额外网络 ACL。当您在网络 ACL 中添加或删除规则时,更改也会自动应用到与其相关联的子网。

以下为部分网络 ACL 规则:

l 规则编号。规则评估从编号最低的规则起开始进行。只要有一条规则与流量匹配,即应用该规则,并忽略与之冲突的任意更高编号的规则。

l 协议。您可以指定任何有标准协议编号的协议。有关更多信息,请参阅Protocol Numbers。如果您指定 ICMP 作为协议,您可以指定任意或全部 ICMP 类型和代码。

l [仅限入站规则]数据流源 (CIDR 范围) 和目标端口 (监听) 或端口范围。

l [仅限出站规则]数据流目标 (CIDR 范围) 以及目标端口或端口范围。

l 针对特定流量选择 ALLOW 或 DENY。

默认网络 ACL

默认网络 ACL 配置为让所有流量流进和流出与其关联的子网。每个网络 ACL 还包含一个规则编号是星号的规则。此规则确保在数据包不匹配任何其他编号规则时拒绝该数据包。您可以修改或删除此规则。

下面是一个仅支持 IPv4 的 VPC 的示例默认网络 ACL。

入站
规则 # 类型 协议 端口范围 允许/**拒绝**
100 所有 IPv4 流量 全部 全部 0.0.0.0/0 允许
* 所有 IPv4 流量 全部 全部 0.0.0.0/0 拒绝
出站
规则 # 类型 协议 端口范围 目的地 允许/**拒绝**
100 所有 IPv4 流量 全部 全部 0.0.0.0/0 允许
* 所有 IPv4 流量 全部 全部 0.0.0.0/0 拒绝

示例

入站
规则 # 类型 协议 端口范围 允许**/**拒绝 注释
100 HTTP TCP 80 0.0.0.0/0 允许 允许来自任意 IPv4 地址的入站 HTTP 流量。
105 HTTP TCP 80 ::/0 允许 允许来自任意 IPv6 地址的入站 HTTP 流量。
110 HTTPS TCP 443 0.0.0.0/0 允许 允许来自任意 IPv4 地址的入站 HTTPS 流量。
115 HTTPS TCP 443 ::/0 允许 允许来自任意 IPv6 地址的入站 HTTPS 流量。
120 SSH TCP 22 192.0.2.0/24 允许 允许来自您的家庭网络的公有 IPv4 地址范围的入站 SSH 流量 (通过 Internet 网关)。
130 RDP TCP 3389 192.0.2.0/24 允许 允许从您的家庭网络的公有 IPv4 地址范围到 Web 服务器的入站 RDP 流量 (通过 Internet 网关)。
140 自定义 TCP TCP 32768-65535 0.0.0.0/0 允许 允许来自 Internet 的入站返回 IPv4 流量 (即源自子网的请求)。 此范围仅为示例。有关如何选择适当的临时端口的更多信息,请参阅临时端口
145 自定义 TCP TCP 32768-65535 ::/0 允许 允许来自 Internet 的入站返回 IPv6 流量 (即源自子网的请求)。 此范围仅为示例。有关如何选择适当的临时端口的更多信息,请参阅临时端口
* 所有流量 全部 全部 0.0.0.0/0 拒绝 拒绝所有未经前置规则 (不可修改) 处理的入站 IPv4 流量。
* 所有流量 全部 全部 ::/0 拒绝 拒绝所有未经前置规则 (不可修改) 处理的入站 IPv6 流量。
出站
规则 # 类型 协议 端口范围 目的地 允许**/**拒绝 注释
100 HTTP TCP 80 0.0.0.0/0 允许 允许出站 IPv4 HTTP 流量从子网流向 Internet。
105 HTTP TCP 80 ::/0 允许 允许出站 IPv6 HTTP 流量从子网流向 Internet。
110 HTTPS TCP 443 0.0.0.0/0 允许 允许出站 IPv4 HTTPS 流量从子网流向 Internet。
115 HTTPS TCP 443 ::/0 允许 允许出站 IPv6 HTTPS 流量从子网流向 Internet。
120 自定义 TCP TCP 32768-65535 0.0.0.0/0 允许 允许对 Internet 客户端的出站 IPv4 响应 (例如,向访问子网中的 Web 服务器的人员提供网页)。 此范围仅为示例。有关如何选择适当的临时端口的更多信息,请参阅临时端口
125 自定义 TCP TCP 32768-65535 ::/0 允许 允许对 Internet 客户端的出站 IPv6 响应 (例如,向访问子网中的 Web 服务器的人员提供网页)。 此范围仅为示例。有关如何选择适当的临时端口的更多信息,请参阅临时端口
* 所有流量 全部 全部 0.0.0.0/0 拒绝 拒绝所有未经前置规则 (不可修改) 处理的出站 IPv4 流量。
* 所有流量 全部 全部 ::/0 拒绝 拒绝所有未经前置规则(不可修改)处理的出站 IPv6 流量。

自定义网络 ACL 和其他 AWS 服务

如果您创建自定义网络 ACL,请注意它可能会如何影响您使用其他 AWS 服务创建的资源。

借助 Elastic Load Balancing,如果您的后端实例的子网有一个网络 ACL,并且您在其中针对源为 0.0.0.0/0 或子网的 CIDR 的所有流量添加了 DENY 规则,则您的负载均衡器将无法对这些实例执行运行状况检查。有关负载均衡器和后端实例的推荐网络 ACL 规则的更多信息,请参阅Classic Load Balancer 用户指南中的 VPC 中负载均衡器的网络 ACL。

临时端口

上一个部分中的网络 ACL 实例使用了临时端口范围 32768-65535。但是,您可能需要根据自己使用的或作为通信目标的客户端的类型为网络 ACL 使用不同的范围。

发起请求的客户端会选择临时端口范围。根据客户端的操作系统不同,范围也随之更改。许多 Linux 内核(包括 Amazon Linux 内核)使用端口 32768-61000。生成自 Elastic Load Balancing 的请求使用端口 1024-65535。Windows 操作系统通过 Windows Server 2003 使用端口 1025-5000。Windows Server 2008 及更高版本使用端口 49152-65535。NAT 网关使用端口 1024 - 65535。例如,如果一个来自 Internet 上的 Windows XP 客户端的请求到达您的 VPC 中的 Web 服务器,则您的网络 ACL 必须有相应的出站规则,以支持目标为端口 1025-5000 的数据流。

如果您的 VPC 中的一个实例是发起请求的客户端,则您的网络 ACL 必须有入站规则来支持发送到实例类型(Amazon Linux、Windows Server 2008 等)特有的临时端口的数据流。

在实际中,为使不同客户端类型可以启动流量进入您 VPC 中的公有实例,您可以开放临时端口 1024-65535。但是,您也可以在 ACL 中添加规则以拒绝任何在此范围内的来自恶意端口的数据流。请务必将 DENY 规则放在表的较前端,先于开放一系列临时端口的 ALLOW 规则。

更多ACL规则请看官方文档

https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/vpc-recommended-nacl-rules.html

results matching ""

    No results matching ""

    results matching ""

      No results matching ""