CN106453419A - 识别源ip地址合法性、网络攻击防御的方法及装置 - Google Patents

识别源ip地址合法性、网络攻击防御的方法及装置 Download PDF

Info

Publication number
CN106453419A
CN106453419A CN201611116706.XA CN201611116706A CN106453419A CN 106453419 A CN106453419 A CN 106453419A CN 201611116706 A CN201611116706 A CN 201611116706A CN 106453419 A CN106453419 A CN 106453419A
Authority
CN
China
Prior art keywords
message
address
source
default
legal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201611116706.XA
Other languages
English (en)
Inventor
刘健男
党丽娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Corp
Original Assignee
Neusoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neusoft Corp filed Critical Neusoft Corp
Priority to CN201611116706.XA priority Critical patent/CN106453419A/zh
Publication of CN106453419A publication Critical patent/CN106453419A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了识别源IP地址合法性的方法及装置、网络攻击防御的方法及装置,接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合;向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合。上述识别源IP地址合法性时,接收到第一次握手报文后,回复一个第二报文,第二报文中携带的是根据第一次握手报文的序列号生成的错误的序列号,而不是正确的序列号,因此,无需判断发送端返回的序列号是否正确,即无需占用内存存储第一次握手报文和第二次握手报文的半连接等信息,降低了内存的消耗。

Description

