CN105634660A - 数据包检测方法及系统 - Google Patents
数据包检测方法及系统 Download PDFInfo
- Publication number
- CN105634660A CN105634660A CN201410613933.8A CN201410613933A CN105634660A CN 105634660 A CN105634660 A CN 105634660A CN 201410613933 A CN201410613933 A CN 201410613933A CN 105634660 A CN105634660 A CN 105634660A
- Authority
- CN
- China
- Prior art keywords
- packet
- ttl
- value
- client
- data packet
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明适用于互联网网络接入设备,提供了一种数据包检测方法及系统,所述数据包检测方法包括:获取合法数据包中原始生存时间值;根据所述原始生存时间值计算出生存时间基准值,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址;获取待验数据包中的待验生存时间值;根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法。借此,本发明不仅能减少非法数据包的透传率,提高后端服务器的安全性能,而且能够适用各种复杂的网络环境,简单实用且安全可靠。
Description
技术领域
本发明涉及一种数据包检测方法及系统。
背景技术
随着互联网技术的普及,越来越多的应用都开始迁移到互联网,随之而来的是越来越多的针对互联网的各种攻击。很多攻击数据包都是黑客直接伪造的非法数据包,然后通过互联网转发到目标机。若不加判断这些数据包和普通包没有太大差别,都会被网络设备和服务器所接受。一旦伪造的攻击数据包到达目标机,将会对目标机上运行的服务产生致命的威胁直至服务器资源耗尽无法正常运行为止。
所以,一种高效实用的能够判断数据包是否伪造的技术方案就显得尤为重要了。在众多的判断数据包真伪的方法中,TTL(TimeToLive,生存时间)值的判断方法是一种非常有效而且性价比极高的策略。IP(InternetProtocol,互联网协议)数据包头都有一个TTL值字段,数据包每进过一个网络转发设备,TTL值就会自动减1,通常来说一个数据包从客户端发出到达服务器端所经过的网络设备是基本固定的,这样服务器端所收到的来自这个客户端的数据包中的TTL值也是相对比较固定。但是若有人想伪造一个这个源地址的数据包,其对应的TTL值和真实的客户端发出的数据包的TTL值很难匹配,除非两者到服务器之间的网络设备数一样,但是这种概率较低。所以通过判断TTL值可有效地判断数据包是否合法。
中国专利CN200810067292.5公开了一种伪造IP数据包的处理方法及装置,其处理流程大概如下:
1)接收待处理的IP数据包,并提取TTL值。
2)判断数据包中的TTL值是否在可信范围,若不可信就丢弃;
3)若可信,就提取源地址,查找TTL记录,若记录值与实际IP包中的值不一致而且已经标记为探测过就丢弃,没有探测过就会主动发起ICMP(InternetControlMessageProtocol,互联网控制报文协议)探测。
需要说明的是TTL记录中存储的信息都是真实客户端的相关信息,都是一一对应的关系。CN200810067292.5在实现时是一个老化时间概念,类似于超时机制,一旦时间到了,记录中的TTL值就会无效并做删除操作,并且CN200810067292.5具体存在如下技术问题:
1、CN200810067292.5中所列举的TTL检测和记录的方法无法在NAT(NetworkAddressTransfer,网络地址转换器)环境中使用,其针对一个源地址记录一个正式的TTL值,但是实际上若这个源地址是一个NAT出口,针对这个源地址的TTL值就有多个段存在,那么表中所记录的实际TTL值会不断地变化,只要不同的操作系统交替访问,就会出现很大的误杀情况。虽然CN200810067292.5的图7中描述时会预先进过一个TTL可信范围的判断,但是在接下来的根据源地址查找TTL对照表时,只要是当前访问者的操作系统和表中记录的TTL值的操作系统不同,就会有可能导致与实际TTL值不符的判断,从而进入丢包流程。
2、CN200810067292.5中是完全的一个源地址对应一个存储结构,需要大量内存。
3、CN200810067292.5对TTL值的获取方法是主动发送ICMP数据包等待回包或者从正常的三次握手中获取TTL值,但很多网络设备或者软件防火墙会自动禁用ICMP的,因此使用局限性较大。
4、CN200810067292.5中只描述实际TTL值和预存的TTL记录对比,若两者的TTL值相差1或者2都会被丢弃,但是真实的网络环境中是可能存在一定的差别的,一旦有所差别使用CN200810067292.5描述的TTL记录和真实客户端一一对应的关系会造成非常大的误杀。
5、CN200810067292.5中预存的TTL记录有老化时间,即会周期性地更新存储表中每个源地址对应的TTL记录,系统实现冗赘而不够灵活。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种数据包检测方法及系统,其不仅能减少非法数据包的透传率,提高后端服务器的安全性能,而且能够适用各种复杂的网络环境,简单实用且安全可靠。
为了实现上述目的,本发明提供一种数据包检测方法,包括步骤有:
获取合法数据包中原始生存时间值;
根据所述原始生存时间值计算出生存时间基准值,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址;
获取待验数据包中的待验生存时间值;
根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法。
根据本发明所述的数据包检测方法,所述获取合法数据包中原始生存时间值的步骤包括:
当客户端主动发起三次握手请求时,被动验证所述客户端的源地址是否真实;
若所述源地址真实,则获取所述客户端发来的所述合法数据包中的所述原始生存时间值。
根据本发明所述的数据包检测方法,所述当客户端主动发起三次握手的请求时,被动验证所述客户端的源地址是否真实的步骤包括:
接收所述客户端主动发起的所述三次握手请求;
被动向所述客户端发送伪造的SYN_ACK数据包;
接收所述客户端响应回复的RST数据包;
判断所述RST数据包中的SEQ值与所述SYN_ACK数据包中的ACK值是否相同,若相同则判定所述客户端的所述源地址真实。
根据本发明所述的数据包检测方法,所述获取所述客户端发来的所述合法数据包中的所述原始生存时间值的步骤之后还包括:
当所述客户端再次主动发起三次握手请求时,判断相邻两次所述三次握手请求的时间间隔是否超过预定的时间阈值;
若超过所述时间阈值,则重新验证所述客户端的所述源地址的真实性,并在验证通过后获取所述客户端的新原始生存时间值进行更新处理。
根据本发明所述的数据包检测方法,所述根据所述原始生存时间值计算出生存时间基准值的步骤包括:
对所述原始生存时间值统一进行预定数值的取模运算得到所述生存时间基准值。
根据本发明所述的数据包检测方法,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址的步骤包括:
对所述源地址进行掩码处理,使得所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址。
根据本发明所述的数据包检测方法,所述对所述源地址进行掩码处理的步骤包括:
所述合法数据包的所述源地址为32位,去掉所述源地址的后4位信息,保留所述源地址的前28位信息。
根据本发明所述的数据包检测方法,所述数据包检测方法应用于数据包检测设备中,并且所述生存时间基准值对应多个操作系统、客户端和/或局域网。
根据本发明所述的数据包检测方法,所述根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法的步骤包括:
判断所述待验生存时间值与所述生存时间基准值之间的差值是否在预定的生存时间误差值的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。
根据本发明所述的数据包检测方法,所述生存时间误差值根据透传到服务器的数据包的数量进行动态调整。
本发明还提供一种数据包检测系统,包括有:
第一TTL获取模块,用于获取合法数据包中原始生存时间值;
基准值计算模块,用于根据所述原始生存时间值计算得出生存时间基准值,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址;
第二TTL获取模块,用于获取待验数据包中的待验生存时间值;
TTL判断模块,用于根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法。
根据本发明所述的数据包检测系统,所述第一TTL获取模块包括:
地址验证子模块,用于当客户端主动发起三次握手请求时,被动验证所述客户端的源地址是否真实;
TTL获取子模块,用于若所述源地址真实,则获取所述客户端发来的所述合法数据包中的所述原始生存时间值。
根据本发明所述的数据包检测系统,所述地址验证子模块用于接收所述客户端主动发起的所述三次握手请求后,被动向所述客户端发送伪造的SYN_ACK数据包;以及在接收所述客户端响应回复的RST数据包后,判断所述RST数据包中的SEQ值与所述SYN_ACK数据包中的ACK值是否相同,若相同则判定所述客户端的所述源地址真实。
根据本发明所述的数据包检测系统,所述第一TTL获取模块还包括:
超时判断子模块,用于获取所述原始生存时间值后,当所述客户端再次主动发起三次握手请求时,判断相邻两次所述三次握手请求的时间间隔是否超过预定的时间阈值;
TTL更新子模块,用于若超过所述时间阈值,则重新验证所述客户端的所述源地址的真实性,并在验证通过后获取所述客户端的新原始生存时间值进行更新处理。
根据本发明所述的数据包检测系统,所述基准值计算模块包括取模子模块,所述取模子模块用于对所述原始生存时间值统一进行预定数值的取模运算得到所述生存时间基准值。
根据本发明所述的数据包检测系统,所述基准值计算模块包括掩码处理子模块,所述掩码处理子模块用于对所述源地址进行掩码处理,使得所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址。
根据本发明所述的数据包检测系统,所述合法数据包的所述源地址为32位,所述掩码处理子模块用于去掉所述源地址的后4位信息,保留所述源地址的前28位信息。
根据本发明所述的数据包检测系统,所述数据包检测系统应用于数据包检测设备中,并且所述生存时间基准值对应多个操作系统、客户端和/或局域网。
根据本发明所述的数据包检测系统,所述TTL判断模块用于判断所述待验生存时间值与所述生存时间基准值之间的差值是否在预定的生存时间误差值的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。
根据本发明所述的数据包检测系统,所述生存时间误差值根据透传到服务器的数据包的数量进行动态调整。
本发明可应用于相关的数据包检测设备中,通过指定检测机制获取合法数据包的原始TTL值;根据原始TTL值计算得出TTL基准值,以排除操作系统的差异导致的TTL初始值的差异,并使得所述TTL基准值对应合法数据包的源地址的多个预定邻近地址,通常若客户端在物理位置上是相邻的,其所经过的网络设备数量也可近似相同,这样多个操作系统、客户端和/或局域网就可共享一个TTL基准值,可有效地减少内存的使用量,大大提高系统的性能;再对比待验数据包的TTL值确定所述待验数据包是否合法,优选若两个TTL值之间的差值在预定的生存时间误差值的范围内,则判定待验数据包为合法数据包并可继续处理,否则判定待验数据包为非法数据包并可直接丢弃,这里采用了TTL误差值,允许网络中存在一定的误差,避免造成非常大的误杀。借此,本发明不仅能减少非法数据包的透传率,提高后端服务器的安全性能,而且能够适用各种复杂的网络环境,整个实施方案简单实用,且安全可靠。
附图说明
图1是本发明数据包检测系统的结构示意图;
图2是本发明优选数据包检测系统的结构示意图;
图3是本发明基于被动三次握手的源验证的原理示意图;
图4是本发明数据包检测方法的流程图;
图5是本发明优选数据包检测方法的流程图;
图6是本发明更新记录TTL值的方法流程实例图;
图7是本发明优选数据包检测系统的应用场景实例图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
图1是本发明数据包检测系统的结构示意图,所述数据包检测系统100分别与服务器和若干客户端通信连接,优选的是,数据包检测系统100可应用于相关的数据包检测设备中,所述数据包检测系统100所述包括有第一TTL获取模块10、基准值计算模块20、第二TTL获取模块30以及TTL判断模块40,其中:
所述第一TTL获取模块10,用于获取合法数据包中原始TTL值。更好的是,第一TTL获取模块10用于获取真实客户端发来的合法数据包中原始TTL值。
所述基准值计算模块20,用于根据原始TTL值计算得出TTL基准值,所述TTL基准值对应合法数据包的源地址的多个预定邻近地址。所述源地址优选为IP源地址。
目前,客户端主要的操作系统中TTL的初始值为:30、32、60、64、128、255等。其中较为常用的如WindowsXP、Win7为128,新版MacOS10和主流的Linux都为为64,还有主要的Unix为255。由于各个操作系统之间的差别,导致在一个局域网内部的TTL值差别很大,若只记录一个TTL值作为判断基准值那么对其他用户来说可能会导致很大的误杀,这对一个互联网的产品来说根本无法接受。本发明优选对原始TTL值进行归一化处理计算得出TTL基准值,能很好地适应复杂的网络环境,这样不管是linux,windows还是macos都会有一个统一的TTL值。另外,考虑到通常若客户端在物理位置上是相邻的,其所经过的网络设备数量也可近似相同,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址,这样多个客户端和/或局域网就可共享一个TTL基准值,可有效地减少内存的使用量,大大提高系统的性能。也就是说,基准值计算模块20所记录的一个TTL基准值可对应多个操作系统、客户端和/或局域网。
所述第二TTL获取模块30,用于获取待验数据包中的待验TTL值。更好的是,第二TTL获取模块30用于获取待验客户端发来的数据包中的待验TTL值。所述待验客户端是尚未确定为真实客户端或是黑客客户端的客户端。
所述TTL判断模块40,用于根据所述待验TTL值与TTL基准值,确定待验数据包是否合法。优选的是,若所述待验TTL值与TTL基准值相等,则可判定所述数据包为合法数据包,否则可判定所述数据包为非法数据包。
更好的是,TTL判断模块40用于判断待验TTL值与TTL基准值之间的差值是否在预定的TTL误差值(ttl_offset,是一个全局可设置参数)的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。这里采用了TTL误差值范围概念,允许网络中存在一定误差,避免造成非常大的误杀。所述TTL误差值可根据透传到服务器的数据包的数量进行动态调整。
本发明能有效地减少非法数据包的透传率,提高后端服务器的安全性能,方案简单实用,适用范围广的TTL检查机制,通过对比数据包中的TTL值,来判断数据包是否合法,并对非法数据包做进一步处理。本发明非常适用复杂网络环境中的TTL检查,特别是NAT后端多用户多操作系统的网络环境也能覆盖。
图2是本发明优选数据包检测系统的结构示意图,所述数据包检测系统100分别与服务器和若干客户端通信连接,优选的是,数据包检测系统100可应用于相关的数据包检测设备中,所述数据包检测系统100所述包括有第一TTL获取模块10、基准值计算模块20、第二TTL获取模块30以及TTL判断模块40,其中:
所述第一TTL获取模块10,用于获取合法数据包中原始TTL值。优选的是,第一TTL获取模块10包括:
地址验证子模块11,用于当客户端主动发起三次握手请求时,被动验证客户端的源地址是否真实。
TTL获取子模块12,用于若源地址真实,则获取客户端发来的合法数据包中的原始TTL值。
本实施例数据包检测系统100用于被动通过TCP(TransmissionControlProtocol,传输控制协议)三次握手,记录来自真实客户端的数据包中TTL值。只有当客户端主动发起三次握手的请求时,才会记录该客户端的TTL值。
如图3所示,地址验证子模块11的实现原理类似于一种客户端的验证机制,在三次握手过程中,只有当客户端能够正常响应发送的伪造SYN_ACK(SynchronizeSequenceNumbers_Acknowledgement,同步序列编号_确认符)数据包,并回复RST(Reset,复位)数据包,而且其seq(Sequence,序列)值是伪造SYN_ACK包的ack值时,才会认为用户的发送的RST数据包的TTL值是可信的,其他任何不能通过此验证的客户端都可认为是伪造客户端。之所以说是被动的,因其只有客户端发出三次握手请求时,才会发起该验证,而且验证通过之后,在预定的时间阈值内客户端再发起的三次握手都不会进行该校验,否则就会执行如图6的更新TTL值的操作。
因此更好的是,地址验证子模块11用于接收客户端主动发起的三次握手请求后,向客户端发送伪造的SYN_ACK(同步序列编号_确认符)数据包。以及在接收客户端响应回复的RST(复位)数据包后,判断RST数据包中的SEQ(序列)值与SYN_ACK数据包中的ACK(确认符)值是否相同,若相同则判定客户端的源地址真实。本实施例为一种被动获取TTL值的方法,但显然其他如使用ICMP主动获取,或者使用三次握手从中获取TTL值的方法也都可使用。
更好的是,所述第一TTL获取模块10还可包括:
超时判断子模块13,用于获取原始TTL值后,当客户端再次主动发起三次握手请求时,判断相邻两次三次握手请求的时间间隔是否超过预定的时间阈值,若是则交由TTL更新子模块14处理,否则不予处理。
TTL更新子模块14,用于若超过时间阈值,则重新验证客户端的源地址的真实性,并在验证通过后获取客户端的新原始TTL值进行更新处理。
所述基准值计算模块20,用于根据原始TTL值计算得出TTL基准值,所述TTL基准值对应合法数据包的源地址的多个预定邻近地址。这样,所述TTL基准值对应多个操作系统、客户端和/或局域网。
优选的是,基准值计算模块20包括:
取模子模块21,用于对原始TTL值统一进行预定数值的取模运算得到TTL基准值,所述TTL基准值对应多种操作系统。所述预定数值优选为64,即收到数据包的原始TTL值,都对64取模,这样不管是linux,windows还是macos都会有一个统一的原始TTL值。
掩码处理子模块22,用于对源地址进行掩码处理,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址。掩码处理子模块22用于压缩真实客户端的源地址的存储空间,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址,提高系统的使用率。优选的是,若真实客户端基于IPV4(互联网协议4),客户端的源地址为32位,掩码处理子模块22用于去掉源地址的后4位信息,保留源地址的前28位信息。为了精确起见,地址可能只压缩了3bit,2bit;或者使用压缩5bit,6bit来节省更多的内存资源。本发明客户端也可以基于IPV6(互联网协议6),其客户端的源地址为128位,可以去掉源地址的后N位信息,保留128-N位信息即可。本发明只要是多个地址或者多个局域网共享一个TTL值的方式都可认为是可选方案。
所述第二TTL获取模块30,用于获取待验数据包中的待验TTL值。更好的是,第二TTL获取模块30用于获取待验客户端发来的数据包中的待验TTL值。所述待验客户端是尚未确定为真实客户端或是黑客客户端的客户端。
所述TTL判断模块40,用于根据待验TTL值与TTL基准值,确定待验数据包是否合法。优选的是,若所述待验TTL值与TTL基准值相等,则可判定所述数据包为合法数据包,否则可判定所述数据包为非法数据包。更好的是,TTL判断模块40用于判断待验TTL值与TTL基准值之间的差值是否在预定的TTL误差值(ttl_offset,是一个全局可设置参数)的范围内,若是则判定所述数据包为合法数据包可继续处理,否则判定所述数据包为非法数据包可直接丢弃。这里采用了TTL误差值范围概念,允许网络中存在一定误差,避免造成非常大的误杀。所述TTL误差值可根据透传到服务器的数据包的数量进行动态调整。
本发明内存中存储的一TTL值可覆盖多个操作系统、客户端和/或局域网的方法,均可被认为是可选方案。本发明只是使用了其中的一种,例如不是对64取模运算,而是通过一TTL记录产生对应的其他操作系统的记录。例如现在收到了一TTL值为100的数据包,可判断该数据包经过了128-100=28次转发,所以就可恢复出64-28=36,255-28=227等多个TTL记录,然后对该源地址保存多份记录,分别对应多种操作系统,这样后续数据包来只要比较该源地址对应的几个记录即可。其目的是要提高一次TTL记录创建或者更新操作的利用率,能够适用多种客户端,不管客户端是哪一种操作系统,也不管客户端是在NAT网关后端还是单独一个源地址,只要源地址相近而且进过的转发设备数量相近,就认为是合法数据包,否则就是非法数据包。
就本实施例而言,本发明具有如下优点:
1、本发明针对TTL值的归一化处理,能很好地适应复杂的网络环境。收到数据包的TTL值,都对64取模,这样不管是linux,windows还是macos都会有一个统一的TTL基准值,可排除操作系统的差异导致的TTL初始值的差异。
2、本发明优选对32bit的源地址进行进行掩码处理完成压缩,例如去掉最后4个bit的内容,即192.168.1.1到192.168.1.15的源地址认为是一组;前提假设最后几位相邻的源地址在物理位置上也是相邻的,而实际上这种场景也是非常合理的,可有效地减少内存的使用量,大大提高系统的性能。
3、本发明把通过被动源验证的RST包的TTL值归一化处理后作为基准TTL。使用基于被动三次握手的源验证,从来自真实源地址的RST包中获取TTL值,只会当需要验证目标源地址时才会记录或者更新TTL,这样就不会出现本地没有记录再通过ICMP去获取TTL值,而且很多网络设备或者软件防火墙会自动禁用ICMP,因此适用范围更广。
4、存储某个源地址的TTL基准值后,后续来自该源地址附近的源地址(IP地址前28bit一样)通过对比基准TTL来判断是否合法,若两者TTL差的绝对值小于TTL误差值(可设置)就认为是合法,避免造成非常大的误杀。
5、本发明在实现时TTL基准值的更新只被动地依赖于源地址是否需要重新验证,若源地址不需重新验证,该TTL基准值也就不需要超时更新,这个验证的周期是可设定的,这样系统就显得更加灵活了。
图4是本发明数据包检测方法的流程图,其可通过如图1或图2所示的数据包检测系统100实现,具体包括步骤有:
步骤S401,获取合法数据包中原始TTL值。
本步骤优选的是,获取真实客户端发来的合法数据包中原始TTL值。所述源地址优选为IP源地址。
步骤S402,根据原始TTL值计算出TTL基准值,所述TTL基准值对应合法数据包的源地址的多个预定邻近地址。
目前,客户端主要的操作系统中TTL的初始值为:30、32、60、64、128、255等。其中较为常用的如WindowsXP、Win7为128,新版MacOS10和主流的Linux都为为64,还有主要的Unix为255。由于各个操作系统之间的差别,导致在一个局域网内部的TTL值差别很大,若只记录一个TTL值作为判断基准值那么对其他用户来说可能会导致很大的误杀,这对一个互联网的产品来说根本无法接受。本发明优选对原始TTL值进行归一化处理计算得出TTL基准值,能很好地适应复杂的网络环境,这样不管是linux,windows还是macos都会有一个统一的TTL值。另外,考虑到通常若客户端在物理位置上是相邻的,其所经过的网络设备数量也可近似相同,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址,这样多个客户端和/或局域网就可共享一个TTL基准值,可有效地减少内存的使用量,大大提高系统的性能。也就是说,基准值计算模块20所记录的一个TTL基准值可对应多个操作系统、客户端和/或局域网。
步骤S403,获取待验数据包中的待验TTL值。
本步骤优选的是,获取待验客户端发来的数据包中的待验TTL值。
步骤S404,根据待验TTL值与TTL基准值,确定待验数据包是否合法。
本步骤优选的是,若所述待验TTL值与TTL基准值相等,则可判定所述数据包为合法数据包,否则可判定所述数据包为非法数据包。更好的是,判断待验TTL值与TTL基准值之间的差值是否在预定的TTL误差值的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。这里采用了TTL误差值范围概念,允许网络中存在一定误差,避免造成非常大的误杀。所述TTL误差值可根据透传到服务器的数据包的数量进行动态调整。
优选的是,本发明数据包检测方法应用于数据包检测设备中,并且TTL基准值对应多个操作系统、客户端和/或局域网。本发明简单有效,通过对比数据包中的TTL值,能适用复杂的网络环境,并有效地减少伪造数据包的传输。
图5是本发明优选数据包检测方法的流程图,其可通过如图2所示的数据包检测系统100实现,具体包括步骤有:
步骤S501,客户端主动发起三次握手请求。
步骤S502,被动验证客户端的源地址是否真实,若是则执行步骤S503,否则结束流程,可直接丢弃客户端的数据包。本步骤进一步可包括:
1)接收客户端主动发起的三次握手请求。
2)被动向客户端发送伪造的SYN_ACK(同步序列编号_确认符)数据包。
3)接收客户端响应回复的RST(复位)数据包。
4)判断RST数据包中的SEQ(序列)值与SYN_ACK数据包中的ACK(确认符)值是否相同,若相同则判定客户端的源地址真实。
步骤S503,若源地址真实则获取客户端发来的合法数据包中的原始TTL值。
步骤S504,对原始TTL值统一进行预定数值的取模运算得到TTL基准值,该TTL基准值对应多种操作系统。
所述预定数值优选为64,即收到数据包的原始TTL值,都对64取模,这样不管是linux,windows还是macos都会有一个统一的原始TTL值。
步骤S505,对源地址进行掩码处理,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址。
本步骤压缩真实客户端的源地址的存储空间,使得TTL基准值对应合法数据包的源地址的多个预定邻近地址,提高系统的使用率。优选的是,若真实客户端基于IPV4(互联网协议4),客户端的合法数据包的源地址为32位,去掉源地址的后4位信息,保留源地址的前28位信息。为了精确起见,源地址可能只压缩了3bit,2bit;或者使用压缩5bit,6bit来节省更多的内存资源。本发明客户端也可以基于IPV6(互联网协议6),其客户端的源地址为128位,可以去掉源地址的后N位信息,保留128-N位信息即可。本发明只要是多个源地址或者多个局域网共享一个TTL值的方式都可认为是可选方案。
步骤S506,获取待验客户端发来的数据包中的待验TTL值。
步骤S507,判断待验TTL值与TTL基准值之间的差值是否在预定的TTL误差值的范围内,若是则执行步骤S508,否则执行步骤S509。
优选的是,TTL误差值根据透传到服务器的数据包的数量进行动态调整。
步骤S508,若TTL值与TTL基准值之间的差值在预定的TTL误差值的范围内,则判定数据包为合法数据包。
步骤S509,若TTL值与TTL基准值之间的差值不在预定的TTL误差值的范围内,则判定数据包为非法数据包。
本发明对TTL值归一化运算,可大大提高适用范围,尽管不同的操作系统的初始TTL值差别较大,但是取模运算可克服操作系统的差别导致的一个出口源地址对应有多个TTL值的情况,这不仅适用于单源地址/单客户端的场景,也适用单源地址/多客户端或者多源地址/多客户端的NAT网络环境。
本发明TTL存储和比较时源地址压缩后4bit,对于源地址相邻的客户端(前28bit一样),通常来说其物理位置上也是相邻的,所以所经过的网络设备数量也可近似地认为是相同的,这样相邻的客户端之间和相邻的NAT网络之间就可共享一个TTL值,大大节省存储空间。
本发明被动地获取真实TTL值,通过验证源地址的真实性的方式来判断该客户端是否真实,并从中获取TTL值,因为只有真实的客户端才会响应本发明发出的伪造SYN_ACK数据包,并回复一个期望的RST。验证RST的seq后几乎就可确定该RST包中携带了真实的TTL值。
本发明使用了TTL误差值,允许网络中存在一定的误差,而且该TTL误差值是可根据透传到后端去的数据包数量的多少,做一个动态的调整。
图6是本发明更新记录TTL值的方法流程实例图,其可通过如图2所示的数据包检测系统100实现,在获取客户端发来的合法数据包中的原始TTL值的步骤之后还包括有:
步骤S601,客户端再次主动发起三次握手请。
步骤S602,判断相邻两次三次握手请求的时间间隔是否超过预定的时间阈值,若是则执行步骤S603,否则结束流程。
步骤S603,若超过时间阈值,则重新验证客户端的源地址是否真实,若是则执行步骤S604,否则结束流程。
步骤S604,验证通过后获取客户端的新原始TTL值。
步骤S605,根据新原始TTL值计算出新TTL基准值。
步骤S606,判断所述源地址是否已对应记录有原TTL基准值,若是则执行步骤S607,否则执行步骤S608。
步骤S607,将新TTL基准值替换原TTL基准值。
步骤S608,创建记录,以记录所述新TTL基准值。
图7是本发明优选数据包检测系统的应用场景实例图。在路由器(Route)2下的局域网连接了多个客户端,而且每个客户端的操作系统各不相同,网络中部署TTL检测方案,对来该局域网的所有请求数据包做检测。
因为使用了统一的取模运算,不管初始值是多少,中间经过的网络设备个数基本上是一样的,所以最后对64取模运算后的TTL基准值应该也是一样的,基本就克服了操作系统的差异带来的TTL差值的问题。
Mod(64,TTL(Unix))=Mod(64,TTL(Android))=Mod(64,TTL(Mac))。
同时该局域网内部还有其他网络设备存在,所有当路由器1下的用户访问时,在数据包检测设备看到的TTL值要比路由器2的局域网其他用户TTL少1,因为允许移动的TTL差值存在,即TTL误差值的存在,只要差值小于TTL误差值,该用户就是合法用户。
Mod(64,TTL(windows))+1=Mod(64,TTL(Unix))=Mod(64,TTL(Android))=Mod(64,TTL(Mac));
而且1<=ttl_offset;
对于路由器x后端的黑客(Hack)端来说,其通过伪造源地址,想把一些非法数据包伪装成来自路由器2后端的数据包,并穿透到服务器端,但是若在数据包检测设备部署本发明的数据包检测系统100后,只要黑客端到数据包检测设备之间的网络设备数和路由器2后端设备到数据包检测设备之间的网络设备数有差别,而且差别数大于TTL误差值,那么黑客端的数据包就会被判断为非法数据包,尽管IP包中除了TTL值其他信息都一样,但本发明能够快速找出TTL值的差别并丢弃黑客端的数据包,从而保护后端服务器不被攻击。
Mod(64,TTL(Hack))-Mod(64,TTL(Route2))>ttl_offfset;或者
Mod(64,TTL(Route2))-Mod(64,TTL(Hack))>ttl_offfset;
对于路由器2后端的终端设备,当有一设备的TTL值被记录后,该局域网的其他设备都能共享这个信息,在穿透网络设备时,只要对源地址做一个压缩运算,即使这些设备的源地址各不相同,但是只要前28bit相同,就认为是一个物理上相邻的设备,就会把这一组认为是共享一TTL基准值,从而能很好地提高系统的效率,减少不必要重复计算。
图7仅是本发明列举的一种使用场景,本发明还可应用于各网关系统,路由器,其他数据包检测设备等。
综上所述,本发明可应用于相关的数据包检侧设备中,通过指定检测机制获取合法数据包的原始TTL值;根据原始TTL值计算得出TTL基准值,以排除操作系统的差异导致的TTL初始值的差异,并使得所述TTL基准值对应合法数据包的源地址的多个预定邻近地址,通常若客户端在物理位置上是相邻的,其所经过的网络设备数量也可近似相同,这样多个操作系统、客户端和/或局域网就可共享一个TTL基准值,可有效地减少内存的使用量,大大提高系统的性能;再对比待验数据包的TTL值确定所述待验数据包是否合法,优选若两个TTL值之间的差值在预定的生存时间误差值的范围内,则判定待验数据包为合法数据包并可继续处理,否则判定待验数据包为非法数据包并可直接丢弃,这里采用了TTL误差值,允许网络中存在一定的误差,避免造成非常大的误杀。借此,本发明不仅能减少非法数据包的透传率,提高后端服务器的安全性能,而且能够适用各种复杂的网络环境,整个实施方案简单实用,且安全可靠。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (20)
1.一种数据包检测方法,其特征在于,包括步骤有:
获取合法数据包中原始生存时间值;
根据所述原始生存时间值计算出生存时间基准值,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址;
获取待验数据包中的待验生存时间值;
根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法。
2.根据权利要求1所述的数据包检测方法,其特征在于,所述获取合法数据包中原始生存时间值的步骤包括:
当客户端主动发起三次握手请求时,被动验证所述客户端的源地址是否真实;
若所述源地址真实,则获取所述客户端发来的所述合法数据包中的所述原始生存时间值。
3.根据权利要求2所述的数据包检测方法,其特征在于,所述当客户端主动发起三次握手的请求时,被动验证所述客户端的源地址是否真实的步骤包括:
接收所述客户端主动发起的所述三次握手请求;
被动向所述客户端发送伪造的SYN_ACK数据包;
接收所述客户端响应回复的RST数据包;
判断所述RST数据包中的SEQ值与所述SYN_ACK数据包中的ACK值是否相同,若相同则判定所述客户端的所述源地址真实。
4.根据权利要求2所述的数据包检测方法,其特征在于,所述获取所述客户端发来的所述合法数据包中的所述原始生存时间值的步骤之后还包括:
当所述客户端再次主动发起三次握手请求时,判断相邻两次所述三次握手请求的时间间隔是否超过预定的时间阈值;
若超过所述时间阈值,则重新验证所述客户端的所述源地址的真实性,并在验证通过后获取所述客户端的新原始生存时间值进行更新处理。
5.根据权利要求1所述的数据包检测方法,其特征在于,所述根据所述原始生存时间值计算出生存时间基准值的步骤包括:
对所述原始生存时间值统一进行预定数值的取模运算得到所述生存时间基准值。
6.根据权利要求1所述的数据包检测方法,其特征在于,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址的步骤包括:
对所述源地址进行掩码处理,使得所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址。
7.根据权利要求6所述的数据包检测方法,其特征在于,所述对所述源地址进行掩码处理的步骤包括:
所述合法数据包的所述源地址为32位,去掉所述源地址的后4位信息,保留所述源地址的前28位信息。
8.根据权利要求1所述的数据包检测方法,其特征在于,所述数据包检测方法应用于数据包检测设备中,并且所述生存时间基准值对应多个操作系统、客户端和/或局域网。
9.根据权利要求1~8任一项所述的数据包检测方法,其特征在于,所述根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法的步骤包括:
判断所述待验生存时间值与所述生存时间基准值之间的差值是否在预定的生存时间误差值的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。
10.根据权利要求9所述的数据包检测方法,其特征在于,所述生存时间误差值根据透传到服务器的数据包的数量进行动态调整。
11.一种数据包检测系统,其特征在于,包括有:
第一TTL获取模块,用于获取合法数据包中原始生存时间值;
基准值计算模块,用于根据所述原始生存时间值计算得出生存时间基准值,所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址;
第二TTL获取模块,用于获取待验数据包中的待验生存时间值;
TTL判断模块,用于根据所述待验生存时间值与所述生存时间基准值,确定所述待验数据包是否合法。
12.根据权利要求11所述的数据包检测系统,其特征在于,所述第一TTL获取模块还包括:
地址验证子模块,用于当客户端主动发起三次握手请求时,被动验证所述客户端的源地址是否真实;
TTL获取子模块,用于若所述源地址真实,则获取所述客户端发来的所述合法数据包中的所述原始生存时间值。
13.根据权利要求12所述的数据包检测系统,其特征在于,所述地址验证子模块用于接收所述客户端主动发起的所述三次握手请求后,被动向所述客户端发送伪造的SYN_ACK数据包;以及在接收所述客户端响应回复的RST数据包后,判断所述RST数据包中的SEQ值与所述SYN_ACK数据包中的ACK值是否相同,若相同则判定所述客户端的所述源地址真实。
14.根据权利要求12所述的数据包检测系统,其特征在于,所述第一TTL获取模块还包括:
超时判断子模块,用于获取所述原始生存时间值后,当所述客户端再次主动发起三次握手请求时,判断相邻两次所述三次握手请求的时间间隔是否超过预定的时间阈值;
TTL更新子模块,用于若超过所述时间阈值,则重新验证所述客户端的所述源地址的真实性,并在验证通过后获取所述客户端的新原始生存时间值进行更新处理。
15.根据权利要求11所述的数据包检测系统,其特征在于,所述基准值计算模块包括取模子模块,所述取模子模块用于对所述原始生存时间值统一进行预定数值的取模运算得到所述生存时间基准值。
16.根据权利要求11所述的数据包检测系统,其特征在于,所述基准值计算模块包括掩码处理子模块,所述掩码处理子模块用于对所述源地址进行掩码处理,使得所述生存时间基准值对应所述合法数据包的源地址的多个预定邻近地址。
17.根据权利要求16所述的数据包检测系统,其特征在于,所述合法数据包的所述源地址为32位,所述掩码处理子模块用于去掉所述源地址的后4位信息,保留所述源地址的前28位信息。
18.根据权利要求11所述的数据包检测系统,其特征在于,所述数据包检测系统应用于数据包检测设备中,并且所述生存时间基准值对应多个操作系统、客户端和/或局域网。
19.根据权利要求11~18任一项所述的数据包检测系统,其特征在于,所述TTL判断模块用于判断所述待验生存时间值与所述生存时间基准值之间的差值是否在预定的生存时间误差值的范围内,若是则判定所述数据包为合法数据包,否则判定所述数据包为非法数据包。
20.根据权利要求19所述的数据包检测系统,其特征在于,所述生存时间误差值根据透传到服务器的数据包的数量进行动态调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410613933.8A CN105634660B (zh) | 2014-07-16 | 2014-11-04 | 数据包检测方法及系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410339718 | 2014-07-16 | ||
CN2014103397183 | 2014-07-16 | ||
CN201410613933.8A CN105634660B (zh) | 2014-07-16 | 2014-11-04 | 数据包检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105634660A true CN105634660A (zh) | 2016-06-01 |
CN105634660B CN105634660B (zh) | 2019-04-09 |
Family
ID=56049245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410613933.8A Active CN105634660B (zh) | 2014-07-16 | 2014-11-04 | 数据包检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105634660B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357660A (zh) * | 2016-09-29 | 2017-01-25 | 广州华多网络科技有限公司 | 一种ddos防御系统中检测伪造源ip的方法和装置 |
CN106375207A (zh) * | 2016-09-05 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的超时报文控制方法及系统 |
CN108710925A (zh) * | 2018-05-15 | 2018-10-26 | 南京博内特信息科技有限公司 | 一种基于物联网的服装货架系统的方法 |
CN109862435A (zh) * | 2018-11-16 | 2019-06-07 | 京信通信系统(中国)有限公司 | 直播视频的监控方法、装置、计算机存储介质及设备 |
CN110771103A (zh) * | 2017-06-13 | 2020-02-07 | 日本电气株式会社 | 流量优化设备、通信系统、流量优化方法和程序 |
CN111615814A (zh) * | 2018-01-23 | 2020-09-01 | 甲贺电子株式会社 | Ip网中的通信线路的相互认证系统 |
CN112087449A (zh) * | 2020-09-08 | 2020-12-15 | 清华大学 | 源地址的验证方法、系统、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217428A (zh) * | 2008-01-11 | 2008-07-09 | 北京工业大学 | 基于拓扑树的回溯式路由级网络拓扑检测方法 |
CN101453420A (zh) * | 2008-12-30 | 2009-06-10 | 成都市华为赛门铁克科技有限公司 | 一种数据包的安全保护方法、设备及系统 |
CN101582833A (zh) * | 2008-05-15 | 2009-11-18 | 成都市华为赛门铁克科技有限公司 | 一种伪造ip数据包的处理方法及装置 |
CN101931628A (zh) * | 2010-08-27 | 2010-12-29 | 清华大学 | 一种域内源地址的验证方法和装置 |
WO2011053284A1 (en) * | 2009-10-28 | 2011-05-05 | Hewlett-Packard Development Company Lp | Methods and apparatus for detection of a nat device |
-
2014
- 2014-11-04 CN CN201410613933.8A patent/CN105634660B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217428A (zh) * | 2008-01-11 | 2008-07-09 | 北京工业大学 | 基于拓扑树的回溯式路由级网络拓扑检测方法 |
CN101582833A (zh) * | 2008-05-15 | 2009-11-18 | 成都市华为赛门铁克科技有限公司 | 一种伪造ip数据包的处理方法及装置 |
CN101453420A (zh) * | 2008-12-30 | 2009-06-10 | 成都市华为赛门铁克科技有限公司 | 一种数据包的安全保护方法、设备及系统 |
WO2011053284A1 (en) * | 2009-10-28 | 2011-05-05 | Hewlett-Packard Development Company Lp | Methods and apparatus for detection of a nat device |
CN101931628A (zh) * | 2010-08-27 | 2010-12-29 | 清华大学 | 一种域内源地址的验证方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375207A (zh) * | 2016-09-05 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的超时报文控制方法及系统 |
CN106357660A (zh) * | 2016-09-29 | 2017-01-25 | 广州华多网络科技有限公司 | 一种ddos防御系统中检测伪造源ip的方法和装置 |
CN106357660B (zh) * | 2016-09-29 | 2023-04-18 | 广州华多网络科技有限公司 | 一种ddos防御系统中检测伪造源ip的方法和装置 |
CN110771103A (zh) * | 2017-06-13 | 2020-02-07 | 日本电气株式会社 | 流量优化设备、通信系统、流量优化方法和程序 |
CN111615814A (zh) * | 2018-01-23 | 2020-09-01 | 甲贺电子株式会社 | Ip网中的通信线路的相互认证系统 |
CN111615814B (zh) * | 2018-01-23 | 2022-03-04 | 甲贺电子株式会社 | Ip网中的通信线路的相互认证系统 |
CN108710925A (zh) * | 2018-05-15 | 2018-10-26 | 南京博内特信息科技有限公司 | 一种基于物联网的服装货架系统的方法 |
CN109862435A (zh) * | 2018-11-16 | 2019-06-07 | 京信通信系统(中国)有限公司 | 直播视频的监控方法、装置、计算机存储介质及设备 |
CN112087449A (zh) * | 2020-09-08 | 2020-12-15 | 清华大学 | 源地址的验证方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105634660B (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11082436B1 (en) | System and method for offloading packet processing and static analysis operations | |
CN105634660A (zh) | 数据包检测方法及系统 | |
EP3338396B1 (en) | Device and method for establishing connection in load-balancing system | |
US9923984B2 (en) | Methods, systems, and computer readable media for remote authentication dial in user service (RADIUS) message loop detection and mitigation | |
US10218733B1 (en) | System and method for detecting a malicious activity in a computing environment | |
US20190058731A1 (en) | User-side detection and containment of arp spoofing attacks | |
US20150195381A1 (en) | Method and apparatus of identifying proxy ip address | |
WO2015078388A1 (zh) | 针对拒绝服务攻击的处理方法及装置 | |
US10834125B2 (en) | Method for defending against attack, defense device, and computer readable storage medium | |
CN109040140B (zh) | 一种慢速攻击检测方法及装置 | |
CN110266650B (zh) | Conpot工控蜜罐的识别方法 | |
Chen et al. | {Off-Path}{TCP} Exploit: How Wireless Routers Can Jeopardize Your Secrets | |
US20220263823A1 (en) | Packet Processing Method and Apparatus, Device, and Computer-Readable Storage Medium | |
US11178163B2 (en) | Location spoofing detection using round-trip times | |
Kavisankar et al. | A mitigation model for TCP SYN flooding with IP spoofing | |
Tyagi et al. | Packet inspection for unauthorized OS detection in enterprises | |
US20140283057A1 (en) | Tcp validation via systematic transmission regulation and regeneration | |
US11252184B2 (en) | Anti-attack data transmission method and device | |
JP6471220B2 (ja) | Nat装置を探知するための方法及び装置 | |
US10097418B2 (en) | Discovering network nodes | |
EP3230886A1 (en) | Operating system fingerprint detection | |
US9686311B2 (en) | Interdicting undesired service | |
KR101687811B1 (ko) | ARP_Probe 패킷을 이용한 Agent 방식의 ARP 스푸핑 탐지 방법 | |
CN116723020A (zh) | 网络服务模拟方法、装置、电子设备及存储介质 | |
US10015179B2 (en) | Interrogating malware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |