物联网哑终端识别系统探究

物联网哑终端识别系统探究

摘要:随着大量的物联网哑终端接入园区网络,数据流量越来越大,伪装并进行网络攻击的问题日益严重。现有IOT终端识别技术针对哑终端识别的解决方案不多。针对以上问题,本文提出了物联网哑终端识别系统。首先,通过会话生成器从消息队列的报文中提取会话,并形成特征流;其次,利用算法识别器对各个哑终端的特征流进行识别;最后,更新算法识别器的算法模型达到逐步提高服务准确性的目标。实验中识别准确率在90%以上,结果表明,该服务可以提高园区的网络安全并强化终端管理机制。

关键词:物联网;终端识别;哑终端;异常检测

1引言

近年来,伴随着“智慧城市”的建设[1],IOT终端大量接入到园区中,而伪装成哑终端入侵园区网络,盗取个人隐私信息等行为给园区网络安全带来挑战[2]。对园区的IOT终端的研究是应对网络安全问题的热点之一[3]。异常检测是解决IOT识别问题的一种有效算法[3-4],但仍然存在一些难点。首先,从运维者的角度出发,其服务器的IOT终端数据主要是TCP、UDP等报文,其突发性和及时性可能造成现有IOT终端识别技术无法快速发现异常。其次,通过指纹信息和访问日志等应用层数据反映出的行为逻辑不同来进行识别的方法也能提高检测准确性[3],但IOT终端中存在大量的哑终端[5],主要通过TCP或UDP报文和服务器进行通信,难以直接从Web流量角度来识别。因此,如何高效快速地利用报文数据在少量内存中识别IOTDT具有重要意义[6]。针对以上问题,本文提出物联网哑终端识别服务(ResearchonInternetofThingsDumbTerminalIdentificationSystem,IOTDT-IS)。具体目标是:支持有监督算法识别,读取预配置的识别阈值,对各种类型进行匹配分析,获取终端在各类型的相似度,将小于识别阈值的终端标记为未知类型。支持有监督的模型更新。实验表明,该服务的识别准确率达到90%以上。

2解决思路

本系统主要是对从FlowBroker采集的数据并预处理为会话[7],然后算法对会话进行识别,最后抽取出该会话对应的终端ip的类型。下面分别对FlowBroker输入的报文格式,用于预处理会话的会话生成器和用于算法识别的算法识别器进行设计。

2.1输入报文要求。考虑到模型识别中的计算延迟,需要将FlowBroker的数据缓存到消息队列中。为了保证数据的传输性能以及数据的扩展性,要求数据格式为使用snappy格式压缩的json字符串二进制数据。

2.2会话生成器设计。根据有监督的算法模型工具(如Scikit-learn、SparkML等)的API,需要输入报文组成会话后的特征向量。因此在构建流的特征向量前,需要明确以下流转化约束:(1)报文转会话约束:收集该四元组(源ip、目的ip、源端口、目的端口)在δt内的报文数据组成会话[8],此δt是从第一次收集到某四元组的报文的时间戳开始计算的。对于每个四元组都维护一个δt的缓存,并在超时后触发报文转会话的动作。(2)提取会话特征向量约束:提取的会话特征具有顺序性,会话向量是一个json字符串,其关键字段为:会话协议(protocol)、包时间间隔(pktInterval)、包大小(pktSize)、rx包时间间隔(rxPktInterval)、rx包大小(rxPktSize)、tx包时间间隔(txPktInterval)、tx包大小(txPktSize)、rx和tx包大小比例(sizeRatio)、rx包数量(packetsRX)、tx包数量(packetsTX)、rx和tx包数量比例(packetsRatio)。特征向量features是对会话中的所有报文的该字段值进行提取特征。其特征值包含:最大值(max)、最小值(sum)、和(sum)、平均值(mean)、中位数(median)、方差(variance)、标准差(standardDeviation)、第25%分位数(percentile25)、第75%分位数(percentile75)、信息熵(entropy)。(3)会话特征流约束:考虑到将会话特征组成批数据发送给算法识别模块,能够提高识别效率以及降低对数据库的更新频率。因此将会话特征流发送到消息队列进行缓存,解决会话处理和算法识别速度不匹配的问题,并且能够在算法识别部分按批次处理。会话特征流sessionFeature的结构描述如表1所示。

2.3算法识别器设计。算法仅能够给出与各个终端类型相似的概率,通过识别阈值来判定终端的类型,当最大概率低于识别阈值时判定为未知类型。但一次识别是不够准确的,需要多次识别,然后通过各个类型的识别次数中最大的识别次数的类型作为最终的终端类型。同时,运维人员能够修改终端类型。因此使用终端类型表terminalType来存储以上结果信息。其结构描述如表2所示。当智能识别次数超过指定次数n时,不仅存储到数据库,而且将其发送到消息队列;如果未达到n次,则通过时间比对,超过预设时间的也进行发送。其结构描述如表3所示:

