一、ACL简介


1.1 ACL概述

企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。
访问控制列表ACL(Access Control List)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
ACL本质上是一种报文过滤器规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。

说明:
配置ACL后,还需将ACL在业务模块中应用,ACL才能生效
ACL可以应用于诸多业务模块,其中最基本的ACL应用,就是在简化流策略/流策略中应用ACL,使设备能够基于全局、VLAN或接口下发ACL,实现对转发报文的过滤。此外,ACL还可以应用在Telnet、FTP、路由等模块。

1.2 ACL应用场景

随着网络的飞速发展,网络安全和网络服务质量Qos问题日益突出。

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

以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性服务质量迫在眉睫。ACL就在这种情况下应运而生了。
通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

image.png

  • ACL是由一系列规则组成的集合。设备可以通过这些规则对数据包进行分类,并对不同类型的报文进行不同的处理。
  • 本示例中,网关RTA允许192.168.1.0/24中的主机可以访问外网,而192.168.2.0/24中的主机则被禁止访问Internet。对于服务器A而言,情况则相反。网关允许192.168.2.0/24中的主机访问服务器A,但却禁止192.168.1.0/24中的主机访问服务器A。

image.png

  • 设备可以根据ACL中定义的条件(例如源IP地址)来匹配入方向的数据,并对匹配了条件的数据执行相应的动作。在本示例所述场景中,RTA依据所定义的ACL而匹配到的感兴趣流量来自192.168.2.0/24网络,RTA会对这些感兴趣流量进行加密(虚拟局域网VPN中会进行介绍)之后再转发。

二、ACL原理描述


2.1 ACL的基本原理

ACL的组成

image.png

  • ACL编号:用于标识ACL,表明该ACL是数字型ACL。 | 根据ACL规则功能的不同:
    ACL被划分为基本ACL高级ACL二层ACL用户ACL这几种类型,每类ACL编号的取值范围不同

    除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆,这种ACL,称为命名型ACL。

    命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。下面就是一个既有名字又有编号的ACL。 | | —- |
  1. acl name text 3999 //创建一个名字为text编号为3999的高级ACL
  2. rule 0 deny ip source 1.1.1.1 0 destination 2.2.2.2 0 //拒绝源IP地址为1.1.1.1/32的主机访问目的IP为2.2.2.2/32的主机
  3. rule 5 permit ip source any destination any //允许所有
  • 规则:即描述报文匹配条件的判断语句。 | 规则编号:
    - 用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配
    - ACL规则的编号范围是0~4294967394,所有规则均按照规则编号从小到大进行排序
    - 系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配


    动作:
    - 包括permit/deny两种动作,表示允许/拒绝。


    匹配项:
    - ACL定义了极其丰富的匹配项,除了源地址和生效时间段,ACL还支持很多其它规则匹配项。
    - 例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
    | | —- |

ACL的匹配机制

💬 设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制。
image.png

首先系统会查找设备上是否配置了ACL
- 如果ACL不存在,则返回ACL匹配结果为:不匹配
- 如果ACL存在,则查找设备是否配置了ACL规则
- 如果规则不存在,则返回ACL匹配结果为:不匹配
- 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
- 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)
- 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)
- 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍为匹配上,则返回ACL匹配结果为:不匹配
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”
- 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。
- 不论匹配的是“permit”还是“deny”,都称为“匹配”,而不是匹配上permit规则才算“匹配”。
- 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”
说明:
无论报文匹配ACL的结果是“不匹配”、“允许”还是“拒绝”,该报文最终是被允许通过还是拒绝通过,实际是由应用ACL的各个业务模块来决定。不同的业务模块,对命中和未命中规则报文的处理方式也各不相同。例如,在Telnet模块中应用ACL,只要报文命中了permit规则,就允许通过;而在流策略中应用ACL,如果报文命中了permit规则,但流行为动作配置的是deny,该报文仍会被拒绝通过。

2.2 ACL分类


image.png

  • 根据不同的划分规则,ACL可以有不同的分类。最常见的三种分类是基本ACL、高级ACL和二层ACL。
    • 基本ACL可以使用报文的源IP地址、分片标记和时间段信息来匹配报文,其编号取值范围是2000-2999。
    • 高级ACL可以使用报文的源/目的IP地址、源/目的端口号以及协议类型等信息来匹配报文。高级ACL可以定义比基本ACL更精确、更丰富、更灵活的规则,其编号取值范围是3000-3999。
    • 二层ACL可以使用源/目的MAC地址以及二层协议类型等二层信息来匹配报文,其取值范围是4000-4999。

基于ACL标识方法的划分


划分如下:

  • 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
  • 命名型ACL:通过名称代替编号来标识ACL。 | 用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。 | | —- | | 说明:
    命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。
    基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。 |

基于对IPv4和IPv6支持情况的划分


划分如下:

  • ACL4:通常直接叫做“ACL”特指仅支持过滤IPv4报文的ACL。
  • ACL6:又叫做“IPv6 ACL”,特指仅支持过滤IPv6报文的ACL。

以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。

基于ACL规则定义方式的划分


分类 适用的IP版本 规则定义描述 编号范围
基本ACL IPv4 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则 2000~2999
高级ACL IPv4 既可使用IPv4报文的源IP地址,也可使用目的IP地址IP协议类型ICMP类型TCP源/目的端口UDP源/目的端口号生效时间段等来定义规则 3000~3999
二层ACL IPv4&IPv6 使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。 4000~4999
用户ACL IPv4 既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 6000~6031
基本ACL6 IPv6 使用IPv6报文的源IPv6地址、分片信息和生效时间段来定义规则 2000~2999
高级ACL6 IPv6 可以使用IPv6报文的源IPv6地址目的IPv6地址IPv6协议类型ICMPv6类型TCP源/目的端口UDP源/目的端口号生效时间段等来定义规则 3000~3999

2.3 ACL的步长设定


步长的含义

步长,是指系统自动为ACL规则分配编号后,每个相邻规则编号之间的差值

