一、ACL简介
ACL(Access Control List,访问控制列表)是网络设备如路由器和交换机中用于控制数据包进出接口的一种安全机制。ACL可以基于IP地址、端口号、协议类型等条件来决定是否允许或拒绝特定流量通过。
访问控制列表(Access Control List,ACL)是一个匹配工具,能够对报文及路由进行匹配和区分。
二、ACL的组成
ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。
ACL编号:用于标识ACL,表明该ACL是数字型ACL。
根据ACL规则功能的不同,ACL被划分为基本ACL、高级ACL、二层ACL和用户ACL这几种类型,每类ACL编号的取值范围不同。
ACL类别 | 规则定义描述 | 编号范围 |
基本ACL | 仅使用报文的源IP地址、分片标记和时间段信息来定义规则。 | 2000~2999 |
高级ACL | 既可使用报文的源IP地址,也可使用目的地址、IP优先级、ToS、DSCP、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则 | 3000~3999 |
二层ACL | 可根据报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、以太帧协议类型等。 | 4000~4999 |
用户自定义ACL | 可根据报文偏移位置和偏移量来定义规则。 | 5000~5999 |
用户ACL | 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 | 6000~9999 |
规则:即描述报文匹配条件的判断语句。
规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。
ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。所以,图1-2中的rule 5排在首位,而规则编号最大的rule 4294967294排在末位。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
动作:包括permit/deny两种动作,表示允许/拒绝。
匹配项:ACL定义了极其丰富的匹配项。除了图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
三、通配符
通配符是一个32比特长度的数值,用于指示IP地址中哪些比特位需要严格匹配,哪些比特位无需匹配。通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
1)通配符的核心作用
-
功能:指定IP地址中哪些比特位需要精确匹配,哪些可以忽略。
-
格式:32位二进制,通常以点分十进制表示(如
0.0.0.255
)。
2)通配符的匹配规则
-
二进制位含义:
0
:必须严格匹配IP对应位;1
:忽略IP对应位(任意值均可)。
匹配规则:
“0”表示“匹配”;“1”表示“无需匹配”
四、ACL匹配机制
匹配原则:一旦命中即停止匹配
首先系统会查找设备上是否配置了ACL:
1)如果ACL不存在,则返回ACL匹配结果为:不匹配。
2)如果ACL存在,则查找设备是否配置了ACL规则。
如果规则不存在,则返回ACL匹配结果为:不匹配。
如果规则存在,则系统会从ACL中编号最小的规则开始查找。
[如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。]
五、ACL步长
步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值。也就是说,系统是根据步长值自动为ACL规则分配编号的。步长的作用是为了方便后续在旧规则之间,插入新的规则。
图中的ACL 2000,步长就是5。系统按照5、10、15…这样的规律为ACL规则分配编号。如果将步长调整为了2,那么规则编号会自动从步长值开始重新排列,变成2、4、6…。
[HUAWEI-acl-basic-2000]display acl 2000
Basic ACL 2000,3 rules
ACL’s step is 5
rule 5 permit source 1.1.1.0 0.0.0.255(match-counter 0)
rule 10 permit source 2.2.2.0 0.0.0.255(match-counter 0)
rule 15 permit source 3.3.3.0 0.0.0.255(match-counter 0)
[HUAWEI-acl-basic-2000]step 2
[HUAWEI-acl-basic-2000]display acl 2000
ACL’s step is 5
rule 2 permit source 1.1.1.0 0.0.0.255(match-counter 0)
rule 4 permit source 2.2.2.0 0.0.0.255(match-counter 0)
rule 6 permit source 3.3.3.0 0.0.0.255(match-counter 0)
ACL的缺省步长值是5。通过display acl acl-number命令,可以查看ACL规则、步长等配置信息。通过step step命令,可以修改ACL步长值。
规则编号(Rule ID):一个ACL中的每一条规则都有一个相应的编号。
RuleID分配规则:系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值(例如步长=5,首条规则编号为5)作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。
六、基本ACL和高级ACL
1.基本ACL
主要针对IP报文的源IP地址进行匹配,基本ACL的编号范围是2000-2999。比如下面这个例子,创建的是acl 2000,就意味着创建的是基本ACL。
基本ACL的配置
1.创建基本ACL
[Huawei] acl [ number ] acl-number [ match-order config ]
acl-number:指定访问控制列表的编号。
match-order config:指定ACL规则的匹配顺序,config表示配置顺序
使用编号(2000~2999)创建一个数字型的基本ACL,并进入基本ACL视图。
[Huawei] acl name acl-name { basic | acl-number } [ match-order config ]
acl-name:指定创建的ACL的名称。
basic:指定ACL的类型为基本ACL。
使用名称创建一个命名型的基本ACL,并进入基本ACL视图。
2.配置基本ACL的规则
[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]
rule-id:指定ACL的规则ID。
deny:指定拒绝符合条件的报文。
permit:指定允许符合条件的报文。
source { source-address source-wildcard | any }:指定ACL规则匹配报文的源地址信息。如果不配置,表示报文的任何源地址都匹配。其中:
source-address:指定报文的源地址。
在基本ACL视图下,通过此命令来配置基本ACL的规则。
1.1使用基本ACL过滤数据流量
如下图,在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络。
# 配置过程
前提条件:Router已完成IP和相关路由的配置,网络互通。
1)在Router上创建基本ACL,禁止192.168.1.0/24网段访问服务器网络。
[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
2)由于192.168.1.0/24网段从接口GE0/0/1进入Router,所以在接口GE0/0/1的入方向应用流量过滤。
[Router]interface GigabitEthernet 0/0/1
[Router-GigabitEthernet0/0/1] traffic-filter inbound acl 2000
[Router-GigabitEthernet0/0/1]quit
2.高级ACL
可以根据IP报文中的源IP地址、目的IP地址、协议类型,TCP或UDP的源目端口号等元素进行匹配,高级ACL的编号范围是3000-3999,可以理解为:基本ACL是高级ACL的一个子集,高级ACL可以比基本ACL定义出更精确、更复杂、更灵活的规则
高级ACL的配置
1.创建高级ACL
[Huaweil acl[numberlaclnumber[match-orderconfig]
使用编号(3000~3999)创建一个数字型的高级ACL,并进入高级ACL视图。
[Huawei] acl name acl-name { advance | acl-number} [ match-order config ]
使用名称创建一个命名型的高级ACL,进入高级ACL视图。
2.配置基本ACL的规则
根据IP承载的协议类型不同,在设备上配置不同的高级ACL规则。对于不同的协议类型,有不同的参数组合。
当参数protocol为IP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } ip [
destination { destination-address destination-wildcard | any } | source {
source-address source-wildcard | any } | time-range time-name | [ dscp dscp |
[ tos tos | precedence precedence ] ] ]
在高级ACL视图下,通过此命令来配置高级ACL的规则。
当参数protocol为TCP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } {
protocol-number | tcp } [ destination { destination-address
destination-wildcard | any } | destination-port { eq port | gt port | lt port
| range port-start port-end } | source { source-address source-wildcard | any
} | source-port { eq port | gt port | lt port | range port-start port-end } |
tcp-flag { ack | fin | syn } * | time-range time-name ] *
在高级ACL视图下,通过此命令来配置高级ACL的规则
使用高级ACL限制不同网段的用户互访
2.1 使用高级ACL限制不同网段的用户互访
如下图,某公司通过Router实现各部门之间的互连。为方便管理网络,管理员为公司的研发部和市场部规划了两个网段的IP地址。现要求Router能够限制两个网段之间互访,防止公司机密泄露。
# 配置过程
说明:Router已完成IP和相关路由的配置,网络互通。
1)创建高级ACL 3001并配置ACL规则,拒绝研发部访问市场部的报文。
[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
2)创建高级ACL3002并配置ACL规则,拒绝市场部访问研发部的报文。
[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
3)由于研发部和市场部互访的流量分别从接口GE0/0/1和GE0/0/2进入Router,所以在接口GE0/0/1和GE0/0/2的入方向配置流量过滤。
[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
七、ACL匹配顺序
一条ACL可以由多条“deny或permit"语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的。
华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式。
如下图基本 ACL,按照配置顺序(config模式)进行匹配,待匹配的对象为192.168.1.1/24-192.168.1.5/24
,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。
常用匹配举例
八、ACL的匹配位置
如下图所示数据流向,inbound及outbound方向关系:
九、ACL生效时间段Time-Range
ACL定义了丰富的匹配项,管理员可以根据网络访问行为的要求和网络的拥塞情况,配置
个或多个ACL生效时间段
time-range test 8:00 to 18:00 working-day
time-range test 14:00 to 18:00 off-day
time-range test from 00:00 2014/01/01 to 23:59 2014/12/31
acl number 2001
rule 5 permit time-range test
·第一个时间段,表示在周一到周五每天8:00到18:00生效,这是一个周期时间段。
第二个时间段,表示在周六、周日下午14:00到18:00生效,这是一个周期时间段。
第三个时间段,表示从2014年1月1日00:00起到2014年12月31日23:59生效,这是一个绝对时间段。