识别源IP地址合法性、网络攻击防御的方法及装置
技术领域
本发明涉及通信技术领域,特别是涉及一种识别源IP地址合法性的方法及装置、网络攻击防御的方法及装置。
背景技术
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。发送端与接收端之间,需要进行三次握手过程,才能建立一个TCP连接。接收端接收到发送端发送的第一次握手报文后,即分配一个内存空间和一个线程处理该TCP连接的三次握手过程。
SYN Flood是常见的拒绝服务攻击(Denial of Service,DOS)和分布式拒绝服务攻击(Distributed Denial of Service),DDOS)之一,利用上述建立TCP连接的设计缺陷,由发送端伪造大量虚假的源IP地址或者源IP地址范围,向接收端发送海量的建立TCP连接的第一次握手报文。接收端需要处理发送端发送的大量的第一次握手报文,影响对正常服务请求的处理。
为了有效的防御SYN Flood攻击,需要识别请求建立TCP连接的源IP地址是否有效。现有技术中,主要采用延迟分配TCB(Transmission Control Block,传输控制块)的方法。基本原理是:防火墙收到第一次握手报文后,先不将该第一次握手报文发送给接收端,而是根据第一次握手报文的源IP地址直接向发送端回复第二次握手报文,并建立一个专用的哈希表,记录第一次握手报文中的序列号,以及回复的第二次握手报文的序列号等半连接信息。若防火墙能收到发送端返回的第三次握手报文,则确认该源IP地址合法;若防火墙不能收到发送端返回的第三次握手报文,则该源IP地址不合法。
采用上述方法识别源IP地址是否合法时,防火墙需要给每个第一次握手报文都建立一个哈希表存储半连接信息。当遇到SYN Flood攻击时,发送端发送海量的第一次握手报文,即需要建立大量的哈希表,因此,需要消耗大量的内存。
发明内容
本发明解决的技术问题在于提供一种识别源IP地址合法性的方法及装置、网络攻击防御的方法及装置,从而能够不需要建立哈希表存储半连接信息,降低内存的消耗。
为此,本发明解决技术问题的技术方案是:
一种识别源IP地址合法性的方法,所述方法包括:
接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文;
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
可选的,所述方法还包括:
当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
可选的,所述方法还包括:
查询所述第一报文的源IP地址是否属于所述第二集合;
当所述第一报文的源IP地址不属于所述第二集合时,查询所述第一报文的源IP地址是否属于所述第一集合;
当所述第一报文的源IP地址不属于所述第一集合时,执行将所述第一报文的源IP地址添加至第一集合;
当所述第一报文的源IP地址属于第一集合时,识别所述第一报文的IP地址是待定的源IP地址,获取所述源IP地址对应的确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,执行向所述发送端返回第二报文,所述确认报文数加1;
当所述确认报文数大于预设的第一阈值时,执行将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述方法还包括:
查询所述第一报文的源IP地址是否属于所述第三集合;
当所述第一报文的源IP地址不属于所述第三集合时,执行查询所述第一报文的源IP地址是否属于所述第一集合。
可选的,执行将所述第一报文的源IP地址添加至第一集合后,所述方法还包括:
判断是否接收到第四报文,所述第四报文与所述第一报文的源IP地址相同,所述第四报文是第一次握手报文;
当收到所述第四报文时,执行向所述发送端返回第二报文;
当没有收到所述第四报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述方法还包括:
获取预设的会话表中半连接表项的个数;
判断所述半连接表项的个数是否大于预设的第二阈值;
当所述半连接表项的个数大于预设的第二阈值时,将所述半连接表项对应的源IP地址从所述第二集合中转移至第三集合中。
可选的,所述方法还包括:
生成一个有效全局表,将所述第二集合存储至有效全局表,所述有效全局表能够被每个CPU采用无锁查询机制访问;
给每个CPU生成一个第一局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第一集合,每个第一局部表只能被该第一局部表所属的CPU访问。
可选的,所述方法还包括:
给每个CPU生成一个第二局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第三集合,每个第二局部表只能被该第二局部表所属的CPU访问。
可选的,所述方法还包括:
每个CPU的第一局部表和第二局部表的超时机制采用一个近期最少使用算法LRU表进行维护。
一种网络攻击防御方法,所述方法包括:
接收发送端发送的第一报文,所述第一报文是第一次握手报文;
查询预设的第二集合中是否存在所述第一报文的源IP地址,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法;
当所述预设的第二集合中存在所述第一报文的源IP地址时,利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发;
当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文。
可选的,所述当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文包括:
当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法;
当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文;
当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
可选的,所述当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文包括:
当所述预设的第三集合中不存在所述第一报文的源IP地址时,查询预设的第一集合中是否存在所述第一报文的源IP地址,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定;
当所述预设的第一集合中不存在所述第一报文的源IP地址时,将所述第一报文的源IP地址添加至所述预设的第一集合,丢弃所述第一报文;
当所述预设的第一集合中存在所述第一报文的源IP地址时,确定所述第一报文的源IP地址是否合法,丢弃所述第一报文。
可选的,所述确定所述第一报文的源IP地址是否合法包括:
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第三报文是根据所述错误的序列号生成的报文;
当没有接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址不合法,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述确定所述第一报文的源IP地址是否合法包括:
获取确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合;
当所述确认报文数大于预设的第一阈值时,确定所述第一报文的源IP地址不合法将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述查询预设的第二集合中是否存在所述第一报文的源IP地址包括:
根据所述第一报文的五元组从预设的会话表中查找会话表项;
当从所述预设的会话表中查找到所述会话表项时,所述预设的第二集合中存在所述第一报文的源IP地址,利用所述会话表项对所述第一报文进行转发;
当没有从所述预设的会话表中查找到所述会话表项时,执行直接查询预设的第二集合中是否存在所述第一报文的源IP地址。
一种识别源IP地址合法性的装置,所述装置包括:
第一添加单元,用于接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文;
第一发送单元,用于向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
第一转移单元,用于当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
可选的,所述装置还包括:
第二转移单元,用于当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
可选的,所述装置还包括:
第一查询单元,用于查询所述第一报文的源IP地址是否属于所述第二集合;
第二查询单元,用于当所述第一报文的源IP地址不属于所述第二集合时,查询所述第一报文的源IP地址是否属于所述第一集合;
第二添加单元,用于当所述第一报文的源IP地址不属于所述第一集合时,执行将所述第一报文的源IP地址添加至第一集合;
第一获取单元,用于当所述第一报文的源IP地址属于第一集合时,识别所述第一报文的IP地址是待定的源IP地址,获取所述源IP地址对应的确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
第一判断单元,用于判断所述确认报文数是否大于预设的第一阈值;
第二发送单元,用于当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,所述确认报文数加1;
第三转移单元,用于当所述确认报文数大于预设的第一阈值时,执行将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述装置还包括:
第三查询单元,用于查询所述第一报文的源IP地址是否属于所述第三集合;
第四查询单元,用于当所述第一报文的源IP地址不属于所述第三集合时,执行查询所述第一报文的源IP地址是否属于所述第一集合。
可选的,执行将所述第一报文的源IP地址添加至第一集合后,所述装置还包括:
第二判断单元,用于判断是否接收到第四报文,所述第四报文与所述第一报文的源IP地址相同,所述第四报文是第一次握手报文;
第三发送单元,用于当收到所述第四报文时,执行向所述发送端返回第二报文;
第四转移单元,用于当没有收到所述第四报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述装置还包括:
第二获取单元,用于获取预设的会话表中半连接表项的个数;
第三判断单元,用于判断所述半连接表项的个数是否大于预设的第二阈值;
第五转移单元,用于当所述半连接表项的个数大于预设的第二阈值时,将所述半连接表项对应的源IP地址从所述第二集合中转移至第三集合中。
可选的,所述装置还包括:
第一生成单元,用于生成一个有效全局表,将所述第二集合存储至有效全局表,所述有效全局表能够被每个CPU采用无锁查询机制访问;
第二生成单元,用于给每个CPU生成一个第一局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第一集合,每个第一局部表只能被该第一局部表所属的CPU访问。
可选的,所述装置还包括:
第三生成单元,用于给每个CPU生成一个第二局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第三集合,每个第二局部表只能被该第二局部表所属的CPU访问。
可选的,所述装置还包括:
维护单元,用于每个CPU的第一局部表和第二局部表的超时机制采用一个近期最少使用算法LRU表进行维护。
一种网络攻击防御装置,所述装置包括:
接收模块,用于接收发送端发送的第一报文,所述第一报文是第一次握手报文;
查询模块,用于查询预设的第二集合中是否存在所述第一报文的源IP地址,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法;
转发模块,用于当所述预设的第二集合中存在所述第一报文的源IP地址时,利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发;
丢弃模块,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文。
可选的,所述丢弃模块包括:
查询单元,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法;
第一丢弃单元,用于当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文;
第二丢弃单元,用于当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
可选的,所述第二丢弃单元包括:
查询子单元,用于当所述预设的第三集合中不存在所述第一报文的源IP地址时,查询预设的第一集合中是否存在所述第一报文的源IP地址,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定;
添加子单元,用于当所述预设的第一集合中不存在所述第一报文的源IP地址时,将所述第一报文的源IP地址添加至所述预设的第一集合,丢弃所述第一报文;
确定子单元,用于当所述预设的第一集合中存在所述第一报文的源IP地址时,确定所述第一报文的源IP地址是否合法,丢弃所述第一报文。
可选的,所述确定子单元用于:
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第三报文是根据所述错误的序列号生成的报文;
当没有接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址不合法,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述确定子单元用于:
获取确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合;
当所述确认报文数大于预设的第一阈值时,确定所述第一报文的源IP地址不合法将所述第一报文的源IP地址从所述第一集合转移至第三集合。
可选的,所述查询模块包括:
查找单元,用于根据所述第一报文的五元组从预设的会话表中查找会话表项;
转发单元,用于当从所述预设的会话表中查找到所述会话表项时,所述预设的第二集合中存在所述第一报文的源IP地址,利用所述会话表项对所述第一报文进行转发;
查询单元,用于当没有从所述预设的会话表中查找到所述会话表项时,执行直接查询预设的第二集合中是否存在所述第一报文的源IP地址。
通过上述技术方案可知,本发明有如下有益效果:
本发明实施例提供的了一种识别源IP地址合法性的方法及装置、网络攻击防御的方法及装置,接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文;向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。上述识别源IP地址合法性时,接收到第一次握手报文后,回复一个第二报文,第二报文中携带的是根据第一次握手报文的序列号生成的错误的序列号,而不是正确的序列号,因此,无需判断发送端返回的序列号是否正确,即无需占用内存存储第一次握手报文和第二次握手报文的半连接等信息,降低了内存的消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的识别源IP地址合法性方法一实例流程图;
图2为本发明实施例提供的识别源IP地址合法性方法另一实例流程图;
图3为本发明实施例提供的识别源IP地址合法性方法再一实例流程图;
图4为本发明实施例提供的识别源IP地址合法性方法又一实例流程图;
图5为本发明实施例提供的网络攻击防御方法一实例流程图;
图6为本发明实施例提供的网络攻击防御方法另一实例流程图;
图7为本发明实施例提供的网络攻击防御方法再一实例流程图;
图8为本发明实施例提供的网络攻击防御方法又一实例流程图;
图9为本发明实施例提供的识别源IP地址合法性的装置结构示意图;
图10为本发明实施例提供的网络攻击防御的装置结构示意图。
具体实施方式
为了给出降低内存消耗识别源IP地址合法性、以及网络攻击防御的实现方案,本发明实施例提供了一种一种识别源IP地址合法性的方法及装置、网络攻击防御的方法及装置,以下结合说明书附图对本发明的优选实施例进行说明。
图1为本发明实施例提供的识别源IP地址合法性方法流程图,包括:
101:接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文。
发送端与接收端建立TCP连接时,需要与接收端进行三次握手。第一报文是发送端要求建立TCP连接时所发送的第一次握手报文,第一次握手报文是建立TCP连接时,发送端发送的第一个报文。该第一次握手报文是一个SYN(synchronous)报文,携带有发送端的源IP地址和该第一报文的同步序列号(即SYN序列号)。
接收到第一报文时,不确定发送该第一报文的发送端是否合法,即该第一报文的源IP地址的合法性不确定,该第一报文的源IP地址是待定的源IP地址,将该第一报文的源IP地址添加至第一集合。其中,该第一集合包括待定的源IP地址。
其中,将第一报文的源IP地址添加至第一集合有很多种实现方式,例如,给该第一报文的源IP地址添加一个状态标识,该状态标识的值用于表征该第一报文的源IP地址的合法性,则将该状态标识的值修改为待定,来表征该源IP地址的合法性不确定。再例如,将该第一报文的源IP地址存储至一个红表,该红表用于存储该第一集合,即存储合法性不确定的源IP地址。当然,还可以采用其他实现方式将第一报文的源IP地址添加至第一集合,这里不再赘述,只要能够表征该第一报文的源IP地址的合法性不确定,是一个待定的源IP地址即可。
102:向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号。
现有技术中,防火墙接收到第一报文时,不确定第一报文的源IP地址的合法性,在确定该第一报文的源IP地址的合法性时,采用如下方法:根据第一报文的同步序列号(SYN序列号)生成一个确认(Acknowledgement,ACK)序列号,一般情况下,该ACK序列号是该SYN序列号加1,给发送端回复一个第二握手报文,该第二握手报文是同步(SYN)确认(ACK)报文,携带有第二握手报文的SYN列号,以及ACK序列号。同时,需要建立一个专用的哈希表记录该第一报文的源IP地址,该SYN序列号以及该ACK序列号等半连接信息,以便后续根据该半连接信息确定发送端回复的第三握手报文(ACK报文)中的信息是否正确。
上述现有技术中所采用的确定源IP地址的合法性的方法,当遇到SYN Flood攻击时,发送端会发送海量的第一握手报文,需要给每个第一握手报文都建立一个专用的哈希表存储半连接信息,对内存的消耗非常大。
本发明中,在确定该第一报文的源IP地址的合法性时,采用如下方法:接收到发送端的第一报文后,根据该第一报文的同步序列号(SYN号)生成一个错误的序列号。将该错误的序列号返回至发送端,而不是将正确的ACK序列号返回至发送端,即给发送端返回的第二报文中,不携带有正确的ACK序列号,而是携带有错误的序列号。发送端接收到第二报文后,根据该发送端是否根据所接收的第二报文中的错误的序列号返回第三报文,来确定该第一报文的源IP地址的合法性。
该发送端接收到第二报文后,由于第二报文携带有错误的序列号,该发送端不会回复第三次握手报文,若该发送端合法(源IP地址合法),则会回复一个第三报文,该第三报文是reset报文,表示建立TCP连接异常终止。本发明所提供的确定源IP地址是否合法的方法,即使该发送端合法(源IP地址合法),也不会返回一个第三次握手报文,不需要根据半连接信息,确定该发送端发送的第三次握手报文中所携带的信息是否正确。因此,本发明中不需要给所接收的第一报文建立一个哈希表存储半连接信息。
当遇到SYN Flood攻击时,发送端发送海量的第一握手报文,采用本发明所提供的方法源IP地址的合法性时,不需要给每个第一握手报文建立一个专用的哈希表存储半连接信息,降低内存的消耗。
103:当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
发送端接收到第二报文后,若该发送端合法(源IP地址合法),则该根据第二报文中的错误的序列号,认为建立该TCP连接异常。发送端生成一个第三报文(reset报文)返回。当接收到发送端发送的第三报文时,可知该发送端合法,即该发送端的源IP地址也合法,将该第一报文的源IP地址从第一集合转移至第二集合。第二集合包括合法的源IP地址,将第一报文的源IP地址从第一集合转移至第二集合,即表征该第一报文的源IP地址合法。
当然,将第一报文的源IP地址从第一集合转移至第二集合也有很多种实现方式。例如,若给该第一报文的源IP地址添加一个状态标识,该状态标识的值用于表征第一报文的源IP地址的合法性,则将该状态标识的值从待定修改为合法,来表征该第一报文的源IP地址的合法。再例如,将该第一报文的源IP地址从红表转移至白表,红表用于存储该第一集合,即存储合法性不确定的源IP地址,白表用于存储该第二集合,即存储合法的源IP地址。当然,还可以采用其他实现方式将第一报文的源IP地址从第一集合转移至第二集合,这里不再赘述,只要能够表征该第一报文的源IP地址的合法即可。
发送端接收到第二报文后,若该发送端不合法,则不会回复一个第三报文,即不会回复reset报文。则若没有接收到该发送端回复的第三报文,即没有接收到一个reset报文与第三报文的源IP地址相同,则不能确定该第一报文的源IP地址合法。
在图1所示的实施例中,第一报文的源IP地址只能被识别为两种类型,第一种,该第一报文的源IP地址是待定的源IP地址,即该第一报文的源IP地址属于第一集合;第二种,该第一报文的源IP地址是合法的源IP地址,即该第一报文的源IP地址属于第二集合。在一个例子中,还可以识别第一报文的源IP地址的第三种类型,如图2所示,所述方法还包括:
当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该合法的源IP地址所对应的报文不合法。
当发送端不合法时,收到第二报文后,不会根据第二报文中的错误的序列号生成一个第三报文返回,即该发送端不会返回一个reset报文。具体实现时,预设一个时间间隔,向发送端返回第二报文后开始计时,若到达该预设的时间间隔时,还没有接收到发送端返回的第三报文,则认为该第一报文的源IP地址不合法,将该第一报文的源IP地址从所述第一集合转移至第三集合。其中,预设的时间间隔可以根据实际需要具体设置,这里不进行具体限定。
这里需要说明的是,将该第一报文的源IP地址从所述第一集合转移至第三集合有很多实现方式。例如,若给该第一报文的源IP地址添加一个状态标识,该状态标识的值用于表征第一报文的源IP地址的合法性,则将该状态标识的值从待定修改为不合法,从而实现该第一报文的源IP地址从所述第一集合转移至第三集合,表征该源IP地址的不合法。再例如,将该第一报文的源IP地址从红表转移至黑表,从而实现将该第一报文的源IP地址从所述第一集合转移至第三集合,红表用于存储该第一集合,即存储合法性不确定的源IP地址,黑表用于存储该第三集合,即存储不合法的源IP地址。当然,还可以采用其他实现方式将第一报文的源IP地址从第一集合转移至第三集合,这里不再赘述,只要能够表征该第一报文的源IP地址的不合法即可。
同一个发送端可能与接收端建立多次TCP连接,即同一个发送端发送多次第一握手报文,每次发送的第一握手报文的源IP地址都相同。为了避免对同一个合法的发送端的源IP地址重复识别,则如图3所示,在对第一报文的源IP地址进行处理前,先查询该第一报文的源IP地址是否属于第二集合。
301:接收发送端发送的第一报文,所述第一报文是第一次握手报文。
302:查询所述第一报文的源IP地址是否属于所述第二集合,如果是,执行310;如果否,执行303。
接收到一个发送端的第一报文,该第一报文是用于建立TCP连接的第一握手报文。先查询该第一报文的源IP地址是否属于第二集合,即查询该第一报文的源IP地址是否是已识别出的合法的源IP地址。避免对合法的发送端的源IP地址进行重复的识别。
若第一报文的源IP地址属于第二集合,则识别该第一报文的源IP地址是合法的源IP地址。无需对该第一报文的源IP地址进行重复识别。若第一报文的源IP地址不属于第二集合,则该第一报文的源IP地址并不是已识别的合法的源IP地址。
其中,查询第一报文的源IP地址属于第二集合,可以采用查询该源IP地址的状态标识的值是否是合法的方式,或者采用查询该源IP地址是否存储在白表的方式,该白表存储该第二集合等方式实现,还可以采用其他方式,这里不再赘述。
查询第一报文的源IP地址是否属于所述第二集合,有至少两种可能的实现方式:
第一种实现方式,直接从第二集合中查询是否存在该第一报文的源IP地址。
第二种实现方式,先从预设的会话表中查询是否存在该第一报文的五元组对应的会话表项,若该预设的会话表中存在该第一报文的五元组会话的表项,即表示该第一报文的源IP地址属于第二集合;若会话表中不存在该第一报文的五元组会话的表项,再直接从第二集合中查询是否存在该第一报文的源IP地址。
可以理解的是,识别了发送端的源IP地址合法后,才会在会话表中建立会话表项,因此,若能够根据第一报文的五元组信息在该会话表中查找到会话表项,即该第一报文的源IP地址是合法的源IP地址,肯定属于第二集合,无需再从第二集合中进行查询。
303:查询所述第一报文的源IP地址是否属于所述第一集合,如果是,执行304;如果否,执行309。
若该第一报文的源IP地址不属于第二集合,则查询该第一报文的源IP地址是否属于第一集合。
若该第一报文的源IP地址属于第一集合,则表示曾接收到该发送端发送的建立TCP连接的第一握手报文,并且,该发送端的源IP地址的合法性不确定。
若该第一报文的源IP地址不属于第一集合时,则认为第一次收到该发送端发送的建立TCP连接的第一握手报文,则将该第一报文的源IP地址添加至第一集合,表征该发送端的源IP地址的合法性不确定,该第一报文的源IP地址是待定的源IP地址。
304:识别所述第一报文的IP地址是待定的源IP地址,获取所述源IP地址对应的确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数。
305:判断所述确认报文数是否大于预设的第一阈值,如果是,执行308;如果否,执行306。
本发明所提供的方法中,接收到发送端发送的第一次握手报文,将该发送端的源IP地址添加至第一集合,作为待定的源IP地址。为了确定该发送端的源IP地址的合法性,则给该发送端返回一个包含错误的序列号的报文。若该发送端返回一个reset报文(上述实例中所述的第三报文),则识别该发送端的源IP地址合法,将该发送端的源IP地址添加至第二集合中。若没有接收到该发送端返回的一个reset报文,则该发送端的源IP地址则一直处于第一集合中。
等待发送端返回reset报文的过程中,该发送端可能重复的发送第一次握手报文(第一报文即该发送端发送的一个第一握手报文),每次接收到发送端发送的第一次握手报文,都要给该发送端返回一个包含错误的序列号的报文。若该发送端是非法的,可能会不断的发送第一次握手报文,并不返回reset报文。
为了避免给一个发送端不断的返回包含错误的序列号的报文,则设置一个确认报文数,该确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数,再设置一个预设的第一阈值,该第一阈值用于表征该确认报文数的最大值。
则接收到发送端发送的第一报文(该第一报文是第一次握手报文)时,查询到该第一报文的源IP地址属于第一集合,则获取源IP地址对应的确认报文数,判断该确认报文数是否大于预设的第一阈值。
当该确认报文数大于预设的第一阈值时,表示给该发送端返回的包含错误的序列号的报文的个数过多,则表示该发送端不断的发送第一握手报文建立TCP连接,但是,给该发送端返回包含错误的序列号后,该发送端并未返回reset报文,此时,可认为该发送端非法,即该第一报文的源IP地址非法,将该第一报文的源IP地址从所述第一集合转移至第三集合。其中,将第一集合转移至第三集合具体实现方式与图2所示的实施例的实现方法类似,这里不再赘述。其中,预设的第一阈值可以根据实际情况具体设置,一般情况下,该预设的第一阈值不大于10,这里不再一一赘述。
当该确认报文数不大于预设的第一阈值时,则表示曾接收到发送端发送的第一握手报文,并给该发送端回复过包含错误的序列号的报文的个数,但是回复的包含错误的序列号的报文的个数并不多。可能由于网络原因,没有接收到该发送端返回的reset报文。为了提高识别源IP地址的合法性的精度,再给发送端返回一个第二报文(包含错误的序列号的报文),并且,给该确认报文数加1。
306:向所述发送端返回第二报文,所述确认报文数加1,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号。
307:当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
给发送端发送第二报文后,若接收到该发送端返回的第三报文(reset报文),则认为该第一报文的源IP地址合法,将第一报文的源IP地址从所述第一集合转移至第二集合。具体实现方式与图1所示的方法中103类似,参考103中的描述,这里不再赘述。
308:将所述第一报文的源IP地址从所述第一集合转移至第三集合。
309:将所述第一报文的源IP地址添加至第一集合。
这里需要说明的是,将第一报文的源IP地址添加至第一集合后,可以执行向发送端返回第二报文,进一步识别该源IP地址的合法性;也可以不执行向发送端返回第二报文,则该第一报文的源IP地址即识别为待定的源IP地址即可。若该发送端合法,则该发送端没有接收到回复,还会再次发送第一次握手报文,再次接收到发送端发送的第一次握手报文时,则按照图3所示的方法进步一识别该源IP地址合法。若该发送端不合法,则一般不会再次发送第一次握手报文,若多次发送第一次握手报文,则按照图3所示的方法进步一识别该源IP地址不合法。
310:识别所述第一报文的源IP地址是合法的IP地址。
图2所示的实施例是根据在预设的时间间隔内,没有接收到第三报文(reset报文),则认为该第一报文的源IP地址不合法。而图3所示的实施例中,提供了另外一种确定发送端的源IP地址不合法的方法,图3中,并不采用定时器对等待发送端返回第三报文(reset报文)进行计时,而是记录确认报文数,当确认报文数超过预设的第一阈值时,则认为该第一报文的源IP地址不合法。
在一个例子中,为了避免对不合法的源IP地址进行重复识别,如图4所示,还包括:
查询所述第一报文的源IP地址是否属于所述第三集合;
当所述第一报文的源IP地址不属于所述第三集合时,执行查询所述第一报文的源IP地址是否属于所述第一集合。
当所述第一报文的源IP地址不属于所述第三集合时,执行查询所述第一报文的源IP地址是否属于所述第一集合;当第一报文的源IP地址属于第三集合时,该第一报文的源IP地址不合法,即发送该第一报文的发送端不合法。
这里需要说明的是,在查询第一报文的源IP地址是否属于第一集合,第二集合,以及第三集合时,先后顺序不仅限于本发明实施例中所述的顺序,可以按照任意顺序进行查询,也可以同时查询,这里不再一一赘述。
由此可知,图1至图3中所提供的方法,能够准确识别合法的接收端,即能够确定合法的源IP地址;对于非合法的接收端,该接收端的源IP地址可能被识别为不合法的源IP地址,也可能被识别为待定的源IP地址。
在一个例子中,提供第三种确定源IP地址非法的方法,执行将所述第一报文的源IP地址添加至第一集合后,还包括:
判断是否接收到第四报文,所述第四报文与所述第一报文的源IP地址相同,所述第四报文是第一次握手报文;
当收到所述第四报文时,执行向所述发送端返回第二报文;
当没有收到所述第四报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
上述实施例中,对于同一个发送端来说,第一次接收到该发送端发送的第一次握手报文(第一报文)时,将该发送端的源IP地址添加至第一集合,作为待定的源IP地址,不对该第一报文进行任何响应,即不给该发送端回复任何报文,也不会根据该第一报文建立半连接信息。
若该发送端再次发送一个第一次握手报文(第四报文),则给该发送端返回第二报文,识别该发送端的源IP地址的合法性。
若在一个预设的时间间隔内没有再次接收到该发送端发送的第一次握手报文,则表示该发送端是非法的,即该第一报文的源IP地址是非法的源IP地址,将第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,还包括:
获取预设的会话表中半连接表项的个数;
判断所述半连接表项的个数是否大于预设的第二阈值;
当所述半连接表项的个数大于预设的第二阈值时,将所述半连接表项对应的源IP地址从所述第二集合中转移至第三集合中。
在上述例子中,若预设的会话表包括报文的五元组(源IP地址,目的IP地址,源端口号,目的端口号,传输协议)与表项的对应关系。其中,表项包括会话表项和半连接表项,会话表项是TCP连接建立完毕后所生成的表项。半连接表项是TCP连接还未完全建立时所生成的表项。可以理解的是,识别了发送端的源IP地址合法后,才会在会话表中建立表项(包括会话表项和半连接表项),因此,该会话表中半连接表项对应的源IP地址都被识别为合法的源IP地址,属于第二集合。
若该预设的会话表中存在大量的半连接表项(即半连接表项的个数超过预设的第二阈值),则表示当前存在网络攻击。则将半连接表项对应的源IP地址从第二集合转移至第三集合。
当然,可以理解的是,一个源IP地址可能对应于多个半连接表项。在具体实现时,还可以设置一个预设的第三阈值,当一个源IP地址所对应的半连接表项的个数超过预设的第三阈值时,将该源IP地址从第二集合转移至第三集合。
在一个例子中,还包括:
生成一个有效全局表,将所述第二集合存储至有效全局表,所述有效全局表能够被每个CPU采用无锁查询机制访问;
给每个CPU生成一个第一局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第一集合,每个第一局部表只能被该第一局部表所属的CPU访问。
从内存池中申请一个内存空间,生成一个有效全局表,该有效全局表用于存储第二集合,该有效全局表是永久的。从而保证该有效全局表所占的资源空间都是在指定的内存地址范围内。并且,各个CPU都能访问该有效全局表,并且各个CPU都采用无锁访问机制,能够提高访问该有效全局表的速度。
给每个CPU生成一个第一局部表,每个CPU的第一局部表用于存储属于该CPU的第一集合,每个CPU只能访问属于该CPU的第一局部表,不能访问别的CPU的第一局部表。
单独建立一个有效全局表存储第二集合,即有效的源IP地址单独存储,是因为当出现网络攻击时,第一集合和第三集合中的源IP地址非常多,若将第一集合,第二集合以及第三集合存储在一起,会影响第二集合的查找性能,即影响合法报文的转发速度。
在一个例子中,还包括:
给每个CPU生成一个第二局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第三集合,每个第二局部表只能被该第二局部表所属的CPU访问。
给每个CPU生成一个第二局部表,每个CPU的第二局部表用于存储属于该CPU的第三集合,每个CPU只能访问属于该CPU的第二局部表,不能访问别的CPU的第二局部表。
在具体实现时,同一个CPU的第一局部表和第二局部表,可以是同一个表。即给每个CPU生成一个局部表,每个CPU的局部表存储属于该CPU的第一集合和第三集合。
给每个CPU分别建立第一局部表和第二局部表,是因为当出现网络攻击时,会对该第一局部表和第二局部表进行频繁的增加和删除的处理,若所有CPU使用同一个表,则会影响处理的速度。给每个CPU分别建立第一局部表和第二局部表,可以加快各个CPU对第一局部表和第二局部表中的数据处理的速度。
在一个例子中,
每个CPU的第一局部表和第二局部表的超时机制采用一个LRU表进行维护。
最少使用算法(Least Recently Used,LRU)维护一个CPU的第一局部表和第二局部表中的超时机制,每次访问第一局部表和第二局部表时,将所访问的表项(即第一局部表或第二局部表的一个源IP地址)移至LRU的表头,以更新LRU表。以此类推,多次迭代后即可保证LRU表的表尾为最不常用的表项,LRU的表头是最近常用的表项。当一个CPU的第一局部表和第二局部表中资源紧张时,将LRU表的表尾的最不常用的表项替换,完成超时替换。
上述内容提供了识别源IP地址合法性方法,接收到第一次握手报文后,回复一个第二报文,第二报文中携带的是根据第一次握手报文的序列号生成的错误的序列号,而不是正确的序列号,因此,无需判断发送端返回的序列号是否正确,即无需占用内存存储第一次握手报文和第二次握手报文的半连接等信息,降低了内存的消耗。
下面利用本发明所提供的识别源IP地址合法性方法所识别的结果,实现网络攻击防御,如图5所示,包括:
501:接收发送端发送的第一报文。
502:查询预设的第二集合中是否存在所述第一报文的源IP地址,如果是,执行503;如果否,执行504,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法。
503:利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发。
504:丢弃所述第一报文。
预设的第二报文集合包括合法的源IP地址,该预设的第二报文集合可以采用图1至图4所示的识别源IP地址合法性方法获得。该预设的第二报文集合也可以由技术人员人工生成。该预设的第二报文集合还可以采用其他方法获得,这里不再一一赘述。
预设的第二集合中存在第一报文的源IP地址时,表示该源IP地址合法。根据第一报文获得会话表项,具体实现时,从预设的会话表中查询是否存在该第一报文的五元组对应的会话表项,若存在,则利用该会话表项对第一报文进行转发;若不存在,则给该第一报文生成一个会话表项,利用该生成的会话表项对该第一报文进行转发。
若预设的第二集合中不存在第一报文的源IP地址时,则丢弃该第一报文,有三种可能的实现场景,逐一进行详细说明。
第一种可能的场景:若预设的第二集合中不存在第一报文的源IP地址时,直接丢弃该第一报文。
预设的第二集合中不存在第一报文的源IP地址时,表示该第一报文的源IP地址不是合法的源IP地址,可能是不合法的源IP地址,也可能是待定的源IP地址,将该第一报文直接丢弃即可。
第二种可能的实现场景,如图6所示:
当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
若预设的第二集合中不存在第一报文的源IP地址时,查询预设的第三集合中是否存在第一报文的源IP地址,当预设的第三集合中存在第一报文的源IP地址时,表示第一报文的源IP地址是不合法的源IP地址,丢该第一报文;当预设的第三集合中不存在第一报文的源IP地址时,表示第一报文的源IP地址是待定的源IP地址,丢弃该第一报文。
可以由上述内容可以看出,若该第一报文的源IP地址是不合法的源IP地址,丢弃该第一报文。若该第一报文的源IP地址是待定的源IP地址,也要丢弃该第报文。第二种实现场景中,可以识别该第一报文的源IP地址是不合法的源IP地址,还是待定的源IP地址。
第三种可能的场景,如图7所示:
当所述预设的第三集合中不存在所述第一报文的源IP地址时,查询预设的第一集合中是否存在所述第一报文的源IP地址,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定;
当所述预设的第一集合中不存在所述第一报文的源IP地址时,将所述第一报文的源IP地址添加至所述预设的第一集合,丢弃所述第一报文;
当所述预设的第一集合中存在所述第一报文的源IP地址时,确定所述第一报文的源IP地址是否合法,丢弃所述第一报文。
当预设的第三集合中不存在该第一报文的源IP地址时,则该第一报文的源IP地址不是不合法的源IP地址,查询预设的第一集合中是否存在该第一报文的源IP地址。
若预设的第一集合中不存在该第一报文的源IP地址,表示第一次从该接收端接收到第一次握手报文,将该第一报文的源IP地址添加至预设的第一集合,该第一报文的源IP地址为待定的源IP地址,丢弃该第一报文。即从一个接收端第一次接收到的第一握手报文都丢弃。
若预设的第一集合中存在该第一报文的源IP地址,则表示该第一报文的源IP地址是待定的源IP地址,确定所述第一报文的源IP地址是否合法,并且,也丢弃该第一报文。
其中,确定该第一报文的源IP地址是否合法,可以按照图1至图4所示的方法进行确定,参考图1至图4中的具体描述,这里不再赘述。
在一个例子中,所述确定所述第一报文的源IP地址是否合法包括:
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第三报文是根据所述错误的序列号生成的报文;
当没有接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址不合法,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,所述确定所述第一报文的源IP地址是否合法包括:
获取确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合;
当所述确认报文数大于预设的第一阈值时,确定所述第一报文的源IP地址不合法将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,如图8所示,所述查询预设的第二集合中是否存在所述第一报文的源IP地址包括:
根据所述第一报文的五元组从预设的会话表中查找会话表项;
当从所述预设的会话表中查找到所述会话表项时,所述预设的第二集合中存在所述第一报文的源IP地址,利用所述会话表项对所述第一报文进行转发;
当没有从所述预设的会话表中查找到所述会话表项时,执行直接查询预设的第二集合中是否存在所述第一报文的源IP地址。
查询预设的第二集合中是否存在第一报文的源IP地址,有至少两种可能的实现方式:
第一种实现方式,直接从第二集合中查询是否存在该第一报文的源IP地址。
第二种实现方式,先从预设的会话表中查询是否存在该第一报文的五元组对应的会话表项,若该预设的会话表中存在该第一报文的五元组会话的表项,即表示该第一报文的源IP地址属于第二集合;若会话表中不存在该第一报文的五元组会话的表项,再直接从第二集合中查询是否存在该第一报文的源IP地址。
这里可以理解的是,识别了发送端的源IP地址合法后,才会在会话表中建立会话表项,因此,若能够根据第一报文的五元组信息在该会话表中查找到会话表项,即该第一报文的源IP地址是合法的源IP地址,肯定属于第二集合,无需再从第二集合中进行查询。
由上述内容可知,本发明所提供的网络攻击防御方法中,只要该第一报文的源IP地址不在预设的第二集合中,包括:第一报文是该发送端第一次发送的第一次握手报文,该第一报文的源IP地址是待定的源IP地址,该第一报文的源IP地址是不合法的源IP地址,上述三种情况下,都要将该第一报文丢弃,从而达到对网络攻击防御的目的。
并且,在本发明所提供的网络攻击防御方法中,该第一报文的源IP地址只要不是合法的源IP地址,就丢弃该第一报文,遇到网络攻击时,接收大量的第一次握手报文时,并不给每个第一次握手报文建立一个哈希表存储半连接信息,降低内存的消耗。
具体的,本发明所提供的网络攻击防御方法中,可以采用图1至图4的方法识别第一报文的源IP地址的合法性,从而获得预设的第一集合,预设的第二集合,以及预设的第三集合。具体实现方法参考图1至图4中的描述,这里不再赘述。
图9为本发明实施例提供的识别源IP地址合法性的装置结构示意图,包括:
第一添加单元901,用于接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文。
第一发送单元902,用于向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号。
第一转移单元903,用于当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
在一个例子中,所述装置还包括:
第二转移单元,用于当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
在一个例子中,所述装置还包括:
第一查询单元,用于查询所述第一报文的源IP地址是否属于所述第二集合;
第二查询单元,用于当所述第一报文的源IP地址不属于所述第二集合时,查询所述第一报文的源IP地址是否属于所述第一集合;
第二添加单元,用于当所述第一报文的源IP地址不属于所述第一集合时,执行将所述第一报文的源IP地址添加至第一集合;
第一获取单元,用于当所述第一报文的源IP地址属于第一集合时,识别所述第一报文的IP地址是待定的源IP地址,获取所述源IP地址对应的确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
第一判断单元,用于判断所述确认报文数是否大于预设的第一阈值;
第二发送单元,用于当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,所述确认报文数加1;
第三转移单元,用于当所述确认报文数大于预设的第一阈值时,执行将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,所述装置还包括:
第三查询单元,用于查询所述第一报文的源IP地址是否属于所述第三集合;
第四查询单元,用于当所述第一报文的源IP地址不属于所述第三集合时,执行查询所述第一报文的源IP地址是否属于所述第一集合。
在一个例子中,执行将所述第一报文的源IP地址添加至第一集合后,所述装置还包括:
第二判断单元,用于判断是否接收到第四报文,所述第四报文与所述第一报文的源IP地址相同,所述第四报文是第一次握手报文;
第三发送单元,用于当收到所述第四报文时,执行向所述发送端返回第二报文;
第四转移单元,用于当没有收到所述第四报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,所述装置还包括:
第二获取单元,用于获取预设的会话表中半连接表项的个数;
第三判断单元,用于判断所述半连接表项的个数是否大于预设的第二阈值;
第五转移单元,用于当所述半连接表项的个数大于预设的第二阈值时,将所述半连接表项对应的源IP地址从所述第二集合中转移至第三集合中。
在一个例子中,所述装置还包括:
第一生成单元,用于生成一个有效全局表,将所述第二集合存储至有效全局表,所述有效全局表能够被每个CPU采用无锁查询机制访问;
第二生成单元,用于给每个CPU生成一个第一局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第一集合,每个第一局部表只能被该第一局部表所属的CPU访问。
在一个例子中,所述装置还包括:
第三生成单元,用于给每个CPU生成一个第二局部表,每个第一局部表存储有该第一局部表所属的CPU所获得的第三集合,每个第二局部表只能被该第二局部表所属的CPU访问。
在一个例子中,所述装置还包括:
维护单元,用于每个CPU的第一局部表和第二局部表的超时机制采用一个近期最少使用算法LRU表进行维护。
图9所示的识别源IP地址合法性的装置是与图1至图4所示的识别源IP地址合法性的方法所对应的装置,具体实现方法与图1至图4所示的方法类似,参考图1至图4所示的方法的描述,这里不再赘述。
图10为本发明实施例提供的网络攻击防御装置结构示意图,包括:
接收模块1001,用于接收发送端发送的第一报文,所述第一报文是第一次握手报文。
查询模块1002,用于查询预设的第二集合中是否存在所述第一报文的源IP地址,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法。
转发模块1003,用于当所述预设的第二集合中存在所述第一报文的源IP地址时,利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发。
丢弃模块1004,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文。
在一个例子中,所述丢弃模块包括:
查询单元,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法;
第一丢弃单元,用于当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文;
第二丢弃单元,用于当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
在一个例子中,所述第二丢弃单元包括:
查询子单元,用于当所述预设的第三集合中不存在所述第一报文的源IP地址时,查询预设的第一集合中是否存在所述第一报文的源IP地址,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定;
添加子单元,用于当所述预设的第一集合中不存在所述第一报文的源IP地址时,将所述第一报文的源IP地址添加至所述预设的第一集合,丢弃所述第一报文;
确定子单元,用于当所述预设的第一集合中存在所述第一报文的源IP地址时,确定所述第一报文的源IP地址是否合法,丢弃所述第一报文。
在一个例子中,所述确定子单元用于:
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第三报文是根据所述错误的序列号生成的报文;
当没有接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址不合法,将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,所述确定子单元用于:
获取确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,向所述发送端返回第二报文,当接收到所述发送端发送的第三报文时,确定所述第一报文的源IP地址合法,将所述第一报文的源IP地址从所述第一集合转移至第二集合;
当所述确认报文数大于预设的第一阈值时,确定所述第一报文的源IP地址不合法将所述第一报文的源IP地址从所述第一集合转移至第三集合。
在一个例子中,所述查询模块包括:
查找单元,用于根据所述第一报文的五元组从预设的会话表中查找会话表项;
转发单元,用于当从所述预设的会话表中查找到所述会话表项时,所述预设的第二集合中存在所述第一报文的源IP地址,利用所述会话表项对所述第一报文进行转发;
查询单元,用于当没有从所述预设的会话表中查找到所述会话表项时,执行直接查询预设的第二集合中是否存在所述第一报文的源IP地址。
图10所示的网络攻击防御装置,是与图5至图8所示的网络攻击防御方法所对应的装置,具体实现方法与图5至图8所示的方法类似,参考图5至图8所示的方法的描述,这里不再赘述。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种识别源IP地址合法性的方法,其特征在于,所述方法包括:
接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文;
向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
查询所述第一报文的源IP地址是否属于所述第二集合;
当所述第一报文的源IP地址不属于所述第二集合时,查询所述第一报文的源IP地址是否属于所述第一集合;
当所述第一报文的源IP地址不属于所述第一集合时,执行将所述第一报文的源IP地址添加至第一集合;
当所述第一报文的源IP地址属于第一集合时,识别所述第一报文的IP地址是待定的源IP地址,获取所述源IP地址对应的确认报文数,所述确认报文数用于指示给所述发送端返回包含错误序列号的报文的个数;
判断所述确认报文数是否大于预设的第一阈值;
当所述确认报文数不大于所述预设的第一阈值时,执行向所述发送端返回第二报文,所述确认报文数加1;
当所述确认报文数大于预设的第一阈值时,执行将所述第一报文的源IP地址从所述第一集合转移至第三集合。
4.一种网络攻击防御方法,其特征在于,所述方法包括:
接收发送端发送的第一报文,所述第一报文是第一次握手报文;
查询预设的第二集合中是否存在所述第一报文的源IP地址,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法;
当所述预设的第二集合中存在所述第一报文的源IP地址时,利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发;
当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文。
5.根据权利要求4所述的方法,其特征在于,所述当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文包括:
当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法;
当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文;
当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
6.根据权利要求5所述的方法,其特征在于,所述当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文包括:
当所述预设的第三集合中不存在所述第一报文的源IP地址时,查询预设的第一集合中是否存在所述第一报文的源IP地址,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定;
当所述预设的第一集合中不存在所述第一报文的源IP地址时,将所述第一报文的源IP地址添加至所述预设的第一集合,丢弃所述第一报文;
当所述预设的第一集合中存在所述第一报文的源IP地址时,确定所述第一报文的源IP地址是否合法,丢弃所述第一报文。
7.一种识别源IP地址合法性的装置,其特征在于,所述装置包括:
第一添加单元,用于接收发送端发送的第一报文,将所述第一报文的源IP地址添加至第一集合,所述第一集合包括至少一个待定的源IP地址,所述待定的源IP地址用于表征该待定的源IP地址所对应的报文的合法性不确定,所述第一报文是第一次握手报文;
第一发送单元,用于向所述发送端返回第二报文,所述第二报文包括根据所述第一报文的同步序列号生成的错误的序列号;
第一转移单元,用于当接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第二集合,所述第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法,所述第三报文是根据所述错误的序列号生成的报文。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二转移单元,用于当没有接收到所述发送端发送的第三报文时,将所述第一报文的源IP地址从所述第一集合转移至第三集合,所述第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法。
9.一种网络攻击防御装置,其特征在于,所述装置包括:
接收模块,用于接收发送端发送的第一报文,所述第一报文是第一次握手报文;
查询模块,用于查询预设的第二集合中是否存在所述第一报文的源IP地址,所述预设的第二集合包括至少一个合法的源IP地址,所述合法的源IP地址用于表征该合法的源IP地址所对应的报文合法;
转发模块,用于当所述预设的第二集合中存在所述第一报文的源IP地址时,利用所述第一报文获得会话表项,利用所述会话表项对所述第一报文进行转发;
丢弃模块,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,丢弃所述第一报文。
10.根据权利要求9所述的装置,其特征在于,所述丢弃模块包括:
查询单元,用于当所述预设的第二集合中不存在所述第一报文的源IP地址时,查询预设的第三集合中是否存在所述第一报文的源IP地址,所述预设的第三集合包括至少一个非法的源IP地址,所述非法的源IP地址用于表征该非法的源IP地址所对应的报文不合法;
第一丢弃单元,用于当所述预设的第三集合中存在所述第一报文的源IP地址时,执行丢弃所述第一报文;
第二丢弃单元,用于当所述预设的第三集合中不存在所述第一报文的源IP地址时,执行丢弃所述第一报文。
CN201611116706.XA 2016-12-07 2016-12-07 识别源ip地址合法性、网络攻击防御的方法及装置 Pending CN106453419A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611116706.XA CN106453419A (zh) 2016-12-07 2016-12-07 识别源ip地址合法性、网络攻击防御的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611116706.XA CN106453419A (zh) 2016-12-07 2016-12-07 识别源ip地址合法性、网络攻击防御的方法及装置