系统为ACL中首条未手工指定编号的规则分配编号后,使用步长值作为该规则的起始编号,为后续规则分配编号时,则使用大于当前ACL内最大规则编号且步长整数倍的最小整数作为规则编号。
例如ACL中包含规则rule 5和rule 12,ACL(特指基本ACL、高级ACL、二层ACL、用户ACL)的缺省步长为5,大于12且是5的倍数的最小整数是15,所以系统分配给新配置的规则的编号为15。实际效果如下所示。
  1. [Huawei-acl-basic-2001] display this //查看ACL2001当前配置
  2. acl number 2001 //空ACL
  3. ———————————————————————————————————————————————————————————————————————————————————————————
  4. [Huawei-acl-basic-2001] rule deny source 10.1.1.0 0.0.0.255 //配置首条不指定规则编号的规则
  5. [Huawei-acl-basic-2001] display this //查看ACL2001的当前配置
  6. acl number 2001
  7. rule 5 deny source 10.1.1.0 0.0.0.255
  8. ———————————————————————————————————————————————————————————————————————————————————————————
  9. [Huawei-acl-basic-2001] rule 12 deny source 10.2.2.0 0.0.0.255 //配置一条规则编号为12的规则
  10. [Huawei-acl-basic-2001] display this //查看ACL2001的当前配置
  11. acl number 2001
  12. rule 5 deny source 10.1.1.0 0.0.0.255
  13. rule 12 deny source 10.2.2.0 0.0.0.255
  14. ——————————————————————————————————————————————————————————————————————————————————————————
  15. [Huawei-acl-basic-2001] rule deny source 10.3.3.0 0.0.0.255 //再次配置一条不指定规则编号的规则
  16. [Huawei-acl-basic-2001] display this //查看ACL2001的当前配置
  17. acl number 2001
  18. rule 5 deny source 10.1.1.0 0.0.0.255
  19. rule 12 deny source 10.2.2.0 0.0.0.255
  20. rule 15 deny source 10.3.3.0 0.0.0.255

如果重新调整了步长值(例如调整为2),系统则会自动从当前步长值开始重新排列规则编号,规则编号变成2、4、6…。恢复步长值为缺省值后,系统则会立即按照缺省步长重新调整规则编号,规则编号变成5、10、15。

  1. [Huawei-acl-basic-2001] display acl 2001 //查看ACL2001的配置
  2. Basic ACL 2001, 3 rules
  3. Acl's step is 5
  4. rule 5 deny source 10.1.1.0 0.0.0.255
  5. rule 12 deny source 10.2.2.0 0.0.0.255
  6. rule 15 deny source 10.3.3.0 0.0.0.255
  7. ——————————————————————————————————————————————————————————————
  8. [Huawei-acl-basic-2001] step 2 //配置步长值为2
  9. [Huawei-acl-basic-2001] display acl 2001
  10. Basic ACL 2001, 3 rules
  11. Acl's step is 2
  12. rule 2 deny source 10.1.1.0 0.0.0.255
  13. rule 4 deny source 10.2.2.0 0.0.0.255
  14. rule 6 deny source 10.3.3.0 0.0.0.255
  15. ———————————————————————————————————————————————————————————————
  16. [Huawei-acl-basic-2001] undo step //恢复步长值为缺省值
  17. [Huawei-acl-basic-2001] display acl 2001
  18. Basic ACL 2001, 3 rules
  19. Acl's step is 5
  20. rule 5 deny source 10.1.1.0 0.0.0.255
  21. rule 10 deny source 10.2.2.0 0.0.0.255
  22. rule 15 deny source 10.3.3.0 0.0.0.255

步长的作用

设置步长的作用,在于方便后续在旧规则之间插入新的规则
假设,一条ACL中,已包含了三条规则rule 5、rule 10、rule 15。如果希望源IP地址为10.1.1.3报文也被拒绝通过,该如何处理?

  1. rule 5 deny source 10.1.1.1 0 //表示拒绝源IP地址为10.1.1.1的报文通过
  2. rule 10 deny source 10.1.1.2 0 //表示拒绝源IP地址为10.1.1.2的报文通过
  3. rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0/24网段地址的报文通过
由于ACL匹配报文时遵循“一旦命中即停止匹配”的原则,所以源IP地址为10.1.1.1和10.1.1.2的报文,会在匹配上编号较小的rule 5和rule 10后停止匹配,从而被系统拒绝通过;而源IP地址为10.1.1.3的报文,则只会命中rule 15,从而得到系统允许通过。若想让源IP地址为10.1.1.3的报文也被拒绝通过,则必须为该报文配置一条新的deny规则可以在rule 15之前插入一条新规则rule 11,这样源IP地址为10.1.1.3的报文,就会因先命中rule 11而被系统拒绝通过。插入rule 11后,该ACL的旧规则编号不受影响,且新的规则排序为rule 5、rule 10、rule 11、rule 15。
  1. rule 5 deny source 10.1.1.1 0 //表示禁止源IP地址为10.1.1.1的报文通过
  2. rule 10 deny source 10.1.1.2 0 //表示禁止源IP地址为10.1.1.2的报文通过
  3. rule 11 deny source 10.1.1.3 0 //表示拒绝源IP地址为10.1.1.3的报文通过
  4. rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0网段地址的报文通过
试想一下,如果这条ACL的规则间隔不是5,而是1(rule 1、rule 2、rule 3…),这时再想插入新的规则,就只能先删除已有的规则,然后再配置新规则,最后将之前删除的规则重新配置还原。
因此,为了避免上述操作造成的麻烦,ACL引入了步长的概念。通过设置ACL步长,使规则之间留有一定的空间,就可以轻松的在旧规则中插入新规则了。

2.4 ACL的匹配顺序


一条ACL可以由多条“deny|permit”语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方。例如,在一条ACL中先后配置以下两条规则:

  1. rule deny ip destination 10.1.0.0 0.0.255.255 //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过
  2. rule permit ip destination 10.1.1.0 0.0.0.255 //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围
其中,permit规则与deny规则是相互矛盾的。对于目的IP=10.1.1.1的报文,如果系统先将deny规则与其匹配,则该报文会被拒绝通过。相反,如果系统先将permit规则与其匹配,则该报文会得到允许通过。
因此,对于规则之间存在重复或矛盾的情形,报文的匹配结果与ACL的匹配顺序是息息相关的。
💬 设备支持两种ACL匹配顺序:配置顺序(config模式)和自动排序(auto模式)。
💬 缺省的ACL匹配顺序是config模式。

