华三-ACL
简介
ACL(Access Control List,访问控制列表)是一系列用于识别报文流的规则的集合。这里的规则是指描述报文匹配条件的判断语句,匹配条件可以是报文的源地址、目的地址、端口号等。设备依据ACL规则识别出特定的报文,并根据预先设定的策略对其进行处理,最常见的应用就是使用ACL进行报文过滤。此外,ACL还可应用于诸如路由、安全、QoS等业务中识别报文,对这些报文的具体处理方式由应用ACL的业务模块来决定。
ACL的编号和名称
用户在创建ACL时必须为其指定编号或名称,不同的编号对应不同类型的ACL;当ACL创建完成后,用户就可以通过指定编号或名称的方式来应用和编辑该ACL。
对于编号相同的基本ACL或高级ACL,必须通过IPV6关键字进行区别。对于名称相同的ACL,必须通过ipv6、mac和user-defined关键字进行区分
ACL的分类

ACL的规则匹配顺序
当一个ACL中包含多条规则时,报文会按照一定的顺序与这些规则进行匹配,一旦匹配上某条规则便结束匹配过程。ACL的规则匹配顺序有以下两种:
- 配置顺序:按照规则编号由小到大进行匹配。
- 自动排序:按照“深度优先”原则由深到浅进行匹配,各类型ACL的"深度优先"排序法则如下表所示。
说明:用户自定义ACL的规则只能按照配置顺序进行匹配,其它类型的ACL则可选择按照配置顺序或自动顺序进行匹配。

说明:
- 比较IPV4地址范围大小,就是比较IPv4地址通配符掩码中"0"位的多少;"0"位越多,范围越小。通配符掩码(又称反向掩码)以点分十进制表示,并以二进制的"0"表示"匹配",“1”表示“不关心”,这与子网掩码恰好相反,譬如子网掩码255.255.255.0对应的通配符掩码就是0.0.0.255。此外,通配符掩码中的"0"或"1"可以是不连续的,这样可以更加灵活地进行匹配,譬如0.255.0.255就是一个合法的通配符掩码。
- 比较IPv6地址范围的大小,就是比较IPv6地址前缀的长短;前缀越长,范围越小。
- 比较MAC地址范围的大小,就是比较MAC地址掩码中"1"位的多少;“1”位越多,范围越小。
ACL的规则描述和注释
在一个ACL中用户可以创建多条规则,为了方便标识这些规则的用途,用户可以为单条规则添加描述信息,也可以在各条规则之间插入注释信息来对前一段或后一段规则进行统一描述。
- 规则描述信息
- 规则描述信息主要用于对单条规则进行单独标识。当需要对各条规则进行不同的标识或对某条规则进行特别标识时,适用此方式。
- 规则注释信息
- 规则注释信息主要用于对一段规则进行统一标识。当需要对一段规则进行相同的标识时,如果采用对每条规则都添加相同描述信息的方式,需要进行大量配置,效率会非常低下。在这种情况下,可以在这段规则的前、后插入注释信息的方式来提高标识效率,即:在这段规则的首条规则之前以及未条规则之后分别插入一条注释信息,通过首、尾这两条注释信息就可以标识整段规则的用途。
ACL的步长
ACL中的每条规则都有自己的编号,这个编号在该ACL中是唯一的。在创建规则时,可以手工为其指定一个编号;如未手工指定编号,则由系统为其自动分配一个编号。由于规则的编号可能影响规则匹配的顺序,因此当由系统自动分配编号时,为了方便后续在已有规则之前插入新的规则,系统通常会在相邻编号之间留下一定的空间,这个空间的大小(即相邻编号之间的差值)就称为ACL的步长。譬如,当步长为5时,系统会将编号0、5、10、15……依次分配给新创建的规则。
系统为规则自动分配编号的方式如下:系统从规则编号的起始值开始,自动分配一个大于现有最大编号的步长最小倍数的编号。譬如原有编号为0、5、9、10和12的五条规则,步长为5,此时如果创建一条规则且不指定编号,那么系统将自动为其分配编号15。
如果步长或规则编号的起始值发生了改变,ACL内原有全部规则的编号都将自动从规则编号的起始值开始按步长重新排列。譬如,某ACL内原有编号为0、5、9、10和15的五条规则,当修改步长为2之后,这些规则的编号将依次变为0、2、4、6和8。
需要注意的是,ACL规则的匹配顺序为自动排序时,修改步长后新的编号是按照规则的匹配顺序(即"深度优先"原则)重新排序的,并非按照规则的原有编号顺序排序。譬如,步长为5时,规则的匹配顺序为0、10、15......修改步长为2后,各格则对应的新编号为0、2、4....
ACL对分片报文的处理
传统报文过滤只对分片报文的首个分片进行匹配过滤,对后续分片一律放行,因此网络攻击通常会构造后续分片进行流量攻击。为提高网络安全性,ACL规则缺省会匹配所有非分片报文和分片报文的全部分片,但这样又带来效率低下的问题。为了兼顾网络安全和匹配效率,可将过滤规则配置为仅对后续分片有效。
基本ACL
功能简介
基本ACL根据报文的源IP地址来制订规则,对报文进行匹配。
基本ACL可以应用在设备管理、NAT业务、组播业务、QoS业务和路由策略等场景中,典型应用场景如下:
- 当设备作为FTP、TFTP服务器时,为提高其安全性,可以通过配置基本ACL实现只允许满足过滤条件的客户端访问服务器。
- 在NAT业务场景中,可以通过配置基本ACL规则实现对特定报文进行地址转换。
- 在组播场景中,通过配置基本ACL,设备可以作为组播数据过滤器实现只接收或转发满足过滤条件的组播报文。
- 当需要控制设备接收、发布的路由信息时,可以通过配置基本ACL作为路由策略的过滤器,来实现只接收或发布满足过滤条件的路由。
- 当需要对不同类型的流量进行分类操作时,可以同配置基本ACL实现对满足过滤条件的流量进行流量监管、流量整形、流分类。
基本ACL实验
拓扑

