访问控制列表(Access Control Lists,ACL)与哈希查找的爱恨情怨

server/2024/10/19 7:32:48/

访问控制列表(Access Control Lists,ACL)与哈希查找

  • 什么是访问控制列表ACL?
    • 直接说ACL是干啥的
    • ACL概念
    • 为什么需要ACL
    • ACL类型
    • ACL匹配机制
    • 使用例子
  • 哈希查找
    • 什么是哈希查找?
    • 哈希查找的基本原理
    • 哈希查找的步骤
  • 哈希查找在ACL中的作用
    • 具体作用
    • 代码解析
    • 实际应用

什么是访问控制列表ACL?

直接说ACL是干啥的

通俗来说ACL就是一个网络流量过滤器。具体来说读取数据包中的IP头部,TCP/DUP 头部中的源IP地址,目的IP地址,和源端口,目的端口根据设置好的ACL决定数据的丢弃还是允许通过。

ACL概念

ACL,中文名称是“访问控制列表”,它由一系列规则(即描述报文匹配条件的判断语句)组成。这里的条件包括五元组-分别是报文的源地址、目的地址、源端口、目的端口、端口号等

为什么需要ACL

根据规则过滤的ACL,能够做到阻塞攻击报文、为不同类报文流提供差分服务、对Telnet登录/FTP文件下载进行控制等的功能,从而提高网络环境的安全性和网络传输的可靠性。

ACL类型

  1. 基本ACL:(2000-2999) 只使用报文的源IP地址、分片信息、生效时间段信息来定义规则
  2. 高级ACL:(3000-3999) 可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则
  3. 二层ACL:(4000-4999) 可根据源MAC、目的MAC、二层协议类型匹配
  4. 用户自定义ACL:(5000-5999) 使用报文头,偏移位置,字符串掩码,用户自定义字符串来定义规则
  5. 用户ACL:(6000-6999) 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则

ACL匹配机制

一条ACL可以由多条“deny或permit”语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的。
华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式。
自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。
配置顺序,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

使用例子

  1. 仅允许pc访问168.127.27.0/24网络