配置顺序

配置顺序,即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。
- 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。
- 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配。

自动排序

自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。
规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。各类ACL的“深度优先”顺序匹配原则如下表所示。
ACL类型 匹配原则
基本ACL&ACL6
1. 先看规则中是否带VPN实例,带VPN实例的规则优先
1. 再比较源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
1. 如果源IP地址范围相同,则规则编号小的优先
高级ACL&ACL6
1. 先看规则中是否带VPN实例,带VPN实例的规则优先
1. 再比较协议范围,指定了IP协议承载的协议类型的规则优先
1. 如果协议范围相同,则比较源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
1. 如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
1. 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先
1. 如果上述范围都相同,则规则编号小的优先。
二层ACL
1. 先比较二层协议类型通配符掩码,通配符掩码大(协议类型通配符掩码中“1”位的数量多)的规则优先。
1. 如果二层协议类型通配符掩码相同,则比较源MAC地址范围,源MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
1. 如果源MAC地址范围相同,则比较目的MAC地址范围,目的MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
1. 如果源MAC地址范围、目的MAC地址范围相同,则规则编号小的优先。
用户ACL
1. 先比较协议范围,指定了IP协议承载的协议类型的规则优先。
1. 如果协议范围相同,则比较源IP地址范围。如果规则的源IP地址均为IP网段,则源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
1. 如果协议范围、源IP地址范围相同,则比较目的IP地址范围。如果规则的目的IP地址均为IP网段,则目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
1. 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
1. 如果上述范围都相同,则规则编号小的优先

在自动排序的ACL中配置规则时,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。

  1. 例如,在auto模式的高级ACL 3001中,先后配置以下两条规则:
  2. rule deny ip destination 10.1.0.0 0.0.255.255 //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过
  3. rule permit ip destination 10.1.1.0 0.0.0.255 //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围

两条规则均没有带VPN实例,且协议范围、源IP地址范围相同,所以根据上表中高级ACL的深度优先匹配原则,接下来需要进一步比较规则的目的IP地址范围。由于permit规则指定的目标地址范围小于deny规则,所以permit规则的精确度越高,系统为其分配的规则编号越小。配置完上述两条规则后,ACL 3001的规则排序如下:

  1. acl number 3001 match-order auto
  2. rule 5 permit ip destination 10.1.1.0 0.0.0.255
  3. rule 10 deny ip destination 10.1.0.0 0.0.255.255

此时,如果再插入一条新的规则rule deny ip destination 10.1.1.0 0(目的IP地址范围是主机地址,优先级高于以上两条规则)则系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,ACL 3001新的规则排序如下:

  1. acl number 3001 match-order auto
  2. rule 5 deny ip destination 10.1.1.1 0
  3. rule 10 permit ip destination 10.1.1.0 0.0.0.255
  4. rule 15 deny ip destination 10.1.0.0 0.0.255.255

相比config模式的ACL,auto模式ACL的规则匹配顺序更为复杂,但是auto模式ACL有其独特的应用场景。例如,在网络部署初始阶段,为了保证网络安全性,管理员定义了较大的ACL匹配范围,用于丢弃不可信网段范围的所有IP报文。随着时间的推移,实际应用中需要允许这个大范围中某些特征的报文通过。此时,如果管理员采用的是auto模式,则只需要定义新的ACL规则,无需再考虑如何对这些规则进行排序避免报文被误丢弃。

2.5 ACL的常用匹配项


生效时间段

格式:time-range {time-name}
所有ACL均支持根据生效时间段过滤报文。

IP承载的协议类型

| 格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf

高级ACL支持基于协议类型过滤报文。常用的协议包括:ICMP(协议号1)、TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、IP(指任何IP层协议)、IPinIP(协议号4)、OSPF(协议号89)。协议号的取值可以是1~255。 | | —- |

例如,当设备某个接口下的用户存在大量的攻击者时,如果希望能够禁止这个接口下的所有用户接入网络,则可以通过指定协议类型为IP来屏蔽这些用户的IP流量来达到目的。配置如下:

  1. rule deny ip //表示拒绝IP报文通过

再如,设备上打开透明防火墙功能后,在缺省情况下,透明防火墙会在域间丢弃所有入域间的报文,包括业务报文和协议报文。如果希望像OSPF这样的动态路由协议报文能正常通过防火墙,保证路由互通,这时,通过制定协议类型为OSPF即可解决问题。

  1. rule permit ospf //表示允许OSPF报文通过

源/目的IP地址及其通配符掩码

源IP地址及其通配符掩码格式:source {source-address source wildcard | any}
目的IP地址及其通配符掩码格式:destination {destination-address destination-wildcard | any}

基本ACL支持根据源IP地址过滤报文,高级ACL不仅支持源IP地址,还支持根据目的IP地址过滤报文。
将源/目的IP地址定义为规则匹配项时,需要在源/目的IP地址字段后面同时指定通配符掩码,用来与源/目的IP地址字段共同确定一个地址范围。

IP地址通配符掩码与IP地址的反向子网掩码类似,也是一个32比特位的数字字符串,用于指示IP地址中的哪些位将被检查。各比特位中,“0”表示“检查相应的位”,“1”表示“不检查相应的位”,概述为一句话就是“检查0,忽略1”。但与IP地址子网掩码不同的是,子网掩码中的“0”和“1”要求必须连续,而通配符掩码中的“0”和“1”可以不连续。

通配符掩码可以为0,相当于0.0.0.0,表示源/目的地址为主机地址,也可以为255.255.255.255,表示任意IP地址,相当于指定any参数。

举一个IP地址通配符掩码的示例,当希望来自192.168.1.0/24网段的所有IP报文都能够通过,可以配置如下规则

  1. rule permit ip source 192.168.1.0 0.0.0.255
