计算机网络-ACL访问控制列表

news2024/9/27 19:15:08

上一篇介绍NAT时候就看到了ACL这个东西了,这个是什么意思?有什么作用呢?

一、ACL访问控制列表

访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具,能够对报文进行匹配和区分。简单来讲就是一个过滤列表,一般配合其它技术实现功能。ACL可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

比如下面这种情况: ACL使用场景

我们实际上使用不同VLAN划分不同网段以区分不同功能。因此对于内网不同网段的策略可以使用ACL访问控制列表进行控制。网络流量是有方向和一来一回数据流的,因此一般可以在发送或者接收时调用ACL。

二、ACL的组成

ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。

ACL组成
ACL组成

2.1 ACL编号

在网络设备上配置ACL时,每个ACL列表都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同。这个编号与下面将要介绍的ACL分类相关。

2.2 ACL规则

前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。ACL规则包含规则编号,规则处理动作,匹配项,如果没有指定规则编号则有缺省规则编号和步长。

2.1 规则编号(Rule ID):

一个ACL中的每一条规则都有一个相应的编号。

2.2 步长(Step):

步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,缺省值为5。步长的作用是为了方便后续在旧规则之间,插入新的规则。比如缺省规则编号:0 ,5 ,10 ,15 ....

规则编号
规则编号

2.3 动作

每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。

2.4 匹配项

ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。只有匹配到相应的条件才执行相应的动作。

在这里需要了解一个知识:通配符 (Wildcard)

  • 通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配。
  • 通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。 通配符
通配符可以不连续
通配符可以不连续

因为ACL一般用来匹配源地址、目的地址、源端口和目的端口,因此需要使用地址+通配符形式进行匹配。参考上面图例:192.168.1.0 0.0.0.255 转换成二进制可以表示0段必须为192.168.1,最后一段可以为1-255。192.168.1.0 0.0.0.255 表示一个网段,192.168.1.1 0 表示一个主机位,即全部匹配,0.0.0.0 255.255.255.255 表示所有地址

通配符中的1或者0可以不连续,进行灵活匹配,一般用于匹配网段或者一个主机。

注意:每个ACL系统都在ACL末尾隐含的规则拒绝所有rule 4294967294 deny

三、ACL的分类

一般有两种分类:基于ACL规则号分类,基于ACL命名的ACL,一般常用编号进行定义。

基于ACL规则定义方式的分类:常用的为基本ACL和高级ACL。

分类编号范围规则定义描述
基本ACL2000~2999仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。
高级ACL3000~3999可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则。
二层ACL4000~4999使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等。
用户自定义ACL5000~5999使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则。
用户ACL6000~6999既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。

基于ACL标识方法的分类:

分类规则定义描述
数字型ACL传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
命名型ACL通过名称代替编号来标识ACL。

我们这里主要学习基本ACL和高级ACL。 基本ACL和高级ACL

基本ACL一般只用来匹配源地址,高级ACL可以匹配源地址、目的地址、源端口、目的端口,更为灵活。因此基本ACL一般用来匹配一个网络所有流量,高级ACL匹配一个网络去往不同目的网络或者不同流量的匹配(HTTP、DNS、FTP、TELNET等等)

四、ACL的工作原理

1、ACL的匹配机制: 匹配机制

2、ACL的匹配机制概括来说就是:

  • 配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则。
  • 匹配顺序按照规则编号从小到大匹配
  • 一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配。
  • 在末尾有一条隐含的拒绝所有流量的rule规则

3、ACL的匹配顺序与结果; 匹配顺序与结果 建议匹配严格的规则放在前面,宽泛匹配的放在后面顺序匹配。

4、ACL的匹配位置:

匹配位置
匹配位置

入站与出站 可以想象成一条数据为写一封信,从你寄出信--接收方收到信-再到接收方回复内容--你收到回信这才是一个完整的过程,你可以选择在发出时候进行匹配,或者在回信的过程进行匹配拦截。ACL的应用可以在物理接口或者三层逻辑接口如VLANIF上以及路由策略等应用。

一般情况下建议遵循以下规则:

  • 基本ACL在靠近发送端,因为基本ACL匹配所有流量,影响全部流量
  • 高级ACL部署在靠近接收端,因为只是匹配其中特定特征流量,可能不会影响其它流量

四、ACL的配置应用与实践

