掌桥专利:专业的专利平台
掌桥专利
首页

控制消息的传输方法、装置和设备

文献发布时间:2023-06-19 10:14:56


控制消息的传输方法、装置和设备

技术领域

本公开涉及网络安全技术领域,尤其涉及一种控制消息的传输方法、装置和设备。

背景技术

目前,网络中的安全性应用或设备,例如,防火墙,允许一些已知协议的控制消息的传输,例如,因特网控制报文协议(Internet Control Message Protocol,简称ICMP)消息,并且,控制消息中存在数据区,可用来存放数据,如果控制消息中的数据区存放了恶意数据,将给网络设备带来威胁。

针对利用控制消息的这种通信,现有技术在网络设备的操作系统内核中增加了对控制消息的检测机制,通过检测控制消息中的数据区是否存在预设的字符串,来判断控制消息是否携带了恶意数据,从而发起报警,将数据区用“0”置换。

然而,这种检测机制的防止控制消息中携带恶意数据的效果不好。

发明内容

为了解决上述技术问题,本公开提供了一种控制消息的传输方法、装置和设备。

第一方面,本公开提供一种控制消息的传输方法,包括:

接收第一设备发送的第一控制消息,其中,所述第一控制消息包括头部和数据区,所述头部包含第二设备的地址;

确定所述第一控制消息的消息类型,若所述第一控制消息为第一类消息,修改所述第一控制消息的数据区中的第一数据,得到第二控制消息,其中,所述第一类消息用于检测所述第一设备和第二设备之间通信链路是否连通;

向所述第二设备发送所述第二控制消息。

可选的,所述确定所述第一控制消息的消息类型,包括:

根据所述第一控制消息的头部中包含的消息类型标识确定所述第一控制消息的消息类型。

可选的,所述第一控制消息为因特网控制报文协议ICMP消息;

所述根据所述第一控制消息的头部中包含的消息类型标识确定所述第一控制消息的消息类型,包括:

若第一控制消息的头部中包含的消息类型标识为0或8,确定所述第一控制消息为第一类消息。

可选的,所述第一控制消息为因特网包探索器PING消息。

可选的,所述修改所述第一控制消息的数据区中的数据,得到修改后的第二控制消息,包括:

获取所述数据区中的第一数据的长度;

使用第二数据替换所述第一数据,得到第二控制消息,其中,所述第二数据的长度与所述第一数据的长度相同。

可选的,所述头部包含第一校验数据;

所述修改所述第一控制消息中的第一数据,得到修改后的第二控制消息之后,还包括:

根据所述第二控制消息的校验内容,确定第二校验数据,其中,所述第二控制消息的校验内容为所述第二控制消息去除所述第一校验数据后的其余内容;

用所述第二校验数据替换所述第二控制消息中的第一校验数据,得到第三控制消息;

相应的,所述向所述第二设备发送所述第二控制消息,包括:

向所述第二设备发送所述第三控制消息。

第二方面,本公开提供一种控制消息的传输装置,包括:

接收模块,用于接收第一设备发送的第一控制消息,其中,所述第一控制消息包括头部和数据区,所述头部包含第二设备的地址;

确定模块,用于确定所述第一控制消息的消息类型,其中,所述第一类消息用于检测所述第一设备和第二设备之间通信链路是否连通;

修改模块,用于若所述第一控制消息为第一类消息,修改所述第一控制消息的数据区中的第一数据,得到第二控制消息;

发送模块,用于向所述第二设备发送所述第二控制消息。

可选的,所述确定模块具体用于:

根据所述第一控制消息的头部中包含的消息类型标识确定所述第一控制消息的消息类型。

可选的,所述第一控制消息为因特网控制报文协议ICMP消息;

所述确定模块具体用于:

若第一控制消息的头部中包含的消息类型标识为0或8,确定所述第一控制消息为第一类消息。

可选的,所述第一控制消息为因特网包探索器PING消息。

可选的,所述修改模块具体用于:

获取所述数据区中的第一数据的长度;