规则中的通配符掩码为0.0.0.255,表示只需检查IP地址的前三组二进制八位数对应的比特位。因此,如果报文源IP地址的前24个比特位与参照地址的前24个比特位(192.168.1)相同,即报文的源IP地址是192.168.1.0/24网段的地址,则允许该报文通过。
项目 十进制等价值 二进制等价值
参照地址 192.168.1.0 11000000.10101000.00000001.00000000
通配符掩码 0.0.0.255 00000000.00000000.00000000.11111111
确定的地址范围 192.168.1.
表示0~255之间的整数
11000000.10101000.00000001.xxxxxxxx
x既可以是0,也可以是1
IP地址 IP地址通配符掩码 确定的地址范围
0.0.0.0 255.255.255.255 任意IP地址
172.18.0.0 0.0.255.255 172.18.0.0/16网段的IP地址
172.18.5.2 0.0.0.0 仅172.18.5.2这一个主机地址
172.18.8.0 0.0.0.7 172.18.8.0/29网段的IP地址
172.18.8.8 0.0.0.7 172.18.8.8/29网段的IP地址
10.1.2.0 0.0.254.255(通配符掩码中的1和0不连续) 10.1.0.0/24~10.1.254.0/24网段之间且第三个字节为偶数的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24等。

源/目的MAC地址及其通配符掩码

源MAC地址及其通配符掩码格式:**source-mac** _source-mac-address_ [ _source-mac-mask_ ]
目的地址及其通配符掩码格式:**destination-mac** _dest-mac-address_ [ _dest-mac-mask_ ]

仅二层ACL支持基于源/目的MAC地址过滤报文。
将源/目的MAC地址定义为规则匹配项时,可以在源/目的MAC地址字段后面同时指定通配符掩码,用来与源/目的MAC地址字段共同确定一个地址范围。

MAC地址通配符掩码的格式与MAC地址相同,采用十六进制数表示,共六个字节(48位),用于指示MAC地址中的哪些位将被检查。与IP地址通配符掩码不同的是,MAC地址通配符掩码各比特位中,1表示“检查相应的位”,0表示“不检查相应的位”。如果不指定通配符掩码,则默认掩码为ffff-ffff-ffff,表示检查MAC地址的每一位。
MAC地址 MAC地址通配符掩码 确定的地址范围
00e0-fc01-0101 0000-0000-0000 任意MAC地址
00e0-fc01-0101 ffff-ffff-ffff 仅00e0-fc01-0101这一个MAC地址
00e0-fc01-0101 ffff-ffff-0000 00e0-fc01-0000~00e0-fc01-ffff

VLAN编号及其掩码

外层VLAN及其掩码格式:**vlan-id** _vlan-id_ [_vlan-id-mask_]
二层ACL支持基于外层VLAN编号过滤报文。

将VLAN编号定义为规则匹配项时,可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。
VLAN掩码的格式是十六进制形式,取值范围是0x0 ~ 0xFFF。如果不指定VLAN掩码,则默认掩码为0xFFF,表示检查VLAN编号的每一位。

VLAN编号 VLAN掩码 确定的VLAN范围
10 0x000 任意VLAN
10 0xFFF 仅VLAN 10
10 0xFF0 VLAN 1~VLAN 15

TCP/UDP端口号

源端口号格式**source-port** {**eq** _port_ | **gt** _port_ | **It** _port_ | **range** _port-start port-end_}
目的端口号格式**destination-port**{ **eq** _port_ | **gt** _port_ | **lt** _port_ | **range** _port-start_ _port-end_ }
在高级ACL中,当协议类型指定为TCP或UDP时,设备支持基于TCP/UDP的源/目的端口号过滤报文。

其中,TCP/UDP端口号的比较符合含义如下:
- eq port :指定等于源/目的端口。
- gt port :指定大于源/目的端口。
- It port :指定小于源/目的端口。
- range port-start port-end :指定源/目的端口的范围。port-start是端口范围的起始,port-end是端口范围的结束。

TCP/UDP端口号可以使用数字表示,也可以用字符串(助记符)表示。例如,**rule deny tcp destination-port eq 80**,可以用**rule deny tcp destination-port eq www**替代。

常见TCP端口号及其对应的字符串

端口号 字符串 协议 说明
7 echo Echo Echo服务
9 discard Discard 用于连接测试的空服务
13 daytime Daytime 给请求主机发送日期和时间
19 CHARgen Character generator 字符生成服务;发送无止境的字符流
20 ftp-data FTP data connections FTP数据端口
21 ftp File Transfer Protocol(FTP) 文件传输协议(FTP)端口
23 telnet Telnet Telnet服务
25 smtp Simple Mail Transport Protocol (SMTP) 简单邮件传输协议
37 time Time 时间协议
43 whois Nickname(WHOIS) 目录服务
49 tacacs TAC Access Control System (TACACS) 用于基于TCP/IP验证和访问的访问控制系统(TACACS登录主机协议)
53 domain Domain Name Service (DNS) 域名服务
70 gopher Gopher 信息检索协议(互联网文档搜寻和检索)
79 finger Finger 用于用户联系信息的Finger服务,查询远程主机在线用户等信息
80 www World Wide Web (HTTP) 用于万维网(WWW)服务的超文本传输协议(HTTP),用于网页浏览
101 hostname NIC hostname server NIC机器上的主机名服务
109 pop2 Post Office Protocol v2 邮件协议-版本2
110 pop3 Post Office Protocol v3 邮件协议-版本3
111 sunrpc Sun Remote Procedure Call (RPC) SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
119 nntp Network News Transport Protocol (NNTP) 网络新闻传输协议,承载USENET通信
179 bgp Border Gateway Protocol (BGP) 边界网关协议
194 irc Internet Relay Chat (IRC) 互联网中继聊天(多线交谈协议)
512 exec Exec (rsh) 用于对远程执行的进程进行验证
513 login Login (rlogin) 远程登录
514 cmd Remote commands 远程命令,不必登录的远程shell(rshell)和远程复制(rcp)
515 lpd Printer service 打印机(lpr)假脱机
517 talk Talk 远程对话服务和客户
540 uucp Unix-to-Unix Copy Program Unix到Unix复制服务
543 klogin Kerberos login Kerberos版本5(v5)远程登录
544 kshell Kerberos shell Kerberos版本5(v5)远程shell

常见UDP端口号及其对应的字符串

