一种基于随机森林算法的MQTT异常流量检测方法
2021-01-27吴克河崔文超
吴克河,张 英,崔文超,程 瑞
(华北电力大学控制与计算机工程学院,北京 102206)
0 引 言
物联网(Internet of Things, IoT)被称为是继计算机和互联网之后的第三次信息技术革命,是现代科技潮流当中最热门的技术之一[1]。由于物联网系统对于通信协议的特殊要求,IBM开发了一种适用于物联网数据传输的MQTT协议,该协议采用二进制格式编码,易于开发和实现,对低功耗和低速网络具有良好的适应性。目前基于MQTT协议通信的工业物联网设备数量已经达到了千万量级。
随着物联网的发展,基于工业物联网的安全事件如工业核心数据泄漏、互联终端遭到非法劫持和操控在国内外时有发生,对于入侵者来说,攻击工业物联网系统比攻击其他行业的物联网系统能够获得更多的利益[2]。
MQTT协议旨在为物联网提供一个真正轻量级且易于使用的通信协议,故而该协议在众多的物联网通信协议中最受欢迎。本文主要研究MQTT通信中的应用层安全性,应用层是所有数据的最终汇聚点,故而可以采用流量分析的方法来设计安全防护方案。目前应用广泛的DPI深度包检测技术通过特征匹配的方式搜索流量载荷中的相关字节特征[3],也能保障MQTT代理服务器不受非法入侵,但是对于精心包装好的符合协议规约并满足访问控制规则的数据包就不能有效地被基于包过滤的防火墙发现。因此,有必要在通信服务器和终端设备层面对流量进行动态分析,采用MQTT入侵检测机制及时报告可疑行为[4]。本文提取MQTT流量中各种类型的报文的次数作为特征,还详细统计部分类型报文的负载部分的主题最大相同个数,并采用随机森林算法对MQTT异常流量进行检测。
1 相关研究
目前对MQTT协议的研究和应用已经扩展到各个领域,从协议的研究角度来看,文献[5-8]对MQTT协议内容进行了详细的研究,分别对协议主题、服务质量、遗嘱消息、心跳机制进行了详细的设计与分析。
文献[9-11]对物联网中的消息传输协议进行了对比,主要包括MQTT、CoAP、AMQP、XMPP和HTTP,并深入分析各自的优势和局限性。文献[12-13]中,在雾计算网络中应用了MQTT协议,实现了消息受控制的有序传输和网络设备间的负载均衡。文献[14-17]提到将MQTT应用于智慧农业、智能家居和移动互联网的即时通信、消息推送系统中。文献[18]对MQTT安全机制进行研究,重点研究了如何在操作受限的物联网设备间安全地传输消息。
文献[19]选取MQTT协议固定报头中的控制报文类型和控制报文标志位作为特征属性,提出了将朴素贝叶斯分类算法应用到MQTT异常流量检测中。
文献[20]分析MQTT协议中的客户端异常行为,选取用户的连接频率和发布频率2个属性作为特征,并对每个特征采用相应的权重,提出了将加权欧氏距离和K-MEANS均值算法相结合,用于MQTT异常行为检测。本文在此工作基础上,提出一种基于随机森林算法的异常流量检测模型,不仅提取MQTT流量中连接频率和发布频率作为特征,还统计其他各种类型报文的次数,并且还详细统计部分类型报文的负载部分的主题最大相同个数对模型进行训练测试,随机森林算法有效克服单一分类方法精度不高、过拟合的问题,对异常值和噪声具有很好的容忍度。
2 随机森林算法
为了解决传统的单一分类方法往往不准确而且容易出现过拟合的问题,许多学者通过组合多个分类模型来提高分类效果。集成学习是一种协同多个“个体学习器”完成任务的学习方法,其原理是使用某种方式将多个学习器集成,以此获得比单一学习器更优越的泛化性能[21]。随机森林(Random Forest,RF)是由Breiman[22]提出的一种组合分类算法,该算法能够平衡分布不均匀样本的误差,分类精度高,对异常值和噪声有很好的容忍度,不存在过拟合问题。
随机森林分类器是树形分类器{h(x,θk),k=1,…,K}的集合,其中h(x,θk)是一棵采用CART算法构建的分类回归树,输入向量是x,{θk}决定了一棵树的生长方向,随机森林分类器[23]采用简单多数投票法来确定最终分类结果,即对于组合分类器H(x,最后的分类结果为:
(1)
采用Bagging方法进行随机森林构建的过程描述如下:
1)对于给定的训练样本,经过n次随机的可重复抽样,从数据(X,Y)…(Xn,Yn)出发,构建bootstrap样本;
2)基于每个bootstrap样本构建决策树;
3)重复步骤1和步骤2,得到更多的决策树;
4)让每棵树对输入向量x进行投票;
5)统计所有投票数,找出票数最高的就是向量x的类别标签;
6)与正确分类标签不一致的比例,就是该算法的错误分类率。
3 基于随机森林算法的MQTT异常流量检测方法
MQTT中存在着许多风险因素,关于MQTT协议的安全性,目前还没有标准化的解决方案,在不安全的通信环境中,服务端需要检测客户端的异常行为,客户端一些常见的异常行为如下:
1)客户端请求订阅或者取消订阅大量相同主题的数据包;
2)客户端发出大量连接或中断连接请求;
3)客户端发布大量具有相同有效载荷的发布包或者客户端发送大量没有订阅者的发布包。
对于以上这些异常行为,本文提出使用随机森林算法对异常行为进行检测,及时发现异常客户端,保障通信安全。
3.1 流量特征的选取
在机器学习流量分类中,特征维数过少又不足以实现完美的流量分类,使用不相关或冗余的特征会对分类器的准确性产生负面的影响。选择有意义的特征子集很重要。流量统计特征的选择往往决定了不同场景下网络流量分类结果的好坏。
在网络数据流中,只有通过一定时间积累的数据才能够表征用户的行为,根据上述常见的客户端的异常行为可以看出,客户端异常行为主要和一段时间内连接包、中断连接包、相同有效载荷发布包、相同主题订阅包、相同主题取消订阅包的个数等有关。本文提取MQTT流量中的应用报文中的流量特征如表1所示。
表1 选取的MQTT流量特征详细描述
3.2 数据处理
流特征提取的过程中会不可避免地遇上数据包解析错误等情况,数据清洗过程主要是快速检查数据集中的空数据和重复数据并删除,以及处理缺失值情况等。
本文通过Wireshark对一定时间内的MQTT服务器和MQTT客户端之间的通信流量进行收集,然后对收集到的数据进行特征提取,分析出该段时间内MQTT数据流中连接包、连接确认包、发布包、订阅包、取消订阅包、PING请求包、PING应答包、中断连接包等数据包个数,由于每次抓取的流量包中连接确认次数、发布确认次数、订阅确认、取消订阅确认、PING应答次数分别与连接次数、发布次数、订阅次数、取消订阅次数、PING请求次数差不多,因此这10个数据信息只选取其中5个作为特征,删除重复的不必要的信息。并进一步分析出发布包中最大相同有效载荷包个数、订阅包中最大相同主题包个数、取消订阅包中最大相同主题包个数这3个特征作为有力补充。
4 实验及结果分析
4.1 数据集
本实验中,异常流量攻击源向与MQTT客户端进行正常通信的MQTT服务器端发送任意构造的MQTT报文,异常流量检测模块所在的服务器利用旁路抓取数据的方法使用Libpcap(Packet Capture Library)提供的库函数对交换机中的通信流量进行截取,然后异常流量检测模块会对截取到的MQTT流量进行处理。本实验一共选取了6586个报文样本,其中正常的报文3484个,异常的报文3102个,其中70%的样本用于训练分类器模型,再使用另外30%对该模型进行测试。
4.2 性能指标
只有使用合理的评价指标,才能对MQTT异常流量检测二元分类模型的性能进行评估。由于MQTT协议数据样本不平衡,正负样本之比可能偏离于1∶1,如果只使用准确率之类的指标,数据样本不平衡问题带来的性能评估偏差将无法解决。因此本文除了选取混淆矩阵外,还选取F1值、ROC曲线以及AUC值对分类结果进行分析,如表2所示。
表2 分类结果混淆矩阵
准确率(Accuracy, A):表示的是预测正确的样本占总样本的比例,形式如公式(2)所示。
(2)
精确率(Precision,P):真实为真的样本中评估预测为真的样本所占比例,形式如公式(3)所示。
(3)
召回率(Recall,R):评估预测为真的样本中真实为真的比例,形式如公式(4)所示。
(4)
F1值是准确率和召回率的调和平均值,可以有效地避免模型评估带来的偏差,如公式(5)所示。
(5)
真阳率(True Positive Rate,TPR):表示分类器预测为正类中实际为正实例的占比,形式如公式(6)所示。
(6)
误报率(False Positive Rate,FPR):表示分类器预测为正类中实际为负实例占所有负实例的比例,形式如公式(7)所示。
(7)
ROC曲线:全称为受试者操作特性曲线,曲线由自变量FPR和因变量TPR组成。ROC曲线上的各个点表示对输入信号刺激的响应,它是二元分类问题常用的参考关系图。
AUC值:全称为曲线下面积,根据ROC曲线,将其下方的面积定义为AUC值。AUC值越接近0或1,模型的性能越好;相反,AUC取值越接近0.5,模型性能越差。
4.3 实验结果
本实验场景比较RF分类器与其他3个常用的分类器对MQTT异常流量的识别效果,其中包括GBDT(梯度提升树)、DT(决策树)、SVM(支持向量机)、NB(朴素贝叶斯),使用的分类性能指标为Accuracy(准确率)、Precision(精确率)、Recall(召回率)、F1-score(F1值)、运行时间。实验结果如表3和图1所示。
表3 MQTT异常流量识别结果
图1 MQTT异常流量分类结果
从实验结果可以看出,基于集成学习的RF、GBDT分类器的准确率均高于90%,其中RF分类器的准确率达到最高约为96.4%。单独的DT分类器准确率约为93.5%,低于RF分类模型的96.4%。由此可见,基于RF的集成模型的分类性能要优于单独使用的分类模型。
ROC曲线所覆盖的面积被称为AUC空间(图2中的灰色区域)。可以通过AUC空间的大小来判断模型的预测能力。一般来说,AUC的空间越大,模型的预测能力越好。从图2可以看出,使用随机森林算法模型进行分类得到的AUC值为0.99,分类效果接近于完美。
图2 随机森林算法ROC-AUC曲线图
5 结束语
本文提出了一种基于RF算法的MQTT异常流量识别方法,实验结果表明,该模型通过提取MQTT数据流中的特征能够有效地对MQTT异常流量进行识别。对于高级的、持续的欺骗性数据包攻击采用基于随机森林算法的MQTT协议异常流量检测模块能够快速检测出攻击并作出防护响应,保障工业物联网系统的网络安全。
但是,仍有一些方面有待改进和进一步完善。首先,当工业物联网系统在稳定运行时,MQTT控制报文的类型是有限的,因此只能获得数量有限、分布不均匀的数据样本,故而模型的准确率可能会由于训练样本的种类不够全面、数量不够多而造成影响。其次,可以对特征属性的划分进行更多的选择,进一步提高MQTT异常流量检测模型的分类正确率。