ACL的原理与配置

ACL技术概述

ACL;访问控制列表

技术背景:

园区重要服务器资源被随意访问,容易泄露机密,造成安全隐患

病毒侵入内网,安全性降低

网络宽带被各类业务随意挤占,服务质量要求高的宽带得不到保障,用户体验差

因此:需要由一个工具来指定一些规则,从而控制一些流量,保证网络安全

概述:

ACL是由Permi或者deny语句组成的一系列有顺序的规则的集合;

ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;

ACL还能匹配路由条目

ACL的基本概念及其工作原理

ACL的组成:

ACL编号:每一个ACL都需要分配一个编号进行识别

规则:一条ACL通常由若干条”permit / deny"语句组成,每条语句就是该ACL的规则

规则编号:每条规则都由一个对应的编号,可以自定义,也可以系统分配,范围0-2的32次方,从大到小排列

动作:就是指允许(permit)和拒绝(deny)

匹配项:比如二层以太网帧头信息,三层报文信息等;

规则编号和步长:

规则编号:每条规则都有一个相应的编号,用来标识ACL规则。可以自定义,也可以系统自动分配

步长:编号之间的差值,用来预留空位用于后续的修改和添加新的规则

通配符:

通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配

通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同

0 表示在这一位需要严格匹配地址,1 表示不关心,1 和 0是可以不连续的

当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址

当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址

ACL的分类;

基本ACL 2000~2999 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则

高级ACL 3000~3999 可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目 的端口号、UDP源/目的端口号、生效时间段等来定义规则

二层ACL 4000~4999 使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址等

自定义ACL 5000~5999 使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则

用户ACL 6000~9999 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的 IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源 端口/目的端口号等来定义规则

ACL的标识方法:

数字型:传统的方法,用唯一的数字标识

命名型:命名来标识

ACL的匹配机制:

配置ACL的设备接收到报文,会将报文逐一对ACL中的规则进行匹配,如果不能匹配,就匹配下一条规则

一旦匹配上,则进行处理,不再继续匹配

流程:

  1. 先检查设备是否配置了ACL

    如果ACL不存在,就返回结果为不匹配

    如果ACL存在,会检查设备是否配置了ACL规则

        2. 存在ACL的条件下

    如果规则不存在,返回结果为不匹配

    如果规则存在,将有三种情况

        3. 当匹配上permit规则,就停止匹配,返回结果为匹配;

    当匹配上deny规则,就停止匹配,返回结果为不匹配;

    一直没有匹配到对应的规则,就继续寻找匹配下一条,直到最后还没有匹配上,返回结果为不匹配

        4. 一旦命中,停止匹配

注意:ACL技术总是与其他技术结合在一起使用的,因此,所结合的技术不同,“允许 (permit)”及“拒绝 (deny)”的 内涵和作用也会不同。例如,当ACL技术与流量过滤技术结合使用时,permit就是“允许通行”的意思 deny 就是“拒绝通行”的意思

ACL的匹配顺便及匹配结果:

华为设备支持两种匹配顺序:自动排序和配置顺序(config模式)。默认的ACL匹配顺序是config模式

ACL的排序有些复杂,这里不再过多阐释,有兴趣可以查查资料

ACL的配置案例

案例

某公司通过Router实现各部门之间的互连。为方便管理网络,管理员为公司的研发部和市场部规划了两个网段的IP地址。现要求Router能够限制两个网段之间互访,防止公司机密泄露

1.进入端口使用ip adress 先进配置

[Router] acl 3001

[Router-acl-adv-3001] rule deny ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255

[Router-acl-adv-3001] quit

[Router] acl 3002

[Router-acl-adv-3002] rule deny ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255

[Router-acl-adv-3002] quit

[Router] interface GigabitEthernet 0/0/1

[Router-GigabitEthernet0/0/1] traffic-filter inbound acl 3001

[Router-GigabitEthernet0/0/1] quit

[Router] interface GigabitEthernet 0/0/2

[Router-GigabitEthernet0/0/2] traffic-filter inbound acl 3002

[Router-GigabitEthernet0/0/2] quit

我们设置一个对比组,改组不配置ACL,可以清晰得看见,再配置之间,两个网段之间的PC机是能够互相通信的,再配置ACL后,不能再继续通信

 

 流量控制成功,两个部分不能互访

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

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

相关文章

Qt中QGraphics绘图类相关解释

Item(图元)坐标系、Scene(场景)坐标系、View(视图)坐标系,三者均为:x轴正方向向右,y轴正方向向下 1、Item(图元):坐标属于局部坐标,通常以图元中心为原点(中心对称)。 场景坐标系统描述了顶层的图元,每个图…

【配置】pycharm运行的项目如何修改名称(项目名称、模块名称)

当我们需要修改项目名称、模块名称的时候,能够在网上找一些修改的方法,但是有没有很保守但很使用的方法可以解决这个问题呢? 创建项目 通过pycharm创建一个django的项目 创建之后的项目目录: 更改项目名称: 往往以…