端口号 字符串 协议 说明
7 echo Echo Echo服务
9 discard Discard 用于连接测试的空服务
37 time Time 时间协议
42 nameserver Host Name Server 主机名服务
53 dns Domain Name Service (DNS) 域名服务
65 tacacs-ds TACACS-Database Service TACACS数据库服务
67 bootps Bootstrap Protocol Server 引导程序协议(BOOTP)服务端,DHCP服务使用
68 bootpc Bootstrap Protocol Client 引导程序协议(BOOTP)客户端,DHCP客户使用
69 tftp Trivial File Transfer Protocol (TFTP) 小文件传输协议
90 dnsix DNSIX Security Attribute Token Map DNSIX安全属性标记图
111 sunrpc SUN Remote Procedure Call (SUN RPC) SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
123 ntp Network Time Protocol (NTP) 网络时间协议,蠕虫病毒会利用
137 netbios-ns NETBIOS Name Service NETBIOS名称服务
138 netbios-dgm NETBIOS Datagram Service NETBIOS数据报服务
139 netbios-ssn NETBIOS Session Service NETBIOS会话服务
161 snmp SNMP 简单网络管理协议
162 snmptrap SNMPTRAP SNMP陷阱
177 xdmcp X Display Manager Control Protocol (XDMCP) X显示管理器控制协议
434 mobilip-ag MobileIP-Agent 移动IP代理
435 mobilip-mn MobileIP-MN 移动IP管理
512 biff Mail notify 异步邮件,可用来通知用户有邮件到达
513 who Who 登录的用户列表
514 syslog Syslog UNIX系统日志服务
517 talk Talk 远程对话服务器和客户端
520 rip Routing Information Protocol RIP路由协议

TCP标志信息

格式:**tcp-flag** { **ack** | **established** | **fin** | **psh** | **rst** | **syn** | **urg** }*
在高级ACL中,当协议类型指定为TCP时,设备支持基于TCP标志信息过滤报文。

TCP报文头有6个标志位:

  • URG(100000):标识紧急指针有效
  • ACK(010000):标识确认序号有效
  • PSH(001000):标识接收方应该尽快将这个报文段上交给应用层
  • RST(000100):标识重建连接
  • SYN(000010):同步序号,用来发起一个连接
  • FIN(000001):标识发送方完成发送任务

TCP标志信息中的established,表示标志位为ACK(010000)或RST(000100)。
指定tcp-flag的ACL规则可以用来实现单向访问控制。假设,要求192.168.1.0/24网段用户可以主动访问192.168.2.0/24网段用户,但反过来192.168.2.0/24网段用户不能主动访问192.168.1.0/24。可通过在设备上连接192.168.2.0/24网段的接口入方向上,应用ACL规则来实现该需求。
由TCP建立连接和关闭连接的过程可知,只有在TCP中间连接过程的报文才会ACK=1或者RST=1。根据这个特点,配置如下两种ACL规则,允许TCP中间连接过程的报文通过,拒绝该网段的其他TCP报文通过,就可以限制192.168.2.0/24网段主动发起的TCP连接。

  • 类型一:配置指定ack和rst参数的ACL规则

    1. rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack //允许ACK=1的TCP报文通过
    2. rule 10 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst //允许RST=1的TCP报文通过
    3. rule 15 deny tcp source 192.168.2.0 0.0.0.255 //拒绝该网段的其他TCP报文通过
  • 类似二:配置指定established参数的ACL规则

    1. rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag established // established表示ACK=1或者RST=1,表示允许TCP中间连接过程的报文通过
    2. rule deny tcp source 192.168.2.0 0.0.0.255 //拒绝该网段的其他TCP报文通过

IP分片信息

格式:**none-first-fragment**
基本ACL和高级ACL支持基于IP分片信息过滤报文。

IP分片除了首片报文外,还有后续分片报文,又叫做非首片分片报文。仅首片分片报文携带四层信息(如TCP/UDP端口号等),后续分片报文均不携带。网络设备收到分片报文后,会判断其是否是最后一个分片报文。如果不是,则为其分配内存空间,以便于最后一个分片报文到达后完成重组。黑客可以利用这一点,向接收方设备发起分片报文攻击,始终不向接收方发送最后一个分片报文,使得接收方的内存得不到及时释放(接收方会启动一个分片重组的定时器,在定时器超时前如果无法完成重组,将向发送方发送ICMP重组超时差错报文;如果定时器超时后仍未完成重组,则丢弃已存储的分片报文)。在分片报文发送数量很多并且发送速度很快的情况下,接收方的内存很容易被占满,从而导致接收方没有足够的内存资源处理其他正常的业务。
为了解决这个问题,可以配置指定**none-first-fragment**匹配项的ACL规则来阻塞非首片分片报文,从而达到防范分片报文攻击的目的。

规则包含的匹配项 非分片报文 首片分片报文 非首片分片报文
三层信息(如源/目的IP地址) 三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配 三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配 三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配
三层信息 + 四层信息(如TCP/UDP端口号) 三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配 三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配 不匹配,转下一条规则进行匹配
三层信息 + none-first-fragment 不匹配,转下一条规则进行匹配 不匹配,转下一条规则进行匹配 三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

例如,ACL 3012中存在以下规则:

  1. acl number 3012
  2. rule 5 deny tcp destination 192.168.2.2 0 none-first-fragment
  3. rule 10 permit tcp destination 192.168.2.2 0 destination-port eq www
  4. rule 15 deny ip
  • 该报文是非分片报文或首片分片报文时:如果该报文的目的端口号是80(www对应的端口号是80),则报文与rule 10匹配,报文被允许通过;如果该报文的目的端口号不是80,则报文与rule 15匹配,报文被拒绝通过。
  • 该报文是非首片分片报文时:该报文与rule 5匹配,报文被拒绝通过。

2.6 ACL的生效时间段


产生背景

ACL定义了丰富的匹配项,可以满足大部分的报文过滤需求。但需求是不断变化发展的,新的需求总是不断涌现。例如,某公司要求,在上班时间只允许员工浏览与工作相关的几个网站,下班或周末时间才可以访问其他互联网网站;再如,在每天20:00~22:00的网络流量的高峰期,为防止P2P、下载类业务占用大量带宽对其他数据业务的正常使用造成影响,需要对P2P、下载类业务的带宽进行限制。
基于时间的ACL过滤就是用来解决上述问题的。管理员可以根据网络访问行为的要求和网络的拥塞情况,配置一个或多个ACL生效时间段,然后在ACL规则中引用该时间段,从而实现在不同的时间段设置不同的策略,达到网络优化的目的。

