1. 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可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。 ACL是由一系列规则组成的集合。设备可以通过这些规则对数据包进行分类,并对不同类型的报文进行不同的处理。本示例中,网关RTA允许192.168.1.0/24中的主机可以访问外网,也就是Internet;而192.168.2.0/24中的主机则被禁止访问Internet。对于服务器A而言,情况则相反。网关允许192.168.2.0/24中的主机访问服务器A,但却禁止192.168.1.0/24中的主机访问服务器A。
设备可以依据ACL中定义的条件(例如源IP地址)来匹配入方向的数据,并对匹配了条件的数据执行相应的动作。在本示例所述场景中,RTA依据所定义的ACL而匹配到的感兴趣流量来自192.168.2.0/24网络,RTA会对这些感兴趣流量进行加密(虚拟局域网VPN中会进行介绍)之后再转发。
2. ACL分类
分类 | 编号范围 | 参数 |
---|---|---|
基本ACL | 2000-2999 | 源IP地址等 |
高级ACL | 3000-3999 | 源IP地址、目的IP地址、 源端口、目的端口等 |
二层ACL | 4000-4999 | 源MAC地址、目的MAC地址、以太帧协议类型等 |
- 根据不同的划分规则,ACL可以有不同的分类。
- 最常见的三种分类是基本ACL、高级ACL和二层ACL。
- 基本ACL可以使用报文的源IP地址、分片标记和时间段信息来匹配报文,其编号取值范围是2000-2999。
- 高级ACL可以使用报文的源/目的IP地址、源/目的端口号以及协议类型等信息来匹配报文。高级ACL可以定义比基本ACL更准确、更丰富、更灵活的规则,其编号取值范围是3000-3999。
- 二层ACL可以使用源/目的MAC地址以及二层协议类型等二层信息来匹配报文,其编号取值范围是4000-4999。
3. ACL原理描述
3.1 ACL的基本原理
3.1.1 ACL的组成
ACL编号:用于标识ACL,表明该ACL是数字型ACL。
根据ACL规则功能的不同:
- ACL被划分为基本ACL、高级ACL、二层ACL和用户ACL这几种类型,每类ACL编号的取值范围不同。
- 除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆,这种ACL,称为命名型ACL。
- 命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。下面就是一个既有名字又有编号的ACL。
用户在创建ACL时可以为其指定编号,**不同的编号对应不同类型的ACL**。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。**如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。**
说明:
命名型ACL一旦创建成功,**便不允许用户再修改其名称**。如果删除ACL名称,则表示删除整个ACL。 **仅基本ACL与基本ACL6,以及高级ACL与高级ACL6**,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。
acl name text 3000 //创建一个名字为text编号为3000的高级ACL
rule 0 deny ip source 192.168.1.1 0 destination 192.168.2.1 0 //拒绝源IP地址为192.168.1.1/32的主机访问目的IP为192.168.2.1/32的主机
rule 5 permit ip source any destination any //允许所有
- 规则:即描述报文匹配条件的判断语句
- 规则编号:
- 用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。
- ACL规则的编号范围是0~4294967394,所有规则均按照规则编号从小到大进行排序。
- 系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
- 动作:包括permit/deny两种动作,表示允许/拒绝。
- 匹配项:
ACL定义了极其丰富的匹配项,除了源地址和生效时间段,ACL还支持很多其它规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
4. ACL规则
一个ACL可以由多条“deny | permit”语句组成,每一条语句描述了一条规则。设备收到数据流量后,会逐条匹配ACL规则,看其是否匹配。如果不匹配,则匹配下一条。一旦找到一条匹配的规则,则执行规则中定义的动作,并不再继续与后续规则进行匹配。如果找不到匹配的规则,则设备不对报文进行任何处理。需要注意的是,ACL中定义的这些规则可能存在重复或矛盾的地方。规则的匹配顺序决定了规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。
ARG3系列路由器支持两种匹配顺序:配置顺序
- 配置顺序按ACL规则编号(rule-id)从小到大的顺序进行匹配。设备会在创建ACL的过程中自动为每一条规则分配一个编号,规则编号决定了规则被匹配的顺序。
- 例如,如果将步长设定为5,则规则编号将按照5、10、15…这样的规律自动分配。如果步长设定为2,则规则编号将按照2、4、6、8…这样的规律自动分配。通过设置步长,使规则之间留有一定的空间,用户可以在已存在的两个规则之间插入新的规则。路由器匹配规则时默认采用配置顺序。另外,ARG3系列路由器默认规则编号的步长是5。
- 自动排序
- 自动排序使用“深度优先”的原则进行匹配,即根据规则的精确度排序。本示例中,RTA收到了来自两个网络的报文。默认情况下,RTA会依据ACL的配置顺序来匹配这些报文。网络172.16.0.0/24发送的数据流量将被RTA上配置的ACL2000的规则15匹配,因此会被拒绝。而来自网络172.17.0.0/24的报文不能匹配访问控制列表中的任何规则,因此RTA对报文不做任何处理,而是正常转发。