一、ACL功能简介
随着网络规模的扩大和流量的增加,对网络安全的控制和对带宽的分配成为网络管理的重要内容。通过对数据包进行过滤,可以有效防止非法用户对网络的访问,同时也可以控制流量,节约网络资源。ACL(Access Control List,访问控制列表)即是通过配置对报文的匹配规则和处理操作来实现包过滤的功能。
二、ACL种类
1. 基本ACL:只根据数据包的源IP地址制定规则,序号为2000~2999,定义时间段也属于基本ACL。
2. 高级ACL:高级ACL可以使用数据包的源IP地址、目的IP地址、IP承载的协议类型、针对协议的特性(例如TCP或UDP的源端口、目的端口,ICMP协议的消息类型、消息码等)内容定义规则。高级ACL序号取值范围3000~3999(3998与3999是系统为集群管理预留的编号,用户无法配置)。高级ACL支持对三种报文优先级的分析处理:ToS(Type of Service,服务类型)优先级、IP优先级和DSCP(Differentiated Services CodePoint,差分服务编码点)优先级。
3. 二层ACL:根据数据包的源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息制定规则。用户可以利用高级ACL定义比基本ACL更准确、更丰富、更灵活的规则。二层ACL的序号取值范围为4000~4999。
4. 用户自定义ACL:以数据包的头部为基准,指定从第几个字节开始与掩码进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。
三、ACL匹配顺序
一条ACL可以包含多个规则,因此会出现规则匹配顺序,其支持两种匹配顺序:一种是配置顺序(根据用户配置规则的先后顺序进行规则匹配,一种是自动排序(根据深度优先的顺序进行规则匹配)
1. 基本ACL的“深度优先”顺序判断原则
(1) 先比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(2) 如果源IP地址范围相同,则比较是否带有fragment参数,带有fragment参数的规则优先;
(3) 如果源IP地址范围、是否带有fragment参数这两个判断条件也相同,则先配置的规则优先。
2. 高级ACL的“深度优先”顺序判断原则
(1) 首先比较协议范围,指定了IP协议承载的协议类型的规则优先;
(2) 如果协议范围相同,则比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(3)如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(4) 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先;
(5)如果协议范围、源IP地址范围、目的IP地址范围、四层端口号范围相同,则比较规则中参数的个数,参数个数多的规则优先。
如果规则A与规则B的协议范围、源IP地址范围、目的IP地址范围、四层端口号范围完全相同,并且其它的参数个数也相同,将按照加权规则进行排序。设备为每个参数设定一个固定的权值,最终的匹配顺序由各个参数的权值和参数的取值来决定。各个参数自身的权值从大到小排列为icmp-type、established、dscp、tos、precedence、fragment。比较规则如下: z 设备以一个固定权值依次减去规则中所配置的各个参数自身的权值,所得结果小的规则优先; z 如果各个规则中参数种类完全相同,则这些参数取值的累加和小的规则优先。
五、ACL在交换机(路由器)上的应用方式
1. ACL直接下发到硬件的情况
ACL可以直接下发到交换机(路由器)的硬件,用于数据转发过程中的报文过滤和流分类。此时一条ACL中多个规则的匹配顺序是由交换机的硬件决定的,对于S3100系列以太网交换机,匹配顺序为先下发的规则先匹配。 ACL直接下发到硬件的情况包括:通过ACL过滤转发数据、配置QoS功能时引用ACL等。
2. ACL被上层软件引用的情况
ACL也可以用来对由软件处理的报文进行过滤和流分类。此时ACL规则的匹配顺序有两种:1)config:按用户配置的先后顺序;2)auto:按“深度优先”的顺序。
用户可以在定义ACL的时候指定一条ACL中多个规则的匹配顺序。用户一旦指定某一条ACL的匹配顺序,就不能再更改该顺序。只有把该ACL中所有的规则全部删除后,才能重新指定其匹配顺序。 ACL被上层软件引用的情况包括:路由策略引用ACL、对Telnet、SNMP和WEB登录用户进行控制时引用ACL等。
六、ACL配置
1. 配置时间段
ACL时间段配置属于基本ACL,其配置步骤如表
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
创建一个时间段 | time-range time-name { start-time to end-time days-of-the-week from start-time start-date ] [ to end-time end-date ] | from start-time start-date [ to end-time end-date ] | to end-time end-date } |
[]中为可选项,可不填 |
(1)配置周期时间段,时间为周一到周五每天8:00到18:00
[Sysname] time-range test 8:00 to 18:00 working-day
[Sysname] time-range test from 15:001/28/2017 to 15:00 1/28/2018
(3)查看配置情况
[Sysname] display time-range test
2. 配置基本ACL
(1)配置步骤
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
创建并进入基本ACL视图 | acl number acl-number [match-order] {auto |config} | 缺省为config |
定义基本ACL规则 | rule [rule-id] {deny | permit} [rule-string] | |
定义ACL的描述信息 | description text |
(2)配置举例
配置ACL2000,禁止源192.168.0.1的报文通过
[Sysname] acl number 2000
[Sysname-acl-basic-2000] rule deny source 192.168.0.1 0
显示配置
[sysname] display acl 2000
3. 配置高级ACL
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
创建并进入高级ACL视图 | acl number acl-number [match-order {auto |config}] | |
定义高级ACL规则 | rule [rule-id] {permit |deny} protocol [rule-string] | |
定义高级ACL规则的注释信息 | rule rule-id comment text | 可选,缺省情况没有注释 |
定义ACL描述信息 | description text |
[Sysname] acl number 3000
[Sysname-acl-adv-3000] rule permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq 80
3. 配置二层ACL
配置步骤同高级ACL配置,但要首先确定源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等参数
举例:
[Sysname] acl number 4000
[Sysname-acl-ethernetframe-4000] rule deny cos 3 source 000d-88f5-97ed ffff-ffff-ffff dest 0011-4301-991e ffff-ffff-ffff
需要注意的是:1)当高级ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当高级ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。 2)在创建一条ACL规则的时候,用户可以不指定规则的编号,设备将自动为这个规则分配一个编号:如果此ACL中没有规则,编号为0;如果此ACL中已有规则,编号为现有规则的最大编号+1;如果此ACL中现有规则的最大编号为65534,则系统会提示错误信息,此时用户必须指定规则的编号才能创建成功。3) 新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。 4) 当高级ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
七、ACL下发
ACL规则生效需要对规则进行下发,硬件下发方式有四种方式。
1)全局下发ACL:对所有端口接收的报文应用ACL规则进行过滤。
2)VLAN下发ACL:对所有端口接收的属于指定VLAN的报文应用ACL规则进行过滤。
3)端口组下发ACL:对端口组内所有端口接收的报文应用ACL规则进行过滤。
4)端口下发ACL:对端口接收的报文应用ACL规则进行过滤。
1. 全局下发ACL
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
全局下发ACL | packet-filter inbound acl-rule |
举例:
在全局下发ACL,对所有端口接受的报文应用基本ACL2000进行过滤
[Sysname] packet-filter inbound ip-group 2000
2. VLAN下发ACL
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
全局下发ACL | packet-filter vlan vlan-id inbound acl-rule |
举例:
在全局下发ACL,对所有端口接受的报文应用基本ACL2000进行过滤
[Sysname] packet-filter vlan 10 inbound ip-group 2000
3. 端口组下发ACL
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
进入端口组视图 | port-group group-id | |
端口组下发ACL | packet-filter inbound acl-rule |
举例:
在全局下发ACL,对所有端口接受的报文应用基本ACL2000进行过滤
[Sysname]port-group 1
[Sysname-port-group-1] packet-filter inbound ip-group 2000
4. 端口下发ACL配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
进入端口组视图 | interface interface-type interface-number | |
端口组下发ACL | packet-filter inbound acl-rule |
举例:
在全局下发ACL,对所有端口接受的报文应用基本ACL2000进行过滤
[Sysname] interface e 0/0/1
[Sysname-Ethernet0/0/1] packet-filter inbound ip-group 2000
5. ACL被上层软件引用
(1)Telnet登录用户控制
在VTY用户界面引用基本ACL 2000,对Telnet登录用户进行控制。
[Sysname] user-interface vty 0 4
[Sysname-ui-vty0-4] acl 2000 inbound
(2)通过源IP对WEB登录控制
通过源IP地址对WEB登录用户进行控制,仅允许IP地址为10.110.100.46的WEB用户通过HTTP方式访问交换机。EB登录用户进行控制配置
[Sysname] acl number 2001 match-order config
[Sysname-acl-basic-2001] rule 1 permit source 10.110.100.46 0
[Sysname-acl-basic-2001] quit
[Sysname] ip http acl 2000
高级ACL:根据数据包的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则。
配置步骤 | 命令 | 说明 |
进入系统视图 | system-view | |
进入端口组视图 | port-group group-id | |
端口组下发ACL | packet-filter inbound acl-rule |