[Huawei]acl number 2000  (创建ACL 2000[Huawei-acl-basic-2000]rule permit source 168.127.2.0 0.0.0.255  (添加一条规则:允许168.127.27.1这台主机通过, 0.0.0.255地址表示主机)
[Huawei-acl-basic-2000]dis th(查看状态)
[V200R003C00]
#
acl number 2000  rule 5 permit source 168.127.2.0 0.0.0.255 (这里多了一个设定好的规则 rule 5 是他的规则序号,序号越小执行优先级越高)
#
return
[Huawei-acl-basic-2000]rule deny source any   (添加一个拒绝规则,any 表示所有地址
都不允许通过)
[Huawei-acl-basic-2000]dis th  (再次查看状态)
[V200R003C00]
#
acl number 2000  rule 5 permit source 168.127.2.0 0.0.0.255 rule 10 deny   (这里又多了一条规则 ,规则号是10#
return
[Huawei]int g0/0/2  (进入接口)
[Huawei-GigabitEthernet0/0/2]ip add 168.127.27.254 24  (给接口添加IP地址)
[Huawei-GigabitEthernet0/0/2]traffic-filter outbound acl 2000  (给端口调用 acl2000 的配置,outbound表示将这个端口设置为出口模式即从路由器出来的数据要经过 acl 规则进行匹配)

哈希查找

什么是哈希查找?

哈希查找是一种用于快速检索数据的算法。它通过将关键字(例如IP地址、MAC地址等)转换为一个固定长度的索引值,并使用这个索引值在哈希表中查找对应的数据,从而大大提高检索速度。

哈希查找的基本原理

  1. 哈希函数:将关键字转换为固定长度的哈希值。好的哈希函数应当尽量将不同的关键字映射到不同的哈希值,以减少冲突。
  2. 哈希表:一种数据结构,用于存储哈希值和对应的数据项。哈希表通常是一个数组,哈希值作为索引,用于定位数据项。

哈希查找的步骤

  1. 计算哈希值:使用哈希函数计算关键字的哈希值。
  2. 查找数据项:在哈希表中通过哈希值定位数据项。如果没有冲突,可以直接找到数据项;如果有冲突,根据处理冲突的方法找到数据项。

哈希查找在ACL中的作用

具体作用

在访问控制列表(ACL)管理中,哈希查找用于快速匹配数据包与ACL规则,提高匹配效率。ACL用于控制网络流量,包含一系列规则,规定哪些流量可以通过,哪些需要阻止。使用哈希查找可以加速ACL规则的匹配过程,尤其在规则数量较多时效果显著。

代码解析

static void
vl_api_acl_plugin_use_hash_lookup_get_reply_t_handler (vl_api_acl_plugin_use_hash_lookup_get_reply_t *mp)
{vat_main_t *vam = acl_test_main.vat_main;clib_warning ("ACL hash lookups enabled: %d", mp->enable);vam->result_ready = 1;
}
  1. 主要功能
    消息类型:处理 vl_api_acl_plugin_use_hash_lookup_get_reply_t 类型的API消息回复。这种消息类型通常包含哈希查找使能状态的信息。
  2. 参数说明:
    mp:指向 vl_api_acl_plugin_use_hash_lookup_get_reply_t 结构体的指针,包含哈希查找使能状态信息。
    vam:指向 vat_main_t 结构体的指针,从 acl_test_main 全局变量中获取。
  3. 处理逻辑:
    clib_warning (“ACL hash lookups enabled: %d”, mp->enable);:打印哈希查找使能状态。mp->enable 是一个整数,通常值为0或1,分别表示哈希查找未使能或已使能。
    vam->result_ready = 1;:设置 vat_main_t 结构体中的 result_ready 标志为1,表示结果已准备好。

实际应用

假设在一个大型网络环境中,网络管理员需要管理数千条ACL规则。为了提高效率,可以通过API启用哈希查找功能,然后通过上述代码检查哈希查找是否已成功启用。


http://www.ppmy.cn/server/52783.html

相关文章

Python数据分析入门指南

Python作为一种多功能编程语言,因其简洁易读的语法和强大的库支持,已经成为数据分析领域的热门工具。本文将介绍如何使用Python进行基本的数据分析,包括数据的导入、清洗、处理和可视化。 环境搭建 在开始之前,确保你已经安装了…

「51媒体」活动会议,展览展会,直播曝光的一种方法

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 我们在做活动会议,或者参加展览展会,需要进行直播的时候,可以通过一键同步多个媒体平台的方法,来扩大曝光,比如一场直播我们可…

word文档怎么加密?电脑文件加密的详细步骤【分享4个】

为了保护Word文档不被未经授权的人员访问或修改,我们通常会采用加密的方式来增加其安全性。那么Word文档怎么加密?电脑文档安全成为了大家所关心的话题。 本文针对不同的情况,本文分享了4种电脑文件加密的方法,每一种加密方法都比…

TensorFlow开源项目

欢迎来到 Papicatch的博客 文章目录 🍉TensorFlow介绍 🍉主要特点和功能 🍈多语言支持 🍈灵活的架构 🍈分布式训练 🍈跨平台部署 🍈强大的工具链 🍈丰富的社区和生态系统 &a…

埃特巴什码加解密小程序

埃特巴什码加解密小程序 这几天在看CTF相关的课程,涉及到古典密码学和近代密码学还有现代密码学。 简单替换密码 Atbash Cipher 埃特巴什码(Atbash Cipher)其实可以视为下面要介绍的简单替换密码的特例,它使用字母表中的最后 一个字母代表第一个字母…

JCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNNGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分类效果 格拉姆…

数据通信与网络(五)

交换机功能: 地址学习(端口/MAC地址映射表) 通信过滤(基于端口/MAC地址映射表) 生成树协议(断开环路) 隔离冲突域 生成树协议 隔离冲突域 交换机配置模式(用不同级别的命令对交换机进行配置) 普…

Vue2配置前端代理

在8080向5000请求数据 clivue2 一、cli内配置前端代理 1、使用 发送请求时写8080 在配置文件中配置 vue.config.js 2、缺点 无法配置多个代理无法控制某个请求知否要代理 二、方式二 module.exports {devServer: {proxy: {/api1:{ //匹配所有以/api1开头的请求路径…