使用第二数据替换所述第一数据,得到第二控制消息,其中,所述第二数据的长度与所述第一数据的长度相同。

可选的,所述头部包含第一校验数据;

确定模块还用于:根据所述第二控制消息的校验内容,确定第二校验数据,其中,所述第二控制消息的校验内容为在所述第二控制消息中将所述第一校验数据用0置换后得到的;

所述装置还包括:

替换模块,用于用所述第二校验数据替换所述第二控制消息中的第一校验数据,得到第三控制消息;

相应的,所述发送模块具体用于:

向所述第二设备发送所述第三控制消息。

第三方面,本公开提供一种控制消息的传输设备,包括:

存储器,用于存储处理器可执行指令的存储器;

处理器,用于在计算机程序被执行时,实现如上述第一方面所述的方法。

第四方面,本公开提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面所述的控制消息的传输方法。

本公开实施例提供的技术方案与现有技术相比具有如下优点:

第一设备向第二设备发送第一控制消息,第一控制消息包括头部和数据区,由边缘设备接收到该第一控制消息,边缘设备确定第一控制消息的消息类型,若第一控制消息为用于检测第一设备和第二设备之间通信链路是否连通的第一类消息,对数据区中的第一数据进行修改,得到第二控制消息,从而对于防止控制消息中的恶意数据的传输具有更好的效果。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开提供的一种网络系统架构示意图;

图2为本公开实施例提供的一种控制消息的传输方法的流程示意图;

图3A为本公开提供的一种控制消息的格式示意图;

图3B为本公开提供的一种ICMP消息的格式示意图;

图4为本公开实施例提供的另一种控制消息的传输方法的流程示意图;

图5为本公开实施例提供的再一种控制消息的传输方法的流程示意图;

图6为本公开实施例提供的一种控制消息的传输装置的结构示意图;

图7为本公开实施例提供的一种控制消息的传输设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,但是控制消息不传输实际的用户数据,对用户数据的传递起着重要的作用,例如,ICMP消息。

鉴于控制消息的上述性质,现有的网络中的安全性应用或设备,例如,防火墙,允许一些已知协议的控制消息的传输。但是,如ICMP消息中的回显请求(Echo request)消息以及回显应答(Echo Reply)消息,是用于检测两个设备之间通信链路是否连通的控制消息,其存在数据区,该数据区可用来存放数据。这样的控制消息,容易被恶意利用,通过在控制消息中携带恶意数据,实现恶意数据的传输(利用控制消息建立隧道进行通信),即用要传输的数据替换控制消息中默认传输的数据,然后发送给接收方,这将给网络设备带来威胁。

在一些场景中,可以在网络设备的操作系统内核中增加了对控制消息的检测机制,通过检测控制消息中的数据区是否存在预设的字符串,来判断控制消息是否携带了恶意数据,从而发起报警,同时将数据区用“0”置换。

然而,这种检测机制中预设的字符串无法涵盖所有的恶意数据的特征,其防止控制消息中携带恶意数据的效果不好。

图1为本公开提供的一种网络系统架构示意图,如图1所示,网络系统包含设备101、边缘设备102和设备103。

其中,设备101和边缘设备102位于第一网络区,设备103位于第二网络区。第一网络区可以为部署的专网等受保护的网络,第一网络区中包括一个或多个设备101,第二网络区为除第一网络区的外部网络,第二网络区可以为互联网,第二网络区中包括一个或多个设备103,设备101可以为第一网络区中的任一网元。设备101通过边缘设备102与设备103连接,设备101与设备103之间的通信需通过边缘设备102,边缘设备102可以为防火墙设备、网关、交换机、路由器或者服务器等连入第一网络区的设备,对此本公开不做限制,可以理解,对于第一网络区内的多个设备101之间的通信,可以不经过边缘设备102,也可以经过边缘设备102,对此本公开不做限制。

设备101向设备103发送控制消息,或者设备103向设备101发送控制消息都要经过边缘设备102,本公开在边缘设备102中部署控制消息的传输模块,对经过边缘设备102传输的控制消息进行检测,对用于检测两个设备之间通信链路是否连通的控制消息中的数据区中携带的数据进行修改,从而防止控制消息中的恶意数据的传输。

