最近更新时间:2024-09-26 19:54:40
网络访问控制列表 (Access Control List,ACL)是一个子网级别无状态的可选安全层,可以精确到协议和端口粒度,可作为防火墙,以控制进出子网的数据流。您可以设置网络 ACL,使其规则与您的安全组相似,以便为您的 VPC 添加额外安全层。 ACL 无状态的特性,即使设置入站规则允许某些访问,如果没有设置相应的出站规则也会导致无法响应访问。
以下是您需要了解的有关网络 ACL 的基本信息:
一个网络 ACL 可以绑定多个子网,但一个子网同一时间只能绑定一个网络 ACL
网络 ACL 是规则的编号列表,以供我们按顺序评估(从编号最小的规则开始,编号越小优先级越高)以判断数据流是否被允许进入或离开任何与网络 ACL 关联的子网。您可以使用的最高规则编号为 32766。我们建议您从创建规则编号为 100 的倍数的规则开始,以使您可以在稍后需要时插入新的规则。
同一个方向的ACL规则编号不允许重复。
网络 ACL 有单独的入站和出站规则,每项规则是允许或是拒绝数据流。
您可以创建自定义网络 ACL;每个自定义网络 ACL默认出入都放行,直至您添加规则为止。
网络 ACL 没有任何状态即您需要分别对请求和响应数据流设置规则。
同一个子网内的主机不受关联的ACL策略控制。
金山云公共服务网段需要放行,否则将无法正常使用SLB、yum源、NTP、DNS、服务器安全客户端等服务。公共服务网段如下:198.18.0.0/15,100.64.0.0/10,11.0.0.0/8,33.0.0.0/8,120.92.212.184。
您可以创建新的网络ACL规则,并绑定到指定子网。当您在网络 ACL 中添加或删除规则时,更改也会自动应用到与其绑定的子网。
网络 ACL 规则有如下部分组成:
优先级:即规则编号,规则评估从编号最低的规则开始。优先级数值越小,优先级越高,只要有一条规则与流量匹配,即应用该规则,并忽略与之冲突的任意更高编号的规则。
支持的协议:IP、UDP、TCP、ICMP
行为:允许或者拒绝
源数据(入站)或目标数据(出站):对于TCP,UDP,为源数据或目标数据的IP或者IP范围(用CIDR表示),对于ICMP协议为 icmp_type 和 icmp_code。
用户可以为具有相同网络流量控制的子网绑定同一个网络 ACL,通过设置出站和入站允许/拒绝规则,对进出子网的流量进行精确控制。例如,您在金山云私有网关内托管多层 Web 应用,创建了不同子网分别部署 Web 层、逻辑层和数据层服务,通过网络 ACL 您可以控制这三个子网之间的访问:Web 层子网和数据库层子网无法相互访问,只有逻辑层可以访问 Web 层和数据层子网。
下表展示了一个自定义网络 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 | IP | IP | 拒绝 | 拒绝所有尚未经前置规则(不可修改)处理的入站数据流。 |
出站规则
优先级 | 目标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 | IP | IP | 拒绝 | 拒绝所有尚未经前置规则(不可修改)处理的出站数据流。 |
随着数据包流向子网,我们会根据与子网关联的 ACL 的进入规则评估数据包(从规则列表的顶端开始向下移动)。 信息包被指定发往 SSL 端口 (443)。数据包不匹配第一项评估规则(规则 100)。它匹配第二条规则 (110),即允许数据包进入子网。如果数据包的目的地已经指定为端口 139 (NetBIOS),则最初两项规则可能无法匹配,但是“*”规则最终可能会拒绝这个数据包。
在您需要开放一系列端口、同时在此部分端口内您想拒绝部分数据,您需要添加一项拒绝规则,并确保将拒绝规则的优先级设置为大于放开一系列端口规则的优先级,即拒绝规则的优先级数值小于放开一系列端口的数值。
临时端口是客户端发起请求时配置的端口,设置网络 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 |
---|---|
云服务器实例级别的流量控制(第一层防御) | 子网级别的流量控制(第二层防御) |
支持允许与拒绝规则 | 支持允许与拒绝规则 |
对VPC内的云服务器, 出站流量默认允许,入站流量拒绝,直至添加规则为止 | 每个自定义网络 ACL 默认出入都放行,直至添加规则为止。 |
有状态:返回数据流会被自动允许,不受任何规则的影响 | 无状态:返回数据流必须被规则明确允许 |
在决定是否允许数据流前评估所有规则 | 在决定是否允许数据流时按照数字顺序处理所有规则 |
只有在启动 KEC 实例的同时指定安全组、或稍后将安全组与实例关联的情况下,操作才会被应用到实例 | 自动应用到关联子网内的所有 KEC 实例(备份防御层,因此您便不需要依靠别人为您指定安全组) |
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入 ACL 页面。
点击【新建】按钮,在新建 ACL 页面中输入名称、选择所属的私有网络,点击确定完成。
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
在顶部选择地域及虚拟私有网络,即可查看属于此私有网络的网络 ACL 列表。
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
在列表中选中要编辑的网络 ACL 的 名称,点击上方的【编辑入站规则】按钮或者点击下方【入站规则】选项卡,然后点击【编辑入站规则】按钮,进入入站规则页面。
可以编辑已有的入站规则,也可以点击下方的【新增一行】按钮添加新的入站规则。
4)输入新增入站协议的优先级、协议、行为、端口范围、源IP,点击【确定】按钮,提示“编辑ACL入站规则成功”,跳回 ACL 页面。
注:出站规则的编辑方式与入站规则类似,只是在编辑出站协议时,源IP改变为目的IP。
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
在列表中选中要删除入站规则的网络 ACL 的 名称,点击下方【入站规则】选项卡,在下方显示的入站规则列表中,选中需要删除的入站规则,点击上方的【删除】按钮
在跳出的删除确认页面,点击【删除】 。
看到删除成功的提示,表示删除成功
注:删除出站规则与删除入站规则操作类似,只需在步骤2) 改为选择 【出站规则】 选项卡即可。
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
选中需要绑定子网的 ACL 的 名称,在下方的页面选择【子网信息】选项,下方展示该 ACL 已绑定的子网信息,点击【绑定子网】按钮,进入绑定子网页面。
在跳出的绑定子网页面,选择需要绑定的子网(名称和网段),点击【绑定】按钮。
跳出“绑定成功”的提示框,代表绑定子网成功
注:一个子网只能绑定一个 ACL ,一个 ACL 可以绑定多个子网。如果ACL中绑定的子网中有终端子网,则该ACL中的规则,会在终端子网下创建的负载均衡中生效,因为负载均衡有监听器端口,因此规则的生效方式为匹配规则中的IP,忽略ACL规则中的端口,按监听器的端口生效。
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
选中需要解绑子网的 ACL 的 名称,在下方的页面选择【子网信息】选项,下方展示该 ACL 已绑定的子网信息,选中需要解绑的子网,点击【解绑】按钮
在跳出的解绑子网确认页面,点击【解绑】按钮。
跳出“绑定成功”的提示框,代表解绑子网成功
登录 金山云控制台 依次点击【网络】–【虚拟私有网络】–【ACL】,进入ACL页面。
选中需要删除的 ACL 的 名称,点击上方的【删除】按钮
注:在删除网络 ACL 前,需要先解绑与 ACL 绑定的子网,否则系统会提示“请先解绑ACL关联的子网,再删除ACL”的信息。
纯净模式