具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明实施例中,通过判断IP数据包中的TTL(Time To Live,生存时间)是否在可信范围内,第一层过滤掉伪造IP数据包;进一步的,通过建立至少包含真实的源IP地址和实际TTL数值的TTL对照记录信息,以及更新该TTL对照记录信息,保证IP对应的TTL数值的准确性,以利用该表排除伪造源IP的行为,从而实现不管是基于TCP协议的IP数据包,还是基于UDP协议的IP数据包,都能以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击。应当理解的是:在一种实现下,TTL对照记录信息为TTL对照表。
如图1所示,为IP数据包的包头结构示意图,其中有一个TTL字段,即Time to Live字段,主要是表示其生存的周期。IP数据包在网络传输过程中,TTL字段的数值每经过一次转发,自动作减一处理,如果在该TTL数值到0的时候还没有到达目的地址,则该IP数据包会被路由器或网关设备等抛弃。
一般操作系统的发包的初始TTL数值为32、64、128、255等,具体的默认数值和操作系统类型有关,通常是固定的,例如:Windows 95系统的初始TTL数值为32;Linux 2.6kernel系统的初始TTL数值为64;Windows98系统的初始TTL数值为128;Windows XP系统的初始TTL数值为128;Solaris 2.6系统的初始TTL数值为255等等。而一个数据包从发起主机的网络经由路由器或网关设备到目的主机的网络的路由跳数通常是一定的。即使黑客伪造TTL数据,从黑客网络到目的主机的跳数变化和被伪造的网络(真实主机所在的网络)到目的主机的跳数变化通常是不一样的,利用这个特性构建一个至少包含IP源地址和实际TTL的TTL对照表,判断一个数据包的跳数变化是否符合这张TTL对照表,从而推算出是否是伪造的IP源地址。需要说明的是:这里的实际TTL即发起主机发出的数据包途径当前设备时的其中TTL字段的数值。
参见图2,为本发明实施例提供的一种伪造(虚假)IP数据包的处理原理示意图,如图2所示:
主机101的IP地址为IP1,其发出的IP数据包的初始TTL数值为TTLa,经过m跳,到达网关设备103,该IP数据包的当前TTL数值即实际TTL数值为TTLat,可见该IP数据包经过的跳数m=TTLat-TTLa;
主机102的IP地址为IP2,其发出的IP数据包的初始TTL数值为TTLb,经过n跳,到达网关设备103,该IP数据包的实际TTL数值TTLbt,可见该IP数据包经过的跳数n=TTLbt-TTLb;
网关设备103上设有TTL对照表,包含途径IP地址(经过网关设备103的源IP地址)、该IP数据包到达该网关设备103的实际TTL数值(或路由跳数)等主要信息。需要说明的是:该TTL对照表中存储的信息都是真实主机相关的信息;如图2所示,该对照表中至少存储有IP1和TTLat之间的对应关系;
关于网关设备103上初始的对照表如何建立,在一种实现下,对于真实IP的数据包,可以根据其完成的TCP三次握手得到的TTL(进行计算并)建立对照表,后面将详细介绍。应当理解的是:这里的网关设备也可以是安全检测设备或防火墙;
网关设备103,用于当接收到IP数据包时,根据该IP包的源IP地址查找TTL对照表,当该IP包的TTL数值与该TTL对照表不符合时,则可以怀疑其为伪造IP,可以对其进行防范。
参见图3,为本发明实施例提供的TTL对照记录表中记录的数据结构示意图,如图3所示,该TTL对照表包括如下字段:
“源IP地址”字段表示的是途径当前设备的IP数据包中的源IP地址;
“实际TTL”字段表示该IP数据包实际到达当前设备所记录的TTL数值;
“探测标记”字段表示是否最近已经对源探测过,例如:当设置为1时,表示已经探测过;当设置为0时,表示未进行探测过;
优选的,该对照表的数据结构进一步包括:“初始TTL”字段表示根据估算其操作系统的类型而填写的初始TTL;
“跳数”字段,则表示实际TTL和初始TTL两者之差。
为了便于维护表,节省或有效利用表的存储空间,该对照表的数据结构还可以进一步包括:
“老化记时”字段表示该主动探测是否已经老化,例如:当老化记时为非0时,例如:3600s,则表示该探测未老化;当老化记时为0时,则表示该探测老化;
“创建时间”字段表示该表项的创建时间;
以及,优选的,该对照表的数据结构也可以进一步包括:“有效标记”字段,表示该纪录是否有效,例如:当设置为1时,表示为有效记录;当设置为0时,表示无效记录,可以根据“有效标记”的实际值,将有效标记为0的记录删掉,以节省存储空间;需要说明的是:当默认该TTL对照表中所有的记录都有效时,该对照表的数据结构可以不包括该字段;
为了方便理解,例举下表所示:
IP源地址 |
创建时间 |
初始TTL |
实际TTL |
跳数 |
有效标记 |
探测标记 |
老化记时 |
16.23.21.4 |
2007-02-13 |
64 |
53 |
11 |
1 |
1 |
3600s |
210.21.52.3 |
2007-03-13 |
128 |
106 |
22 |
1 |
0 |
2478s |
23.42.11.32 |
2007-04-21 |
255 |
240 |
15 |
1 |
0 |
0s |
表(一)
下面结合图4、图5来详细介绍,本发明实施例中是如何建立初始的TTL对照表,以及如何更新TTL对照表。
参见图4,为本发明实施例提供的建立和/或更新TTL对照表的流程图,应当理解的是:该方法可以应用于网关设备、防火墙、路由器等设备上,以及,应当理解的是:更新TTL对照表,包括增加、删除、修改该TTL对照表中的记录,该方法包括如下步骤:
步骤201、从接收的IP数据包中,提取得到真实的IP地址和TTL数值;例如,可以是从成功完成TCP三次握手的IP数据包,例如:ack包中,获得其源IP地址和TTL数值,该源IP地址和相应的TTL数值为真实的源IP地址和TTL数值;
步骤202、根据获得的源IP地址和TTL数值,对TTL对照表进行更新;具体的,当建立初始的TTL对照表时,根据获得的源IP地址和TTL数值建立相应的记录,对于其他字段相应的内容,例如:探测标记,设为0表示最近没有进行过源探测;并且,根据估算其操作系统的类型填写初始TTL,需要说明的是:一般internet上的主机的路由跳数为10到30跳,故从所有初始值中选择比当前实际TTL值大且相对最小的初始TTL值作为该IP数据包的初始TTL;例如:如果当前实际TTL值为112,则初始TTL值是两个可能的初始值128和255中较小的一个,即128。
当预先存在有TTL对照表时,根据获得的源IP地址查找该TTL对照表,当存在相应的记录时,比较获得的TTL数值与相应记录中的实际TTL数值是否一致,当不一致时,则使用获得的TTL数值更新相应的实际TTL字段的内容。
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立连接。如果设备A和设备B完成了三次握手,则设备B可以从设备A发送的ack包中提取得到真实的源IP地址以及相应的TTL数值。
参见图5,为本发明实施例提供的一种根据TCP三次握手得到真实的源IP地址和TTL数值的交互流程图,应用于包括设备A、设备B的网络系统下,需要说明的是:本发明实施例的伪造IP数据包的处理方案可以实现于设备B中,介绍了如何从成功完成TCP三次握手的IP数据包中获得其源IP地址和TTL数值的过程,包括如下步骤:
步骤2010、建立连接时,设备A向设备B发送syn包,其中携带有seq=x的标记;
步骤2011、设备B收到syn包后,确认设备A的SYN(ack seq=x+1),同时自己也发送一个SYN包(seq=y),即返回携带seq=y:x+1标记的syn-ack包给设备A;
需要说明的是:设备B返回携带seq=y:x+1的syn-ack包给设备A,如果该IP地址不是伪造的地址,设备B将可以接收到携带seq=y+1标记的ACK包;如果是伪造的,则可能接到一个reset报文或者是没有应答,据此可以检测设备A的真伪。
步骤2012-2013、真实的设备A收到设备B的syn-ack包,向设备B发送携带seq=y+1标记的ACK包(ack seq=y+1),设备B接收到该ACK包后,从该ACK包中提取得到真实的源IP地址和相应的TTL数值;
此包发送完毕,设备A和设备B建立起了连接。即完成三次握手,设备A与设备B开始传送数据。
参见图6,为本发明实施例提供的一种伪造IP数据包的处理方法的流程图,如图6所示,包括如下步骤:
步骤S301、接收待处理的IP数据包,其中该IP数据包中包含TTL生存时间数值;
步骤S302、判断该IP数据包中的TTL数值是否在可信范围;
具体的,可以针对不同的TTL初始值,设置相应的实际TTL的估算范围,例如:对于TTL初始值=32,则相应的实际TTL的估算范围为2-22;同理,对于TTL初始值=64,则相应的实际TTL的估算范围为34-54;对于TTL初始值=128,则相应的实际TTL的估算范围为98-118;对于TTL初始值=255,则相应的实际TTL的估算范围为225-245。需要说明的是:这里的估算范围即可以理解为可信范围。
TTL数值的可信范围可以包括:2-22、34-54、98-118、225-245中的至少一种。
步骤S303、当该IP数据包中的TTL数值不在可信范围内时,将所述IP数据包丢弃;
需要说明的是:还可以将该IP数据包中的源IP地址设置于黑名单中,这样以后接收到IP包,就可以根据其IP地址判断是否在黑名单中,从而确定其是否是虚假IP。
步骤S304、当该IP数据包中的TTL数值在可信范围内时,根据该IP数据包中的源IP地址,查找得到相应的TTL对照记录信息;
步骤S305、当相应记录中的实际TTL与该IP数据包的TTL不一致,且确定已有效探测过时,将该IP数据包丢弃。
需要说明的是:当查找得到的相应记录中的探测标记表示已经探测过,则确定已有效探测过;
如果TTL对照记录中进一步包括老化记,则当相应记录中的探测标记表示已经探测过,且老化记时表示该探测未老化时,确定已有效探测过。
本发明实施例提供的一种伪造IP数据包的处理方法,进一步包括:当相应记录中的实际TTL与该IP数据包的TTL不一致,且确定未有效探测过时,向与源IP地址对应的设备发送探测包,在接收到回应的数据包后,根据探测的结果至少更新探测标记。
需要说明的是:当查找得到的相应记录中的探测标记表示未进行探测过,则确定未有效探测过;
如果TTL对照记录中进一步包括老化记,则当相应记录中的探测标记表示已经探测过,且老化记时表示该探测已老化时,确定未有效探测过。
本发明实施例中通过判断IP数据包的TTL是否在可信范围内,第一层过滤掉伪造IP数据包;进一步的,通过利用TTL对照记录信息进一步的过滤掉伪造IP数据包,从而实现不管是基于TCP协议的IP数据包,还是基于UDP协议的IP数据包,都能以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击。
下面结合图7具体介绍本发明实施例一的伪造IP数据包的处理方法的具体流程,需要说明的是:该方法不仅适用于防火墙、DDOS类网关系统和旁路的类似IDS检测系统,还适用于路由器,包括:
步骤401、接收待处理的IP数据包;
具体的,这里接收的IP数据包,即途径当前设备的、到达目的设备的IP数据包。IP数据包的包头有一个TTL字段,该字段中的内容用于指定每个IP数据包的最大生存时间,即实际TTL数值。例如:中间路由器接收经过本机的IP数据包。
步骤402、判断该IP数据包中的TTL生存时间数值是否在可信范围,如果该IP数据包中的TTL数值在可信范围内,则执行步骤404;如果不在可信范围内,则执行步骤403;
具体的,一般跳数为10到30跳之内,因此TTL有一个估算范围,如果收到的IP数据包的TTL不在这个范围,则该IP数据包为异常包。针对TTL初始值分别为32、64、128、255,实际TTL的估算范围分别为2-22,34-54,98-118,225-245;或者,为了尽量的避免将有效的IP数据包作为伪造IP数据包丢弃,以跳数在30跳以内进行计算,可以设置另一估算范围,针对TTL初始值分别为32、64、128、255,实际TTL的估算范围分别为2-31,34-63,98-127,225-254;需要说明的是:这里的估算范围可以理解为可信范围。步骤403、将该IP数据包丢弃。
需要说明的是:本发明实施例中通过步骤402、403将第一批可疑的IP数据包筛选掉;
步骤404、根据该IP数据包的源IP查询TTL对照表,如果存在相应记录,则执行步骤405;如果不存在记录,则执行步骤408;
步骤405、判断该待处理的IP数据包中的TTL数值与上述相应记录中的实际TTL字段的内容是否一致,如果该IP数据包的TTL和表中的实际TTL一致,则认为其是真实的,并执行步骤408;如果该IP数据包的TTL和表中的实际TTL不一致,即怀疑是伪造IP,则执行步骤406,以确认其身份以证明到底是否虚假;
步骤406、判断是否已经源探测过且有效(即判断是否已有效探测过),如果已有效探测过,则认为该TTL数据与表不符合,继续执行步骤407;如果没有探测过或探测记录老化了,则执行步骤408、步骤409;需要说明的是:步骤408和步骤409之间没有必然的先后顺序;可以是先执行步骤408,再执行步骤409,也可以并行处理。
这里的,判断是否已有效探测过的步骤具体可以是:根据上述相应记录中的探测标记判断是否已有效探测过,或者根据上述相应记录中的探测标记和老化记时判断是否已有效探测过。
具体的,当相应记录中的探测标记为1且老化记时为非0时,表示已有效探测过,(当不涉及老化记时时,当探测标记为1即可确定已有效探测过),则执行步骤407;当相应记录中的探测标记为0时,表示没进行探测过,或者,当相应记录中的探测标记为1且老化记时为0时,表示探测记录老化了,则执行步骤408、步骤409;
具体的,当不明确IP包来源主机是否真实IP,可以先放行即执行步骤408,等待对TTL对照表进行更新后,再对后续包进行检测。
步骤407、将该IP数据包抛弃,可选的,还可以报警;
需要说明的是:本发明实施例中通过上述步骤进一步的,将伪造IP数据包筛选掉;实现以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击。
步骤408、将该IP数据包先放行;具体的,还可以将探测标记重新设为未探测;
步骤409、主动向源节点设备进行探测;
具体的,启动源探测单元向源节点设备发ICMP包探测;
步骤410、接收到回应的数据包后,提取出其TTL数值;
步骤411、判断前述提取得到的TTL数值与表中的相应记录的实际TTL字段的内容是否相同,当相同时,则执行步骤412;反之,执行步骤413;
步骤412、更新探测标记或老化记时,作为下次判断的依据;
具体的,如果在步骤406中,相应记录中的探测标记为0时,表示没进行探测过;则本步骤中,将探测标记记录为表示已经探测过,例如:设置为1;如果在步骤406中,相应记录中的探测标记为1且老化记时为0时,表示探测记录老化了;则本步骤中,将老化记时进行更新,更新后的老化记时表示该探测未老化,例如:设置为3600秒。
步骤413、更新相应的TTL,并且更新探测标记或老化记时,作为下次判断的依据;
具体的,更新TTL对照表中相应记录中的实际TTL字段的内容为提取得到的TTL数值,即回包中的TTL数值是真实客观的实际TTL数值;
如果在步骤406中,相应记录中的探测标记为0时,表示没进行探测过;则本步骤中,将探测标记记录为表示已经探测过,例如:设置为1;如果在步骤406中,相应记录中的探测标记为1且老化记时为0时,表示探测记录老化了;则本步骤中,将老化记时进行更新,例如:设置为3600s。实现了及时更新TTL对照表,以保证其中的数据真实。
本发明实施例中通过判断IP数据包的TTL是否在可信范围内,第一层过滤掉伪造IP数据包;进一步的,通过利用TTL对照记录信息进一步的过滤掉伪造IP数据包,从而实现不管是基于TCP协议的IP数据包,还是基于UDP协议的IP数据包,都能以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击。
下面结合图8具体介绍本发明实施例的一种伪造IP数据包的处理装置的内部结构,如图8所示,该处理装置用于接收待处理的IP数据包,并在检测到伪造IP数据包时,将其丢弃,主要包括如下单元:
TTL学习单元502,用于管理和维护TTL对照记录信息,在一种实现方式下,该TTL对照记录信息为TTL对照记录表,该TTL对照表至少包括源IP地址、实际TTL、探测标记之间的对应关系信息,具体的,即建立初始的TTL对照表以及后续的对TTL对照表中的记录进行更新(包括:增加、删除、修改记录),一种实现方式下,这里的对应关系信息中的源IP地址、实际TTL可以是TTL学习单元502从三次握手成功的IP数据包中提取得到的;
TTL检测单元501,用于接收到IP数据包后,判断该IP数据包中的TTL是否在可信范围内,当不在可信范围内时,将该IP数据包丢弃,其中该IP数据包为第一层过滤的伪造IP数据包;当在该可信范围内时,根据该IP数据包的源IP地址查找TTL学习单元502所维护的TTL对照记录信息(一种实现下,即TTL对照表),当相应记录中的实际TTL与该IP数据包的TTL数值不一致,且确定已有效探测过时,将该IP数据包丢弃,其中该IP数据包为第二层过滤的伪造IP数据包,换句话说,该IP数据包为经过证实确认为伪造的IP数据包。需要说明的是:可以根据相应记录中的探测标记,可选的,还可以结合老化记时,判断是否已有效探测过;
当相应记录中的实际TTL与该IP数据包的TTL不一致,且确定未有效探测过(未探测过或探测记录老化)时,TTL检测单元501可以将该IP数据包先放行,由源探测单元503进行主动探测,即该处理装置进一步包括:
源探测单元503,用于在TTL检测单元501确定未有效探测过(即未探测过或探测记录老化)时,向源IP地址对应的起源设备发送探测信息(具体可以是发送ICMP数据包),并接收与该探测信息对应的回应数据包,并输出给TTL学习单元502;
相应的,TTL学习单元502为第一TTL学习单元,用于从该回应数据包中提取得到其中的TTL数值,当该TTL数值与所维护的TTL对照表中的相应记录中的实际TTL相同时,更新探测标记或老化记时;当该TTL与所维护的TTL对照表中的相应记录中的TTL不同时,用该提取得到的TTL更新TTL对照表中相应的实际TTL,并且更新探测标记或老化记时,其中,所述更新后的探测标记表示已探测过。
以及,TTL学习单元502为第二TTL学习单元,用于根据与源节点设备的三次握手,从三次握手成功的数据中提取IP地址和相应的TTL数值;根据所述提取得到的IP地址和TTL数值,建立或更新相应的TTL对照记录信息。针对基于TCP协议的IP数据包,应当理解的是:当在传输IP数据包前,IP数据包的起源设备与处理装置(例如:网关设备、路由器或防火墙等)需要进行三次握手,处理装置可以从三次握手成功的数据(例如:ACK包)中提取IP地址和相应的TTL数值;根据所述提取得到的IP地址和TTL数值,建立或更新相应的TTL对照记录信息。
以及,TTL检测单元501,进一步用于根据该IP数据包中的源IP地址,确定不存在相应的TTL对照记录信息时,将该IP数据包发送下一节点设备;
或者,TTL检测单元501,进一步用于当相应记录中的实际TTL与该IP数据包的TTL一致时,将该IP数据包发送下一节点设备;
或者,TTL检测单元501,进一步用于当相应记录中的实际TTL与该IP数据包的TTL不一致,且确定未有效探测过时,将该IP数据包发送下一节点设备。
通过本发明实施例的伪造IP数据包的处理装置,一方面实现对不确定是伪造的IP数据包先放行,以及对基于TCP协议的IP数据包,从三次握手成功的数据中获得真实的源IP地址与TTL的数值,和/或,从源探测返回的回应包中获得真实的IP与TTL的数值作为下次判断伪造IP数据包的依据;另一方面,通过判断IP数据包的TTL是否在可信范围内,第一层过滤掉伪造IP数据包;进一步的,通过TCP三次握手和源探测得到包含真实的源IP地址与TTL数值的TTL对照表,利用该TTL对照表进一步的过滤掉伪造IP数据包,从而实现以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击;
图10为本发明实施例的伪造IP数据包的处理方案应用于防火墙的网络组网示意图,其中,受保护的服务器702通过防火墙701接入Internet;本发明实施例的伪造IP数据包处理装置实现在防火墙701中,当节点设备703、704发出IP数据包时,防火墙701采用本发明实施例方案检测获得的IP数据包,过滤掉伪造的IP数据包。需要说明的是:本发明实施例方案还可以应用于DDoS类网关系统和旁路的类似IDS(Intrusion Detection Systems,入侵检测系统)的检测系统、路由器等。
综上所述,本发明实施例中,一方面实现对不确定是伪造的IP数据包先放行,以及对基于TCP协议的IP数据包,从三次握手成功的数据中获得真实的IP与TTL的数值,和/或,从源探测返回的回应包中获得真实的源IP地址与TTL的数值作为下次判断伪造IP数据包的依据;另一方面,通过判断IP数据包的TTL是否在可信范围内,第一层过滤掉伪造IP数据包;进一步的,通过TCP三次握手和源探测得到包含真实的源IP地址与TTL数值的TTL对照表,利用该TTL对照表进一步的过滤掉伪造IP数据包,从而实现以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击;
类似随机UDP包攻击、UDP flood等常见攻击基本都采用伪造源IP的方式进行,利用该本发明实施例方案可以实现以更大的概率来发现(丢弃)伪造IP数据包,以保证设备尽可能少的受到伪造IP数据包的攻击。
本发明实施例不仅适用于防火墙、DDoS类网关系统和旁路的类似IDS检测系统,还适用于在路由器上使用。
本领域普通技术人员可以理解实现上述实施例方法中伪造(虚假)IP数据包的处理方法的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于网管系统或呼叫中心的可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。