下面以具体的实施例来说明本公开的技术方案和本公开的技术方案如何解决如上技术问题。

图2为本公开实施例提供的一种控制消息的传输方法的流程示意图,如图2所示,本实施例的方法由图1中所示的边缘设备102执行,边缘设备可以是防火墙设备,网关,交换机,路由器等,在此本公开不做限制,本实施例的方法如下:

S201、接收第一设备发送的第一控制消息。

其中,第一控制消息包括头部和数据区,头部包含第二设备的地址。

由于边缘设备位于第一网络区的边缘,跨网络区域的消息的通信需要经过边缘设备,则第一设备向第二设备发送第一控制消息,实际上是边缘设备接收到该第一控制消息。其中,发送给边缘设备所在网络(如图1所示系统中的第一网络区域)的消息,以及从边缘设备所在网络中的设备发送出去的消息,都要通过边缘设备进行处理和/或转发,本实施例对经过边缘设备的控制消息均进行检测处理,则第一设备与第二设备位于不同的网络区,第一设备可以为图1所示的设备101或者设备103,若第一设备为设备101,相应的,第二设备为设备103,若第一设备为设备103,相应的,第二设备为设备101。

图3A为本公开提供的一种控制消息的格式示意图,如图3所示,控制消息包括头部301和数据区302,其中,头部301包括但不限于:目的地址,目的地址为控制消息要送达的地址,例如,第一控制消息的头部包含第二设备的地址,则第一控制消息的目的地址为第二设备的地址,即第一控制消息为发送给第二设备的控制消息。可选的,目的地址可以为IP地址。头部301还可以包括控制消息所属的控制协议规定的格式中的控制消息信息,头部301不携带用户数据,例如,头部301还可以包括校验位,类型标识等。数据区302为控制消息的数据,可以为用户随机定义的,也可以为跟控制消息有关的具有含义的数据。

可选的,第一控制消息为ICMP消息。

S202、确定第一控制消息的消息类型。

第一控制消息可以为不同协议格式的控制消息,也就是多种消息类型,其中,一种协议格式的控制消息中也可以包括多种消息类型。从而需要确定第一控制消息的消息类型。

一种可能的实现方式中,通过第一控制消息的格式,确定第一控制消息的消息类型。可以理解,不同协议的控制消息其格式也不同,则可以通过第一控制消息的格式确定第一控制消息的消息类型。

另一种可能的实现方式中,根据第一控制消息的头部中包含的消息类型标识确定第一控制消息的消息类型。

第一控制消息的头部中包含消息类型标识,可以通过消息类型标识,确定第一控制消息的消息类型。

例如,第一控制消息为ICMP消息,图3B为本公开提供的一种ICMP消息的格式示意图,图3B是在图3A的基础上,进一步地,如图3B所示,ICMP消息包括头部和数据区,其中,头部包括地址头部和ICMP头部,地址头部包括目的地址,例如,以IP协议传输ICMP消息,地址可以为IP头部。ICMP头部包括:类型标识(Type)、代码(Code)、校验和(Checksum)、标识符(Identifier)、序列号(Sequence Number)。数据区的数据也可以叫做有效载荷,数据区的数据并不用来传输用户数据。图3B中ICMP消息上方所示的数字表示第几位字符,例如,0-7位字符表示类型标识,类型标识占一个字节。对于数据区的数据的长度并不限定。

S203、判断第一控制消息是否为第一类消息。

其中,第一类消息用于检测第一设备和第二设备之间通信链路是否连通。

第一类消息用于检测第一设备和第二设备之间通信链路是否连通,数据区中即使携带有数据也并不是用户数据,第一类消息通过第一设备向第二设备以预定的格式发送报文,第二设备以预定的格式向第一设备发送响应,则第一设备收到响应消息即可确定第一设备和第二设备之间至少存在一条通信链路,其二者之间通信链路是连通的。

