网络ACL(NACL)

2023-11-06 19:30
文章标签 网络 acl nacl

本文主要是介绍网络ACL(NACL),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cn

Hello大家好,欢迎来到《AWS解决方案架构师认证 Professional(SAP)中文视频培训课程》,我们今天的视频课程内容为网络ACL。网络访问控制列表 (ACL) 是 VPC 的一个可选安全层,可用作防火墙来控制进出一个或多个子网的流量。

我们开始今天的课程内容。

在这里插入图片描述
我们来看下网络ACL的一些重要知识点。

网络ACL知识点

1、网络ACL是无状态的,这意味着允许入站流量的响应,返回的数据流必须被出站规则明确允许(反之亦然)。
2、网络ACL是在子网级别运行;而安全组在实例级别运行。我们看下PPT右侧的图:

子网1中有一台EC2,安全组是与这台EC2的网络接口关联的,因此安全组是在实例级别运行的。然而,对于网络ACL,它不是在实例级别运行,而是在子网级别运行。

我们看下图,子网1关联了一个网络ACL,这个子网1中可能有数百台EC2实例,那么对于这个网络ACL规则的调整,是会影响关联的子网1中的所有EC2实例的。

假设来自互联网网关的数据流会使用路由表中的路由,路由到合适的子网,与子网关联的网络 ACL 规则控制允许进入子网的数据流,与实例关联的安全组规则控制允许进入实例的数据流。

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

4、(上面提到了默认网络ACL)默认网络ACL的内容为允许所有入站和出站的流量, 也就是允许所有流量流进和流出与其关联的子网。所以,当我们在子网启动实例后,如果使用的是默认网络ACL,那么至少网络ACL对于启动的实例是放行的。

5、您也可以创建自定义网络 ACL 并将其与子网相关联。

默认情况下,每个自定义网络 ACL 都拒绝所有入站和出站流量,直至您添加规则。所以如果您自己创建了自定义网络ACL,要注意默认情况下会拒绝所有出入站流量,需要根据实际需求自行调整规则,这一点也是容易忽视的地方。

在这里插入图片描述
安全组和NACL的差异

我们接下来看下安全组和网络ACL的差异,这也是很多同学可能比较关心的部分。

1、安全组在实例级别运行,网络ACL在子网级别运行。

2、安全组仅支持配置允许规则,在安全组无法配置拒绝规则。例如配置显式拒绝某个IP地址访问EC2实例,这个安全组做不到;而网络ACL支持允许规则和拒绝规则。我举个例子,比如我们有一台EC2,对外开放了80端口的访问,如果想要拒绝某个来源IP对实例的80端口访问,这个通过安全组是做不到的,需要使用网络ACL添加相应的拒绝规则。

3、安全组是有状态的,返回的数据流会被自动允许;而网络ACL是无状态的,返回数据流必须被规则明确允许,就是说使用网络ACL配置了允许进站的规则必须要有相应允许出站的规则。

4、规则判断的区别,安全组会在决定是否允许数据流前评估所有规则;网络ACL会按照规则的数字,顺序处理所有规则,这块我们后面会进行演示。

5、安全组只有在与实例关联的情况下,规则才会被应用到实例;而网络ACL自动应用于与之关联的子网的所有实例,网络ACL提供了额外的防御层。

以上就是安全组与网络ACL的差异。

在这里插入图片描述
接下来的内容我们切换到AWS管理控制台,演示前面讲的内容。

NACL实操演示

我们切换到EC2的控制台,当前有一台EC2在运行,我们使用这个EC2来做下面的演示。

首先,看下这台EC2的安全组的入站规则,当前对所有来源开放了ICMP,以及TCP的22端口。如果我们现在要禁止一个特定的IP访问这台EC2的22端口,使用安全组是做不到的,因为前面讲了,安全组只支持配置允许的规则,这就需要配置网络ACL添加相应的拒绝规则。

我们看下当前的网络ACL,进入到VPC控制台,然后安全性-网络ACL,可以看到目前我们有一个网络ACL,默认值为“是”,意味着它是创建的默认网络ACL;

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

页面下方是网络ACL的入站规则和出站规则,当前入站和出站各包括两条规则,我们看一下规则,规则左边是编号列表,第一条规则编号为100,允许了所有的流量入站;第二条规则编号为*号,规则内容为禁止所有流量入站。

