小乔 发表于 2024-11-14 15:20:42

ACL的常用匹配项详解

设备支持的ACL匹配项种类非常丰富,其中最常用的匹配项包括以下几种。生效时间段格式:time-range time-name所有ACL均支持根据生效时间段过滤报文。
IP承载的协议类型格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf高级ACL支持基于协议类型过滤报文。常用的协议类型包括:ICMP(协议号1)、TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、IP(指任何IP层协议)、IPinIP(协议号4)、OSPF(协议号89)。协议号的取值可以是1~255。例如,当设备某个接口下的用户存在大量的攻击者时,如果希望能够禁止这个接口下的所有用户接入网络,则可以通过指定协议类型为IP来屏蔽这些用户的IP流量来达到目的。配置如下:rule deny ip //表示拒绝IP报文通过
再如,设备上打开透明防火墙功能后,在缺省情况下,透明防火墙会在域间丢弃所有入域间的报文,包括业务报文和协议报文。如果希望像OSPF这样的动态路由协议报文能正常通过防火墙,保证路由互通,这时,通过指定协议类型为OSPF即可解决问题。rule permit ospf//表示允许OSPF报文通过

源/目的IP地址及其通配符掩码源IP地址及其通配符掩码格式:source { source-address source-wildcard | any }目的IP地址及其通配符掩码格式:destination { destination-address destination-wildcard | any }基本ACL支持根据源IP地址过滤报文,高级ACL不仅支持源IP地址,还支持根据目的IP地址过滤报文。将源/目的IP地址定义为规则匹配项时,需要在源/目的IP地址字段后面同时指定通配符掩码,用来与源/目的IP地址字段共同确定一个地址范围。IP地址通配符掩码与IP地址的反向子网掩码类似,也是一个32比特位的数字字符串,用于指示IP地址中的哪些位将被检查。各比特位中,“0”表示“检查相应的位”,“1”表示“不检查相应的位”,概括为一句话就是“检查0,忽略1”。但与IP地址子网掩码不同的是,子网掩码中的“0”和“1”要求必须连续,而通配符掩码中的“0”和“1”可以不连续。通配符掩码可以为0,相当于0.0.0.0,表示源/目的地址为主机地址;也可以为255.255.255.255,表示任意IP地址,相当于指定any参数。举一个IP地址通配符掩码的示例,当希望来自192.168.1.0/24网段的所有IP报文都能够通过,可以配置如下规则:rule 5 permit ip source 192.168.1.0 0.0.0.255规则中的通配符掩码为0.0.0.255,表示只需检查IP地址的前三组二进制八位数对应的比特位。因此,如果报文源IP地址的前24个比特位与参照地址的前24个比特位(192.168.1)相同,即报文的源IP地址是192.168.1.0/24网段的地址,则允许该报文通过。表5-3展示了该例的地址范围计算过程。表5-3 通配符掩码示例

项目十进制等价值二进制等价值
参照地址192.168.1.011000000.10101000.00000001.00000000
通配符掩码0.0.0.25500000000.00000000.00000000.11111111
确定的地址范围192.168.1.**表示0~255之间的整数11000000.10101000.00000001.xxxxxxxxx既可以是0,也可以是1

更多的IP地址与通配符掩码共同确定的地址范围示例,详见表5-4。表5-4 IP地址与通配符掩码共同确定的地址范围

IP地址IP地址通配符掩码确定的地址范围
0.0.0.0255.255.255.255任意IP地址
172.18.0.00.0.255.255172.18.0.0/16网段的IP地址
172.18.5.20.0.0.0仅172.18.5.2这一个主机地址
172.18.8.00.0.0.7172.18.8.0/29网段的IP地址
172.18.8.80.0.0.7172.18.8.8/29网段的IP地址
10.1.2.00.0.254.255(通配符掩码中的1和0不连续)10.1.0.0/24~10.1.254.0/24网段之间且第三个字节为偶数的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24等。


源/目的MAC地址及其通配符掩码源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]仅二层ACL支持基于源/目的MAC地址过滤报文。将源/目的MAC地址定义为规则匹配项时,可以在源/目的MAC地址字段后面同时指定通配符掩码,用来与源/目的MAC地址字段共同确定一个地址范围。MAC地址通配符掩码的格式与MAC地址相同,采用十六进制数表示,共六个字节(48位),用于指示MAC地址中的哪些位将被检查。与IP地址通配符掩码不同的是,MAC地址通配符掩码各比特位中,1表示“检查相应的位”,0表示“不检查相应的位”。如果不指定通配符掩码,则默认掩码为ffff-ffff-ffff,表示检查MAC地址的每一位。MAC地址与通配符掩码共同确定的地址范围示例,如表5-5所示。表5-5 MAC地址与通配符掩码共同确定的地址范围