可选的,第一控制消息为ICMP消息,ICMP中规定了消息类型标识为“8”表示回显请求Echo request消息,“0”表示回显应答Echo Reply消息,可以判断ICMP消息的消息类型标识是否为0或8,若第一控制消息的头部中包含的消息类型标识为0或8,确定第一控制消息为第一类消息。相应的,若第一控制消息的头部中包含的消息类型标识不是0且也不是8,确定第一控制消息不是第一类消息。

进一步地,第一控制消息为因特网包探索器(Packet Internet Groper,简称PING)消息,即第一控制消息为PING请求消息或PING应答消息。

若第一控制消息为第一类消息,则继续执行S204。若第一控制消息不是第一类消息,则按照现有的方式处理,例如,可以不对第一控制消息进行处理,直接向第二设备发送第一控制消息。

S204、修改第一控制消息的数据区中的第一数据,得到第二控制消息。

可以对第一控制消息的数据区中的第一数据进行修改,得到第二控制消息。例如,可以将第一控制消息的数据区的数据都使用“0”替换,也可以预设字符串,将第一控制消息的数据区的数据使用预设的字符串进行替换,还可以设置字节单元,使用多个字节单元对数据区的数据进行替换。

可选的,可以分别获取第一控制消息的头部和数据区,将数据区中的第一数据丢弃,重新构造数据区的第二数据,将第二数据拼接到头部之后,得到第二控制消息。

S205、向第二设备发送第二控制消息。

将修改后的第二控制消息发送给第二设备。

本实施例,第一设备向第二设备发送第一控制消息,第一控制消息包括头部和数据区,由边缘设备接收到该第一控制消息,边缘设备确定第一控制消息的消息类型,若第一控制消息为用于检测第一设备和第二设备之间通信链路是否连通的第一类消息,对数据区中的第一数据进行修改,得到第二控制消息,从而对于防止控制消息中的恶意数据的传输具有更好的效果。且本实施例的方法针对确定为第一类消息以后,无需对数据区的数据内容进行检测,无论其数据区中的数据是否为恶意数据,均直接修改数据区中的第一数据,使得本实施例的方法易实现,可行性较高,处理时间短,保证了第一控制消息的传输效率。

另外,现有技术中需要修改第一网络区中的所有设备的操作系统内核,而有些操作系统内核无法修改,例如windows系统,本实施例的方法由位于第一网络区的边缘设备执行,无需更改第一网络区中的所有设备的操作系统内核,第一网络区中的设备的数据相比于边缘设备的数量要多,与现有技术相比,本实施例提供的方法易实现,适用的范围更广,可行性较高,部署的成本低。

图4为本公开实施例提供的另一种控制消息的传输方法的流程示意图,图4是在图2所示实施例的基础上,进一步地,如图4所示,S204可以包括S2041和S2042:

S2041、获取数据区中的第一数据的长度。

数据区不用来传输用户数据,但是数据区中数据的长度可以用来验证第一设备的最大传输单元,即第一设备发送的一个数据包中的数据的最大长度,该长度也可以用字节数来衡量。因此在修改数据区中的数据时,需要先获取第一数据的长度。

S2042、使用第二数据替换第一数据,得到第二控制消息。

其中,第二数据的长度与第一数据的长度相同。

根据第一数据的长度,得到与第一数据长度相同的第二数据,使用第二数据替换第一数据,得到第二控制消息。

其中,第二数据可以为由一个字符或字符串通过重复等规律组合而成的。可选的,第二数据可以由“0”或“1”重复得到,例如,第二数据由“1”重复得到,第一数据为“0100011111111101”,则第二数据为“1111111111111111”。也可以由预设的字节单元重复得到,例如预设字节单元为“10000001”,第一数据为“0100011111111101”其长度为2个字节,则将字节单元重复2次,可以得到第二数据,即第二数据为“1000000110000001”。

本实施例,通过获取数据区中的第一数据的长度,使用与第一数据的长度相同的第二数据替换第一数据,得到第二控制消息,从而使得第二控制消息中携带的数据区中数据的长度与第一控制消息相同,对第一控制消息的修改并不改变其数据区中数据的长度,防止控制消息中的恶意数据的传输的同时,使得数据区中的数据的长度能够验证第一设备的最大传输单元。

