访问控制列表ACL讲解——想偷偷访问数据,我ACL可不同意

作者:Insist--

个人主页:insist--个人主页

梦想从未散场,传奇永不落幕,博主会持续更新优质网络知识、Python知识、Linux知识以及各种小技巧,愿你我共同在CSDN进步

目录

一、ACL的基本概念

1. ACL是什么

2. 为什么需要ACL

3. ACL的原理

二、ACL的组成

三、ACL的类型

1. 标准ACL

2. 扩展ACL

3. 命名ACL

四、ACL的检查条件

五、ACL的匹配顺序

六、ACL的应用方向


📋前言

随着网络的不断发展,网络安全与Qos(网络服务质量)的问题也越发重要,本文的ACL就是与其相关的一种技术。在本文会讲解ACL的基本概念,组成,类型,检查条件,匹配顺序,应用方向。

一、ACL的基本概念

1. ACL是什么

ACL(访问控制列表)是Access Control List的简写。我们可以将ACL理解成一种网络过滤器,ACL可以通过定义一些规则来控制网络的流量,这些规则定义了网络设备(例如:路由器、交换机)应该如何处理流量(哪个需要接收,哪个需要拒绝)。

2. 为什么需要ACL

376796f86bdb4ee999a1b0ad8f8b050e.jpg

ACL可以过滤数据流、增加安全性、保护内部网络,在一些情况下,出于对安全的考虑,不希望全网互通,如上图:网工需要禁止研发部门访问财务部服务器,但总裁办公室能正常访问,这就需要一种技术来实现,这种技术就是ACL。

3. ACL的原理

它的原理就是使用包过滤技术,在路由器上读取网络层和传输层包头中的信息比如:源地址、目的地址等),根据预先设定的规则,对包进行过滤。从而达到访问控制的目的。

二、ACL的组成

97959d46e43e4b1a9fbd9336c0f22e76.png

  • ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,ACL编号用来标识ACL。
  • 规则:一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。
  • 规则编号:每条规则都有一个相应的编号,用来标识ACL中的规则。可以自定义,也可以系统自动分配(上面给出的访问控制列表号)。
  • 动作:每条规则中的permit或deny,就是这条规则的处理动作。其中,permit是允许,deny是拒绝,结合其他技术使用,处理动作的含义也有所不同。
  • 匹配项:在ACL定义了极其丰富的匹配项,比如说:源地址等等

三、ACL的类型

ACL可以根据其应用和功能分为三种类型,分别是:标准ACL、扩展ACL、命名ACL。

1. 标准ACL

标准ACL主要基于源IP地址来允许或拒绝数据包通过,标准ACL通常用于对网络设备的基本访问控制例如:防止未经授权的设备访问内部网络资源)标准ACL的规则较少,只能进行简单的过滤,因此适用于小型网络环境。

访问控制列标号:1~99

2. 扩展ACL

与标准ACL相比,扩展ACL可以基于源IP、目的IP、指定协议、端口、标志来允许或拒绝数据包通过,这让扩展ACL可以更准确地控制网络流量(例如:根据特定的应用程序或协议类型来允许或拒绝流量)同时扩展ACL的配置与管理比标准ACL更复杂,扩展ACL功能较为全面,所以应用十分广泛。

访问控制列表号:100~199

3. 命名ACL

命名ACL是一种特殊的ACL,允许在标准ACL和扩展ACL中使用名称代替表号(自定义名称)。这让ACL的配置和管理更加的方便和灵活。

四、ACL的检查条件

ACL依靠规则对数据包执行检查,而这些规则通过检查数据包中的指定字段来允许或拒绝数据包的流量。ACL通过五个元素来执行检查,这些元素位于IP头部和传输层头部中,它们分别是源IP地址、目标IP地址、协议、源端口及目标端口。

  • 源IP地址:根据源IP地址判断是否允许数据包通过。
  • 目标IP地址:根据目标IP地址判断是否允许数据包通过。
  • 源端口:根据源端口判断是否允许数据包通过。
  • 目标端口:根据目标端口判断是否允许数据包通过。
  • 协议:根据协议类型判断是否允许数据包通过。