生效时间段模式

在ACL规则中引用的生效时间段存在两种模式:

  • 第一种模式——周期时间段:以星期为参数来定义时间范围,表示规则以一周为周期(如每周一的8至12点)循环生效。格式:**time-range** _time-name_ _start-time_ **to** _end-time_ { _days_ } &<1-7>
    • time-name:时间段名称,以英文字母开头的字符串。
    • start-time to end-time:开始时间和结束时间。格式为[小时:分钟] to [小时:分钟]。
    • days:有多种表达方式。
      • MonTueWedThuFriSatSun中的一个或者几个的组合,也可以用数字表达,0表示星期日,1表示星期一,……6表示星期六。
      • working-day:从星期一到星期五,五天。
      • daily:包括一周七天。
      • off-day:包括星期六和星期日,两天。
  • 第二种模式——绝对时间段:从某年某月某日的某一时间开始,到某年某月某日的某一时间结束,表示规则在这段时间范围内生效。格式:**time-range** _time-name_ **from** _time1_ _date1_ [ **to** _time2_ _date2_ ]
    • time-name:时间段名称,以英文字母开头的字符串。
    • time1/time2:格式为[小时:分钟]。
    • date1/date2:格式为[YYYY/MM/DD],表示年/月/日。

可以使用同一名称{time-name}配置内容不同的多条时间段,配置的各周期时间段之间以及各绝对时间段之间的交集将成为最终生效的时间范围。

  1. time-range test 8:00 to 18:00 working-day
  2. time-range test 14:00 to 18:00 off-day
  3. time-range test from 00:00 2021/01/01 to 23:59 2021/12/31
  4. acl number 2001
  5. rule 5 permit time-range test
  • 第一个时间段,表示在周一到周五每天8:00到18:00生效,这是一个周期时间段。
  • 第二个时间段,表示在周六、周日下午14:00到18:00生效,这是一个周期时间段。
  • 第三个时间段,表示从2014年1月1日00:00起到2014年12月31日23:59生效,这是一个绝对时间段。

时间段“test”最终描述的时间范围为:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

2.7 ACL应用模块的ACL默认动作和处理机制


ACL的应用模块

配置完ACL后,必须在具体的业务模块中应用ACL,才能使ACL正常下发和生效。
最基本的ACL应用方式,是在简化流策略/流策略中应用ACL,使设备能够基于全局或接口下发ACL,实现对转发报文的过滤。此外,ACL还可以应用在Telnet、FTP、路由等模块。

  • ACL应用的业务模块 | 业务分类 | 应用场景 | 涉及业务模块 | | —- | —- | —- | | 对转发的报文进行过滤 | 基于全局和接口,对转发的报文进行过滤,从而使设备能够进一步对过滤出的报文进行丢弃、修改优先级、重定向等处理。
    例如,可以利用ACL,降低P2P下载、网络视频等消耗大量带宽的数据流的服务等级,在网络拥塞时优先丢弃这类流量,减少它们对其他重要流量的影响。 | 简化流策略/流策略 | | 对上送CPU处理的报文进行过滤 | 对上送CPU的报文进行必要的限制,可以避免CPU处理过多的协议报文造成占用率过高、性能下降。
    例如,当发现某用户向设备发送大量的ARP攻击报文,造成设备CPU繁忙,引发系统中断时,可以在本机防攻击策略的黑名单中应用ACL,将该用户加入黑名单,使CPU丢弃该用户发送的报文。 | 黑名单 | | 登录控制 | 对设备的登录权限进行控制,允许合法用户登录,拒绝非法用户登录,从而有效防止未经授权用户的非法接入,保证网络安全性。
    例如,一般情况下设备只允许管理员登录,非管理员用户不允许随意登录。这时就可以在Telnet中应用ACL,并在ACL中定义哪些主机可以登录,哪些主机不能。 | Telnet、STelnet、FTP、SFTP、HTTP、SNMP | | 路由过滤 | ACL可以应用在各种动态路由协议中,对路由协议发布、接收的路由信息以及组播组进行过滤。
    例如,可以将ACL和路由策略配合使用,禁止设备将某网段路由发给邻居路由器。 | BGP、IS-IS、OSPF、OSPFv3、RIP、RIPng、组播协议 |

应用模块的ACL默认动作和处理机制