图5为本公开实施例提供的再一种控制消息的传输方法的流程示意图,图5是在图2或图4所示实施例的基础上,进一步地,如图5所示,头部包含第一校验数据,S204之后可以包括S204a和S204b,相应的,S205包括S205a:

S204a、根据第二控制消息的校验内容,确定第二校验数据。

其中,第二控制消息的校验内容为在所述第二控制消息中将所述第一校验数据用0置换后得到的。

第一控制消息的头部中如果包含第一校验数据,则在修改其数据区的第一数据得到第二控制消息以后,其校验数据也应该相应进行更改,否则第二设备收到第二控制消息以后,使用校验数据进行校验时可能会出现错误。因此,在得到第二控制消息以后,根据第二控制消息的校验内容,确定第二校验数据。

可选的,第一控制消息的头部可以包括地址头部和控制协议头部,其中,控制协议头部包括第一校验数据。例如,对于ICMP消息,如图3B所示,其第一校验数据为校验和,可以将第二控制消息中的第一校验数据全部置为“0”,第二控制消息中的其他内容不变,得到了第二控制消息的校验内容,根据校验内容确定第二校验数据。对于地址头部中的数据可以不进行改动,可以理解,若地址头部中包含校验数据,可以不对该校验数据进行修改。

S204b、用第二校验数据替换第二控制消息中的第一校验数据,得到第三控制消息。

S205a、向第二设备发送第三控制消息。

本实施例,根据第二控制消息的校验内容,确定第二校验数据,用第二校验数据替换第二控制消息中的第一校验数据,得到第三控制消息,向第二设备发送第三控制消息,使得第二设备使用校验数据校验对第三控制消息进行校验时正确,保证了控制消息的正确传输。

图6为本公开实施例提供的一种控制消息的传输装置的结构示意图,如图6所示,本公开实施例提供的装置包括:

接收模块601,用于接收第一设备发送的第一控制消息,其中,第一控制消息包括头部和数据区,头部包含第二设备的地址;

确定模块602,用于确定第一控制消息的消息类型,其中,第一类消息用于检测第一设备和第二设备之间通信链路是否连通;

修改模块603,用于若第一控制消息为第一类消息,修改第一控制消息的数据区中的第一数据,得到第二控制消息;

发送模块604,用于向第二设备发送第二控制消息。

可选的,确定模块602具体用于:

根据第一控制消息的头部中包含的消息类型标识确定第一控制消息的消息类型。

可选的,第一控制消息为因特网控制报文协议ICMP消息;

确定模块602具体用于:

若第一控制消息的头部中包含的消息类型标识为0或8,确定第一控制消息为第一类消息。

可选的,第一控制消息为因特网包探索器PING消息。

可选的,修改模块603具体用于:

获取数据区中的第一数据的长度;

使用第二数据替换第一数据,得到第二控制消息,其中,第二数据的长度与第一数据的长度相同。

可选的,头部包含第一校验数据;

确定模块602还用于:根据第二控制消息的校验内容,确定第二校验数据,其中,第二控制消息的校验内容为在第二控制消息中将第一校验数据用0置换后得到的;

装置还包括:

替换模块,用于用第二校验数据替换第二控制消息中的第一校验数据,得到第三控制消息;

相应的,发送模块604具体用于:

向第二设备发送第三控制消息。

上述实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本公开实施例提供的一种控制消息的传输设备的结构示意图,如图7所示,本公开实施例提供的设备包括:

存储器701,用于存储处理器702可执行指令的存储器;

处理器702,用于在计算机程序被执行时,实现如上述图2、图4或图5任一所示的方法。

上述实施例的设备,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本公开提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如上述图2、图4或图5任一所示的控制消息的传输方法。

上述实施例的计算机可读存储介质,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 控制消息的传输方法、装置和设备
  • 消息中间件消息传输方法、装置、计算机设备和存储介质
技术分类

06120112476741