设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 469|回复: 3
收起左侧

[分享] ACL的常用匹配项详解

[复制链接]
 成长值: 63235
发表于 2024-11-14 15:20:42 | 显示全部楼层 |阅读模式
设备支持的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.0
11000000.10101000.00000001.00000000
通配符掩码
0.0.0.255
00000000.00000000.00000000.11111111
确定的地址范围
192.168.1.*
*表示0~255之间的整数
11000000.10101000.00000001.xxxxxxxx
x既可以是0,也可以是1

更多的IP地址与通配符掩码共同确定的地址范围示例,详见表5-4。
表5-4 IP地址与通配符掩码共同确定的地址范围
IP地址
IP地址通配符掩码
确定的地址范围
0.0.0.0
255.255.255.255
任意IP地址
172.18.0.0
0.0.255.255
172.18.0.0/16网段的IP地址
172.18.5.2
0.0.0.0
仅172.18.5.2这一个主机地址
172.18.8.0
0.0.0.7
172.18.8.0/29网段的IP地址
172.18.8.8
0.0.0.7
172.18.8.8/29网段的IP地址
10.1.2.0
0.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-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 ]
二层ACL支持基于外层VLAN编号过滤报文。
将VLAN编号定义为规则匹配项时,可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。
VLAN掩码的格式是十六进制形式,取值范围是0x0~0xFFF。如果不指定VLAN掩码,则默认掩码为0xFFF,表示检查VLAN编号的每一位。
VLAN编号与掩码共同确定的VLAN范围示例,如表5-6所示。
表5-6 VLAN编号及其掩码共同确定的VLAN范围[
VLAN编号
VLAN掩码
确定的VLAN范围
10
0x000
任意VLAN
10
0xFFF
仅VLAN 10
10
0xFF0
VLAN 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端口号及对应的字符串
端口号
字符串
协议
说明
7
echo
Echo
Echo服务
9
discard
Discard
用于连接测试的空服务
13
daytime
Daytime
给请求主机发送日期和时间
19
CHARgen
Character generator
字符生成服务;发送无止境的字符流
20
ftp-data
FTP data connections
FTP数据端口
21
ftp
File Transfer Protocol(FTP)
文件传输协议(FTP)端口
23
telnet
Telnet
Telnet服务
25
smtp
Simple Mail Transport Protocol (SMTP)
简单邮件传输协议
37
time
Time
时间协议
43
whois
Nickname(WHOIS)
目录服务
49
tacacs
TAC Access Control System (TACACS)
用于基于TCP/IP验证和访问的访问控制系统(TACACS登录主机协议)
53
domain
Domain Name Service (DNS)
域名服务
70
gopher
Gopher
信息检索协议(互联网文档搜寻和检索)
79
finger
Finger
用于用户联系信息的Finger服务,查询远程主机在线用户等信息
80
www
World Wide Web (HTTP)
用于万维网(WWW)服务的超文本传输协议(HTTP),用于网页浏览
101
hostname
NIC hostname server
NIC机器上的主机名服务
109
pop2
Post Office Protocol v2
邮件协议-版本2
110
pop3
Post Office Protocol v3
邮件协议-版本3
111
sunrpc
Sun Remote Procedure Call (RPC)
SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
119
nntp
Network News Transport Protocol (NNTP)
网络新闻传输协议,承载USENET通信
179
bgp
Border Gateway Protocol (BGP)
边界网关协议
194
irc
Internet Relay Chat (IRC)
互联网中继聊天(多线交谈协议)
512
exec
Exec (rsh)
用于对远程执行的进程进行验证
513
login
Login (rlogin)
远程登录
514
cmd
Remote commands
远程命令,不必登录的远程shell(rshell)和远程复制(rcp)
515
lpd
Printer service
打印机(lpr)假脱机
517
talk
Talk
远程对话服务和客户
540
uucp
Unix-to-Unix Copy Program
Unix到Unix复制服务
543
klogin
Kerberos login
Kerberos版本5(v5)远程登录
544
kshell
Kerberos shell
Kerberos版本5(v5)远程shell

表5-8 常见UDP端口号及对应的字符串[td]
端口号
字符串
协议
说明
7
echo
Echo
Echo服务
9
discard
Discard
用于连接测试的空服务
37
time
Time
时间协议
42
nameserver
Host Name Server
主机名服务
53
dns
Domain Name Service (DNS)
域名服务
65
tacacs-ds
TACACS-Database Service
TACACS数据库服务
67
bootps
Bootstrap Protocol Server
引导程序协议(BOOTP)服务端,DHCP服务使用
68
bootpc
Bootstrap Protocol Client
引导程序协议(BOOTP)客户端,DHCP客户使用
69
tftp
Trivial File Transfer Protocol (TFTP)
小文件传输协议
90
dnsix
DNSIX Security Attribute Token Map
DNSIX安全属性标记图
111
sunrpc
SUN Remote Procedure Call (SUN RPC)
SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用
123
ntp
Network Time Protocol (NTP)
网络时间协议,蠕虫病毒会利用
137
netbios-ns
NETBIOS Name Service
NETBIOS名称服务
138
netbios-dgm
NETBIOS Datagram Service
NETBIOS数据报服务
139
netbios-ssn
NETBIOS Session Service
NETBIOS会话服务
161
snmp
SNMP
简单网络管理协议
162
snmptrap
SNMPTRAP
SNMP陷阱
177
xdmcp
X Display Manager Control Protocol (XDMCP)
X显示管理器控制协议
434
mobilip-ag
MobileIP-Agent
移动IP代理
435
mobilip-mn
MobileIP-MN
移动IP管理
512
biff
Mail notify
异步邮件,可用来通知用户有邮件到达
513
who
Who
登录的用户列表
514
syslog
Syslog
UNIX系统日志服务
517
talk
Talk
远程对话服务器和客户端
520
rip
Routing Information Protocol
RIP路由协议


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匹配,报文被拒绝通过。








发表于 2024-11-16 11:21:15 | 显示全部楼层
过来学习下
板凳 2024-11-16 11:21:15 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-22 19:13 , Processed in 0.057602 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表