MAC地址MAC地址通配符掩码确定的地址范围
00e0-fc01-01010000-0000-0000任意MAC地址
00e0-fc01-0101ffff-ffff-ffff仅00e0-fc01-0101这一个MAC地址
00e0-fc01-0101ffff-ffff-000000e0-fc01-0000~00e0-fc01-ffff


VLAN编号及其掩码外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]二层ACL支持基于外层VLAN编号过滤报文。将VLAN编号定义为规则匹配项时,可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。VLAN掩码的格式是十六进制形式,取值范围是0x0~0xFFF。如果不指定VLAN掩码,则默认掩码为0xFFF,表示检查VLAN编号的每一位。VLAN编号与掩码共同确定的VLAN范围示例,如表5-6所示。表5-6 VLAN编号及其掩码共同确定的VLAN范围[

VLAN编号VLAN掩码确定的VLAN范围
100x000任意VLAN
100xFFF仅VLAN 10
100xFF0VLAN 1~VLAN 15


TCP/UDP端口号源端口号格式:source-port { eq port | gt port | lt port | range port-start port-end }目的端口号格式:destination-port { eq port | gt port | lt port | range port-start port-end }在高级ACL中,当协议类型指定为TCP或UDP时,设备支持基于TCP/UDP的源/目的端口号过滤报文。其中,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端口号及对应的字符串如表5-7所示,常见UDP端口号及对应的字符串如表5-8所示。表5-7 常见TCP端口号及对应的字符串

端口号字符串协议说明
7echoEchoEcho服务
9discardDiscard用于连接测试的空服务
13daytimeDaytime给请求主机发送日期和时间
19CHARgenCharacter generator字符生成服务;发送无止境的字符流
20ftp-dataFTP data connectionsFTP数据端口
21ftpFile Transfer Protocol(FTP)文件传输协议(FTP)端口
23telnetTelnetTelnet服务
25smtpSimple Mail Transport Protocol (SMTP)简单邮件传输协议
37timeTime时间协议
43whoisNickname(WHOIS)目录服务
49tacacsTAC Access Control System (TACACS)用于基于TCP/IP验证和访问的访问控制系统(TACACS登录主机协议)
53domainDomain Name Service (DNS)域名服务
70gopherGopher信息检索协议(互联网文档搜寻和检索)
79fingerFinger用于用户联系信息的Finger服务,查询远程主机在线用户等信息
80wwwWorld Wide Web (HTTP)用于万维网(WWW)服务的超文本传输协议(HTTP),用于网页浏览
101hostnameNIC hostname serverNIC机器上的主机名服务
109pop2Post Office Protocol v2邮件协议-版本2
110pop3Post Office Protocol v3邮件协议-版本3
111sunrpcSun Remote Procedure Call (RPC)SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
119nntpNetwork News Transport Protocol (NNTP)网络新闻传输协议,承载USENET通信
179bgpBorder Gateway Protocol (BGP)边界网关协议
194ircInternet Relay Chat (IRC)互联网中继聊天(多线交谈协议)
512execExec (rsh)用于对远程执行的进程进行验证
513loginLogin (rlogin)远程登录
514cmdRemote commands远程命令,不必登录的远程shell(rshell)和远程复制(rcp)
515lpdPrinter service打印机(lpr)假脱机
517talkTalk远程对话服务和客户
540uucpUnix-to-Unix Copy ProgramUnix到Unix复制服务
543kloginKerberos loginKerberos版本5(v5)远程登录
544kshellKerberos shellKerberos版本5(v5)远程shell

表5-8 常见UDP端口号及对应的字符串

端口号字符串协议说明
7echoEchoEcho服务
9discardDiscard用于连接测试的空服务
37timeTime时间协议
42nameserverHost Name Server主机名服务
53dnsDomain Name Service (DNS)域名服务
65tacacs-dsTACACS-Database ServiceTACACS数据库服务
67bootpsBootstrap Protocol Server引导程序协议(BOOTP)服务端,DHCP服务使用
68bootpcBootstrap Protocol Client引导程序协议(BOOTP)客户端,DHCP客户使用
69tftpTrivial File Transfer Protocol (TFTP)小文件传输协议
90dnsixDNSIX Security Attribute Token MapDNSIX安全属性标记图
111sunrpcSUN Remote Procedure Call (SUN RPC)SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
123ntpNetwork Time Protocol (NTP)网络时间协议,蠕虫病毒会利用
137netbios-nsNETBIOS Name ServiceNETBIOS名称服务
138netbios-dgmNETBIOS Datagram ServiceNETBIOS数据报服务
139netbios-ssnNETBIOS Session ServiceNETBIOS会话服务
161snmpSNMP简单网络管理协议
162snmptrapSNMPTRAPSNMP陷阱
177xdmcpX Display Manager Control Protocol (XDMCP)X显示管理器控制协议
434mobilip-agMobileIP-Agent移动IP代理
435mobilip-mnMobileIP-MN移动IP管理
512biffMail notify异步邮件,可用来通知用户有邮件到达
513whoWho登录的用户列表
514syslogSyslogUNIX系统日志服务
517talkTalk远程对话服务器和客户端
520ripRouting Information ProtocolRIP路由协议


TCP标志信息格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*在高级ACL中,当协议类型指定为TCP时,设备支持基于TCP标志信息过滤报文。TCP报文头有6个标志位:
[*]URG(100000):标识紧急指针有效
[*]ACK(010000):标识确认序号有效
[*]PSH(001000):标识接收方应该尽快将这个报文段上交给应用层
[*]RST(000100):标识重建连接
[*]SYN(000010):同步序号,用来发起一个连接
[*]FIN(000001):标识发送方完成发送任务

TCP标志信息中的established,表示标志位为ACK(010000)或RST(000100)。指定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//允许ACK=1的TCP报文通过       rule 10 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst   //允许RST=1的TCP报文通过rule 15 deny tcp source 192.168.2.0 0.0.0.255//拒绝该网段的其他TCP报文通过
[*]类型二:配置指定established参数的ACL规则rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag established// established表示ACK=1或者RST=1,表示允许TCP中间连接过程的报文通过rule deny tcp source 192.168.2.0 0.0.0.255   //拒绝该网段的其他TCP报文通过

IP分片信息格式:none-first-fragment基本ACL和高级ACL支持基于IP分片信息过滤报文。IP分片除了首片报文外,还有后续分片报文,又叫做非首片分片报文。仅首片分片报文携带四层信息(如TCP/UDP端口号等),后续分片报文均不携带。网络设备收到分片报文后,会判断其是否是最后一个分片报文。如果不是,则为其分配内存空间,以便于最后一个分片报文到达后完成重组。黑客可以利用这一点,向接收方设备发起分片报文攻击,始终不向接收方发送最后一个分片报文,使得接收方的内存得不到及时释放(接收方会启动一个分片重组的定时器,在定时器超时前如果无法完成重组,将向发送方发送ICMP重组超时差错报文;如果定时器超时后仍未完成重组,则丢弃已存储的分片报文)。在分片报文发送数量很多并且发送速度很快的情况下,接收方的内存很容易被占满,从而导致接收方没有足够的内存资源处理其他正常的业务。为了解决这个问题,可以配置指定none-first-fragment匹配项的ACL规则来阻塞非首片分片报文,从而达到防范分片报文攻击的目的。针对非分片报文、首片分片报文、非首片分片报文这三类报文,ACL的处理方式如表5-9所示。表5-9 ACL对IP分片报文的处理方式

规则包含的匹配项非分片报文首片分片报文非首片分片报文
三层信息(如源/目的IP地址)三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配
三层信息 + 四层信息(如TCP/UDP端口号)三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配不匹配,转下一条规则进行匹配
三层信息 + none-first-fragment不匹配,转下一条规则进行匹配不匹配,转下一条规则进行匹配三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

例如,ACL 3012中存在以下规则:#                                 acl number 3012                                                                  rule 5 deny tcp destination 192.168.2.2 0 none-first-fragment                   rule 10 permit tcp destination 192.168.2.2 0 destination-port eq www            rule 15 deny ip                                                                #
[*]该报文是非分片报文或首片分片报文时:如果该报文的目的端口号是80(www对应的端口号是80),则报文与rule 10匹配,报文被允许通过;如果该报文的目的端口号不是80,则报文与rule 15匹配,报文被拒绝通过。
[*]该报文是非首片分片报文时:该报文与rule 5匹配,报文被拒绝通过。
[*]







mawr1985 发表于 2024-11-14 15:34:13

{:6_267:}

hunter03 发表于 2024-11-16 11:21:15

过来学习下

wlcbhrss 发表于 2024-11-16 22:43:37

{:6_264:}{:6_264:}{:6_264:}

cinnamon 发表于 2025-1-24 11:07:13

{:6_267:}
页: [1]
查看完整版本: ACL的常用匹配项详解