HCIA-12.ACL原理与配置
HCIA-12.ACL原理与配置
访问控制列表(ACL)是网络工程中用于控制网络流量的重要工具,通过精确识别和区分网络报文,可以实现流量过滤、访问控制等功能。本文将详细介绍ACL的基本原理、分类、配置方法以及实际应用,帮助读者掌握这一核心技术。
背景
网络安全和网络服务质量QoS (Quality of Service)问题日益突出。访问控制列表 (ACL, Access Control List)是与其紧密相关的一个技术。
ACL可以通过对网络中报文流的精确识别(它本身只是识别),与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
ACL的典型应用比如黑、白名单。
目标
- 描述ACL的基本原理和基本作用
- 区分ACL的不同种类及特点
- 描述ACL规则的基本组成结构和匹配顺序
- 掌握ACL中通配符的使用方法
- 完成ACL的基本组网配置。
ACL技术概述
技术背景:需要一个工具,实现流量过滤
某公司为保证财务数据安全,禁止研发部门访问财务服务器,但总裁办公室不受限制。
ACL应用:
- 在Traffic-filter中被调用
- 在NAT(Network Address Translation)中被调用
- 在路由策略中被调用
- 在防火墙的策略部署中被调用
- 在QoS中被调用
- 其他……
ACL概述
ACL是什么:
- 由一系列permit或deny语句组成的、有序规则的列表。
- 一个匹配工具,能够对报文进行匹配和区分。
ACL的作用:
可以通过对网络中报文流的精确识别(它本身只是识别),与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的。
ACL的基本概念及其工作原理
ACL的分类
通过查看ACL指令,找到ACL的匹配内容。
[AR1]acl ?
INTEGER<2000-2999> Basic access-list(add to current using rules)
INTEGER<3000-3999> Advanced access-list(add to current using rules)
INTEGER<4000-4999> Specify a L2 acl group
ipv6 ACL IPv6
name Specify a named ACL
number Specify a numbered ACL
INTEGER<2000-2999> 基本ACL,只能匹配 SIP、时间戳、分片、第一个报文
INTEGER<3000-3999> 高级ACL,只能匹配 SIP、时间戳、分片、第一个报文、DIP、协议号、端口号等
INTEGER<4000-4999> 二层ACL、可以匹配 SMAC、DMAC、时间戳、分片
ipv6 默认是ipv4规则,ipv6则用于定义ipv6需要的规则
name 定义ACL规则的名称便于识别ACL
number
通过指令了解ACL的工作原理
节点 动作 匹配项 参数 通配符掩码
rule 5 permit source 192.168.1.1 0.0.0.0
ACL的节点
一个ACL的每条规则都需要进行排列。
默认5的步长进行条目的排列(5、10、15…),最大值为4294967294。
[AR1-acl-basic-2000]rule ?
INTEGER<0-4294967294> ID of ACL rule
ACL的动作
[AR1-acl-basic-2000]rule 5 ?
deny Specify matched packet deny
description Specify rule description
permit Specify matched packet permit
Permit/deny 只是作为标记使用,具体是允许通过还是禁止通过是由其他技术决定的。
description 则是描述。
ACL的匹配项
ACL匹配的内容。
[AR1-acl-basic-2000]rule 5 permit ?
fragment Check fragment packet
none-first-fragment Check the subsequence fragment packet
source Specify source address
time-range Specify a special time
vpn-instance Specify a VPN-Instance
<cr> Please press ENTER to execute command
ACL的参数
需要匹配的具体信息。
ACL的通配符掩码
连续的1和连续的0组合 | 0表示 | 1表示 |
---|---|---|
通配符掩码 | 不需要 | 精确匹配 |
正掩码 | 需要 | 广播位 |
反掩码 | 需要 | 网络位 |
指令解读
节点 动作 匹配项 参数 通配符掩码
rule 5 permit source 192.168.1.1 0.0.0.0
新增一条节点条目5,该条目允许源IP通过,其参数为192.168.1.1且必须完全匹配。
扩展
题目:假设有源IP 192.A.1.B,其中A为奇数,B为偶数,要如何设置ACL?
思路1:
一个十进制数,能被二整除是偶数,不能被整除则是奇数。
十进制数在计算中会转化为二进制。
在二进制数的2^n次方中,除了2^0次方,所有数都为偶数。
而2^0次方与所有2^n次方加减都为奇数。
128、64、32、16、8、4、2、1
所以,根据二进制数列的特点,判断是否奇偶数取决于最后一位是否存在置位:
0001 0100(偶数),0001 0101(奇数)。
思路2:
A1、在源IP192.A.1.B中,如果A为奇数,则其二进制最后一位应为1 ,即xxxx xxx1;同理,如果B为偶数,则其二进制最后一位应为0,即xxxx xxx0。所以,在填写A和B的时,我们只要填上十进制的A奇数和B偶数(比如1和0),其二进制结果一定是A=0000 0001,B=0000 0000。
A1.1、所以源IP我们可以填写192.1.1.0,其中A和B可为任意奇数和偶数,比如填192.65.1.64也是可以的,因为65的二进制最后一位为1:0100 0001,64的二进制最后一位为0:0100 0000。
A2、在填写通配符掩码时,我们考虑:
A2.1、通配符掩码为1表示忽略,为0表示匹配;
A2.2、源IP的取值范围是0~255,即八个二进制数位,即 XXXX XXXX;
A2.3、而从二进制的思路考虑,在确定奇数和偶数时,只需要审查最后一位即可。
结论:
B1、根据A2.2我们得出的数位长度为8;
B2、根据A2.3我们得出长度为8的数列中,我们忽略前7个,匹配最后1个;
B3、根据A2.1的规则:忽略匹配填1、需要匹配填0,得出长度为8的二进制数为:1111 1110,即1~7位忽略填入1,最后一位匹配填入0;
B4、将1111 1110转为10进制,为254,则通配符掩码填0.254.0.254。
在ACL规则的计算中,其数位匹配结果如下:
x.65.x.64 → x.0100 0001.x.0100 0000
0.254.0.254 → x.1111 1110.x.1111 1110
ACL的匹配机制
ACL可以配置多个条目
条目会按照节点的大小,从小到大依次排列;
ACL的匹配也是从小到大依次进行的;
且,如果流量被条目匹配到,则执行条目并停止继续匹配。
如下图中:
SIP 192.168.1.4按从小到大的规则,匹配到rule 20后就停止继续了,所以匹配不到rule25。
ACL的缺省规则
ACL根据匹配信息不同,最终隐含规则(缺省规则)也不同:
A1、如果ACL匹配的是流量,则默认是允许所有;
A2、如果ACL匹配的是路由,则默认是拒绝左右。
具体是流量还是路由,需要根据ACL的外部调用功能确定。
ACL的配置匹配建议
需要先配置精确的信息条目,再配置大范围的信息条目。
比如下面这条,仅允许192.168.1.0、192.168.2.0、192.168.3.0通过,如果将大范围的ACL配在前面,按照匹配的先后顺序则直接拒绝所有流量通过。
调整步长
[AR1-acl-basic-2000]step 6 #调整后默认步长发生改变
指令集
指令 功能
acl name
rule x permit source x.x.x.x y.y.y.y 节点
step 调整步长 < 1 - 20 >
rule xxxx permitrule xxxx permit source any 这两条都代表匹配任意条目