实验需求
1.禁止100.1.1.0段的地址去访问VLAN20的地址
2.允许剩下的地址都可以互相访问
配置
IP地址配置
SW1

SW2

SW3

配置路由使PC1可以与PC2通信
SW1

SW2

SW3

配置ACL
SW2

acl basic 2000 //创建基本ACL2000
rule 0 deny source 100.1.1.0 0.0.0.255 //创建ACL的匹配规则,禁止源100.1.1.0段的IP地址通过
rule 1 permit source any //在禁止之后需要有一条允许所有其它IP地址通过的规则

interface g1/0/2 //进入接口
packer-tilter 2000 inbound //入接口匹配acl 2000规则
结果
SW1用100.1.1.1去ping192.168.20.2地址
发现是不通信的
用PC1去pingPC2
没有收到影响,而是可以ping通的
查看命令

display acl all //查看设备上所有的ACL条目

display packet-filter interface GigabitEthernet 1/0/2 inbound //查看接口1/0/2下面的挂的是哪个ACL

display packet-filter statistics sum inbound 2000 //查看ACL 2000的匹配情况
高级ACL
功能简介
高级ACL可以应用在设备管理、NAT业务、组播业务、QoS业务和路由策略等场景下,典型应用场景如下:
- 当设备作为FTP、TFTP服务器时,为提高其安全性,可以通过配置高级ACL实现只允许满足过滤条件的客户端访问服务器。
- 在NAT业务场景中,可以通过配置高级ACL规则实现对特定报文进行地址转换。
- 在组播场景中,通过配置高级ACL,设备可以作为组播数据过滤器实现只接收或转发满足过滤条件的组播报文。
- 当需要控制设备接收、发布的路由信息时,可以通过配置高级ACL作为路由策略的过滤器,来实现只接收或发布满足过滤条件的路由。
- 当需要对不同类型的流量进行分类操作时,可以通过配置高级ACL实现对满足过滤条件的流量进行流量监管、流量整形、流分类。
高级ACL可根据报文的源地址、目的地址、报文优先级、QoS本底值、承载的协议类型及特性(如TCP/UDP的源端口和目的端口、TCP报文标识、ICMP或ICMPV6协议的消息类型和消息码等)以及报文的封装类型、内层源地址、内层目的地址、内层承载的协议类型及特性(如TCP/UDP的内层源端口和内层目的端口)等信息来制定规则,对报文进行匹配。用户可利用高级ACL制订比基本ACL更准确、丰富、灵活的规则。
高级ACL实验
拓扑

实验要求
- PC1不能访问PC2,但是可以访问其他接口地址
- SW1不能ftp SW3
配置
配置IP地址
SW1

SW2

SW3

配置路由
SW1

SW2

SW3

配置ACL
SW2

acl advanced 3000 //创建高级ACL3000
rule 0 deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 //拒绝源192.168.10.0去访问192.168.20.0
rule 2 deny tcp source 100.1.1.0 0.0.0.0.255 destination 200.1.1.0 0.0.0.255 destination-port range ftp-data ftp //拒绝100.1.1.0FTP200.1.1.2。(ftp端口是20-21)
rule 4 permit ip source any destination any //允许其他地址可以互相通信

packet-filter 3000 inbound //在SW2的入接口上绑定acl3000
结果

发现PC1去PC2不通


发现从100.1.1.1去FTP200.1.1.2不通,连接超时和未连接
查看命令

display acl 3000 //查看ACL3000的条目

display packet-filter interface GigabitEthernet 1/0/2 inbound //查看接口下下面绑定的ACL

display packet-filter statistics sum inbound 3000 //查看ACL3000匹配的情况
相关命令
display acl 3000 //查看acl3000的相关配置
display packet-filter interface GigabitEthernet 1/0/2 inbound //查看接口下下面绑定的ACL
display logbuffer | include acl //查看日志中的acl配置的情况
debugging acl all //表示ACL所有调试信息开关。
debugging acl error //表示ACL错误调试信息开关。
debugging acl event //表示ACL事件调试信息开关。
debugging acl match //表示ACL匹配调试信息开关。
terminal monitor //实时查看日志
terminal debugging //实时查看日志

浙公网安备 33010602011771号