Publications (1)

Publication Number Publication Date
CN106453419A true CN106453419A (zh) 2017-02-22

Family

ID=58216029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611116706.XA Pending CN106453419A (zh) 2016-12-07 2016-12-07 识别源ip地址合法性、网络攻击防御的方法及装置

Country Status (1)

Country Link
CN (1) CN106453419A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108173812A (zh) * 2017-12-07 2018-06-15 东软集团股份有限公司 防止网络攻击的方法、装置、存储介质和设备
CN108667829A (zh) * 2018-04-26 2018-10-16 腾讯科技(深圳)有限公司 一种网络攻击的防护方法、装置及存储介质
CN109088898A (zh) * 2018-10-26 2018-12-25 北京天融信网络安全技术有限公司 一种拒绝网络攻击的方法和装置
CN110912907A (zh) * 2019-11-28 2020-03-24 杭州迪普科技股份有限公司 Ssl握手阶段的攻击防护方法和装置
CN111615814A (zh) * 2018-01-23 2020-09-01 甲贺电子株式会社 Ip网中的通信线路的相互认证系统
CN114070572A (zh) * 2020-07-30 2022-02-18 北京威努特技术有限公司 一种非法tcp数据流的检测方法、装置及计算机设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954545A (zh) * 2003-03-03 2007-04-25 思科技术公司 利用tcp认证ip源地址
CN101147376A (zh) * 2005-02-04 2008-03-19 诺基亚公司 降低tcp洪泛攻击同时节省无线网络带宽的装置、方法和计算机程序产品
CN101599957A (zh) * 2009-06-04 2009-12-09 东软集团股份有限公司 一种syn洪水攻击的防御方法和装置
CN101729513A (zh) * 2008-10-27 2010-06-09 成都市华为赛门铁克科技有限公司 网络认证方法和装置
CN103916389A (zh) * 2014-03-19 2014-07-09 汉柏科技有限公司 防御HttpFlood攻击的方法及防火墙
CN104683293A (zh) * 2013-11-27 2015-06-03 杭州迪普科技有限公司 一种基于逻辑器件的syn攻击防护方法
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954545A (zh) * 2003-03-03 2007-04-25 思科技术公司 利用tcp认证ip源地址
CN101147376A (zh) * 2005-02-04 2008-03-19 诺基亚公司 降低tcp洪泛攻击同时节省无线网络带宽的装置、方法和计算机程序产品
CN101729513A (zh) * 2008-10-27 2010-06-09 成都市华为赛门铁克科技有限公司 网络认证方法和装置
CN101599957A (zh) * 2009-06-04 2009-12-09 东软集团股份有限公司 一种syn洪水攻击的防御方法和装置
CN104683293A (zh) * 2013-11-27 2015-06-03 杭州迪普科技有限公司 一种基于逻辑器件的syn攻击防护方法
CN103916389A (zh) * 2014-03-19 2014-07-09 汉柏科技有限公司 防御HttpFlood攻击的方法及防火墙
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108173812A (zh) * 2017-12-07 2018-06-15 东软集团股份有限公司 防止网络攻击的方法、装置、存储介质和设备
CN108173812B (zh) * 2017-12-07 2021-05-07 东软集团股份有限公司 防止网络攻击的方法、装置、存储介质和设备
CN111615814A (zh) * 2018-01-23 2020-09-01 甲贺电子株式会社 Ip网中的通信线路的相互认证系统
CN111615814B (zh) * 2018-01-23 2022-03-04 甲贺电子株式会社 Ip网中的通信线路的相互认证系统
CN108667829A (zh) * 2018-04-26 2018-10-16 腾讯科技(深圳)有限公司 一种网络攻击的防护方法、装置及存储介质
CN109088898A (zh) * 2018-10-26 2018-12-25 北京天融信网络安全技术有限公司 一种拒绝网络攻击的方法和装置
CN110912907A (zh) * 2019-11-28 2020-03-24 杭州迪普科技股份有限公司 Ssl握手阶段的攻击防护方法和装置
CN110912907B (zh) * 2019-11-28 2022-08-26 杭州迪普科技股份有限公司 Ssl握手阶段的攻击防护方法和装置
CN114070572A (zh) * 2020-07-30 2022-02-18 北京威努特技术有限公司 一种非法tcp数据流的检测方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
CN106453419A (zh) 识别源ip地址合法性、网络攻击防御的方法及装置
CN101175013B (zh) 一种拒绝服务攻击防护方法、网络系统和代理服务器
CN101572670B (zh) 一种基于流表的数据包处理方法、装置和网络系统
US7818786B2 (en) Apparatus and method for managing session state
CN101582833B (zh) 一种伪造ip数据包的处理方法及装置
CN103118013B (zh) 内容中心网络中数据包捎带反向兴趣包的方法
CN106101161B (zh) 一种用于处理伪造的tcp数据包的方法和系统
CN103795632B (zh) 一种数据报文传输方法及相关设备、系统
CN106302495A (zh) 一种ACK Flood攻击的防护方法及中间防护装置
CN101674312B (zh) 一种在网络传输中防止源地址欺骗的方法及装置
CN101834875A (zh) 防御DDoS攻击的方法、装置和系统
CN109067935A (zh) 分片报文处理方法及多核处理器系统
CN111865823B (zh) 一种轻量化以太坊加密流量识别方法
CN1863158B (zh) 一种ip报文分片缓存及转发方法
CN105119906A (zh) 一种用于防御dns递归攻击的方法、装置及系统
CN106254152A (zh) 一种流量控制策略处理方法和装置
CN102158406B (zh) 面向计算机网络链路的智能选路方法
CN108965263A (zh) 网络攻击防御方法及装置
CN113347155A (zh) 一种arp欺骗的防御方法、系统及装置
CN101938533B (zh) 地址解析的处理方法及装置
CN100508453C (zh) 一种开放式真实IPv6源地址过滤与验证方法
CN107770113A (zh) 一种精确确定攻击特征的洪水攻击检测方法
CN110278152A (zh) 一种建立快速转发表的方法及装置
US7552206B2 (en) Throttling service connections based on network paths
CN1567900A (zh) 一种在路由设备中实现报文转发控制的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170222

RJ01 Rejection of invention patent application after publication