网络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

相关文章

Linux 网络编程 --- 应用层

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

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、