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