C/C++教程

TCP标志信息

本文主要是介绍TCP标志信息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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连接。

  • 类型一:配置指定ackrst参数的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的处理方式如表7所示。

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

这篇关于TCP标志信息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!