【新人系列】Python 入门(十四):文件操作

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`

目录 前言1. 问题背景2. 错误分析2.1 错误信息详解2.2 可能原因 3. 问题排查与解决方案3.1 检查 MySQL 错误日志3.2 验证 MySQL 配置文件3.3 检查文件和目录权限3.4 手动启动 MySQL 服务3.5 修复 systemd 配置文件3.6 验证依赖环境 4. 进一步优化与自动化处理结语 前言 在日常…

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“

参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…

git仓库:循环所有提交、查找有无指定文件名

util–bash-simplify/git/git_loopCommit_findFind.sh #!/bin/bash#【描述】 git仓库:循环所有提交、查找有无指定文件名 #【依赖】 #【术语】 #【备注】 #【用法举例】 # bash /app/bash-simplify/git/git_loopCommit_findFind.sh /app5/android-prj-h…

android bindService打开失败

在写demo验证SurfaceControlViewHost的时候,bindService提示 Unable to start service Intent U0: not found 在源代码里搜了下,找到是在如下方法里面里面打印出来的 // frameworks/base/services/core/java/com/android/server/am/ActiveServices.java…

通过 SSH 进行WordPress网站的高级服务器管理

我在管理hostease的服务器时,时常需要通过SSH登录服务器进行修改。而在网站管理中,SSH不仅是一个基础工具,更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH,你可以深入监控服务器的性能、精细管理系统资源&#xff0c…

分布式搜索引擎之elasticsearch单机部署与测试

分布式搜索引擎之elasticsearch单机部署与测试 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的…

WPF+MVVM案例实战与特效(三十)- 封装一个系统日志显示控件

文章目录 1、运行效果2、日志控件封装1、文件创建2、DisplayLogPanel.xaml 代码3、using System;3、using System;3、数据模型4、枚举类型3、案例实现1、LogPanelWindow.xaml2、LogPanelViewModel.cs4、总结1、运行效果 2、日志控件封装 1、文件创建 打开 Wpf_Examples ,在 …

C++算法练习-day47——450.删除二叉搜索树中的节点

题目来源:. - 力扣(LeetCode) 题目思路分析 题目要求在给定的二叉搜索树中删除一个具有指定值的节点,并返回删除后的二叉搜索树的根节点。二叉搜索树的性质是,对于树中的每个节点,其左子树中的所有节点的…

第二节——计算机网络(四)物理层

车载以太网采用差分双绞线车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。传统以太网一般使用RJ45连接器连接。车载以太网物理层需满足车载环境下更为严格的EMC要求,100BASE-T1\1000BASE-T1对于非屏蔽双绞线的传…

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost) vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例,程序中调用tinyxml2的函数后,若vcpkg中同时存在opencv和…

PyTorch 模型转换为 ONNX 格式

PyTorch 模型转换为 ONNX 格式 在深度学习领域,模型的可移植性和可解释性是非常重要的。本文将介绍如何使用 PyTorch 训练一个简单的卷积神经网络(CNN)来分类 MNIST 数据集,并将训练好的模型转换为 ONNX 格式。我们还将讨论 PTH …

专属主机服务器和ECS服务器有什么区别?

‌专属主机服务器和ECS服务器的主要区别在于资源隔离、计费方式、管理权限等方面。‌ 资源隔离 ‌专属主机服务器‌:用户可以独享整台物理服务器资源,与其他租户的服务器物理隔离。这意味着用户不需要与其他租户共享物理资源,可以获取服务器…

Github 基本使用学习笔记

1. 基本概念 1.1 一些名词 Repository(仓库) 用来存放代码,每个项目都有一个独立的仓库。 Star(收藏) 收藏你喜欢的项目,方便以后查看。 Fork(克隆复制项目) 复制别人的仓库&…

【java】 分布式锁实现和选型

文章目录 引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求分布式锁与本地锁的区别 基于数据库的分布式锁基于数据库实现分布式锁实现原理Java代码示例优点和缺点分析 基于Redis的分布式锁实现原理Java代码示例使…

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…

第33章 - Go语言 云原生开发

第33章 - 云原生开发将深入探讨云原生技术及其在现代软件开发中的应用。我们将从云原生的基本概念开始&#xff0c;逐步介绍Kubernetes的基本使用方法&#xff0c;并结合具体的云服务提供商实例&#xff0c;通过Go语言编写的应用程序来展示如何实现云原生开发。 33.1 云原生的…

分析JHTDB数据库的Channel5200数据集的数据(SciServer服务器)

代码来自https://github.com/idies/pyJHTDB/blob/master/examples/channel.ipynb %matplotlib inline import numpy as np import math import random import pyJHTDB import matplotlib.pyplot as plt import time as ttN 3 T pyJHTDB.dbinfo.channel5200[time][-1] time …