?随着网络的飞速发展,网络安全和网络服务质量QoS (Quality of Service)问题日益突出 。访问控制列表 (ACL, Access Control List)是与其紧密相关的一个技术 。
?ACL可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的 , 从而切实保障网络环境的安全性和网络服务质量的可靠性 。
?在本章节中 , 将介绍ACL的基本原理和基本作用,ACL的不同种类及特点 , ACL的基本组成和匹配顺序,通配符的使用方法和ACL的相关配置 。
技术背景:需要一个工具,实现流量过滤
?随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出 。
?园区重要服务器资源被随意访问 , 园区机密信息容易泄露,造成安全隐患 。
?Internet病毒肆意侵略园区内网,内网环境的安全性堪忧 。
?网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障 , 造成用户体验差 。
?以上种种问题,都对正常的网络通信造成了很大的影响 。因此 , 提高网络安全性和服务质量迫在眉睫,我们需要对网络进行控制 。比如,需要借助一个工具帮助实现一些流量的过滤 。
文章插图
?某公司为保证财务数据安全,禁止研发部门访问财务服务器 , 但总裁办公室不受限制 。
ACL概述
?通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的 , 从而切实保障网络环境的安全性和网络服务质量的可靠性 。
?ACL是由permit或deny语句组成的一系列有顺序的规则的集合;它通过匹配报文的相关字段实现对报文的分类 。
?ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;ACL还能够用于匹配路由条目 。
?在本章课程中主要通过流量过滤来介绍ACL 。
?ACL是由一系列permit或deny语句组成的、有序规则的列表 。
?ACL是一个匹配工具 , 能够对报文进行匹配和区分 。
文章插图
ACL应用
?匹配IP流量
?在Traffic-filter中被调用
?在NAT(Network Address Translation)中被调用
?在路由策略中被调用
?在防火墙的策略部署中被调用
?在QoS中被调用
?其他……
ACL的组成
?ACL的组成:
?ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号 , 称为ACL编号,用来标识ACL 。不同分类的ACL编号范围不同,这个后面具体讲 。
?规则:前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则 。
?规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则 。可以自定义 , 也可以系统自动分配 。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序 。
?动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作 。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同 。
?比如:ACL如果与流量过滤技术结合使用(即流量过滤中调用ACL),permit就是“允许通行”的意思,deny就是“拒绝通行”的意思 。
?匹配项:ACL定义了极其丰富的匹配项 。例子中体现的源地址,ACL还支持很多其他规则匹配项 。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等 。
?提问:rule 5 permit source 1.1.1.0 0.0.0.255 是什么意思?这个在后续课程中会介绍 。
?ACL由若干条permit或deny语句组成 。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作 。
文章插图
规则编号
?规则编号和步长的概念:
?规则编号:每条规则都有一个相应的编号 , 称为规则编号,用来标识ACL规则 。可以自定义,也可以系统自动分配 。
?步长:系统自动为ACL规则分配编号时,每个相邻规则编号之间会有一个差值 , 这个差值称为“步长” 。缺省步长为5,所以规则编号就是5/10/15…以此类推 。
?如果手工指定了一条规则,但未指定规则编号,系统就会使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号 。
?步长可以调整 , 如果将步长改为2,系统则会自动从当前步长值开始重新排列规则编号,规则编号就变成2、4、6… 。
?那步长的作用是什么?直接rule 1/2/3/4…为什么不可以?
?先来看一个小题目:如果希望增加一条规则 , 该如何处理?
?可以在rule 10和rule 15之间,手工加入一条rule 11 。
?因此,设置一定长度的步长的作用 , 是方便后续在旧规则之间插入新的规则 。
文章插图
规则编号与步长
?规则编号(Rule ID):
一个ACL中的每一条规则都有一个相应的编号 。
?步长(Step):
步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值 , 缺省值为5 。步长的作用是为了方便后续在旧规则之间,插入新的规则 。
?Rule ID分配规则:
系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值(例如步长=5,首条规则编号为5)作为该规则的起始编号;为后续规则分配编号时 , 则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号 。
通配符 (1)
?当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符 。
?通配符,也是点分十进制格式 , 换算成二进制后,“0”表示“匹配”,“1”表示“不关心” 。
?具体看下这2条规则:
?rule 5: 拒绝源IP地址为10.1.1.1报文通过——因为通配符为全0 , 所以每一位都要严格匹配,因此匹配的是主机IP地址10.1.1.1;
?rule 15:允许源IP地址为10.1.1.0/24网段地址的报文通过——因为通配符:0.0.0.11111111,后8位为1,表示不关心,因此10.1.1.xxxxxxxx 的后8位可以为任意值,所以匹配的是10.1.1.0/24网段 。
?例子:如果要精确匹配192.168.1.1/24这个IP地址对应的网段地址,通配符是多少?
?可以得出:网络位需要严格匹配,主机位无所谓,因此通配符为“0.0.0.255” 。
文章插图
匹配规则:
“0”表示“匹配”;“1”表示“随机分配”
文章插图
通配符 (Wildcard)
?通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配 。
?通配符通常采用类似网络掩码的点分十进制形式表示 , 但是含义却与网络掩码完全不同 。
通配符 (2)
?如果想匹配192.168.1.0/24网段中的奇数IP地址 , 通配符该怎么写呢?
?我们先来看一看 , 奇数IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……
?后八位写成二进制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……
?可以看出共同点:最后8位的高7位是任意值 , 最低位固定为1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)
?这就得出了通配符的一个特点:通配符中的1或者0是可以不连续的 。
?还有两个特殊的通配符:
?当通配符全为0来匹配IP地址时 , 表示精确匹配某个IP地址;
?当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址 。
文章插图
?匹配192.168.1.0/24这个子网中的奇数IP地址 , 例如192.168.1.1、192.168.1.3、192.168.1.5等 。
ACL的分类与标识
?基于ACL规则定义方式的划分,可分为:
?基本ACL、高级ACL、二层ACL、用户自定义ACL和用户ACL 。
?基于ACL标识方法的划分,则可分为:
?数字型ACL和命名型ACL 。
?注意:用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL 。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称 。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时 , 同时指定ACL编号 。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号 。
?基于ACL规则定义方式的分类
编号范围
规则定义描述
基本ACL
2000~2999
仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则 。
高级ACL
3000~3999
可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则 。
二层ACL
4000~4999
使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等 。
用户自定义ACL
5000~5999
使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则 。
用户ACL
6000~6999
既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则 。
基于ACL标识方法的分类
规则定义描述
数字型ACL
传统的ACL标识方法 。创建ACL时 , 指定一个唯一的数字标识该ACL 。
命名型ACL
通过名称代替编号来标识ACL 。
基本ACL&高级ACL
?基本ACL:
?主要针对IP报文的源IP地址进行匹配 , 基本ACL的编号范围是2000-2999 。
?比如这个例子,创建的是acl 2000,就意味着创建的是基本ACL 。
?高级ACL:
?可以根据IP报文中的源IP地址、目的IP地址、协议类型,TCP或UDP的源目端口号等元素进行匹配,可以理解为:基本ACL是高级ACL的一个子集,高级ACL可以比基本ACL定义出更精确、更复杂、更灵活的规则 。
文章插图
ACL的匹配机制
?ACL的匹配机制概括来说就是:
?配置ACL的设备接收报文后 , 会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则 。
?一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配 。
?匹配流程:首先系统会查找设备上是否配置了ACL 。
?如果ACL不存在,则返回ACL匹配结果为:不匹配 。
?如果ACL存在,则查找设备是否配置了ACL规则 。
?如果规则不存在,则返回ACL匹配结果为:不匹配 。
?如果规则存在,则系统会从ACL中编号最小的规则开始查找 。
?如果匹配上了permit规则 , 则停止查找规则 , 并返回ACL匹配结果为:匹配(允许) 。
?如果匹配上了deny规则,则停止查找规则 , 并返回ACL匹配结果为:匹配(拒绝) 。
?如果未匹配上规则 , 则继续查找下一条规则 , 以此循环 。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配 。
?从整个ACL匹配流程可以看出,报文与ACL规则匹配后 , 会产生两种匹配结果:“匹配”和“不匹配” 。
?匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则 。不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配” 。
?不匹配(未命中规则):指不存在ACL,或ACL中无规则 , 再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则 。以上三种情况,都叫做“不匹配” 。
?匹配原则:一旦命中即停止匹配 。
文章插图
ACL的匹配顺序及匹配结果
?配置顺序(config模式)
?系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配 。
文章插图
?一条ACL可以由多条“deny或permit”语句组成,每一条语句描述一条规则 , 这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的 。
?华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式) 。缺省的ACL匹配顺序是config模式 。
?自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配 。——这个比较复杂,这里就不具体展开了,感兴趣的同学可以课后查看资料 。
?配置顺序 , 系统按照ACL规则编号从小到大的顺序进行报文匹配 , 规则编号越小越容易被匹配 。——这个就是我们前面提到的匹配顺序 。
?如果后面又添加了一条规则,则这条规则会被加入到相应的位置,报文仍然会按照从小到大的顺序进行匹配 。
?匹配结果:(如图所示,以192.168.1.3/24为例)
?首先理解ACL 2000的含义:
?rule 1:允许源IP地址为192.168.1.1的报文
?rule 2:允许源IP地址为192.168.1.2的报文
?rule 3:拒绝源IP地址为192.168.1.2的报文
?rule 4:允许其他所有IP地址的报文
ACL的匹配位置
文章插图
入站 (Inbound)及出站 (Outbound)方向
文章插图
基本ACL的基础配置命令
?创建基本ACL
?[Huawei] acl [ number ] acl-number [ match-order config ]
?
- 演员翟天临近况曝光 翟天临演的所有电视剧和电影
- 全自动洗衣机怎么放洗衣液和柔顺剂
- 草莓熊有什么寓意 草莓熊的寓意和象征
- 怎么辨别海参的好坏及真伪 海参的好坏和真伪如何辨别
- 烜怎么解释 烜字的意思和含义
- 储存和制氢气的方法 制氢气的方法
- 黑加仑和葡萄的区别 黑加仑和葡萄有什么不同
- 射灯和筒灯哪里不一样射灯和筒灯的区别
- 孙膑和庞涓的故事 孙膑简介
- 在单位里,不管参加什么饭局,如果你不是重要人物,提前走不要和一桌人道别,小则丢人,大则丢官