在各类业务模块中应用ACL时,ACL的默认动作各有不同,所以各业务模块对命中/未命中ACL规则报文的处理机制也各不相同。
例如,流策略中的ACL默认动作是permit,在流策略中应用ACL时,如果ACL中存在规则但报文未匹配上,该报文仍可以正常通过。而Telnet中的ACL默认动作是deny,在Telnet中应用ACL时,如果遇到此种情况,该报文会被拒绝通过。
此外,黑名单模块中的ACL处理机制与其他模块有所不同。在黑名单中应用ACL时,无论ACL规则配置成permit还是deny,只要报文命中了规则,该报文都会被系统丢弃。

  • 各业务模块的ACL默认动作及ACL处理机制 | 业务模块 | | ACL默认动作 | ACL处理机制 | | | | | | —- | —- | —- | —- | —- | —- | —- | —- | | | 命中permit规则 | | 命中deny规则 | ACL中配置了规则,但未命中任何规则 | ACL中未配置规则 | ACL未创建 | | Telnet | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | STelnet | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | HTTP | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | SNMP | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | FTP | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | TFTP | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | SFTP | | deny | permit
    (允许登录) | deny
    (拒绝登录) | deny
    (拒绝登录) | permit
    (允许登录) | permit
    (允许登录) | | 流策略 | | permit |
    - 流行为是permit时:permit(允许通过)
    - 流行为是deny时:deny(丢弃报文)
    - 流行为是其他动作时:permit(执行流策略动作)
    | deny(丢弃报文)
    说明:
    报文命中deny规则时,只有在流行为是流量统计或流镜像的情况下,设备才会执行流行为动作,否则流行为动作不生效。 | permit
    (功能不生效,按照原转发方式进行转发) | permit
    (功能不生效,按照原转发方式进行转发) | permit
    (功能不生效,按照原转发方式进行转发) | | 简化流策略 | | permit | permit(执行简化流策略动作) |
    - 简化流策略动作为报文过滤(traffic-filter或traffic-secure)时:deny(丢弃报文)
    - 简化流策略动作为其他动作时:permit(执行简化流策略动作)
    | permit
    (功能不生效,按照原转发方式进行转发) | permit
    (功能不生效,按照原转发方式进行转发) | permit
    (功能不生效,按照原转发方式进行转发) | | 本机防攻击策略(黑名单) | | permit | deny
    (丢弃报文) | deny
    (丢弃报文) | permit
    (功能不生效,正常上送报文) | permit
    (功能不生效,正常上送报文) | permit
    (功能不生效,正常上送报文) | | 路由 | Route Policy | deny |
    - 匹配模式是permit时:permit(允许执行路由策略)
    - 匹配模式是deny时:deny(不允许执行路由策略)
    | deny
    (功能不生效,不允许执行路由策略) | deny
    (功能不生效,不允许执行路由策略) | permit
    (对经过的所有路由生效) | deny
    (功能不生效,不允许执行路由策略) | | | Filter Policy | deny | permit
    (允许发布或接收该路由) | deny
    (不允许发布或接收该路由) | deny
    (不允许发布或接收该路由) | deny
    (不允许发布或接收路由) | permit
    (允许发布或接收路由) | | 组播 | igmp-snooping ssm-policy | deny | permit
    (允许加入SSM组播组范围) | deny
    (禁止加入SSM组地址范围) | deny
    (禁止加入SSM组地址范围) | deny(禁止加入SSM组地址范围,所有组都不在SSM组地址范围内) | deny(禁止加入SSM组地址范围,只有临时组地址范围232.0.0.0~232.255.255.255在SSM组地址范围内) | | | igmp-snooping group-policy | permit | permit
    (允许加入组播组) | deny
    (禁止加入组播组) | permit
    (允许加入组播组) | permit
    (允许加入组播组) | permit
    (允许加入组播组) |

三、ACL的应用场景与配置举例


3.1 使用ACL限制Telnet登录权限

ACL应用在Telnet模块中,可以使设备作为telnet服务器时,对那些Telnet客户端以Telnet方式登录到本设备能加以控制,从而有效防止未授权用户的非法接入。

如下图所示,为简单而方便的配置和管理远程设备(Telnet Server),管理员在服务器端进行了配置,使Telnet用户必须使用AAA认证方式才能登录。同时,管理员配置了基于ACL的登录限制策略,保证只有管理员使用的PC才能登录该设备。
fig_dc_cfg_login_001501ar.png
使用ACL限制Telnet登录权限

配置举例:
如上图所示,PC与设备之间路由可达,用户希望简单方便的配置和管理远程设备,可以在服务器端配置Telnet用户使用AAA认证配置,并配置基于ACL的安全策略,保证只有符合安全策略的用户才能登录设备。

note_3.0-zh-cn.png
使用Telnet协议存在安全风险,建议使用STelnet V2登录设备

配置思路:

  1. 配置Telnet方式登录设备,以实现远程维护网络设备。
  2. 配置基于ACL的安全策略,保证只有符合安全策略的用户才能登录设备。
  3. 配置管理员的用户名和密码,并配置AAA认证策略,保证只有认证通过的用户才能登录设备。

配置步骤:

  1. 配置服务器的端口号以及使能服务器功能

    1. [Telnet Server]telnet server enable //Telnet功能默认开启
    2. [Telnet Server]telnet server port ? //配置服务器的Telnet端口号,默认不配置为23
    3. INTEGER<23,1025-51200> Set the port number, the default value is 23
  2. 配置VTY用户界面的相关参数 ```c 配置VTY用户界面的最大连接数 [Telnet Server] user-interface maximum-vty 8 //可选配置,默认0-4五个连接数

配置允许用户登录设备的主机地址 [Telnet Server]acl name Telnet-in basic [Telnet Server-acl-basic-Telnet-in]rule permit source 10.1.1.1 0 [Telnet Server-acl-basic-Telnet-in]quit [Telnet Server]user-interface vty 0 7 [Telnet Server-ui-vty0-7]acl 2999 inbound

配置VTY用户界面的终端属性 [Telnet Server-ui-vty0-7]shell //启用用户终端服务 [Telnet Server-ui-vty0-7]idle-timeout 5 //超过5分钟无操作则退出终端登录 [Telnet Server-ui-vty0-7]screen-length 30 //终端界面最多显示30行缓存记录 [Telnet Server-ui-vty0-7]history-command max-size 20 //上翻命令缓存20行,用上箭头往回使用命令

配置VTY用户界面的用户验证方式 [Telnet Server-ui-vty0-7]authentication-mode aaa //使用AAA来进行登录验证,也可以使用password

  1. 3. **配置登录用户的相关方式**
  2. ```c
  3. [Telnet Server]aaa
  4. [Telnet Server-aaa]local-user huawei password cipher huawei
  5. [Telnet Server-aaa]local-user huawei service-type telnet
  6. [Telnet Server-aaa]local-user huawei privilege level 3

实验结果:
image.png
Client登录成功,因为ACL放行了10.1.1.1这个IP。
image.png
10.1.1.2被拒绝登录了,因为ACL中没有允许10.1.1.2通过,且ACL默认拒绝所有。
image.png

实验拓扑下载:

https://www.aliyundrive.com/s/j51b5n5YAnY