五、ACL的匹配顺序

如果对接口应用了ACL,也就是说该接口应用了一组规则,那么路由器会应用这组规则对数据包进行顺序检查

  • 如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
  • 如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配,路由器将决定该数据包允许通过或拒绝通过。j
  • 如果后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。

由此可见,数据包要么被允许,要么被拒绝

根据以上的检查规则可知,在ACL中,各规则的放置顺序是很重要的。一旦找到了匹配规则,就结束比较过程,不再检查以后的其他规则。

db6b4cac67a343519dd37b5bdd84533b.jpg

六、ACL的应用方向

ACL是一组规则的集合,它应用在路由器的某个接口上。对于路由器接口而言,ACL有以下两个方向。

出:已经过路由器的处理,正离开路由器接口的数据包。

入:已到达路由器接口的数据包,将被路由器处理。

一旦确定ACL的应用方向,ACL只对该方向的数据包执行检查,对反方向的数据包不做任何处理。如下图:

0a7cfb851b5646579a8d7a21b6c6cd22.png

ACL应用在R2的F0/0出方向,那么该ACL只检查R1→R3方向上的经过R2的F0/0接口的流量。所以如果在R1上执行到R3的ping命令,则去R3的ping包要接受ACL的检查.而回包不受影响。

注意:ACL要想执行检查,必须应用到接口。一个ACL可以配置多条规则,但是一个接口或一个方向只能应用一个ACL。

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

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

相关文章

从零开始学习 Java:简单易懂的入门指南之线程同步(三十五)

线程同步 1.线程同步1.1卖票【应用】1.2卖票案例的问题1.3同步代码块解决数据安全问题【应用】1.4同步方法解决数据安全问题【应用】1.5Lock锁【应用】1.6死锁 2.生产者消费者2.1生产者和消费者模式概述【应用】2.2生产者和消费者案例【应用】2.3生产者和消费者案例优化【应用】…

C++程序加速方法

C程序加速方法 1. 将反复使用的数据存放在全局变量里面2. 使用多线程3. 用a和a,a–,--a4. 减少除法运算5. 尽量减少值传递,多用引用来传递参数。6. 循环引发的讨论1(循环内定义,还是循环外定义对象)7. 循环引发的讨论2…

出游热潮再起,IPIDEA代理IP帮你应对旅游数据采集的挑战

随着互联网的快速发展,旅游行业也随之迅速发展。在线旅游预订已经成为人们出行前的必要步骤,然而,旅游信息的采集却是一项具有挑战性的任务。为了从酒店和航空公司网站、在线旅行社和其他类似来源收集数据,企业需要克服许多障碍。…

valarray 包含对象成员的类(cpp14章)

C代码重用 1.公有继承可以实现 2.包含、私有继承、保护继承用于实现has-a关系,即新的类将包含另一个类的对象。 (使用这样类成员:本身是另外一个类对象称为包含 (组合或层次化)。) 3.函数模板、类模…

GoLang连接mysql数据库