网络ACL是按顺序评估规则,从编号最小的规则开始,以判断是否允许流量进入或离开任何与网络 ACL 关联的子网,也就是说在网络ACL中,规则的编号越小,它的优先级就越高。

假设现在有入站流量匹配到了编号100这条规则,那么网络ACL就会放行此入站流量,而不会在继续向后评估规则。也就是说网络ACL从最小编号的规则开始匹配,匹配了规则的流量就会执行该规则相应的放行或者禁止动作,而不在继续向后匹配规则。

我们看下现在的默认网络ACL的规则,默认允许了与其关联的子网的所有入站和出站的流量。

接下来我们就测试下,在我的本地终端是否能够访问这台EC2。

在这里插入图片描述
我们切换到EC2控制台页面,复制这台EC2的外网IP,然后在切换到我本地的终端,使用PING命令来测试下:

ping 54.180.109.183

可以看到返回的信息显示可以PING通的,我本地电脑是可以和这台EC2通信的。

接下来我们做个测试,修改下这台EC2所在子网关联的网络ACL的入站规则,我们添加一个入站规则:
添加规则,编号输入90 ,然后选择所有流量,协议,端口范围以及源都保持和编号规则100的内容一致,然后允许/拒绝这里选择拒绝,然后完成添加规则。

我们看下,新添加的规则的编号为90,内容为拒绝所有入站流量;之前默认的规则编号100,内容为允许所有入站流量。

然后我们切换到本地终端在PING一下EC2的IP :

ping 54.180.109.183

可以看到目前我们已经无法ping通ec2了,ping的访问被拒绝了。

这是因为我们新添加的规则拒绝了所有的入站流量,当我的本地流量到达网络ACL时,网络ACL规则开始评估流量,新添加的这个规则的编号为90,目前优先级最高,规则内容为禁止所有入站流量,我们刚刚访问流量匹配了这条规则,所以被网络ACL禁止访问,有规则匹配后,就不会再继续向下匹配其他规则,所以我们的入站流量被拒绝了。
在这里插入图片描述

我们继续做测试,我们编辑下入站规则,把之前添加的规则编号由90修改为110。然后,现在允许规则的优先级高于拒绝规则的优先级,我们继续PING下EC2,可以看到我们的PING又被放行了。

接下来我们看下另一个案例,默认网络ACL规则内容为放行所有入站和出站的流量,我们前面讲过,如果我们想要拒绝某个特定的来源IP对实例的访问,这个需求通过安全组是做不到的,需要使用网络ACL。

看下我现在本地出口的ip,为114.245.93.139,假设我们现在要配置网络ACL规则,拒绝我这个IP访问EC2,但是允许除此IP外的其他访问流量,我们来配置下网络ACL。

编辑入站规则,我们将之前测试添加的规则删除,然后新添加一个规则,配置编号为90使其优先级当前最高,然后所有流量,所有协议,全部端口,将 “源” 配置为我的出口IP,然后选择拒绝,保存。

我们看下现在的规则,如果有来源IP为114.245.93.139的流量到达网络ACL,编号90的规则就会匹配流量,规则拒绝此来源IP的访问并不会向后在匹配其他规则;

如果来源不是此特定IP的其他的流量,那么就不会匹配编号90的规则,会继续匹配后面的规则,也就是编号100的规则,规则内容是放行所有入站流量,所以最终入站请求会被放行。这样就实现了上述案例的需求,禁止某个特定IP的入站访问,但是允许其他除此IP外访问的需求。
在这里插入图片描述

好的,我们在回到前面的PPT,默认网络ACL的内容为允许所有入站和出站的流量,但如果您自己创建了自定义网络ACL,默认的情况下,自定义的网络ACL是拒绝所有入站和出站流量的,直到您添加相应的规则,我们来测试下是不是这样

在这里插入图片描述
我们创建一个自定义的网络ACL,然后看下出站、入站的规则,可以看到创建的自定义的网络ACL是拒绝所有入站和出站流量的,需要根据需求自行添加相应允许规则。

很多同学在实际使用网络ACL的时候都忽视了这一点,导致无法访问EC2,所以这里单独提出来讲一下。

好的,以上就是我们今天的视频课程内容,希望能够帮助大家更深入的理解网络ACL。

在这里插入图片描述
希望此系列教程能为您通过 AWS解决方案架构师认证 Professional 认证考试带来帮助,如您有任何疑问

关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cn

这篇关于网络ACL(NACL)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358607

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor