自定义网络 ACL
以下示例显示了一个仅支持 IPv4 的 VPC 的自定义网络 ACL。其中包括允许 HTTP 和 HTTPS 流量的入站规则(100 和 110)。此外还存在一个允许响应该入站流量的对应出站规则(140),该规则适用于临时端口 32768-65535。有关如何选择适当的临时端口的更多信息,请参见 临时端口。
网络 ACL 还包括允许 SSH 和 RDP 数据流进入子网的入站规则。出站规则 120 允许响应传出子网。
网络 ACL 出站规则(100 和 110)允许离开子网的 HTTP 和 HTTPS 数据流。此外还存在一个允许响应该出站流量的对应入站规则(140),该规则适用于临时端口 32768-65535。
每个网络 ACL 都包含一个默认规则,其规则编号是星号。此规则会确保在数据包不匹配任何其他规则时拒绝此数据包。您可以修改或删除此规则。
规则 # | 类型 | 协议 | 端口范围 | 源 | 允许/拒绝 | 注释 |
---|---|---|---|---|---|---|
100 |
HTTP |
TCP |
80 |
0.0.0.0/0 |
允许 |
允许来自任意 IPv4 地址的入站 HTTP 流量。 |
110 |
HTTPS |
TCP |
443 |
0.0.0.0/0 |
允许 |
允许来自任意 IPv4 地址的入站 HTTPS 流量。 |
120 |
SSH |
TCP |
22 |
192.0.2.0/24 |
允许 |
允许来自您的家庭网络的公有 IPv4 地址范围的入站 SSH 流量(通过互联网网关)。 |
130 |
RDP |
TCP |
3389 |
192.0.2.0/24 |
允许 |
允许从您的家庭网络的公有 IPv4 地址范围到 Web 服务器的入站 RDP 流量(通过互联网网关)。 |
140 |
自定义 TCP |
TCP |
32768-65535 |
0.0.0.0/0 |
允许 |
允许来自 Internet 的入站返回 IPv4 流量(即源自子网的请求)。 此范围仅为示例。 |
* |
所有流量 |
All |
全部 |
0.0.0.0/0 |
拒绝 |
拒绝所有未经前置规则 (不可修改) 处理的入站 IPv4 流量。 |
规则 # | 类型 | 协议 | 端口范围 | 目的地 | 允许/拒绝 | 注释 |
---|---|---|---|---|---|---|
100 |
HTTP |
TCP |
80 |
0.0.0.0/0 |
允许 |
允许出站 IPv4 HTTP 流量从子网流向 Internet。 |
110 |
HTTPS |
TCP |
443 |
0.0.0.0/0 |
允许 |
允许出站 IPv4 HTTPS 流量从子网流向 Internet。 |
120 | SSH |
TCP |
1024-65535 |
192.0.2.0/24 |
允许 |
允许将出站 SSH 流量返回到您的家庭网络的公有 IPv4 地址范围(通过互联网网关)。 |
140 |
自定义 TCP |
TCP |
32768-65535 |
0.0.0.0/0 |
允许 |
允许对 Internet 客户端的出站 IPv4 响应(例如,向访问子网中的 Web 服务器的人员提供网页)。 此范围仅为示例。 |
* |
所有流量 |
All |
全部 |
0.0.0.0/0 |
DENY |
拒绝所有未经前置规则(不可修改)处理的出站 IPv4 流量。 |
随着数据包流向子网,我们会根据与子网关联的 ACL 的入站规则评估数据包(从规则列表的顶端开始向下移动)。当数据包目标为 HTTPS 端口 (443) 时,评估过程如下。数据包不匹配第一项评估规则(规则 100)。它匹配第二条规则 (110),即允许数据包进入子网。如果数据包的目的地已经指定为端口 139 (NetBIOS),则它与任何规则均不匹配,而且“*”规则最终会拒绝这个数据包。
在您需要开放一系列端口、同时在此部分端口内您想拒绝部分端口,您可能希望添加一项拒绝规则。您只需确保将拒绝规则放在表的较前端,先于一系列的端口数据流的规则。
您可以根据您的用例添加允许规则。例如,您可以添加一个规则,允许端口 53 上的出站 TCP 和 UDP 访问以进行 DNS 解析。对于您添加的每个规则,请确保存在允许响应流量的相应入站或出站规则。
以下示例显示了一个关联有 IPv6 CIDR 块的 VPC 的自定义网络 ACL。此网络 ACL 包含适用于所有 IPv6 HTTP 和 HTTPS 流量的规则。在这种情况下,在 IPv4 流量的现有规则之间插入新规则。您也可以使用大于 IPv4 规则的编号添加规则。IPv4 和 IPv6 流量是独立的,因此,所有 IPv4 流量规则都不适用于 IPv6 流量。
规则 # | 类型 | 协议 | 端口范围 | 源 | 允许/拒绝 | 注释 |
---|---|---|---|---|---|---|
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 流量(通过互联网网关)。 |
130 |
RDP |
TCP |
3389 |
192.0.2.0/24 |
允许 |
允许从您的家庭网络的公有 IPv4 地址范围到 Web 服务器的入站 RDP 流量(通过互联网网关)。 |
140 |
自定义 TCP |
TCP |
32768-65535 |
0.0.0.0/0 |
允许 |
允许来自 Internet 的入站返回 IPv4 流量(即源自子网的请求)。 此范围仅为示例。 |
145 |
自定义 TCP | TCP | 32768-65535 | ::/0 | 允许 |
允许来自 Internet 的入站返回 IPv6 流量(即源自子网的请求)。 此范围仅为示例。 |
* |
所有流量 |
All |
全部 |
0.0.0.0/0 |
拒绝 |
拒绝所有未经前置规则(不可修改)处理的入站 IPv4 流量。 |
* |
所有流量 |
All |
All |
::/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。 |
140 |
自定义 TCP |
TCP |
32768-65535 |
0.0.0.0/0 |
允许 |
允许对 Internet 客户端的出站 IPv4 响应(例如,向访问子网中的 Web 服务器的人员提供网页)。 此范围仅为示例。 |
145 |
自定义 TCP |
TCP |
32768-65535 |
::/0 |
允许 |
允许对 Internet 客户端的出站 IPv6 响应(例如,向访问子网中的 Web 服务器的人员提供网页)。 此范围仅为示例。 |
* |
所有流量 |
All |
全部 |
0.0.0.0/0 |
DENY |
拒绝所有未经前置规则(不可修改)处理的出站 IPv4 流量。 |
* |
所有流量 |
All |
All |
::/0 |
拒绝 |
拒绝所有未经前置规则(不可修改)处理的出站 IPv6 流量。 |
自定义网络 ACL 和其他 AWS 服务
如果您创建自定义网络 ACL,请注意它可能会如何影响您使用其他 AWS 服务创建的资源。
借助 Elastic Load Balancing,如果您的后端实例的子网有一个网络 ACL,并且您在其中针对源为 0.0.0.0/0
或子网的 CIDR 的所有流量添加了拒绝规则,则您的负载均衡器将无法对这些实例执行运行状况检查。有关负载均衡器和后端实例的推荐网络 ACL 规则的更多信息,请参阅《适用于经典负载均衡器的用户指南》中的 VPC 中的负载均衡器的网络 ACL。