ACL的应用很广泛,可以用于以下场景:

  • 匹配IP流量
  • 在Traffic-filter中被调用
  • 在NAT(Network Address Translation)中被调用
  • 在路由策略中被调用
  • 在防火墙的策略部署中被调用
  • 在QoS中被调用
  • 其他……

ACL配置:因为基本ACL和高级ACL的匹配项不一样,因此配置上有一些不一样。

基本ACL:

# 创建基本ACL,并进入基本ACL视图。
[Huawei] acl [ number(2000~2999) ] acl-number [ match-order config ]

# 配置基本ACL的规则
[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ] 

# 示例
acl number 2000  
 rule 5 permit source 192.168.1.0 0.0.0.255

高级ACL:

# 创建高级ACL,进入高级ACL视图。
[Huawei] acl [ number(3000-3999) ] acl-number [ match-order config ]

# 配置基本ACL的规则
# 根据IP承载的协议类型不同,在设备上配置不同的高级ACL规则。对于不同的协议类型,有不同的参数组合。
# 当参数protocol为IP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } ip [ destination { destination-address destination-wildcard | any } | source { source-address source-wildcard | any } | time-range time-name | [ dscp dscp | [ tos tos | precedence precedence ] ] ] 

# 当参数protocol为TCP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } { protocol-number | tcp } [ destination { destination-address destination-wildcard | any } | destination-port { eq port | gt port | lt port | range port-start port-end } | source { source-address source-wildcard | any } | source-port { eq port | gt port | lt port | range port-start port-end } | tcp-flag { ack | fin | syn } * | time-range time-name ] *

# 简单说就是IP协议可以匹配源地址、目的地址,TCP可以匹配源端口、目的端口
# 示例
acl number 3000  
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
 rule 10 permit tcp source 192.168.1.0 0.0.0.255 source-port eq telnet destinati
on 192.168.2.0 0.0.0.255

总结:ACL一般使用编号进行区分。基本ACL(2000-2999)支持源地址匹配,高级ACL(3000-3999)支持匹配源地址、目的地址、源端口和目的端口。地址的匹配使用地址+通配符进行匹配选择,通配符可以不连续进行灵活匹配。每个ACL末尾隐含一条拒绝所有的rule,ACL规则按顺序匹配,如果没有指定rule编号则缺省步长为5。基本ACL靠近源端匹配,高级ACL靠近目的端进行匹配,ACL可以应用于流量过滤、NAT、路由策略、策略路由等场景。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1396790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux粘滞位的理解,什么是粘滞位?

文章目录 前言如何理解?粘滞位的操作最后总结一下 前言 粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root…

2023年全球软件质量效能大会(QECon深圳站):核心内容与学习收获(附大会核心PPT下载)

随着科技的快速发展,软件行业面临着越来越多的挑战和机遇。为了更好地应对这些挑战,不断提升软件的质量和效能,大会将汇聚全球的软件开发者、架构师和项目经理,共同探讨和分享关于软件质量保证、测试、性能优化、用户体验设计、人…

技术硬实力,阿里巴巴为什么要开源Spring Cloud Alibaba?

Spring Cloud Alibaba是阿里巴巴开源的一款高性能的微服务RPC框架,关于Spring Cloud Alibaba的详细介绍我这里就不啰嗦了,大家可以参考官网及相关源码,我这里只是想聊的是“阿里巴巴为什么要开源Spring Cloud Alibaba”,只要追根朔…

MiniTab的相关性统计

相关概述 相关可以度量两个变量之间关联的强度和方向。可以在以下两种相关方法之间进行选择:Pearson 积矩相关和 Spearman 秩次相关。Pearson 相关(又称为 r)是最常见的方法,它度量两个连续变量之间的线性关系。 如果变量之间的…

Linux基础命令[1]-ls

文章目录 1. ls 命令说明2. ls 常用命令参数2.1 -l(展示详细信息)2.2 -a/-A(展示隐藏文件)2.3 -t/-c/-r(展示信息排序)2.4 -h(展示文件大小)2.5 -R(递归展示)…

近场与远场

一、近场与远场的区别 骚扰通过空间传输实质上是骚扰源的电磁能量以场的形式向四周空间传播。 场可分为近场和远场。 近场又称感应场。近场的性质与骚扰源的性质密切相关。 1、如果骚扰源是高电压,小电流的源,则近场只要是电场。如下图所示偶极子天线模…

(一)SpringBoot3---尚硅谷总结

示例Demo: 1、我们先来创建一个空工程: 2、我们通过Maven来创建一个Module: JDK版本需要选择17以及以上,如果没有的话你就下载一个: 3、让此Maven项目继承父项目: 所有的Springboot项目都必须继承自spring-boot-start…

