HCIA-Datacom笔记之ACL原理与配置

随着网络的飞速发展,网络安全和网络服务质量QoS (Quality of Service)问题日益突出。访问控制列表 (ACL, Access Control List)是与其紧密相关的一个技术。

ACL可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

12.1 ACL技术背景

随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。

  1. 园区重要服务器资源被随意访问,园区机密信息容易泄露,造成安全隐患。
  2. Internet病毒肆意侵略园区内网,内网环境的安全性堪忧。
  3. 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。

以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性和服务质量迫在眉睫,我们需要对网络进行控制。比如,需要借助一个工具帮助实现一些流量的过滤

12.2 ACL概述

通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

  1. ACL是由permit或deny语句组成的一系列有顺序的规则的集合;它通过匹配报文的相关字段实现对报文的分类。
  2. ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;ACL还能够用于匹配路由条目。

img

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

12.3.1 ACL的组成

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

img

  1. ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。
  2. 规则:前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。
  3. 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。
  4. 动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。
  5. 比如:ACL如果与流量过滤技术结合使用(即流量过滤中调用ACL),permit就是“允许通行”的意思,deny就是“拒绝通行”的意思。
  6. 匹配项:ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。

12.3.2 规则编号

img

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

步长:系统自动为ACL规则分配编号时,每个相邻规则编号之间会有一个差值,这个差值称为“步长”。缺省步长为5,所以规则编号就是5/10/15…以此类推。

如果手工指定了一条规则,但未指定规则编号,系统就会使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。

步长可以调整,如果将步长改为2,系统则会自动从当前步长值开始重新排列规则编号,规则编号就变成2、4、6…。

那步长的作用是什么?直接rule 1/2/3/4…为什么不可以?

先来看一个小题目:如果希望增加一条规则,该如何处理?

可以在rule 10和rule 15之间,手工加入一条rule 11。

因此,设置一定长度的步长的作用,是方便后续在旧规则之间插入新的规则。

12.3.3 通配符

当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。

通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不关心”。

img

具体看下这2条规则:

rule 5: 拒绝源IP地址为10.1.1.1报文通过——因为通配符为全0,所以每一位都要严格匹配,因此匹配的是主机IP地址10.1.1.1;

rule 15:允许源IP地址为10.1.1.0/24网段地址的报文通过——因为通配符:0.0.0.11111111,后8位为1,表示不关心,因此10.1.1.xxxxxxxx 的后8位可以为任意值,所以匹配的是10.1.1.0/24网段。

例子:如果要精确匹配192.168.1.1/24这个IP地址对应的网段地址,通配符是多少?

可以得出:网络位需要严格匹配,主机位无所谓,因此通配符为“0.0.0.255”。

如果想匹配192.168.1.0/24网段中的奇数IP地址,通配符该怎么写呢?

我们先来看一看,奇数IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……

后八位写成二进制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……

可以看出共同点:最后8位的高7位是任意值,最低位固定为1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)

这就得出了通配符的一个特点:通配符中的1或者0是可以不连续的。

还有两个特殊的通配符:

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

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

12.3.4 ACL的分类与标识

基于ACL规则定义方式的划分,可分为:基本ACL、高级ACL、二层ACL、用户自定义ACL和用户ACL。

img

基于ACL标识方法的划分,则可分为:数字型ACL和命名型ACL。

img

12.3.4.1 基本ACL&高级ACL

1、基本ACL:

img

主要针对IP报文的源IP地址进行匹配,基本ACL的编号范围是2000-2999。

比如这个例子,创建的是acl 2000,就意味着创建的是基本ACL。

2、高级ACL:

img

可以根据IP报文中的源IP地址、目的IP地址、协议类型,TCP或UDP的源目端口号等元素进行匹配,可以理解为:基本ACL是高级ACL的一个子集,高级ACL可以比基本ACL定义出更精确、更复杂、更灵活的规则。

12.3.5 ACL的匹配机制

img

ACL的匹配机制概括来说就是:配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则。

一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配。

匹配流程:首先系统会查找设备上是否配置了ACL。

  1. 如果ACL不存在,则返回ACL匹配结果为:不匹配。
  2. 如果ACL存在,则查找设备是否配置了ACL规则。
  3. 如果规则不存在,则返回ACL匹配结果为:不匹配。
  4. 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
  5. 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
  6. 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
  7. 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。

从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。

  1. 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
  2. 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”。

匹配原则:一旦命中即停止匹配。

12.3.6 ACL的匹配顺序及匹配结果

一条ACL可以由多条“deny或permit”语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的。

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

  1. 自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。
  2. 配置顺序,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

12.3.7 ACL的匹配位置

img

12.4 ACL的基础配置及应用

12.4.1 使用基本ACL过滤数据流量

img

配置需求:

在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络。

[Router] acl 2000

[Router-acl-basic-2000] rule deny source 192.168.1.0  0.0.0.255

[Router-acl-basic-2000] rule permit source any

[Router] interface GigabitEthernet 0/0/1

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

[Router-GigabitEthernet0/0/1] quit

注:

traffic-filter命令,用来在接口上配置基于ACL对报文进行过滤。

命令格式:traffic-filter { inbound | outbound } acl { acl-number | name acl-name }

inbound:指定在接口入方向上配置报文过滤。

outbound:指定在接口出方向上配置报文过滤。

acl:指定基于IPv4 ACL对报文进行过滤。

12.4.2 使用高级ACL限制不同网段的用户互访

配置需求:

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

img

[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
posted @ 2025-01-11 23:00  hirak0  阅读(46)  评论(0)    收藏  举报