跟着文档走GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 1.使用命令拉取 go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite2.开始使用 package mainimport ("fmt""github.com/gin-gonic/gin"&…

虚幻阴影整理

虚拟阴影贴图(VSM)是一种全新的阴影贴图方法,可以提供稳定的高分辨率阴影。通过与虚幻引擎5的Nanite虚拟几何体、Lumen全局光照和反射以及世界分区功能结合使用,它能够实现电影级的品质效果,为大型开放场景提供光照。 …

mysql case when 不命中缓存

case when 在sql 中非常方便数据不同维度统计,但是也会出现mysql 索引不命中问题,当多个case 出现时,需要提取出来到where里面优化 优化后 SELECT date(RecordTime) AS date, count( DISTINCT CASE WHEN Param 1 …

Java之TCP和UDP进行网络编程

目录 一.网络编程 1.1网络编程的作用 1.2网络编程的基本概念 1.3网络编程的实现 二.UDP网络编程 2.1UDP数据报套的初步了解 2.2Java数据报套接字通信模型 2.3Java编程实现UDP通信 三.TCP网络编程 3.1TCP流套接字api 3.2TCP通信代码实现 3.2.1短连接实现代码 3.…

钉钉数字校园小程序开发:开启智慧教育新时代

随着信息技术的快速发展和校园管理的日益复杂化,数字校园已成为现代教育的重要趋势。钉钉数字校园小程序作为一种创新应用,以其专业性、思考深度和逻辑性,为学校提供了全新的管理、教学和沟方式。本文从需求分析、技术实现和应用思考三个方面…

websocket逆向-protobuf序列化与反序列化

系列文章目录 训练地址:https://www.qiulianmao.com 基础-websocket逆向基础-http拦截基础-websocket拦截基础-base64编码与解码基础-protobuf序列化与反序列化视频号直播弹幕采集实战一:Http轮询更新中 websocket逆向-protobuf序列化与反序列化基础 系…

Apipost连接数据库详解

Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作 新建数据库连接: 在「项目设置…

【Redis】使用Java客户端操作Redis

目录 引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype 引入jedis依赖 连接Redis 命令 get/set exists/del keys expire/ttl type

C++笔记之获取线程ID以及线程ID的用处

C笔记之获取线程ID以及线程ID的用处 code review! 文章目录 C笔记之获取线程ID以及线程ID的用处一.获取ID二.线程ID的用处2.1.线程池管理2.2.动态资源分配2.3.使用线程同步机制实现互斥访问共享资源2.4.使用线程 ID 辅助线程同步2.5.任务分发:线程ID可以用于将任务…

Qt 窗口与部署应用程序发布包 day6

Qt 窗口与部署应用程序发布包 day6 QWidget QWidget是所有可视控件的基类,每个控件都是矩形按照Z轴顺序排序如果控件没有父控件,则称为窗口 设置exe窗口图标 在项目文件中新建一个文件夹Resource,来存放图标文件 第一种方法 用绝对路…

UE4和C++ 开发--HUD类

HUD 平视显示器(Head Up Display),简称HUD。在蓝图中是指在屏幕上面绘制的二维物体。 1. 创建HUD 打开蓝图编辑器,创建一个蓝图类,搜索HUD,选择并命名BP_HUD。 2. 开始绘制 打开事件列表,右键搜索 EventReceive Draw HUD。有两…

互联网Java工程师面试题·Java 并发编程篇·第三弹

目录 26、什么是线程组,为什么在 Java 中不推荐使用? 27、为什么使用 Executor 框架比使用应用创建和管理线程好? 27.1 为什么要使用 Executor 线程池框架 27.2 使用 Executor 线程池框架的优点 28、java 中有几种方法可以实现一个线程…

【牛客网刷题(数据结构)】:环形链表的约瑟夫问题

描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少? O(n) 示例1 好环形链表的约瑟夫问题是一个经典的问…

分布式链路追踪如何跨线程

背景 我们希望实现全链路信息,但是代码中一般都会异步的线程处理。 解决思路 我们可以对以前的 Runable 和 Callable 进行增强。 可以使用 ali 已经存在的实现方式。 TransmittableThreadLocal (TTL) 解决异步执行时上下文传递的问题 核心的实现思路如下&#…

内部类概述

一、内部类 1.内部类概述 2.内部类的四种实现形式 1.成员内部类 public class Outer {private int age99;public static String a;//成员内部类public class Inner{private int age88;private String name; // public static String school; //jdk 16开始才支持定义静态…

nvm、node、npm解决问题过程记录

在Windows10如何降级Node.js版本:可以尝试将Node.js版本降级到一个较旧的版本,以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本,具体完整步骤: 首先,需要安装Node Version Manager…