C Primer Plus 第6版 编程练习 chapter 16

文章目录 1. 第1题1.1 题目描述1.2 编程源码1.3 结果显示 2. 第2题2.1 题目描述2.2 编程源码2.3 结果显示 3. 第3题3.1 题目描述3.2 编程源码3.3 结果显示 4. 第4题4.1 题目描述4.2 编程源码4.3 结果显示 5. 第5题5.1 题目描述5.2 编程源码5.3 结果显示 6. 第6题6.1 题目描述6.…

FPC柔性化机器视觉缺陷检测

FPC(柔性电路板)在电子产品中扮演着至关重要的角色,其质量和可靠性直接影响到产品的性能和安全性。在FPC线路板加工过程中,由于制造工艺的复杂性,很容易产生各种缺陷,如焊锡不良、偏位、漏铜、短路等,因为有太多的环节…

一步一步实现基于COMSOL的单模光纤波导仿真

COMSOL单模光纤波导仿真 🎡导航小助手🎡 COMSOL单模光纤波导仿真1.模型向导2.构建几何3.添加完美匹配层:4.添加材料:5.添加散射边界条件:6.定义输入和输出:6.1 输入端定义6.2 输出端定义 7.划分网格7.1光纤…

家校沟通的重要性及意义

在教育的世界里,老师和家长都是孩子成长道路上的重要守护者。但有时,两者之间的沟通仿佛形成了一道难以逾越的鸿沟。那么,为何家校沟通如此重要?它又为教育带来了怎样的影响? 家校沟通有助于建立互信关系。当家长和老…

HarmonyOS SDK,助力开发者打造焕然一新的鸿蒙原生应用

鸿蒙生态千帆启航仪式于1月18日正式启动。从2019年HarmonyOS正式发布到2020年“没有人能够熄灭漫天星光”,今天,满天星光终汇成璀璨星河,HarmonyOS NEXT鸿蒙星河版重磅发布,带来了全新架构、全新体验、全新生态。作为支撑鸿蒙原生…

springboot mybatis-plus swing实现报警监听

通过声音控制报警器,实现声光报警,使用beautyeye_lnf.jar美化界面如下 EnableTransactionManagement(proxyTargetClass true) SpringBootApplication EnableScheduling public class AlarmWarnApplication {public static void main(String[] args) …

51单片机中断系统编程

一.外部中断 1.编程思想 中断准备:中断初始化函数打开中断开关 ,选择中断传输方式中断处理:为了便于观察,让我们知道单片机进入中断处理函数,在这里我们选择打开流水灯电路搭建:由于P3^3引脚不便直接接地…

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题,可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…

vue列表飞入效果

效果 实现代码 <template><div><button click"add">添加</button><TransitionGroup name"list" tag"ul"><div class"list-item" v-for"item in items" :key"item.id">{{ i…

conda 安装, 配置以及使用

文章目录 1. 安装2. 配置2.1 如何配置2.2 快速设置取消自动进入 base 环境conda 添加清华源pip 添加清华源pip 更新为最新版本 3. 使用 conda 是 python 的环境管理工具包&#xff0c;非常好用&#xff0c;特别是 miniconda 相对于 conda 不需要安装其他的工具&#xff0c;而且…

从临床和科研场景分析ChatGPT在医疗健康领域的应用可行性

2023年4月发表在Journal Medical Systems的文献《Evaluating the Feasibility of ChatGPT in Healthcare: An Analysis of Multiple Clinical and Research Scenarios》&#xff08;评估 ChatGPT 在医疗健康领域的可行性&#xff1a;对多种临床和研究场景的分析&#xff09;介绍…

Rust-泄漏

在C中&#xff0c;如果引用计数智能指针出现了循环引用&#xff0c;就会导致内存泄漏。而Rust中也一样存在引用计数智能指针Rc,那么Rust中是否可能制造出内存泄漏呢? 内存泄漏 首先&#xff0c;我们设计一个Node类型&#xff0c;它里面包含一个指针&#xff0c;可以指向其他…

Python的OpenCV模块实现图像转换素描图简单示例

一、示例代码&#xff1a; import cv2img cv2.imread(/home/lijiang/图片/ubuntu_wallpaper/Einstein_2.jpg) # 读取图像grey cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度 invert cv2.bitwise_not(grey)blur_img cv2.GaussianBlur(invert…