2.4算法模型更新设计。本文中监督模型主要使用便于python算法可读的二进制文件。运维人员直接在Web界面将模型文件上传,点击“更新”按钮后触发算法组件重新加载模型的过程。Web后台程序以二进制格式保存到数据库的终端识别模型表,并触发算法组件重启加载模型。或者假设要求算法组件以正常模式运行,则可以向消息队列发送通知,通知算法组件重新加载。终端识别模型表terminalIdentifyModel的结构描述如表4所示。

3解决方案

3.1总体流程。流程共分为两个模块,包括离线学习和在线识别。两个模块的作用为:(1)离线学习(OFFLINE):从离线的报文数据文本中学习出有监督的算法模型。(2)在线识别(ONLINE):从实时的报文数据流中识别该终端的类型,写入终端类型数据库。具体流程如图1所示。

3.2流程说明。(1)模型学习器(modelLearningMachine):作为Python服务,从采集的报文(Packet)文本数据中进行有监督的模型学习,创建有监督的算法模型(SupervisedModel)。该算法模型以二进制数据保存到数据库中,主要用于在集群模式下便于从统一位置加载模型。(2)报文采集器(flowBroker):从实时报文流数据中进行采集,采集的报文写入消息队列中缓存,要求报文按照四元组保序,且不重复。(3)会话生成器(sessionGenerator):作为Java服务,主要有以下主要逻辑:①报文转会话逻辑:首先,定时从数据库的TeminalType表中获取已经分类的终端ip,将其作为已识别ip。然后,消费消息队列的报文,过滤掉已识别的终端ip,将其他ip的报文通过四元组key(源ip+源端口+目的ip+目的端口)生成会话session。每条会话由该key的δt时长或1万条的报文构成[6],将文件系统作为会话的临时存放点,每批次的报文都进行存储,直到满足报文转会话的条件。最后,对会话提取特征形成sessionFeature,发送到分布式文档数据库中存储。②定时任务逻辑:a.定时清理未达成报文转会话的文件,强行转成会话并发送到分布式文档数据库中存储。b.定时调用终端识别器进行识别。c.定时将满足识别条件(至少n次识别或δts时长)的结果发送到消息队列,并统计累计识别信息,发送到关系型数据库。(4)终端识别器(identifier):作为Python服务,加载算法模型文件到内存中。①处理输入的请求:当输入的数据是会话时,对会话的类型进行识别,提取会话的特征,预测出该会话属于各种类型的概率sessionTypeProb。当输入的数据是模型更新标志modelUpdateFlag时,终端识别器重新加载模型。②类型判定:遍历当前会话各个类型的概率。当某类型Typei的概率Probi大于设定的类型阈值时,表示该会话属于Typei,则写入到内存的sessionTypeProb变量中;并统计源IP在各个类型中对应的次数,写入到内存的IPTypeCount变量中。当所有类型的概率小于设定的类型阈值,表示该会话不属于已知的终端类型,则将该会话的Key和其特征Feature写入数据库的UnknownSessionFeature(未知会话特征)表中,以及写入内存的IPTypeCount变量中。③终端识别:从内存中获取IPTypeCount变量的值,写入到数据库的TerminalType(终端类型)表中。当TerminalType表中的总次数大于n次或者当前时间距离上次更新时间超过δt,则标记该终端的最终类型,并向消息队列推送终端类型通告。

4结果分析

本实验采用的数据为徐彭娜等人使用的高校报文数据集Da和Db[6],包含了337个终端。采集时间为工作日的流量高峰时段,每次采集1.5小时,数据量分别为21305332和22700220条,采集时间分别为9:00~10:30和14:00~15:30。在Da和Db数据集上使用IoT-FTSI算法进行算法识别。为了分析其准确率和报文数量的关系,将实验结果绘制成图,如图2所示。图2中横坐标代表会话中的报文数量,最小为1000,最大为10000。纵坐标代表使用IoT-FTSI算法时准确率的平均值。可以看出,当报文数量达到10000时,准确率已经达到0.93。这说明本服务能够较好地识别物联网哑终端。

5结束语

本文针对当前IoT终端识别算法对哑终端识别能力不足的问题,提出了IOTDT-IS系统。从报文中提取特征,并结合当前的消息队列,数据库等大数据工具,能够有效应对IOT终端流量的海量性和时效性。实验结果表明,该系统准确率在90%以上,可以有效地应用于IoT终端识别。如何更好地提高系统负载均衡性能是下一步要完成的工作。

作者:彭行雄 徐彭娜 单位:建师范大学网络与数据中心 网络安全与教育信息化福建省高校工程研究中心 福州职业技术学院阿里巴巴大数据学院