CN111786953B - 一种安全防护方法、装置和安全管理设备 - Google Patents

一种安全防护方法、装置和安全管理设备 Download PDF

Info

Publication number
CN111786953B
CN111786953B CN202010484727.7A CN202010484727A CN111786953B CN 111786953 B CN111786953 B CN 111786953B CN 202010484727 A CN202010484727 A CN 202010484727A CN 111786953 B CN111786953 B CN 111786953B
Authority
CN
China
Prior art keywords
length
mqtt
tcp
determining
data
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.)
Active
Application number
CN202010484727.7A
Other languages
English (en)
Other versions
CN111786953A (zh
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.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
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 Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202010484727.7A priority Critical patent/CN111786953B/zh
Publication of CN111786953A publication Critical patent/CN111786953A/zh
Application granted granted Critical
Publication of CN111786953B publication Critical patent/CN111786953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • H04L63/205Network architectures or network communication protocols for network security for managing network security; network security policies in general involving negotiation or determination of the one or more network security mechanisms to be used, e.g. by negotiation between the client and the server or between peers or by selection according to the capabilities of the entities involved
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

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

Abstract

本申请提供的安全防护方法,应用于安全管理设备,所述方法包括:确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;确定本次迭代所使用的所述TCP数据部分中的参照字节;基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;若是,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。本申请提供的安全管理方法、装置和安全管理设备,可准确地识别出MQTT设备。

Description

一种安全防护方法、装置和安全管理设备
技术领域
本申请涉及网络安全领域,尤其涉及一种安全防护方法、装置和安全管理设备。
背景技术
目前,随着网络技术的迅速发展,如何进行网络安全防护成为关注的重点。而消息队列遥测传输MQTT(Message Queuing Telemetry Transport,简称MQTT)协议作为一种广为流行的物联网协议,其使用范围也在不断扩大。因此,安全管理设备必须具备对MQTT设备进行安全管理的能力。
安全管理设备在对MQTT设备进行安全管理时,首先,必须先识别MQTT设备,进而针对该MQTT设备制定特定管理策略,以对其进行安全管理。目前,用户常基于MQTT设备的特点配置识别条件,进而使安全管理设备基于用户配置的识别条件识别MQTT设备。例如,基于特定的发包模式来识别MQTT设备。
但是,不同的MQTT设备的特点也不完全相同,例如,一MQTT设备的发包模式与其他MQTT设备特定的发包模式不同。这样,当基于用户配置的识别条件识别MQTT设备时,常因识别条件不充分造成误判断。
发明内容
有鉴于此,本申请提供一种安全防护方法、装置和安全管理设备,以解决现有方法不能准确识别MQTT设备的问题。
本申请第一方面提供一种安全防护方法,所述方法应用于安全管理设备,所述方法包括:
确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;
确定本次迭代所使用的所述TCP数据部分中的参照字节;
基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;
根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;
若是,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
本申请第二方面提供一种安全管理装置,所述装置应用于安全管理设备,所述装置包括确定模块、判断模块和管理模块,其中,
所述确定模块,用于确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;
所述确定模块,还用于确定本次迭代所使用的所述TCP数据部分中的参照字节;
所述确定模块,还用于基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;
所述判断模块,用于根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;
所述管理模块,用于在所述判断模块判断所述TCP协议报文为MQTT协议报文时,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
本申请第三方面提供一种计算机存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本申请提供的任一安全防护方法的步骤。
本申请第四方面提供一种安全管理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请提供的任一安全防护方法的步骤。
本申请提供的安全防护方法、装置和安全管理设备,通过确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度,并确定本次迭代所使用的所述TCP数据部分中的参照字节,进而基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度,从而根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文,并在判断所述TCP协议报文是否为MQTT协议报文,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。这样,基于TCP数据部分真实的数据长度和确定出的符合MQTT协议标准的报文长度来识别TCP协议报文是否为MQTT协议报文,进而基于识别结果来识别MQTT设备,可准确地识别出MQTT设备。
附图说明
图1为本申请提供的安全防护方法实施例一的流程图;
图2为TCP协议报文的结构示意图;
图3为本申请提供的安全防护方法实施例二的流程图;
图4为本申请一示例性实施例示出的安全防护方法的流程图;
图5为本申请一示例性实施例示出的安全防护装置所在安全管理设备的硬件结构图;
图6为本申请提供的安全防护装置实施例一的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请提供一种安全防护方法、装置和安全管理设备,以解决现有方法不能准确识别MQTT设备的问题。
在对本申请提供的安全防护方法、装置和安全管理设备进行介绍之前,下面先对MQTT协议标准作简单的描述:
具体的,MQTT协议是工作在TCP/IP协议簇上的协议。因此,一个MQTT协议报文必然是一个TCP协议报文。
MQTT数据包存储在TCP数据部分。一个MQTT数据包由固定头、可变头和消息体组成。其中,固定头存在于所有MQTT数据包中,表示数据包的类型和数据包的分组类标识,表明数据包大小。需要说明的是,固定头有特定的格式,下面对固定头的格式进行说明。
例如,表1为一示例性实施例示出的固定头的格式的示意图。参照表1,具体的,固定头由数据包类型、数据包的分组类标识和剩余长度组成。其中,剩余长度指的是可变头和消息体的总的长度。
进一步地,参照表1,固定头的第一个字节指定数据包类型(第一个字节的高4位指定数据包类型)和数据包的分组类标识(第一个字节的低4位指定数据包的分组类标识)。
继续参照表1,从固定头的第2个字节开始为剩余长度字段,最少一个字节,最多四个字节。表2为一示例性实施例示出的剩余长度字段中的每个字节的示意图,参照表2,剩余长度字段的每个字节的低7位用于标识剩余长度,最高位是标识位,用来说明是否有后续字节来存放剩余长度。其中,标识为0时代表没有后续字节用于存放剩余长度,标识为1代表后续还有一个字节用于存放剩余长度,即后一个字节中存放的数据仍然是剩余长度。
表1固定头的格式
Figure BDA0002518632000000051
表2剩余长度字段中的每个字节
Figure BDA0002518632000000052
下面给出一个具体的例子,用以说明如何基于剩余长度字段确定数据包大小:
例如,一实施例中,一个MQTT数据包的固定头中的第一个字节是0x20,该字节用于指定数据包的类型和数据包的分组类标识。其第二字节是0x82,转换为二进制为10000010,其最高位为1,代表后续还有一个字节用于存放剩余长度。进一步地,例如,第三字节是0x02,转换为二进制为0000 0010,其最高位为0,代表没有后续字节用于存放剩余长度,即剩余长度字段到本字节为止。即本例中,固定头中的第2个字节和第3个字节构成剩余长度字段,剩余长度字段占用了两个字节。
剩余长度的计算方式为:将第二字节的低七位作为数字的低七位、以及将第三字节的低七位作为数字的高七位,得到二进制数000 0010 000 0010,该二进制数字表示的十进制值为258,其中258=1*2^1+1*2^8,该十进制值即为剩余长度,即剩余长度为258字节。此时,确定该MQTT数据包的包长为261个字节,其中261=258(剩余长度值)+1(第一个字节)+2(剩余长度字段所占的字节数)。
以上对MQTT数据包的固定头的格式进行了介绍。本申请中,基于固定头特定的格式来识别MQTT数据包。
下面给出几个具体的实施例,用以详细介绍本申请的技术方案,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请提供的安全防护方法实施例一的流程图。本实施例提供的方法,可以应用于安全管理设备。参照图1,本实施例提供的方法,可以包括:
S101、确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度。
具体的,指定端口是用户根据实际需要配置的。本实施例中,不对指定端口进行限定,例如,一实施例中,指定端口可以为1883端口。
需要说明的是,图2为TCP协议报文的结构示意图。参照图2,TCP协议报文由IP首部、TCP首部和TCP数据部分三个部分组成。
进一步地,本步骤的具体实现过程,可以包括:
(1)对所述TCP协议报文进行解析,获取所述TCP协议报文总的长度、IP首部长度、TCP首部长度。
具体的,IP首部中保存有TCP协议报文总的长度和IP首部长度。其中,IP首部中的“Total Length”字段即为TCP协议报文总的长度,IP首部中的“Header Length”字段即为IP首部长度。相应地,TCP首部中的“Header Length”字段即为TCP首部长度。
本步骤中,通过对TCP协议报文进行解析,即可获取到该TCP协议报文总的长度、IP首部长度、TCP首部长度。
例如,一实施例中,获取到TCP协议报文总的长度为44个字节、IP首部长度为20个字节、TCP首部长度为20个字节。
(2)根据所述TCP协议报文总的长度、所述IP首部长度和所述TCP首部长度,计算所述数据长度。
具体的,数据长度=所述TCP协议报文总的长度-所述IP首部的长度-所述TCP首部的长度。
结合上面的例子,本步骤中,即可确定该TCP协议报文的TCP数据部分的数据长度为4个字节。
S102、确定本次迭代所使用的所述TCP数据部分中的参照字节。
本步骤中,将所述TCP数据部分中的第2字节至第5字节确定为参照字节。
需要说明的是,若TCP数据部分包含的字节数(即TCP数据部分的数据长度)大于1个、且少于5个,此时,可以将第2个字节至最后一个字节确定为参照字节。此外,若TCP数据部分包含的字节数少于两个,此时,可直接确定该TCP协议报文不是MQTT协议报文(由于一个MQTT数据包至少包含两个字节,因此,当数据长度小于2个字节时,直接确定该TCP协议报文不是MQTT协议报文)。
可选地,一实施例中,步骤S102之前,所述方法还可以包括:
判断所述数据长度是否小于2;
若否,执行确定本次迭代所使用的所述TCP数据部分中的参照字节的步骤。
若是,确定所述TCP协议报文不是MQTT协议报文。
需要说明的是,在确定本次迭代所使用的所述TCP数据部分中的参照字节之前,通过判断数据长度是否小于2,并在判断数据长度小于2时,直接确定所述TCP协议报文不是MQTT协议报文,否则才执行确定本次迭代所使用的所述TCP数据部分中的参照字节的步骤。这样,可提高效率。
S103、基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度。
需要说明的是,参照字节代表的剩余长度指的是参照字节中符合MQTT协议标准的剩余长度字段中存放的剩余长度。此外,符合MQTT协议标准的报文长度指的是符合MQTT协议标准的一个MQTT数据包的包长,其等于剩余长度、用于存放剩余长度的剩余长度字段所占的字节数、以及1的和值。
本申请中,先假设TCP数据包中包含符合MQTT协议标准的MQTT数据包。进一步,可基于MQTT协议标准获取假定的第一个MQTT数据包的包长,进而进行长度比较,并基于比较结果确定假设是否成立。
具体实现时,可先基于MQTT协议标准,从参照字节中找到剩余长度字段,进而基于剩余长度字段确定参照字节代表的剩余长度,并基于剩余长度字段所占的字节数和所述剩余长度,确定符合MQTT协议标准的报文长度。
可选地,一实施例中,所述确定所述参照字节代表的剩余长度之前,所述方法还包括:
(1)判断所述参照字节的最高位是否均为1。
(2)若是,确定所述TCP协议报文不是MQTT协议报文。
(3)若否,执行确定所述参照字节代表的剩余长度的步骤。
参见前面的介绍,MQTT协议标准规定剩余长度字段最多允许4个字节。本申请中,通过确定参照字节的最高位是否均为1,主要是为了确定参照字节中是否包含剩余长度字段,即当参照字节的最高位均为1时(当参照字节的最高位均为1时,表明用于存放剩余长度的字段从第2个字节开始,到第5个字节还没有结束,不符合MQTT协议标准规定的剩余长度字段最多允许4个字节),确定参照字节中不包含剩余长度字段,确定所述TCP协议报文不是MQTT协议报文。
下面给出几个具体的例子,用以详细说明本步骤的具体实现过程:
例如,一实施例中,TCP数据部分的第二字节为0x02,转换为二进制为00000010,其最高位是0,此时,确定参照字节中包含剩余长度字段,且剩余长度字段到本字节为止,即剩余长度字段占1个字节。
再例如,另一实施例中,TCP数据部分中的第二字节为十六进制数81,转换为二进制为10000001,其最高位是1,代表第三字节也是用于存放剩余长度的字节。进一步地,例如,第三字节为十六进制数03,转换为二进制为00000011,其最高位为0,代表没有后续字节用于存放剩余长度值。此时,确定这两个字节构成剩余长度字段,剩余长度字段占2个字节。
再例如,再一实施例中,TCP数据部分中的第二个字节为81,最高为1;第三个字节为82,最高位为1;第四字节为81,最高位为1;第五字节为81,最高位仍然为1。即参照字节的最高位均为1,此时,确定参照字节中不包含剩余长度字段,确定所述TCP协议报文不是MQTT协议报文。
下面结合上面的例子,简单说明一下报文长度的确定方法:
例如,在第一个例子中,第二个字节为0x02,该字节的最高为0,表征剩余长度字段到该字节为止,该字节即为剩余长度字段。进一步地,该字节的低7位的值为2,代表其存放的剩余长度为2。此时,确定符合MQTT协议标准的报文长度为4(其中,4=1+2+1)。
再例如,在第二个例子中,TCP数据部分中的第二字节为81,第三个字节为03,这两个字节构成剩余长度字段,且这两个字节存放的剩余长度为385,其中,385=3*2^7+1。此时,确定符合MQTT协议标准的报文长度为388(其中,388=2+385+1)。
S104、根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文。
具体的,一实施例中,可在数据长度和已确定出的报文长度相等时判断所述TCP协议报文是MQTT协议报文,否则确定所述TCP协议报文不是MQTT协议报文。
例如,结合步骤S103中的第一个例子,已确定出的第一个MQTT数据包的包长为4,此时,确定该TCP协议报文是MQTT协议报文。
再例如,结合步骤S103中的第二个例子,已确定出的第一个MQTT数据包的包长为388,此时,确定该TCP协议报文不是MQTT协议报文。
S105、若是,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
具体的,安全管理设备在对设备进行安全防护时,设备类型不同,所采用的安全管理策略也不同。本实施例中,在识别出MQTT设备后,可根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
需要说明的是,一实施例中,可对指定端口接收到的任一个TCP报文进行判断,判断其是否为MQTT协议报文。
当然,另一实施例中,可对每一个新建会话的第一个TCP协议报文进行判断,判断其是否为MQTT协议报文。本申请中,不对此进行限定。
相应地,当对每一个新建会话的第一个TCP协议报文进行判断时,若判断其是MQTT协议报文后,则将该TCP协议报文携带的源IP地址记录到第一快转表中。相应的,第一快转表中还记录有老化时间(一般是十几分钟到几十分钟),后续,在老化时间未结束时,针对与第一快转表中记录的源IP地址匹配的TCP协议报文,不再进入判断,在老化时间结束后,再次进行判断。
此外,当对每一个新建会话的第一个TCP协议报文进行判断时,若判断其不是MQTT协议报文,一实施例中,可以在连续接收到500个该会话的报文后,再次进行判断。另一实施例中,可将该TCP协议报文携带的源IP地址记录到第二快转表中,进而在第二快转表中记录的老化时间结束后,再次进行判断。
需要说明的是,安全管理设备在识别出MQTT设备后,可将本设备上的日志功能、防替换功能等安全管理功能应用于该MQTT设备上,以提高该MQTT设备的安全性。
本实施例提供的安全防护方法,通过确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度,并确定本次迭代所使用的所述TCP数据部分中的参照字节,进而基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度,从而根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文,并在判断所述TCP协议报文是否为MQTT协议报文,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。这样,基于TCP数据部分真实的数据长度和确定出的符合MQTT协议标准的报文长度来识别TCP协议报文是否为MQTT协议报文,进而基于识别结果来识别MQTT设备,可准确地识别出MQTT设备。
图3为本申请提供的安全防护方法实施例二的流程图,参照图3,在上述实施例的基础上,本实施例提供的方法,步骤S104可以包括:
S301、计算已确定出的各报文长度的长度和值。
具体的,首次迭代时,长度和值等于确定出的第一个报文长度。结合上面的例子,例如,在第一个例子中,长度和值等于4。
S302、在所述数据长度等于所述长度和值时,确定所述TCP协议报文是MQTT协议报文。
具体的,在数据长度等于长度和值时,说明假定的第一个MQTT数据包为真实的MQTT数据包(即该TCP数据部分包含一个MQTT数据包,需要说明的是,TCP数据部分可以包含多个MQTT数据包)。此时,确定TCP协议报文是MQTT协议报文。
例如,结合前面的例子,数据长度为4个字节,在步骤S103中的第一个例子中,假定的第一个MQTT数据包的包长为4(即已确定出的报文长度为4),长度和值为4个字节,此时,确定TCP协议报文为MQTT协议报文。
S303、在所述数据长度小于所述长度和值时,确定所述TCP协议报文不是MQTT协议报文。
具体的,在数据长度小于长度和值时,说明假定的第一MQTT数据包不是真实的MQTT数据包。此时,确定TCP协议报文不是MQTT协议报文。
例如,结合前面的例子,数据长度为4个字节,在步骤S103中的第二个例子中,确定报文长度为388个字节,此时,确定假定的第一个MQTT数据包不是真实的MQTT数据包,确定TCP协议报文不是MQTT协议报文。
S304、在所述数据长度大于所述长度和值时,更新所述参照字节,并继续执行报文长度的确定过程。
具体的,当数据长度大于长度和值时,说明假定的第一个MQTT数据包之后可能还存在其他MQTT数据包,此时,可跳转到长度和值之后,并把长度和值之后的下一个字节作为下一个MQTT数据包开头,更新所述参照字节,并继续执行报文长度的确定过程。
具体的,本步骤中,可将参照字节更新为所述TCP数据部分中的第n+2个字节到第n+5个字节。其中,n为上述长度和值。
例如,一实施例中,确定数据长度为10,确定第一个报文长度为4,数据长度大于已确定出的报文长度的长度和值(此时,长度和值等于已确定出的第一个报文长度,等于4),此时,从第5个字节开始,可以认为是第二个MQTT数据包。进一步,此时,可将TCP数据部分中的第6个字节到第9个字节确定为参照字节,再次执行报文长度的确定过程。
具体实现时,在将第6个字节到第9个字节确定为参照字节之后,可进一步判断参照字节是否包含剩余长度字段,进而在确定参照字节包含剩余长度字段时,基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度。
例如,一实施例中,第6个字节为0000 0100,此时,确定第6个字节是剩余长度字段,且剩余长度字段到该字节为止(即确定参照字节包含剩余长度字段)。进一步地,确定第6个字节存放的剩余长度为4,确定第二个符合MQTT协议标准的报文长度为6。
进一步地,确定已确定出的各报文长度的长度和值为10,等于数据长度,此时,确定该TCP协议报文是MQTT协议报文(该TCP协议报文包含两个MQTT数据包)。
本实施例提供的方法,通过计算已确定出的各报文长度的长度和值,并在所述数据长度等于所述长度和值时,确定所述TCP协议报文是MQTT协议报文,在所述数据长度小于所述长度和值时,确定所述TCP协议报文不是MQTT协议报文,以及在所述数据长度大于所述长度和值时,更新所述参照字节,并继续执行报文长度的确定过程。这样,不仅可准确的识别出包含一个MQTT数据包的MQTT协议报文,还能准确的识别出包含多个MQTT数据包的MQTT协议报文,可准确的识别一个TCP协议报文是否为MQTT协议报文,准确的识别MQTT设备。
下面给出一个更具体的实施例,用以详细说明本申请的具体实现过程。图4为本申请一示例性实施例示出的安全防护方法的流程图。参照图4,本实施例提供的安全防护方法,可以包括:
S401、对指定端口接收到的TCP协议报文进行解析,获取所述TCP协议报文总的长度、IP首部长度、TCP首部长度。
S402、根据所述TCP协议报文总的长度、所述IP首部长度、所述TCP首部长度,计算所述TCP协议报文的TCP数据部分的数据长度。
S403、将所述数据长度作为目标长度。
S404、判断所述目标长度是否小于2,若是,执行步骤S405,若否,执行步骤S406。
参见前面的描述,一个MQTT数据包的包长至少为2个字节,本实施例中,在确定参照字节之前,通过判断目标长度是否小于2,并在判断目标长度小于2时,直接确定所述TCP协议报文不是MQTT协议报文,否则才执行确定参照字节的步骤。这样,可提高效率。
S405、确定所述TCP协议报文不是MQTT协议报文。
S406、将所述TCP数据部分中的第i个字节到第i+3个字节确定为参照字节;其中,所述i的初始值为2。
S407、判断所述参照字节的最高位是否均为1,若是,执行步骤S405、若否,执行步骤S408。
S408、基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度。
S409、计算已确定出的各报文长度的长度和值n。
S410、判断所述n是否等于所述数据长度,若所述n等于所述数据长度,执行步骤S411,若所述n大于所述数据长度,执行步骤S405,若所述n小于所述数据长度,执行步骤S412。
S411、确定所述TCP协议报文是MQTT协议报文。
S412、令i=n+2,并将所述数据长度和所述n的差值作为目标长度,再次执行步骤S404。
以上各步骤的具体实现过程和实现原理可以参见前面实施例中的描述,此处不再赘述。
下面给出一个更具体的例子,用以详细说明本实施例提供的方案:
例如,一实施例中,步骤S402中,确定数据长度为8。第一次迭代时,将第2个字节到第5个字节确定为参照字节。进一步地,在步骤S407中,经判断,确定参照字节的最高位不均为1,即参照字节中包含剩余长度字段,例如,剩余长度字段占第2个字节和第3个字节,即剩余长度字段占2个字节,且剩余长度字段存放的剩余长度为6。此时,第1个字节到第6个字节之间的数据为假定的第一个MQTT数据包,且该MQTT数据包的包长为6。步骤S408中,确定报文长度为6。步骤S409中,确定长度和值n为6。
进一步地,在步骤S410中,判断长度和值n小于数据长度(8),此时,执行步骤S412,令i=8,并将2作为目标长度,再次执行步骤S404。
此时,进入第二次迭代,在第二次迭代中,将第8个到第11个字节确定为参照字节(本例子,TCP数据部分共包含8个字节,因此,直接将第8个字节确定为参照字节,并继续判断该参照字节的最高位是否均为1(即判断该参照字节是否包含剩余长度字段)。
例如,经判断,确定第8个字节是剩余长度字段,其最高位为0(剩余长度字段到本字节结束),且该剩余长度字段存放的剩余长度为1,此时,确定假定的第二MQTT数据包的包长为3,即在步骤S408中,确定符合MQTT协议标准的报文长度为3。
进一步地,计算得到已确定的所有报文长度的长度和值为9,其中9=6+3,经判断,长度和值大于数据长度,确定该TCP协议报文不是MQTT协议报文。
本实施例提供的方法,可准确的识别出MQTT协议报文,进而基于报文识别结果准确的识别出MQTT设备,以对MQTT设备进行安全管理,提高其安全性。
与前述安全防护方法的实施例相对应,本申请还提供了安全防护装置的实施例。
本申请安全防护装置的实施例可以应用在安全管理设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请一示例性实施例示出的安全防护装置所在安全管理设备的硬件结构图,除了图5所示的存储器510、处理器520、内存530和网络接口540之外,实施例中装置所在的安全防护设备通常根据该安全防护装置的实际功能,还可以包括其他硬件,对此不再赘述。
图6为本申请提供的安全防护装置实施例一的结构示意图。请参照图6,本实施例提供的装置,应用于安全管理设备,所述装置包括确定模块610、判断模块620和处理模块630;其中,
所述确定模块610,用于确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;
所述确定模块610,还用于确定本次迭代所使用的所述TCP数据部分中的参照字节;
所述确定模块610,还用于基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;
所述判断模块620,用于根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;
所述处理模块630,用于在所述判断模块判断所述TCP协议报文是MQTT协议报文时,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
本实施例的装置,可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,所述根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文,包括:
计算已确定出的各报文长度的长度和值;
在所述数据长度等于所述长度和值时,确定所述TCP协议报文是MQTT协议报文;
在所述数据长度小于所述长度和值时,确定所述TCP协议报文不是MQTT协议报文;
在所述数据长度大于所述长度和值时,更新所述参照字节,并继续执行包长的确定过程。
进一步地,所述参照字节为所述TCP数据部分中的第n+2字节至第n+5字节;其中,所述n为所述长度和值,且所述n的初始值为0。
进一步地,所述判断模块620,还用于在确定所述参照字节代表的剩余长度之前,判断所述参照字节的最高位是否均为1;
所述处理模块630,用于在所述判断模块620判断所述参照字节的最高位均为1时,确定所述TCP协议报文不是MQTT协议报文;
所述确定模块610,用于在所述判断模块620判断所述参照字节的最高位不均为1时,执行确定所述参照字节代表的剩余长度的步骤。
进一步地,所述确定模块610,具体用于:
对所述TCP协议报文进行解析,获取所述TCP协议报文总的长度、IP首部长度、TCP首部长度;
根据所述TCP协议报文总的长度、所述IP首部长度和所述TCP首部长度,计算所述数据长度。
进一步的,所述指定端口为1883端口。
本申请还提供一种计算机存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本申请提供的任一安全防护方法的步骤。
具体的,适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。
请继续参照图5,本申请还提供一种安全管理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请提供的任一安全防护方法的步骤。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种安全防护方法,其特征在于,所述方法应用于安全管理设备,所述方法包括:
确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;
确定本次迭代所使用的所述TCP数据部分中的参照字节,所述参照字节指能用于计算剩余长度的字节;
基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;
根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;
若是,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文,包括:
在本轮迭代过程中,假设所述TCP数据部分中除已确定出的MQTT数据包之外还包含一个MQTT数据包,并计算该MQTT数据包与所述已确定出的MQTT数据包的报文长度的长度和值;其中:
在所述数据长度等于所述长度和值时,确定所述TCP协议报文是MQTT协议报文;
在所述数据长度小于所述长度和值时,确定所述TCP协议报文不是MQTT协议报文;
在所述数据长度大于所述长度和值时,更新所述参照字节,并继续执行报文长度的确定过程以实现下一轮迭代。
3.根据权利要求2所述的方法,其特征在于,所述参照字节为所述TCP数据部分中的第n+2字节至第n+5字节;其中,所述n为所述长度和值,且所述n的初始值为0。
4.根据权利要求1所述的方法,其特征在于,所述确定所述参照字节代表的剩余长度之前,所述方法还包括:
判断所述参照字节的最高位是否均为1;
若是,确定所述TCP协议报文不是MQTT协议报文;
若否,执行确定所述参照字节代表的剩余长度的步骤。
5.根据权利要求1所述的方法,其特征在于,所述确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度,包括:
对所述TCP协议报文进行解析,获取所述TCP协议报文总的长度、IP首部长度、TCP首部长度;
根据所述TCP协议报文总的长度、所述IP首部长度和所述TCP首部长度,计算所述数据长度。
6.根据权利要求1所述的方法,其特征在于,所述指定端口为1883端口。
7.一种安全防护装置,其特征在于,所述装置应用于安全管理设备,所述装置包括确定模块、判断模块和处理模块;其中,
所述确定模块,用于确定指定端口接收到的TCP协议报文的TCP数据部分的数据长度;
所述确定模块,还用于确定本次迭代所使用的所述TCP数据部分中的参照字节,所述参照字节指能用于计算剩余长度的字节;
所述确定模块,还用于基于MQTT协议标准,确定所述参照字节代表的剩余长度,并根据所述剩余长度确定符合所述MQTT协议标准的报文长度;
所述判断模块,用于根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文;
所述处理模块,用于在所述判断模块判断所述TCP协议报文是MQTT协议报文时,将所述TCP协议报文携带的源IP地址标识的设备确定为MQTT设备,并根据所述MQTT设备对应的安全管理策略对所述MQTT设备进行安全管理。
8.根据权利要求7所述的装置,其特征在于,所述根据所述数据长度和已确定出的报文长度判断所述TCP协议报文是否为MQTT协议报文,包括:
在本轮迭代过程中,假设所述TCP数据部分中除已确定出的MQTT数据包之外还包含一个MQTT数据包,并计算该MQTT数据包与所述已确定出的MQTT数据包的报文长度的长度和值;其中:
在所述数据长度等于所述长度和值时,确定所述TCP协议报文是MQTT协议报文;
在所述数据长度小于所述长度和值时,确定所述TCP协议报文不是MQTT协议报文;
在所述数据长度大于所述长度和值时,更新所述参照字节,并继续执行包长的确定过程以实现下一轮迭代。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一项所述的安全防护方法。
10.一种安全管理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一项所述的安全防护方法。
CN202010484727.7A 2020-06-01 2020-06-01 一种安全防护方法、装置和安全管理设备 Active CN111786953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010484727.7A CN111786953B (zh) 2020-06-01 2020-06-01 一种安全防护方法、装置和安全管理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010484727.7A CN111786953B (zh) 2020-06-01 2020-06-01 一种安全防护方法、装置和安全管理设备

Publications (2)

Publication Number Publication Date
CN111786953A CN111786953A (zh) 2020-10-16
CN111786953B true CN111786953B (zh) 2022-11-01

Family

ID=72754030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010484727.7A Active CN111786953B (zh) 2020-06-01 2020-06-01 一种安全防护方法、装置和安全管理设备

Country Status (1)

Country Link
CN (1) CN111786953B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112910838B (zh) * 2021-01-11 2022-11-22 金卡智能集团股份有限公司 复合协议解析方法、装置、设备、系统和存储介质
CN113746925B (zh) * 2021-09-06 2023-06-09 北京天融信网络安全技术有限公司 一种文件传输行为审计方法、装置、电子设备及存储介质
CN114785603B (zh) * 2022-04-26 2023-06-23 英赛克科技(北京)有限公司 基于mqtt协议的安全防护方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108134801A (zh) * 2018-01-23 2018-06-08 重庆邮电大学 一种基于消息过滤算法的mqtt协议智能家居的识别方法
CN110381023A (zh) * 2019-06-14 2019-10-25 浪潮软件股份有限公司 一种基于mqtt协议的消息存储方法
KR20200043129A (ko) * 2018-10-17 2020-04-27 조선대학교산학협력단 사물 인터넷 환경에서의 mqtt 프로토콜 기반 서버 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6562085B2 (ja) * 2015-11-27 2019-08-21 富士通株式会社 通信装置、通信システム、通信方法、および、通信プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108134801A (zh) * 2018-01-23 2018-06-08 重庆邮电大学 一种基于消息过滤算法的mqtt协议智能家居的识别方法
KR20200043129A (ko) * 2018-10-17 2020-04-27 조선대학교산학협력단 사물 인터넷 환경에서의 mqtt 프로토콜 기반 서버 시스템
CN110381023A (zh) * 2019-06-14 2019-10-25 浪潮软件股份有限公司 一种基于mqtt协议的消息存储方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于消息过滤算法实现MQTT协议智能家居的识别;邱雨等;《现代电子技术》;20180814(第16期);全文 *

Also Published As

Publication number Publication date
CN111786953A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN111786953B (zh) 一种安全防护方法、装置和安全管理设备
CN112491901B (zh) 一种网络流量精细化筛选装置及方法
US6947983B2 (en) Method and system for exploiting likelihood in filter rule enforcement
JP4018701B2 (ja) テンプレートを使用したインターネットプロトコルトンネリング
US20120195208A1 (en) Programmable multifield parser packet
CN103916294A (zh) 协议类型的识别方法和装置
CN105939284B (zh) 报文控制策略的匹配方法及装置
US8365045B2 (en) Flow based data packet processing
CN112511561A (zh) 网络攻击路径确定方法、设备、存储介质及装置
US9807204B2 (en) Optimized message processing
JP2018537921A (ja) Skypeの異なる機能の通信フローに基づく識別方法及び装置
JP4059388B2 (ja) プロトコルデータ単位内のプロトコルパターンの識別装置及び方法
CN104333483A (zh) 互联网应用流量识别方法、系统及识别装置
US8782092B2 (en) Method and apparatus for streaming netflow data analysis
US7177313B2 (en) Method and system for converting ranges into overlapping prefixes for a longest prefix match
CN107682266B (zh) 流表项的匹配方法及装置、计算机可读存储介质
US7975273B2 (en) Fuzzing system and method of distributed computing environment (DCE) remote procedure call (RPC)
CN117857649A (zh) 一种传输控制协议数据包的传输方法及系统
US11245712B2 (en) Method and apparatus for generating virtual malicious traffic template for terminal group including device infected with malicious code
CN112351002B (zh) 一种报文检测方法、装置及设备
CN106598747A (zh) 网络数据包的并行处理方法及装置
CN113765728B (zh) 网络探测方法、装置、设备及存储介质
KR20050052636A (ko) 인터넷 트래픽 측정을 위한 플로우 생성 방법
US20240073240A1 (en) Suspicious communication detection apparatus, suspicious communication detection method, and suspicious communication detection program
CN113965367B (zh) 策略对象上限控制方法、系统、计算机及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant