背景技术
理论上,使用网络地址转换协议(NAT,Network Address Translation)服务器可以让内侧的私网的主机访问公网,同时又对公网隐蔽了私网主机的真实互联网协议(IP,Internet Protocol)地址,NAT服务器外侧的公网用户无法穿越NAT服务器进入私网的主机,从一定程度保证了私网主机的安全性。
但是,在通信技术的实际运用中,NAT服务器外侧的公网用户并非无法穿越NAT服务器进入私网的主机,以基于用户数据报协议(UDP,UserDatagram Protocol)的报文和基于传输控制协议(TCP,Transmission ControlProtocol)的报文为例:
例一:NAT服务器的私网用户,其私网IP地址配置例如是192.168.x.x,但是其域名服务(DNS,Domain Name Server)地址被配置为指向某个公网DNS服务器。在浏览互联网时,这些私网用户的主机就会经常对公网DNS服务器发起DNS查询请求报文,而且也能正确收到公网DNS服务器回复的查询结果如UDP报文。前面已提及,NAT服务器是不支持非私网用户从公网主动访问私网的,但事实上,DNS查询的回复结果却能轻松穿越防火墙进入内侧。这就表明NAT完全可能让UDP报文从外面反向穿越进来的。可以想象如果从NAT内侧对外发送了某种基于UDP的服务请求报文,就相当于在NAT防火墙上开了一扇小小的门,这时外侧如果构造一个合适的UDP报文伪装成之前那个请求的回复报文向内发送,防火墙没有足够的依据判断这个报文是否真的是一个合法的回复报文,就可能允许其反向穿越NAT进入内侧受保护区域。
例二:而针对TCP报文,外侧的TCP新建连接的同步序列编号(SYN,Synchronize Sequence Numbers)请求报文不可能反向的通过这种NAT(除非为其做目的地址转换),而确认编号(ACK,Acknowledgement Number)和建立连接之后的TCP数据报文是可以源源不断被转发进私网用户。所以私网用户才能在NAT防火墙保护下正常上网浏览而不用担心NAT服务器外侧的公网用户会访问到我们的机器。所以对TCP的一些特殊标志位进行精心构造后的数据包也是可以反向穿越NAT服务器的。
从以上的两个例子可知,非正常数据包对NAT服务器的反向穿越会给网络安全带来很多影响。例如UDP洪流(UDP Flooding)。
另一方面,我们也需要正常的数据包能进入私网,因此,就要检验数据包是否正常,现有技术中运用了NAT映射表技术来实现这样的检验。
在NAT服务器内存空间中维护着一张NAT映射表。内网某台机器用自己的[IP:TCP/UDP端口]向外部发起一个连接(TCP)或发送一个报文(UDP)时,防火墙会将其IP地址转换成外网全局(Global)地址,通常会另外为其分配空闲的端口号作为转换后的源端口,这时会在NAT映射表中增加“内网IP:协议端口号”与“转换后Global IP:协议端口号”对应关系的一条记录。
比如,以H.323终端通话过程为例,如果phone1主叫,由phone1发起UDP报文,可以送达Phone2的目的UDP端口,随后phone2发回的UDP报文也就可以反向穿越NAT送达phone1,此时目的端口就是之前phone1——phone2媒体报文的源端口(呼叫建立阶段已经协商好传输媒体流所用端口号,之后在本次通话过程中就会保持不变),防火墙上已经维持了一个相应的NAT记录了。
但是如果phone2主叫,phone2发起的UDP报文抵达防火墙时,防火墙里还没有相应的NAT映射表对应,所以phone1无法收到这个报文。这样可能会出现单边呼叫能通的情况。
现有技术对此问题的解决方式是:在NAT映射表中记录对方的IP地址或对应的数据包协议,如果回来的数据包符合NAT映射表中的其他信息而IP地址对应不上,回来的数据包是不会被NAT转发的,或者,如果回来的数据包符合NAT映射表中的其他信息而协议对应不上,回来的数据包是不会被NAT转发的。
但是,在黑客攻击过程中,多数是利用肉鸡发起的攻击,所以构造符合NAT映射表中的IP地址或协议是很容易做到的。所以只对IP地址或NAT数据的协议做限制的局限性还是很大的。
发明内容
本发明实施例提供了一种数据包的安全保护方法、设备及系统,使用本发明实施例提供的技术方案,能够增强数据包的安全性判断结果的可靠性。
本发明实施例的目的是通过以下技术方案实现的:
本发明实施例提供一种数据包的安全保护方法,包括:
接收外网发送的数据包;
如果网络地址转换协议NAT映射表中存在所述数据包的特性数据,则对所述数据包的生存时间(TTL,Time To Live)值是否在合法区间内进行判断;
如果所述数据包的生存时间值在合法区间内,则放行所述数据包。
本发明实施例还提供一种安全设备,包括:
接收单元,用于接收外网发送的数据包;
判断单元,用于根据网络地址转换协议NAT映射表对所述数据包的特性数据进行判断;如果所述NAT映射表中存在所述数据包的特性数据,则对所述数据包的生存时间值是否在合法区间内进行判断;
执行单元,用于如果所述判断单元判断所述数据包的生存时间值在合法区间内,放行所述数据包。
本发明实施例还提供一种通信系统,包括:主机,用于接收数据包并进行处理;
安全设备,用于接收外网发送的数据包,根据网络地址转换协议NAT映射表对所述数据包的特性数据进行判断,如果所述NAT映射表中存在所述数据包的特性数据,则对所述数据包的生存时间值是否在合法区间内进行判断,如果所述数据包的生存时间值在合法区间内,则放行所述数据包给所述主机。
从本发明内容可知,由于NAT防火墙设备不仅仅判断特性数据,还增加了对TTL值的合法性的判断,由于TTL值自身的特点,即具有一定的数据范围,即使是操作系统的改变,也是有章可循,可以较强地鉴别出数据包是否安全,能够增强对反向穿越NAT服务器的数据包的安全性判断结果的可靠性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例中一种数据包的安全保护方法包括:
步骤101:通信设备如NAT防火墙设备接收外网发送的数据包。
步骤102:NAT防火墙设备判断网络地址转换协议NAT映射表中是否存在所述数据包的特性数据。如果所述NAT映射表中存在所述数据包的特性数据,NAT防火墙设备则对所述数据包的TTL值是否在合法区间内进行判断。
步骤103:如果所述数据包的TTL值在合法区间内,NAT防火墙设备则放行所述数据包。
另一种情况如图2所示,
步骤1011与步骤101相同。
步骤1021:如果所述NAT映射表中不存在所述数据包的特性数据,NAT防火墙设备则在NAT映射表中记录所述数据包的特性数据和生存时间值,进入步骤1031;
步骤1031:NAT防火墙设备放行所述数据包到内网。
另一种情况如图3所示,
步骤1012与步骤101相同,步骤1022与步骤102相同,
当步骤1022中判断述数据包的TTL值不在合法区间内,执行步骤1032:
步骤1032:NAT防火墙设备则对是否是因操作系统的变化而导致所述数据包的TTL值不在合法区间内进行判断,如果是,执行步骤1042,否则执行步骤1052;
步骤1042:如果是因操作系统的变化而导致所述数据包的TTL值不在合法区间内,NAT防火墙设备则放行所述数据包;
步骤1052:如果不是因操作系统的变化而导致所述数据包的TTL值不在合法区间内,则丢弃所述数据包。
上述方法中,优先的合法区间可以为:生存时间原始值-阈值~TTL原始值+阈值。
具体而言,在TTL值合法区间的检测中,用户可以自己定义一个阈值,假如定义的阈值是3,那么TTL合法区间可以表达为TTL原始值-3~TTL原始值+3,之所以设置这个阈值,是因为在真实的网络环境中,由于实时网络环境的变化会引起数据包经过的路由器数量发生变化(每经过一个路由器,路由器至少将TTL值减小1),进而引起TTL值的变化,但是这个变化的值也不会太大,一般来说,大多数数据包至多经过三个路由器,所以提供这个阈值。当然,这只是其中一种选择,本发明不构成对阈值选择的限定,阈值的选择可以根据具体情况而定。如果当TTL值不在合法区间时,就要检测是不是因为操作系统的变化而引起TTL值的变化。例如,网络设备、交换机或防火墙的TTL原始值是255,Windows XP的TTL的原始值是128,Unix的TTL原始值是64等等。
以Windows XP为例,当内网向外网发出一个数据包,外网会向内网发出一个响应的数据包,假设这个响应的数据包的TTL原始值是128,由于要经过3个路由器,这个响应的数据包才能到达内网,那么,当它到达内网的NAT防火墙设备时,它的TTL值就是125,这个时候,由于NAT映射表中之前没有这个数据包的特性数据,如发送响应的数据包的外网主机的IP地址,或外网主机与内网主机间的通信协议等,则在NAT映射表中记录下这些特性数据等,并记录下TTL值125,如果下次再次有外网的数据包通过,如果外网的数据包的特性数据在NAT表中有记录,则比对TTL值,如果TTL值是124,这个124是在合法区间“TTL原始值-3~TTL原始值+3”内的,满足的则放行该数据包到内网,如果TTL值是61,比对的结果是不是在合法区间内,则判断是不是因为操作系统的变化而导致了TTL值跨度较大的变化,如是因为外网主机的操作系统不再是Windows XP,而是Unix,那么就放行,如果不是由于因为操作系统的变化而导致了TTL值跨度较大的变化,则丢弃数据包。
从上述数据包的安全保护方法的实施例可知,由于NAT防火墙设备不仅仅判断特性数据,还增加了对TTL值的合法性的判断,由于TTL值自身的特点,即具有一定的数据范围,即使是操作系统的改变,也是有章可循,可以较强地鉴别出数据包是否安全,能够增强对反向穿越NAT服务器的数据包的安全性判断结果的可靠性。
如图4所示,本发明实施例中一种安全设备包括以下单元:包括:
接收单元201,用于接收外网发送的数据包;
判断单元202,用于根据网络地址转换协议NAT映射表对所述数据包的特性数据进行判断;如果所述NAT映射表中存在所述数据包的特性数据,则对所述数据包的生存时间TTL值是否在合法区间内进行判断;
执行单元203,用于如果所述判断单元202判断所述数据包的生存时间值在合法区间内,则放行所述数据包。
进一步,安全设备还可以包括记录单元,
所述记录单元用于当判断单元202的判断结果是所述NAT映射表中不存在所述数据包的特性数据时,在NAT映射表中记录所述数据包的特性数据和生存时间值,
此时,所述执行单元203还用于在记录单元在NAT映射表中记录所述数据包的特性数据和生存时间值后,放行所述数据包。
进一步,如果所述判断单元202判断所述数据包的生存时间值不在合法区间内,则
所述判断单元202还用于对是否是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内进行判断;
所述执行单元203还用于当所述判断单元202判断是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内时,放行所述数据包;当所述判断单元202判断不是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内时,丢弃所述数据包。
进一步,所述判断单元202具体用于以“生存时间原始值-3~生存时间原始值+3”为合法区间,对所述数据包的生存时间值是否在合法区间内进行判断。
进一步,所述判断单元202具体用于以“TTL原始值-阈值~TTL原始值+阈值”为合法区间,对所述数据包的TTL值是否在合法区间内进行判断。
从上述安全设备的实施例可知,由于NAT防火墙设备不仅仅判断特性数据,还增加了对TTL值的合法性的判断,由于TTL值自身的特点,即具有一定的数据范围,即使是操作系统的改变,也是有章可循,可以较强地鉴别出数据包是否安全,能够增强对反向穿越NAT服务器的数据包的安全性判断结果的可靠性。
如图5所示,本发明实施例还提供一种通信系统,包括:
包括:主机301,安全设备302;
所述主机301用于接收所述安全设备302放行的数据包并进行处理;
所述安全设备302用于接收外网发送的数据包,根据网络地址转换协议NAT映射表对所述数据包的特性数据进行判断,如果所述NAT映射表中存在所述数据包的特性数据,则对所述数据包的生存时间TTL值是否在合法区间内进行判断,如果所述数据包的生存时间值在合法区间内,则放行所述数据包给所述主机301。
另外,所述安全设备302用于当判断所述数据包的生存时间值不在合法区间时,则对是否是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内进行判断;如果是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内,则放行所述数据包给所述主机301;如果不是因操作系统的变化而导致所述数据包的生存时间值不在合法区间内,则丢弃所述数据包。
从上述通信系统的实施例可知,由于NAT防火墙设备不仅仅判断特性数据,还增加了对TTL值的合法性的判断,由于TTL值自身的特点,即具有一定的数据范围,即使是操作系统的改变,也是有章可循,可以较强地鉴别出数据包是否安全,能够增强对反向穿越NAT服务器的数据包的安全性判断结果的可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,所述存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种数据包的安全保护方法、设备及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。