[

](https://www.aliyundrive.com/s/j51b5n5YAnY)

3.2 SNMP中应用基本ACL过滤非法网关

  1. 如下图所示,网络中存在两个网管可以对网络中的设备进行监管。由于网络规模较小、安全性较高,管理员希望Router使用SNMPv1版本与网管进行通信,并且只有可信任的网管(NMS2)才能管理Router,禁止非法网管管理Router。此外,根据业务需要,管理员希望网管站只对设备的DNS节点进行管理,并且通过网管站的管理,可以让管理员能够快速的进行故障定位和排除。<br />![fig_dc_cfg_snmp_004701.png](https://cdn.nlark.com/yuque/0/2021/png/1467971/1628001345019-2ac8c692-18ae-45d9-ac5f-2c37436f3669.png#clientId=ud034ec55-607e-4&from=ui&height=262&id=u90ec2624&margin=%5Bobject%20Object%5D&name=fig_dc_cfg_snmp_004701.png&originHeight=193&originWidth=354&originalType=binary&ratio=1&size=7433&status=done&style=none&taskId=ufd758e56-8105-4fa5-a703-9d44e236e9c&width=481)<br />**配置思路:**
  1. 配置路由器的SNMP版本为SNMPv1。
  2. 配置ACL、MIB视图和团体名,控制网管站的访问权限,使NMS2可以管理Router上RMON之外的节点,NMS1不能管理Router。
  3. 配置路由器的Trap功能,使路由器产生的告警能够发送至NMS2。为了方便对告警信息进行定位,避免过多的无用告警对处理问题造成干扰,仅允许缺省打开的模块可以发送告警。
  4. 配置路由器管理员的联系方法,以便路由器出现故障时网管管理员能快速联系上就近的设备管理员,以便对故障进行快速定位和排除。
  5. 配置网管站(仅NMS2)。

配置过程:

  1. [Router]snmp-agent //使能SNMP Agent
  2. [Router]snmp-agent sys-info version v1 //配置SNMP为版本1
  3. [Router]acl 2000 //创建ACL 2000
  4. [Router-acl-basic-2000]rule permit source 10.1.1.2 0 //允许NMS2的IP地址
  5. [Router-acl-basic-2000]rule deny source 10.1.1.1 0 //拒绝NMS1的IP地址
  6. [Router]snmp-agent mib-view dnsmib include 1.3.6.1.4.1.2011.5.25.194 //配置MIB视图
  7. [Router]snmp-agent trap source GigabitEthernet 1/0/0 //配置设备发送Trap的源接口
  8. [Router]snmp-agent community write adminnms2 mib-view dnsmib acl 2000 //配置团体名并引用ACL和MIB视图
  9. [Router] snmp-agent target-host trap-paramsname trapnms2 v1 securityname adminnms2
  10. [Router] snmp-agent target-host trap-hostname nms2 address 10.1.1.2 trap-paramsname trapnms2
  11. [Router] snmp-agent trap queue-size 200
  12. [Router] snmp-agent trap life 60
  13. [Router] snmp-agent trap enable
  14. [Router] snmp-agent sys-info contact call Operator at 010-12345678 //配置管理员联系方式

1.4 ACL规则

image.png
一个ACL可以由多条“deny | permit”语句组成,每一条语句描述了一条规则。设备收到数据流量后,会逐条匹配ACL规则,看其是否匹配。如果不匹配,则匹配下一条。一旦找到一条匹配的规则,则执行规则中定义的动作,并不再继续与后续规则进行匹配。如果找不到匹配的规则,则设备不对报文进行任何处理。需要注意的是,ACL中定义的这些规则可能存在重复或矛盾的地方。规则的匹配顺序决定了规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。

ARG3系列路由器支持两种匹配顺序:配置顺序和自动排序。

  1. 配置顺序按ACL规则编号(rule-id)从小到大的顺序进行匹配。设备会在创建ACL的过程中自动为每一条规则分配一个编号,规则编号决定了规则被匹配的顺序。例如,如果将步长设定为5,则规则编号将按照5、10、15…这样的规律自动分配。如果步长设定为2,则规则编号将按照2、4、6、8…这样的规律自动分配。通过设置步长,使规则之间留有一定的空间,用户可以在已存在的两个规则之间插入新的规则。路由器匹配规则时默认采用配置顺序。另外,ARG3系列路由器默认规则编号的步长是5。
  2. 自动排序使用“深度优先”的原则进行匹配,即根据规则的精确度排序。 本示例中,RTA收到了来自两个网络的报文。默认情况下,RTA会依据ACL的配置顺序来匹配这些报文。网络172.16.0.0/24发送的数据流量将被RTA上配置的ACL2000的规则15匹配,因此会被拒绝。而来自网络172.17.0.0/24的报文不能匹配访问控制列表中的任何规则,因此RTA对报文不做任何处理,而是正常转发。

1.5 ACL配置

1.5.1 基本ACL配置

image.png
image.png

  • 执行display acl xxx命令可以验证配置的基本ACL。
  • 执行display traffic-filter applied-record命令可以查看设备上所有基于ACL进行报文过滤的应用信息,这些信息可以帮助用户了解报文过滤的配置情况并核对其是否正确,同时也有助于进行相关的故障诊断与排查。

1.5.2 高级ACL配置

image.png

  • 基本ACL可以根据源IP地址进行报文过滤,而高级ACL能够依据源/目的IP地址、源/目的端口号、网络层及传输层协议以及IP流量分类和TCP标记值等各种参数(SYN|ACK|FIN等)进行报文过滤。

image.png

  • 执行display acl xxx命令可以验证配置的高级ACL。
  • 显示信息表明:RTA上一共配置了3条高级ACL规则。第一条规则用于拒绝来自源IP地址192.168.1.0/24,目的IP地址为172.16.10.1,目的端口为21(FTP)的TCP报文,第二条规则用于拒绝来自源IP地址192.168.2.0/24,目的IP地址为172.16.10.2的所有TCP报文,第三条规则允许所有IP报文通过。

1.6 ACL应用-NAT

image.png

  • ACL还可以用于网络地址转换操作,以便在存在多个地址池的情况下,确定哪些内网地址是通过哪些特定外网地址池进行地址转换的。
  • 例如,某企业网络作为客户连接到多个服务供应商网络,企业网络的内部用户位于不同的网段/子网,他们期望分别通过某个特定的地址组进行地址转换来实现报文转发。这种情况极有可能发生在连接不同服务供应商网络的路由器上行端口。
  • 本示例中,要求192.168.1.0/24中的主机使用地址池1中的公网地址进行地址转换,而192.168.2.0/24中的主机使用地址池2中的公网地址进行地址转换。

image.png