前言:
此刻你们对“acl通配符匹配算法”大致比较关怀,朋友们都想要分析一些“acl通配符匹配算法”的相关内容。那么小编在网摘上搜集了一些关于“acl通配符匹配算法””的相关文章,希望我们能喜欢,我们快快来学习一下吧!生效时间段
ACL的生效时间段可以规定ACL规则在何时生效,从而实现在不同的时间段设置不同的策略。
在ACL规则中引用的生效时间段存在两种模式:
周期时间段:以星期为参数来定义时间范围,表示规则以一周为周期(如每周一的8至12点)循环生效。绝对时间段:从某年某月某日的某一时间开始,到某年某月某日的某一时间结束,表示规则在这段时间范围内生效。
同一名称(time-name)配置多条时间段时,通过以下规则选出最终生效的时间范围:
多个周期时间段之间是或的关系,多个绝对时间段之间也是或的关系。周期时间段和绝对时间段之间是与的关系。如果周期时间段和绝对时间段之间冲突,配置的时间段不生效。
例如,在ACL 2001中引用了时间段“test”,“test”包含了三个生效时间段:
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
时间段“test”最终描述的时间范围为:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。
如果第三个时间配置为2014年1月1日19:00起到2014年12月31日21:00,则时间段“test”无效。
源/目的IP地址及其通配符掩码
源IP地址及其通配符掩码格式:source { source-address source-wildcard| any }
目的IP地址及其通配符掩码格式:destination { destination-address destination-wildcard | any }
将源/目的IP地址定义为规则匹配项时,需要在源/目的IP地址字段后面同时指定通配符掩码,用来与源/目的IP地址字段共同确定一个地址范围。
IP地址通配符掩码是一个32比特位的数字字符串,用于指示IP地址中的哪些位将被检查。各比特位中,“0”表示“检查相应的位”,“1”表示“不检查相应的位”。
例如:
rule 5 permit ip source 192.168.1.0 0.0.0.255
规则中的通配符掩码为0.0.0.255,表示只需检查IP地址的前三组二进制八位数对应的比特位,即允许该报文报文的源IP地址是192.168.1.0/24网段的地址通过。
源/目的MAC地址及其通配符掩码
源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]
目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]
可以在源/目的MAC地址字段后面同时指定通配符掩码,用来与源/目的MAC地址字段共同确定一个地址范围。如果不配置通配符掩码,范围为配置MAC本身。
MAC地址通配符掩码的格式与MAC地址相同,采用十六进制数表示,共六个字节(48位),各比特位中,1表示“检查相应的位”,0表示“不检查相应的位”。
表1 MAC地址与通配符掩码共同确定的地址范围
MAC地址
MAC地址通配符掩码
确定的地址范围
00e0-fc01-0101
0000-0000-0000
任意MAC地址
00e0-fc01-0101
ffff-ffff-ffff
仅00e0-fc01-0101这一个MAC地址
00e0-fc01-0101
ffff-ffff-0000
00e0-fc01-0000~00e0-fc01-ffff
VLAN编号及其掩码
外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]
内层VLAN及其掩码格式:cvlan-id cvlan-id [ cvlan-id-mask ]
可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。如果不指定VLAN掩码,则为配置VLAN编号本身。
VLAN掩码的格式是十六进制形式,取值范围是0x0~0xFFF。各比特位中,1表示“检查相应的位”,0表示“不检查相应的位”。
表2 VLAN编号及其掩码共同确定的VLAN范围
VLAN编号
VLAN掩码
确定的VLAN范围
10
0x000
任意VLAN
10
0xFFF
仅VLAN 10
10
0xFF0
VLAN 1~VLAN 15
IP承载的协议类型
格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf
高级ACL支持基于协议类型过滤报文,常用的协议类型如下表所示。
协议类型
协议编号
ICMP
1
TCP
6
UDP
17
GRE
47
IGMP
2
IPinIP
4
OSPF
89
TCP/UDP端口号
源端口号格式:source-port { eq port | gt port | ltport | range port-start port-end }
目的端口号格式:destination-port { eq port | gt port | ltport | range port-start port-end }
其中,TCP/UDP端口号的比较符含义如下:
eq port:指定等于源/目的端口。gt port:指定大于源/目的端口。lt port:指定小于源/目的端口。range port-start port-end:指定源/目的端口的范围。port-start是端口范围的起始,port-end是端口范围的结束。
TCP/UDP端口号可以使用数字表示,也可以用字符串(助记符)表示。例如,rule deny tcp destination-port eq 80,可以用rule deny tcp destination-port eq www替代。
TCP标志信息
格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*
在高级ACL中,当协议类型指定为TCP时,设备支持基于TCP标志信息过滤报文。指定tcp-flag的ACL规则可以用来实现单向访问控制。
假设,要求192.168.1.0/24网段用户可以主动访问192.168.2.0/24网段用户,但反过来192.168.2.0/24网段用户不能主动访问192.168.1.0/24。可通过在设备上连接192.168.2.0/24网段的接口入方向上,应用ACL规则来实现该需求。
由TCP建立连接和关闭连接的过程可知,只有在TCP中间连接过程的报文才会ACK=1或者RST=1。根据这个特点,配置如下两种ACL规则,允许TCP中间连接过程的报文通过,拒绝其他TCP报文通过,就可以限制192.168.2.0/24网段主动发起的TCP连接。
方法一:配置指定ack和rst参数的ACL规则
rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack
rule 10 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst
rule 15 deny tcp source 192.168.2.0 0.0.0.255
方法二:配置指定established参数的ACL规则
rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag established
rule deny tcp source 192.168.2.0 0.0.0.255
说明:
ACK(acknowledge):表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为1。
FIN(finish):标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。
PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。
RST(reset):表示是否重置连接。如果RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
SYN(synchronize):在建立连接时使用,用来同步序号。当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当 SYN=1,ACK=1 时,表示对方同意建立连接。SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN才为 1。
URG(Urgent):表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效。
TCP标志信息中的established,表示标志位为ACK(010000)或RST(000100)。
IP分片信息
格式:fragment
IP分片除了首片报文外,还有后续分片报文,即非首片分片报文。仅首片分片报文携带四层信息(如TCP/UDP端口号等),后续分片报文均不携带。网络设备收到分片报文后,会判断其是否是最后一个分片报文。如果不是,则为其分配内存空间,以便于最后一个分片报文到达后完成重组。黑客可以利用这一点,向接收方设备发起分片报文攻击,始终不向接收方发送最后一个分片报文。
为了解决这个问题,可以配置指定fragment匹配项的ACL规则来阻塞非首片分片报文,从而达到防范分片报文攻击的目的。
针对非分片报文、首片分片报文、非首片分片报文这三类报文,ACL的处理方式如表4所示。
表4 ACL对IP分片报文的处理方式
规则包含的匹配项
非分片报文
首片分片报文
非首片分片报文
三层信息(如源/目的IP地址)
三层信息匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
三层信息匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
三层信息匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
三层信息 + 四层信息(如TCP/UDP端口号)
三层和四层信息都匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
三层和四层信息都匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
不匹配,转下一条规则进行匹配
三层信息 + fragment
不匹配,转下一条规则进行匹配
不匹配,转下一条规则进行匹配
三层信息匹配上,则返回匹配结果;
未匹配上,则转下一条规则进行匹配
例如,ACL 3012中存在以下规则:
acl number 3012
rule 5 deny tcp destination 192.168.2.2 0 fragment
rule 10 permit tcp destination 192.168.2.2 0 destination-port eq www
rule 15 deny ip
对于目的IP地址是192.168.2.2的TCP报文:
该报文是非分片报文或首片分片报文时:
如果该报文的目的端口号是80,则报文与rule 10匹配,报文被允许通过;
如果该报文的目的端口号不是80,则报文与rule 15匹配,报文被拒绝通过。该报文是非首片分片报文时:
该报文与rule 5匹配,报文被拒绝通过。
标签: #acl通配符匹配算法