文章目录
一 技术背景:需要一个工具,实现流量过滤
某公司为保证财务数据安全,进制研发部门访问财务服务器,但总裁办公室不受限制
ACL概述
访问控制值列表(ACL)
通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
应用于路由器接口的指令列表,用于指定哪些数据包可以接收转发,哪些数据包需要拒绝。
ACL是一系列permit或deny语句组成的、有序规则的列表。
ACL是一个匹配工具,能够对报文进行匹配和区分。
• permit(允许):数据包过滤,允许那些流量通过
• deny (拒绝):数据包过滤,拒绝那些流量通过
二 ACL应用
• 匹配IP流量
• 在Traffic-filter中被调用
• 在NAT(Network Address Translation)中被调用
• 在路由策略中被调用
• 在防火墙的策略部署中被调用
• 在QoS中被调用
• 其他……
三 ACL组成
ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。原本华为和思科的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还支持很多其他规则匹配项。
四 规则编号(Rule ID):
规则编号(Rule ID):
一个ACL中的每一条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。
步长(Step):
步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,这个差值称为“步长”。缺省值/缺省步长为5。所以规则编号就是5/10/15…以此类推。
步长的作用是为了方便后续在旧规则之间,插入新的规则。
Rule ID分配规则:
系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值(例如步长=5,首条规则编号为5)作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。
那步长的作用是什么?直接rule 1/2/3/4…为什么不可以?
问:如果希望增加一条规则,该如何处理?
答:可以在rule 10和rule 15之间,手工加入一条rule 11。
因此,设置一定长度的步长的作用,是方便后续在旧规则之间插入新的规则。
六 通配符(Wildcard
通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配。
通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
• 当进行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。
• 如果想匹配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地址。
七 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中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”。
PS:匹配原则:一旦命中即停止匹配。
八实验
8.1.配置客户机
8.2配置路由
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[Huawei-GigabitEthernet0/0/1]int g0/0/2
[Huawei-GigabitEthernet0/0/2]ip add 192.168.3.254 24
[Huawei]acl 2000 ## 建立规则
[Huawei-acl-basic-2000]rule 5 deny source 192.168.1.1 0 ## 禁止该地址访问
return
[Huawei-acl-basic-2000]int g0/0/1
[Huawei-GigabitEthernet0/0/1]traffic-
[Huawei-GigabitEthernet0/0/1]traffic-filter out
[Huawei-GigabitEthernet0/0/1]traffic-filter outbound acl 2000 ##应用规则
[Huawei-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.2.254 255.255.255.0
traffic-filter outbound acl 2000