CN108847983B - 基于mqtt协议的入侵检测方法 - Google Patents
基于mqtt协议的入侵检测方法 Download PDFInfo
- Publication number
- CN108847983B CN108847983B CN201810677778.4A CN201810677778A CN108847983B CN 108847983 B CN108847983 B CN 108847983B CN 201810677778 A CN201810677778 A CN 201810677778A CN 108847983 B CN108847983 B CN 108847983B
- Authority
- CN
- China
- Prior art keywords
- neural network
- output
- network model
- mqtt
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
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
本发明公开了一种基于MQTT协议的入侵检测方法,其包括在主站与子站之间采用Linux的Netfilter框架在1883端口捕获MQTT数据包;提取MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;将MQTT数据包中提取的x1、x2和x3组合成一组数据,所述数据的格式为Xn=(x1,x2,x3);将所述数据作为输入传输到神经网络模型中得到检测结果;当检测结果大于预设阈值时,表明所述MQTT数据包为正常数据包,允许其通过;当检测结果小于预设阈值时,表明所述MQTT数据包为异常数据包,不允许其通过。
Description
技术领域
本发明属于物联网信息安全领域,具体涉及一种基于MQTT协议的入侵检测方法。
背景技术
MQTT(MessageQueuing Telemetry Transport)是IBM开发的一个即时通讯协议,是当今物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当作传感器和制动器的通信协议。MQTT协议的安全性对物联网系统非常重要。
然而,MQTT是一种开放协议,它的报文结构和数据格式都是公开的,并且在没有足够的安全措施下,存在安全隐患,攻击者能够利用符合MQTT协议规则的数据报文实施欺骗性攻击,例如,攻击者能够在MQTT协议报文的传输过程中,利用符合MQTT协议规则的数据包,篡改或者伪造MQTT数据报文,引起系统错误甚至破坏,严重威胁了物联网系统的安全性。若要防范此类欺骗性攻击,需要对MQTT数据内容进行过滤,即对应用层进行深度包过滤。由于欺骗性攻击的数据包是符合MQTT协议规则的,而传统防火墙不能识别,因此无法防范此类攻击。
发明内容
针对现有技术中的上述不足,本发明提供了一种能够防范欺骗性攻击的基于MQTT协议的入侵检测方法。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种基于MQTT协议的入侵检测方法,其包括:
在主站与子站之间采用Linux的Netfilter框架在1883端口捕获MQTT数据包;
提取MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;
将MQTT数据包中提取的x1、x2和x3组合成一组数据,数据的格式为Xn=(x1,x2,x3);
将数据作为输入传输到神经网络模型中得到检测结果;
当检测结果大于预设阈值时,表明MQTT数据包为正常数据包,允许其通过;
当检测结果小于预设阈值时,表明MQTT数据包为异常数据包,不允许其通过;
神经网络模型的构建方法包括:
获取若干正常MQTT数据包、若干异常MQTT数据包和神经网络约束条件;
提取正常MQTT数据包和异常MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;
采用同一正常MQTT数据包中提取的x1、x2和x3组合的数据构成正样本,采用同一异常MQTT数据包中提取的x1、x2和x3组合的数据构成负样本;
将所有正样本和负样本及神经网络约束条件输入神经网络,并采用MATLAB的神经网络工具箱训练神经网络得到神经网络模型;
神经网络约束条件为:
当x1等于0或15时,神经网络模型的输出为0;
当x1=1时,若x2=0且x3>10,则神经网络模型的输出为1,否则为0;
当x1等于2、4、5、7或11时,若x2=0且x3=2,则神经网络模型的输出为1,否则为0;
当x1=3时,若x2不等于6、7、8、9、14、15,且x3>2,则神经网络模型的输出为1,否则为0;
当x1=6时,若x2=2且x3=2,则神经网络模型的输出为1,否则为0;
当x1等于8或10时,若x2=2且x3>2,则神经网络模型的输出为1,否则为0;
当x1=9时,若x2=0且x3>2,则神经网络模型的输出为1,否则为0;
当x1等于12,13或14时,若x2=0且x3=0,则神经网络模型的输出为1,否则为0。
进一步地,固定报头第1个字节中控制报文类型的值x1为二进制位7-4的值,固定报头第1个字节中指定控制报文类型的标志位的值x2为二进制位3-0的值。
进一步地,神经网络模型的隐含层结点数目为:
其中,m为神经网络模型输入结点个数;h为隐含层结点个数;k为输出层结点个数;a为1-10的常数。
本发明的有益效果为:本方案的入侵检测部署在MQTT客户端与服务器端之间的安全防护模块,捕获通过安全防护模块的MQTT数据报文,通过从报文头中提取的值与训练后的神经网络模型的相互结合能够准确地检测到异常的报文,可以防范欺骗性攻击,通过该种方式提高MQTT通信过程的安全性与可靠性,保障物联网系统的安全。
另外,本方案的入侵检测方法可以直接应用于MQTT客户端与服务端之间,且无需改变物联网系统网络拓扑结构,实现对客户端与服务端之间的通信访问检测。
附图说明
图1为基于MQTT协议的入侵检测方法的流程图。
图2为MQTT协议的固定报头的结构。
图3为MQTT通信拓扑结构图。
图4为基于神经网络的访问控制功能示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图3所示,MQTT通信拓扑结构包括一个服务端和多个客户端,在服务端和客户端之间添加安全防护模块,本方案的入侵检测方法部署在安全防护模块上后,MQTT数据包的传输可以参考图4,在安全防护模块上部署本方案的方法后能够有效地阻止攻击。
参考图1,图1示出了基于MQTT协议的入侵检测方法的流程图;如图1所示,该方法100包括步骤101至步骤107。
在步骤101中,在主站与子站之间采用Linux的Netfilter框架在1883端口捕获MQTT数据包。
在步骤102中,提取MQTT数据包的固定报头(固定报文头的结构可以参考图2)第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3。
其中,固定报头第1个字节中控制报文类型的值x1为二进制位7-4的值,固定报头第1个字节中指定控制报文类型的标志位的值x2为二进制位3-0的值。
在步骤103中,将MQTT数据包中提取的x1、x2和x3组合成一组数据,数据的格式为Xn=(x1,x2,x3);
在步骤104中,将数据作为输入传输到神经网络模型中得到检测结果。
在步骤105中,判断检测结果是否大于预设阈值,若大于,则进入步骤106,若小于,则进入步骤107中。
在步骤106中,表明MQTT数据包为正常数据包,允许其通过;
在步骤107中,表明MQTT数据包为异常数据包,不允许其通过。
根据序列中的固定报头第1个字节的控制报文类型的值x1、固定报头第1个字节的指定控制报文类型的标志位的值x2和固定报头第2个字节的值x3来设置神经网络模型的输出y,即上面提到神经网络约束条件,其中,神经网络约束条件具体为:
当x1等于0或15时,神经网络模型的输出为0;
当x1=1时,若x2=0且x3>10,则神经网络模型的输出为1,否则为0;
当x1等于2、4、5、7或11时,若x2=0且x3=2,则神经网络模型的输出为1,否则为0;
当x1=3时,若x2不等于6、7、8、9、14、15,且x3>2,则神经网络模型的输出为1,否则为0;
当x1=6时,若x2=2且x3=2,则神经网络模型的输出为1,否则为0;
当x1等于8或10时,若x2=2且x3>2,则神经网络模型的输出为1,否则为0;
当x1=9时,若x2=0且x3>2,则神经网络模型的输出为1,否则为0;
当x1等于12,13或14时,若x2=0且x3=0,则神经网络模型的输出为1,否则为0。
在本发明的一个实施例中,步骤104中的神经网络模型的构建方法包括:
获取若干正常MQTT数据包、若干异常MQTT数据包和神经网络约束条件;
提取正常MQTT数据包和异常MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;
采用同一正常MQTT数据包中提取的x1、x2和x3组合的数据构成正样本,采用同一异常MQTT数据包中提取的x1、x2和x3组合的数据构成负样本;
将所有正样本和负样本及神经网络约束条件输入神经网络,并采用MATLAB的神经网络工具箱训练神经网络得到神经网络模型。
实施时,采用MATLAB的神经网络工具箱训练神经网络得到神经网络模型的具体方法包括:
确定输入层到隐含层以及隐含层到输出层的权值:
首先进行网络初始化。给输入层到隐含层以及隐含层到输出层的权值分别赋一个区间为(-1,1)的随机值,然后确定样本输入(x1,x2,x3)和对应期望样本输出,接下来通过样本输入和初始输入层到隐含层的权值计算隐含层的输入和输出;然后通过隐含层的输出和隐含层到输出层的权值就算输出层的输入和输出;接下来根据输出层的实际输出和期望输出计算误差,根据此误差进行隐含层到输出层权值的修正,同样的方法用来修改输入层到隐含层的权值,根据设定的误差来判断何时输入层到隐含层和隐含层到输出层的权值满足要求,从而最终得到神经网络中输入层到隐含层和隐含层到输出层的权值。
训练神经网络得到神经网络模型:
在神经网络训练阶段,将所有正样本和负样本的(x1,x2,x3)作为输入传入到神经网络模型中,并结合输出值不断修正输入层到隐含层的权值和隐含层到输出层的权值,完成模型的建立。
模型建立成功之后对工业环境中的通信数据包进行异常流量检测,将经过数据预处理得到的输入向量(x1,x2,x3)输入到训练好的神经网络模型中,根据神经网络的输出结果来判断通信数据包是否异常。
下面结合具体的实例对本方案的入侵检测方法进行说明:
在本实施例中,捕获了1000条MQTT数据包,经过数据预处理后,得到样本序列Xn共1000条,部分MQTT样本序列如表1所示。
表1部分MQTT样本序列
将这1000条样本数据输入至神经网络模型,得到模型参数,部分输入层与隐含层的连接权值如表2所示,隐含层与输出层的连接权值如表3所示:
表2部分输入层与隐含层的连接权值
ω<sub>00</sub> | ω<sub>01</sub> | ω<sub>02</sub> | ω<sub>03</sub> | ω<sub>04</sub> | ω<sub>05</sub> | ω<sub>06</sub> | ω<sub>07</sub> | ω<sub>08</sub> | ω<sub>09</sub> |
1.53 | 2.10 | 0.74 | 0.77 | -1.83 | -0.82 | 0.31 | 1.28 | -2.48 | 0.52 |
ω<sub>10</sub> | ω<sub>11</sub> | ω<sub>12</sub> | ω<sub>13</sub> | ω<sub>14</sub> | ω<sub>15</sub> | ω<sub>16</sub> | ω<sub>17</sub> | ω<sub>18</sub> | ω<sub>19</sub> |
0.20 | 1.47 | -1.63 | 1.82 | -1.04 | 2.47 | 0.29 | 0.58 | -2.40 | -2.06 |
表3隐含层与输出层的连接权值
ω<sub>00</sub> | ω<sub>10</sub> | ω<sub>20</sub> | ω<sub>30</sub> | ω<sub>40</sub> | ω<sub>50</sub> | ω<sub>60</sub> | ω<sub>70</sub> | ω<sub>80</sub> | ω<sub>90</sub> |
3.87 | 1.19 | 0.73 | -0.45 | -0.22 | -0.10 | -0.47 | 1.55 | 2.99 | 0.61 |
将已知其为正常数据包和异常数据包的100条待检测的MQTT数据报文输入训练得到的检测模型,验证该方法的正确性,部分结果如表4所示。
表4部分检测结果
x<sub>1</sub> | x<sub>2</sub> | x<sub>3</sub> | y | 判断结果 |
11 | 0 | 2 | 0.848529 | 正常 |
2 | 0 | 2 | 0.858537 | 正常 |
9 | 0 | 11 | 0.793225 | 正常 |
5 | 0 | 2 | 0.994696 | 正常 |
1 | 0 | 15 | 0.998996 | 正常 |
9 | 0 | 7 | 0.994381 | 正常 |
3 | 8 | 12 | 0.006273 | 异常 |
8 | 0 | 6 | 0.395282 | 异常 |
4 | 0 | 3 | 0.000623 | 异常 |
1 | 0 | 0 | 0.000133 | 异常 |
通过对这100条MQTT数据包的判断结果与已知状态对比,本方法的最终判断结果正确率可以达到96%以上。
Claims (3)
1.基于MQTT协议的入侵检测方法,其特征在于,包括:
在主站与子站之间采用Linux的Netfilter框架在1883端口捕获MQTT数据包;
提取MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;
将MQTT数据包中提取的x1、x2和x3组合成一组数据,所述数据的格式为Xn=(x1,x2,x3);
将所述数据作为输入传输到神经网络模型中得到检测结果;
当检测结果大于预设阈值时,表明所述MQTT数据包为正常数据包,允许其通过;
当检测结果小于预设阈值时,表明所述MQTT数据包为异常数据包,不允许其通过;
所述神经网络模型的构建方法包括:
获取若干正常MQTT数据包、若干异常MQTT数据包和神经网络约束条件;
提取正常MQTT数据包和异常MQTT数据包的固定报头第1个字节中控制报文类型的值x1,固定报头第1个字节中指定控制报文类型的标志位的值x2,固定报头第2个字节的值x3;
采用同一正常MQTT数据包中提取的x1、x2和x3组合的数据构成正样本,采用同一异常MQTT数据包中提取的x1、x2和x3组合的数据构成负样本;
将所有正样本和负样本及神经网络约束条件输入神经网络,并采用MATLAB的神经网络工具箱训练神经网络得到神经网络模型;
所述神经网络约束条件为:
当x1等于0或15时,神经网络模型的输出为0;
当x1=1时,若x2=0且x3>10,则神经网络模型的输出为1,否则为0;
当x1等于2、4、5、7或11时,若x2=0且x3=2,则神经网络模型的输出为1,否则为0;
当x1=3时,若x2不等于6、7、8、9、14、15,且x3>2,则神经网络模型的输出为1,否则为0;
当x1=6时,若x2=2且x3=2,则神经网络模型的输出为1,否则为0;
当x1等于8或10时,若x2=2且x3>2,则神经网络模型的输出为1,否则为0;
当x1=9时,若x2=0且x3>2,则神经网络模型的输出为1,否则为0;
当x1等于12,13或14时,若x2=0且x3=0,则神经网络模型的输出为1,否则为0。
2.根据权利要求1所述的基于MQTT协议的入侵检测方法,其特征在于,所述固定报头第1个字节中控制报文类型的值x1为二进制位7-4的值,固定报头第1个字节中指定控制报文类型的标志位的值x2为二进制位3-0的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810677778.4A CN108847983B (zh) | 2018-06-27 | 2018-06-27 | 基于mqtt协议的入侵检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810677778.4A CN108847983B (zh) | 2018-06-27 | 2018-06-27 | 基于mqtt协议的入侵检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108847983A CN108847983A (zh) | 2018-11-20 |
CN108847983B true CN108847983B (zh) | 2020-03-10 |
Family
ID=64202500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810677778.4A Active CN108847983B (zh) | 2018-06-27 | 2018-06-27 | 基于mqtt协议的入侵检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108847983B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572372B (zh) * | 2019-08-20 | 2021-12-10 | 武汉绿色网络信息服务有限责任公司 | 一种检测物联网设备遭受入侵的方法及检测装置 |
CN112560020B (zh) * | 2021-02-19 | 2022-08-02 | 鹏城实验室 | 威胁攻击检测方法、装置、终端设备以及存储介质 |
CN114785603B (zh) * | 2022-04-26 | 2023-06-23 | 英赛克科技(北京)有限公司 | 基于mqtt协议的安全防护方法、装置、设备和存储介质 |
CN115622754B (zh) * | 2022-09-29 | 2024-05-14 | 四川启睿克科技有限公司 | 一种检测并防止mqtt漏洞的方法、系统和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7124438B2 (en) * | 2002-03-08 | 2006-10-17 | Ciphertrust, Inc. | Systems and methods for anomaly detection in patterns of monitored communications |
CN105812371A (zh) * | 2016-03-17 | 2016-07-27 | 电子科技大学 | 基于神经网络的dnp通信访问控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020123966A1 (en) * | 2000-06-23 | 2002-09-05 | Luke Chu | System and method for administration of network financial transaction terminals |
CN106911514A (zh) * | 2017-03-15 | 2017-06-30 | 江苏省电力试验研究院有限公司 | 基于iec60870‑5‑104协议的scada网络入侵检测方法及系统 |
-
2018
- 2018-06-27 CN CN201810677778.4A patent/CN108847983B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7124438B2 (en) * | 2002-03-08 | 2006-10-17 | Ciphertrust, Inc. | Systems and methods for anomaly detection in patterns of monitored communications |
CN105812371A (zh) * | 2016-03-17 | 2016-07-27 | 电子科技大学 | 基于神经网络的dnp通信访问控制方法 |
Non-Patent Citations (1)
Title |
---|
《基于MQTT的安全通信服务器的研究与实现》;钱玉磊;《中国优秀硕士学位论文全文数据库(电子期刊)》;20160315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108847983A (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108847983B (zh) | 基于mqtt协议的入侵检测方法 | |
CN109600363B (zh) | 一种物联网终端网络画像及异常网络访问行为检测方法 | |
US8483056B2 (en) | Analysis apparatus and method for abnormal network traffic | |
US9009824B1 (en) | Methods and apparatus for detecting phishing attacks | |
CN107770132B (zh) | 一种对算法生成域名进行检测的方法及装置 | |
US20150207806A1 (en) | Automatic generation of attribute values for rules of a web application layer attack detector | |
CN107222491A (zh) | 一种基于工业控制网络变种攻击的入侵检测规则创建方法 | |
CN108809749A (zh) | 基于采样率来执行流的上层检查 | |
CN108833430B (zh) | 一种软件定义网络的拓扑保护方法 | |
WO2022026142A1 (en) | Method and system for handling network intrusion | |
CN106487790A (zh) | 一种ack flood攻击的清洗方法及系统 | |
CN112134875A (zh) | 一种IoT网络异常流量检测方法及系统 | |
CN112738109A (zh) | 一种Web攻击的检测方法及装置 | |
CN111049780B (zh) | 一种网络攻击的检测方法、装置、设备及存储介质 | |
CN117118761B (zh) | 一种贯穿智能汽车信息安全的纵深防御系统和方法 | |
CN108366053B (zh) | 一种基于朴素贝叶斯的mqtt异常流量检测方法 | |
KR102083028B1 (ko) | 네트워크 침입탐지 시스템 | |
CN109474593B (zh) | 一种识别c&c周期性回连行为的方法 | |
CN113872949B (zh) | 一种地址解析协议的应答方法及相关装置 | |
CN115442154B (zh) | 模块化工控协议包深度解析验证方法与系统 | |
EP3923539B1 (en) | System and method for cryptocurrency networks | |
CN111931168B (zh) | 一种基于警报关联的僵尸机检测方法 | |
CN112311813B (zh) | 一种网络攻击的识别方法及装置 | |
Karuppanchetty et al. | Artificially augmented training for anomaly-based network intrusion detection systems | |
CN108282482B (zh) | 一种基于svm的iec60870-5-104异常流量检测方法 |
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 |