王 盛 朱金奇 花季偉 喬增順
(天津師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院 天津 300387)
據(jù)報(bào)道,到2020年將有超過(guò)200億的IoT設(shè)備連入互聯(lián)網(wǎng)[1],這些設(shè)備將在網(wǎng)絡(luò)中產(chǎn)生海量數(shù)據(jù)流,面對(duì)如此巨大的網(wǎng)絡(luò)流量,如何管理和識(shí)別流量數(shù)據(jù),并從中準(zhǔn)確提取不同設(shè)備的分類特征,成為研究挑戰(zhàn),同時(shí)也是有效管理IoT設(shè)備的關(guān)鍵。準(zhǔn)確的流量劃分是設(shè)備正確分類的前提,設(shè)備的正確分類則是網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全的基礎(chǔ)保障。
近年來(lái),研究者提出了不同的設(shè)備分類預(yù)處理方法。文獻(xiàn)[2]組合使用tcptrace[3]、C語(yǔ)言和Perl腳本來(lái)提取網(wǎng)絡(luò)流量特征。文獻(xiàn)[4]提出了一種IoT設(shè)備流量分類與識(shí)別工具的構(gòu)造原型。文獻(xiàn)[5]提出在路由器或網(wǎng)關(guān)中部署網(wǎng)絡(luò)包采集器(如wireshark[6]﹑tcpdump[7]),其可以發(fā)現(xiàn)網(wǎng)絡(luò)中所有設(shè)備所產(chǎn)生的流量并生成相應(yīng)的記錄輸出給上層的預(yù)處理程序,同時(shí)提供了一種pcap文件流提取工具。文獻(xiàn)[8]闡述了一種將全部pcap文件數(shù)據(jù)轉(zhuǎn)換為ARFF(Attribute-Relation File Format)文件格式的流程方法。然而,文獻(xiàn)[2,4-5]僅提出了一種處理方法架構(gòu),卻沒有提供詳盡的實(shí)現(xiàn)過(guò)程。此外,文獻(xiàn)[5]的采集方案中沒有充分考慮路由器等嵌入式設(shè)備的存儲(chǔ)容量問題以及運(yùn)算資源占用過(guò)高等限制性因素。文獻(xiàn)[8]所生成的ARFF格式文件并不適用于主流機(jī)器學(xué)習(xí)框架Tensorflow[9]等,僅是數(shù)據(jù)格式的轉(zhuǎn)換,沒有網(wǎng)絡(luò)流統(tǒng)計(jì)特征的提取過(guò)程。
不同的流量分類需求,會(huì)有相應(yīng)不同的流量統(tǒng)計(jì)特征。如設(shè)備分類場(chǎng)景的流量特征有固定時(shí)段內(nèi)數(shù)據(jù)包峰值﹑數(shù)據(jù)包長(zhǎng)度平均值﹑傳輸協(xié)議種類數(shù)量等;在網(wǎng)絡(luò)安全分類場(chǎng)景的流量特征一般會(huì)有服務(wù)類型﹑一段范圍內(nèi)的連接請(qǐng)求數(shù)﹑連接持續(xù)時(shí)間及登錄嘗試失敗數(shù)等。在UCI[10]網(wǎng)站上,公開了許多預(yù)處理后的標(biāo)準(zhǔn)數(shù)據(jù)集,其中包括經(jīng)典的KDD Cup99流量分類數(shù)據(jù)集,一個(gè)經(jīng)典的數(shù)據(jù)集需要對(duì)原始pcap流量數(shù)據(jù)進(jìn)行相當(dāng)多的預(yù)處理工作,包括從海量數(shù)據(jù)中去除無(wú)效記錄(噪聲)﹑填補(bǔ)空值﹑計(jì)算統(tǒng)計(jì)值等,良好的預(yù)處理效果是能夠準(zhǔn)確分類的前提。雖然KDD Cup99是一種可供公開下載的數(shù)據(jù)集,但并沒有公開任何文檔或資料來(lái)闡述該數(shù)據(jù)集的構(gòu)造實(shí)現(xiàn)過(guò)程。這就造成如果要使用自采集的pcap流量文件訓(xùn)練機(jī)器學(xué)習(xí)模型,必須首先自己實(shí)現(xiàn)一套流量特征提取方法,但該方法也只對(duì)應(yīng)于該自采集流量文件的分類場(chǎng)景,從而造成不同分類場(chǎng)景下的自采集流量文件預(yù)處理過(guò)程的重復(fù)性開發(fā),缺少一種可復(fù)用的公開實(shí)現(xiàn)方法。
針對(duì)上述問題,本文主要工作如下:1) 實(shí)現(xiàn)了一種通用性的網(wǎng)絡(luò)流量數(shù)據(jù)集構(gòu)造方法,對(duì)于常用流量統(tǒng)計(jì)特征進(jìn)行了模塊化抽象,對(duì)于不同的流量分類場(chǎng)景可以模塊化拼裝統(tǒng)計(jì)特征,從而快速完成特征提取任務(wù),極大提升了流量預(yù)處理工作的提取效率,填補(bǔ)了原始pcap采集文件至Tensorflow模型訓(xùn)練輸入文件(CSV)之間的銜接處理過(guò)程;2) 提出了一種特征提取庫(kù)的模塊化思想方法,通過(guò)構(gòu)建特征提取庫(kù)可以不斷完善和積累不同分類場(chǎng)景下的流量統(tǒng)計(jì)特征,這一構(gòu)建思想可以不斷提升本文方法的通用性和健壯性。通過(guò)在公開的pcap原始數(shù)據(jù)集上的實(shí)驗(yàn),實(shí)現(xiàn)了針對(duì)該數(shù)據(jù)集統(tǒng)計(jì)特征提取的預(yù)處理需求。實(shí)驗(yàn)結(jié)果表明,本文處理流程和方法能夠有效解決pcap網(wǎng)絡(luò)流統(tǒng)計(jì)特征的提取,進(jìn)而完成設(shè)備流量數(shù)據(jù)集的預(yù)處理工作。與現(xiàn)有方法相比,本文完整闡述了整個(gè)預(yù)處理流程并公布了核心代碼。
目前主流網(wǎng)絡(luò)流量分類方法有三種,分別是基于應(yīng)用端口號(hào)的分類方法、基于包載荷的深層包檢測(cè)(DPI)技術(shù)[11]分類方法、基于流統(tǒng)計(jì)的分類方法[12-13]。
基于端口的分類方法是根據(jù)IANA[14]上所列出的全部公開使用的端口號(hào)與流量包頭中的端口號(hào)進(jìn)行比對(duì),從而判斷流量所屬的應(yīng)用類型。例如,HTTP協(xié)議的Web應(yīng)用使用固定的80端口,DNS域名解析服務(wù)使用53端口等。文獻(xiàn)[15]提出了一種基于端口連接模式與并發(fā)連接數(shù)量的流量分類方法。文獻(xiàn)[16]提出了一種使用端口號(hào)對(duì)UDP流量進(jìn)行分類的方法。隨著網(wǎng)絡(luò)應(yīng)用的不斷增多,這種通過(guò)簡(jiǎn)單比對(duì)固定端口號(hào)的方式,已經(jīng)很難滿足流量分類需要,尤其是P2P應(yīng)用普遍采用動(dòng)態(tài)端口的方式以及端口偽裝技術(shù)[17]的出現(xiàn),造成基于端口識(shí)別的方法的準(zhǔn)確性不高。
基于深層包檢測(cè)(DPI)技術(shù)的分類方法是使用數(shù)據(jù)包中的全部載荷內(nèi)容(payload)來(lái)對(duì)流量進(jìn)行識(shí)別和分類,通過(guò)檢查包中所含有的一些特定字符或模式,來(lái)判定其所屬的流量類別。該方法僅需對(duì)組成網(wǎng)絡(luò)流的前面若干個(gè)數(shù)據(jù)包進(jìn)行檢測(cè)就可以完成識(shí)別任務(wù),因此可以在流量產(chǎn)生早期就完成分類。文獻(xiàn)[18]使用一種隨機(jī)森林算法與內(nèi)容包檢測(cè)技術(shù)相結(jié)合的分類方法,并且使用了文獻(xiàn)[4]中所提出的一種支持物聯(lián)網(wǎng)流量分類的監(jiān)控體系結(jié)構(gòu)作為統(tǒng)計(jì)特征提取工具。文獻(xiàn)[19]簡(jiǎn)要介紹了DPI中的挑戰(zhàn)和一些設(shè)計(jì)目標(biāo),綜述了DPI技術(shù)的算法實(shí)現(xiàn)及相關(guān)應(yīng)用。文獻(xiàn)[20-21]提出了一種基于DPI技術(shù)的網(wǎng)絡(luò)管理和分類系統(tǒng)。深度包檢測(cè)方法由于要對(duì)包中數(shù)據(jù)信息逐一進(jìn)行比對(duì),當(dāng)數(shù)據(jù)量較大時(shí)需要花費(fèi)較長(zhǎng)時(shí)間,伴隨網(wǎng)絡(luò)通信加密技術(shù)的普及,對(duì)于包載荷內(nèi)容的獲取也變得越發(fā)困難。
基于統(tǒng)計(jì)的分類方法是利用不同應(yīng)用流量之間的特性不同而加以區(qū)分,一般使用機(jī)器學(xué)習(xí)算法或神經(jīng)網(wǎng)絡(luò)模型對(duì)流量特征數(shù)據(jù)進(jìn)行訓(xùn)練,經(jīng)過(guò)訓(xùn)練的模型可以捕獲到不同應(yīng)用流量的特征區(qū)別從而完成分類。文獻(xiàn)[12]對(duì)于機(jī)器學(xué)習(xí)在流分類領(lǐng)域的應(yīng)用進(jìn)行了詳細(xì)匯總,討論了在IP流分類中應(yīng)用機(jī)器學(xué)習(xí)分類器的關(guān)鍵需求。文獻(xiàn)[13]提出了一種統(tǒng)計(jì)流量分類的新模式,通過(guò)監(jiān)督和非監(jiān)督相結(jié)合的機(jī)器學(xué)習(xí)技術(shù)來(lái)發(fā)現(xiàn)之前未知的流量應(yīng)用。文獻(xiàn)[22]介紹了一種基于卷積和循環(huán)神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)流量分類器。由于基于統(tǒng)計(jì)的分類方法僅依賴于網(wǎng)絡(luò)數(shù)據(jù)包頭信息,如傳輸字節(jié)數(shù)﹑網(wǎng)絡(luò)協(xié)議﹑TCP窗口尺寸等,無(wú)論從數(shù)據(jù)可靠性還是獲取便利性上,基于統(tǒng)計(jì)的流分類方法都是更好的選擇。實(shí)際上,為獲得快速準(zhǔn)確的分類效果,不僅取決于深度學(xué)習(xí)模型及其參數(shù)配置,所選取進(jìn)行訓(xùn)練的流量統(tǒng)計(jì)特征也具有重要作用。由于使用的是特征數(shù)據(jù),如何在眾多的流量特征中根據(jù)具體的流分類應(yīng)用場(chǎng)景(如:IoT設(shè)備類型分類﹑惡意流檢測(cè)[23]分類等)來(lái)細(xì)粒度地選擇和提取出最有效﹑區(qū)分度最高的特征集合,往往需要進(jìn)行大量排列組合的特征工程[24]提取實(shí)驗(yàn),即從原始流量文件(pcap格式)中提取出模型訓(xùn)練所需要使用的統(tǒng)計(jì)特征數(shù)據(jù)(CSV格式),這也是本文預(yù)處理過(guò)程須解決的問題。
基于統(tǒng)計(jì)的流分類方法較其他兩種分類方法有可靠性高﹑不依賴載荷內(nèi)容的優(yōu)點(diǎn),下面介紹了預(yù)處理方法針對(duì)流分類領(lǐng)域研究較多的包和流這兩個(gè)不同流量粒度進(jìn)行統(tǒng)計(jì)特征的提取。
流量數(shù)據(jù)特征一般可分為包特征和流特征。網(wǎng)絡(luò)流量數(shù)據(jù)按照劃分粒度不同,可以分為包(網(wǎng)絡(luò)消息傳輸劃分的最小數(shù)據(jù)塊)數(shù)據(jù)﹑流(具有相同五元組:源IP、源端口、目的IP、目的端口、傳輸協(xié)議的所有包)數(shù)據(jù)以及會(huì)話(包含雙向流的所有包)數(shù)據(jù),劃分粒度依次遞增。在流量特征選擇和提取過(guò)程中會(huì)根據(jù)具體的流分類應(yīng)用場(chǎng)景單一使用某種流量數(shù)據(jù)或組合使用不同粒度的流量數(shù)據(jù)。
1) 包(Packet)表示為:
P={P1,P2,…,Pi,…}
Pi=(xi1,xi2,…,xij,…)
(1)
式中:P表示流量數(shù)據(jù)中所有包集合;Pi表示第i個(gè)包記錄;xij表示第i個(gè)包中的第j個(gè)屬性值(如包長(zhǎng)度﹑收發(fā)時(shí)間﹑傳輸協(xié)議等)。
2) 流(Flow)表示為:
F={F1|t1,F2|t2,…,Fk|tk,…}
Fk={P1|P1∈Fk,P2|P2∈Fk,…,Pn|Pn∈Fk,…}
Pn=(xn1,xn2,…,xnj,…)
P1.xg=P2.xg=…=Pn.xg=…
(2)
式中:F表示流量數(shù)據(jù)中劃分出的所有流集合;Fk表示組成一個(gè)流的所有包的集合;tk表示第k個(gè)流中首個(gè)包的開始時(shí)間(t1 3) 會(huì)話(Session)表示和流表示類似,一個(gè)會(huì)話是由一個(gè)流的兩個(gè)傳輸方向(五元組中的源和目的互換)所構(gòu)成,發(fā)送流和接收流形成的完整閉環(huán)稱為會(huì)話。若發(fā)送流的五元組值為xg={xsrcIP,xsrcPort,xdstIP,xdstPort,xprotocol},則接收流的五元組值即為xg-={xdstIP,xdstPort,xsrcIP,xsrcPort,xprotocol}。 本文預(yù)處理過(guò)程主要由五個(gè)處理環(huán)節(jié)構(gòu)成,分別是原始數(shù)據(jù)流量采集﹑數(shù)據(jù)包提取﹑記錄轉(zhuǎn)儲(chǔ)﹑統(tǒng)計(jì)特征提取﹑處理結(jié)果導(dǎo)出。其總體思想是對(duì)統(tǒng)計(jì)特征進(jìn)行規(guī)則抽象并與SQL語(yǔ)言進(jìn)行細(xì)粒度綁定,綁定后即形成統(tǒng)計(jì)特征提取庫(kù),該提取庫(kù)會(huì)隨著新的流量分類需求而不斷擴(kuò)充,在實(shí)際使用中可以模塊化地選取并組合使用特征提取庫(kù)中的方法。圖1描述了特征提取庫(kù)的構(gòu)建過(guò)程及使用方式,通過(guò)不斷實(shí)現(xiàn)流分類領(lǐng)域的統(tǒng)計(jì)特征,每實(shí)現(xiàn)一種新的統(tǒng)計(jì)特征,就會(huì)把該實(shí)現(xiàn)方式添加到預(yù)處理特征提取庫(kù)。當(dāng)進(jìn)行自采集的pcap流量特征提取時(shí),就可以從預(yù)處理特征庫(kù)中選取已實(shí)現(xiàn)的提取方法直接拼裝使用,從而高效提取出所需特征。常用的基于流的統(tǒng)計(jì)特征有流中所含包個(gè)數(shù)﹑流持續(xù)的時(shí)間﹑流的總字節(jié)大小﹑流中各個(gè)包大小的最大值最小值均值等。在實(shí)際統(tǒng)計(jì)特征提取時(shí)需根據(jù)五元組屬性值匯總出不同的流,根據(jù)不同的分類場(chǎng)景需求,可以進(jìn)一步對(duì)不同的流進(jìn)行切分并分段統(tǒng)計(jì)從而生成流量統(tǒng)計(jì)特征,如按固定包數(shù)統(tǒng)計(jì)則僅提取每個(gè)流的前N個(gè)數(shù)據(jù)包,按固定時(shí)間段統(tǒng)計(jì)則將流中所含數(shù)據(jù)包按時(shí)間戳順序進(jìn)行時(shí)間范圍歸并。表1所示的部分示例展示了統(tǒng)計(jì)特征規(guī)則抽象與特征提取庫(kù)實(shí)現(xiàn)方式之間的對(duì)應(yīng)關(guān)系。 圖1 特征提取庫(kù)模塊化復(fù)用過(guò)程 表1 統(tǒng)計(jì)特征規(guī)則抽象與特征提取庫(kù)對(duì)應(yīng)關(guān)系(部分) 首先在網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中部署流量采集軟件,使得采集軟件可以發(fā)現(xiàn)整個(gè)拓?fù)渲兴芯W(wǎng)絡(luò)設(shè)備的通信數(shù)據(jù)包,將采集到的原始流量數(shù)據(jù)(二進(jìn)制文件)保存至硬盤空間,使用流量分析工具從此二進(jìn)制文件中提取出所需要的文本數(shù)據(jù)并存儲(chǔ)為CSV文本文件格式,接下來(lái)通過(guò)數(shù)據(jù)庫(kù)管理工具將此CSV文件數(shù)據(jù)導(dǎo)入至數(shù)據(jù)庫(kù)表中,最后由數(shù)據(jù)庫(kù)語(yǔ)言(SQL)統(tǒng)計(jì)出流量特征數(shù)據(jù)并導(dǎo)出結(jié)果文件。各個(gè)環(huán)節(jié)對(duì)原始流量數(shù)據(jù)依次進(jìn)行處理,并生成相應(yīng)的中間狀態(tài)結(jié)果數(shù)據(jù),將前一環(huán)節(jié)的處理結(jié)果作為后一環(huán)節(jié)的數(shù)據(jù)輸入,經(jīng)過(guò)多種數(shù)據(jù)形態(tài)的轉(zhuǎn)換,最終生成所需數(shù)據(jù)集。各環(huán)節(jié)數(shù)據(jù)形式轉(zhuǎn)化過(guò)程如表2所示。 表2 各環(huán)節(jié)處理前后數(shù)據(jù)形式變化情況 本文提出的網(wǎng)絡(luò)流統(tǒng)計(jì)特征預(yù)處理流程及架構(gòu)如圖2所示。本節(jié)闡述了從pcap文件采集至最終生成CSV訓(xùn)練數(shù)據(jù)集的全部處理環(huán)節(jié),各詳細(xì)實(shí)現(xiàn)步驟如下。 圖2 網(wǎng)絡(luò)流統(tǒng)計(jì)特征預(yù)處理流程及架構(gòu) 步驟一在欲采集的網(wǎng)絡(luò)中,使用端口鏡像技術(shù)[25]將頂層交換機(jī)上所有網(wǎng)絡(luò)端口的收發(fā)數(shù)據(jù)轉(zhuǎn)發(fā)至其上一個(gè)獨(dú)立的匯聚端口,該匯聚端口連接至數(shù)據(jù)采集主機(jī),采集主機(jī)上安裝并運(yùn)行Wireshark流量采集軟件。Wireshark中選取連接匯聚端口的網(wǎng)卡進(jìn)行數(shù)據(jù)監(jiān)聽和采集,并設(shè)置pcap文件的存儲(chǔ)路徑及存儲(chǔ)規(guī)則,如可設(shè)置每天或每文件大小達(dá)到1 GB等規(guī)則進(jìn)行pcap文件的拆分存儲(chǔ),默認(rèn)情況下Wireshark會(huì)實(shí)時(shí)采集數(shù)據(jù)至內(nèi)存中,如果一次性采集周期較長(zhǎng)或網(wǎng)絡(luò)流信息較大則會(huì)造成內(nèi)存溢出的異常。 步驟二將采集得到的pcap文件,通過(guò)tshark命令行工具,自定義提取出所需要的屬性(field)值,如五元組值﹑包長(zhǎng)度﹑包產(chǎn)生時(shí)間等,并存儲(chǔ)為CSV格式文件。根據(jù)所屬協(xié)議的不同,Wireshark目前有超過(guò)幾十萬(wàn)的屬性字段(field)可供使用[26],這就要根據(jù)不同分類場(chǎng)景的領(lǐng)域知識(shí),靈活甄別選用。 步驟三使用Navicat Premium(或SQLyog)工具,將步驟二生成的CSV文件通過(guò)圖形化界面操作(新建連接→選擇已有或新建數(shù)據(jù)庫(kù)→選擇表導(dǎo)入向?qū)А鷮?dǎo)入類型選擇CSV文件)導(dǎo)入至MySQL數(shù)據(jù)庫(kù)中,成功導(dǎo)入后每個(gè)CSV文件對(duì)應(yīng)生成一張同名數(shù)據(jù)庫(kù)表。 步驟四打開數(shù)據(jù)庫(kù)的查詢分析器工具,使用SQL(Structured Query Language)編程語(yǔ)言[27]從數(shù)據(jù)表中查詢匯總出所需的流統(tǒng)計(jì)特征值記錄,并根據(jù)應(yīng)用或設(shè)備的類別(如按MAC地址或協(xié)議等屬性進(jìn)行區(qū)分)增加相對(duì)應(yīng)的訓(xùn)練標(biāo)簽(label)列。綜合運(yùn)用SQL語(yǔ)言提供的COUNT、AVG、MAX、GROUP BY等函數(shù)語(yǔ)句可以方便地進(jìn)行統(tǒng)計(jì)信息值的計(jì)算,對(duì)于多張數(shù)據(jù)庫(kù)表的統(tǒng)計(jì)匯總可以使用UNION語(yǔ)句來(lái)處理。 步驟五在步驟四的查詢結(jié)果顯示窗口中,通過(guò)Navicat Premium工具的導(dǎo)出功能,將預(yù)處理后的記錄以CSV格式進(jìn)行導(dǎo)出并作為神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練數(shù)據(jù)集。 至此整個(gè)預(yù)處理流程執(zhí)行完畢。如果使用最終生成的CSV文件來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型沒有達(dá)到預(yù)期結(jié)果,可再次返回步驟四嘗試其他的統(tǒng)計(jì)特征組合,選取效果最優(yōu)的組合方案。如果步驟三中生成的數(shù)據(jù)庫(kù)表字段不足,可以再次重復(fù)步驟二,提取出更多種類的數(shù)據(jù)包屬性字段,并繼續(xù)執(zhí)行后續(xù)步驟即可。在處理步驟二時(shí)可以將有價(jià)值或較常用的數(shù)據(jù)包屬性值一次性提取出來(lái),在后續(xù)步驟中可以選擇性使用,從而降低每次實(shí)驗(yàn)嘗試的復(fù)雜度和時(shí)間成本。 實(shí)驗(yàn)環(huán)境在天津師范大學(xué)數(shù)據(jù)中心中進(jìn)行,該數(shù)據(jù)中心負(fù)責(zé)維護(hù)校園網(wǎng)網(wǎng)絡(luò),擁有校園卡維護(hù)系統(tǒng)﹑學(xué)生及教職工管理系統(tǒng)、弱電間和教學(xué)樓監(jiān)控安防系統(tǒng)等,各個(gè)系統(tǒng)后臺(tái)服務(wù)器通過(guò)不同的網(wǎng)絡(luò)隔離機(jī)柜獨(dú)立部署和運(yùn)行。 選取監(jiān)控安防系統(tǒng)作為數(shù)據(jù)流的采集網(wǎng)絡(luò),該網(wǎng)絡(luò)通過(guò)集中器將各樓宇分散的安防設(shè)備與數(shù)據(jù)中心建立連接,每個(gè)集中器對(duì)應(yīng)采集溫濕度﹑煙霧﹑火焰﹑水浸﹑人體及電能監(jiān)測(cè)共六種傳感器設(shè)備,集中器的采集端使用485接口連接設(shè)備,對(duì)上層使用RJ45網(wǎng)口傳輸數(shù)據(jù)。每臺(tái)監(jiān)控設(shè)備自身含有RJ45網(wǎng)口,可以獨(dú)立上傳通信數(shù)據(jù)。整個(gè)網(wǎng)絡(luò)將監(jiān)控?cái)z像頭和集中器分為兩個(gè)子網(wǎng)絡(luò),子網(wǎng)間由路由器連接并分屬于不同的網(wǎng)段,后臺(tái)服務(wù)器通過(guò)固定的時(shí)間間隔下發(fā)數(shù)據(jù)采集命令,產(chǎn)生通信數(shù)據(jù)流。整個(gè)校園部署集中器和攝像裝置較多,表3列出了部分設(shè)備及網(wǎng)絡(luò)配置,圖3顯示了其中一個(gè)監(jiān)控區(qū)域的狀態(tài)數(shù)據(jù)。 表3 校園監(jiān)控及安防系統(tǒng)網(wǎng)絡(luò)組成設(shè)備(部分?jǐn)?shù)據(jù)) 圖3 設(shè)備間房間狀態(tài)監(jiān)控 由于該系統(tǒng)為巡檢類系統(tǒng),所有流量設(shè)備會(huì)根據(jù)收到的采集命令定期向服務(wù)器上報(bào)狀態(tài)數(shù)據(jù),故直接在后臺(tái)服務(wù)器上部署Wireshark軟件進(jìn)行流量采集。服務(wù)器操作系統(tǒng)為Windows Server 2008,Wireshark版本為win64-1.10.4,設(shè)置pcap文件存儲(chǔ)路徑為D:wiresharkpackageCapture,當(dāng)文件大小達(dá)到50 MB時(shí)進(jìn)行拆分并使用格式“rawdatas_{序號(hào)}_{年月日時(shí)分秒(采集開始時(shí)間)}”自動(dòng)命名。部分采集的pcap文件如圖4所示。 圖4 采集的pcap文件(部分?jǐn)?shù)據(jù)) 為了更好地說(shuō)明本文方法的適用性及便于對(duì)比,統(tǒng)計(jì)特征提取過(guò)程將在公開的pcap文件集上進(jìn)行實(shí)驗(yàn),該數(shù)據(jù)集是文獻(xiàn)[28]于2018年在網(wǎng)站https://iotanalytics.unsw.edu.au/iottraces上公布的原始流量數(shù)據(jù)集,數(shù)據(jù)在物聯(lián)網(wǎng)環(huán)境中進(jìn)行收集,經(jīng)過(guò)3周多時(shí)間共采集了屬于7個(gè)類別的21種設(shè)備的流量數(shù)據(jù)。文獻(xiàn)[5]在該數(shù)據(jù)集上找到了一組能夠明顯區(qū)分不同設(shè)備類別的統(tǒng)計(jì)特征屬性集合(用戶包數(shù)量﹑用戶包長(zhǎng)度平均值﹑用戶包長(zhǎng)度峰值﹑控制包數(shù)量﹑控制包平均值﹑控制包峰值)。下面通過(guò)實(shí)驗(yàn)完整實(shí)現(xiàn)文獻(xiàn)[5]中的特征提取需求,以此說(shuō)明本文方法的有效性和適用性。 首先下載全部2016-09-23至2016-10-12共20天的pcap文件,每天對(duì)應(yīng)一個(gè)文件并以對(duì)應(yīng)日期命名。通過(guò)tshark工具逐一對(duì)20個(gè)pcap文件進(jìn)行屬性(field)值提取,并對(duì)應(yīng)生成20個(gè)CSV文件,tshark默認(rèn)與Wireshark軟件共同安裝在同級(jí)目錄下,實(shí)驗(yàn)所用主機(jī)操作系統(tǒng)為Windows 7安裝路徑在C:Program FilesWireshark下。其中一個(gè)pcap文件的完整提取過(guò)程代碼如圖5所示。 圖5 tshark提取pcap文件至CSV 將提取出的CSV文件通過(guò)SQLyog工具逐個(gè)導(dǎo)入MySQL8.0.16數(shù)據(jù)庫(kù),導(dǎo)入過(guò)程如圖6所示。 圖6 CSV轉(zhuǎn)儲(chǔ)至數(shù)據(jù)庫(kù) 根據(jù)需求,需要將數(shù)據(jù)包按照所屬類別進(jìn)行排序,每個(gè)類別中的數(shù)據(jù)包按所屬設(shè)備進(jìn)行排序,排序后每個(gè)設(shè)備中的數(shù)據(jù)包再以5分鐘的間隔時(shí)間進(jìn)行匯總,統(tǒng)計(jì)出每個(gè)間隔時(shí)間段內(nèi)的包數(shù)量﹑包長(zhǎng)度平均值和包長(zhǎng)度峰值,并根據(jù)每個(gè)包傳輸協(xié)議的不同,將上述三個(gè)匯總值分別拆分為用戶數(shù)據(jù)和控制數(shù)據(jù),最后根據(jù)不同類別打上相應(yīng)的訓(xùn)練標(biāo)簽(label)值。通過(guò)SQL語(yǔ)言實(shí)現(xiàn)該需求的代碼如下: SELECT CONCAT(DATE_FORMAT(′_ws#col#AbsTime′, ′%Y-%m-%d %H:′),IF(FLOOR(DATE_FORMAT(′_ws#col#AbsTime′, ′%i′)/5)<10,CONCAT(0,FLOOR(DATE_FORMAT(′_ws#col#AbsTime′, ′%i′)/5)),FLOOR(DATE_FORMAT(′_ws#col#AbsTime′, ′%i′)/5))) AS5MinInterval, COUNT(CASE WHEN ′_ws#col#Protocol′ NOT IN (′ICMP′,′ARP′,′DNS′,′NTP′) THEN 1 ELSE NULL END) AS userPacketNumber, AVG(CASE WHEN ′_ws#col#Protocol′ NOT IN (′ICMP′,′ARP′,′DNS′,′NTP′) THEN CONVERT(′frame#len′, DECIMAL) ELSE NULL END) ASuserPacketLengthAvg, MAX(CASE WHEN ′_ws#col#Protocol′ NOT IN (′ICMP′,′ARP′, ′DNS′,′NTP′) THEN CONVERT(′frame#len′,DECIMAL) ELSE NULL END) ASuserpacketLengthPeak, COUNT(CASE WHEN ′_ws#col#Protocol′ IN (′ICMP′,′ARP′, ′DNS′,′NTP′) THEN 1 ELSE NULL END) AS controlPacketNumber, AVG(CASE WHEN ′_ws#col#Protocol′ IN (′ICMP′,′ARP′, ′DNS′,′NTP′) THEN CONVERT(′frame#len′,DECIMAL) ELSE NULL END) AScontrolPacketLengthAvg, MAX(CASE WHEN ′_ws#col#Protocol′ IN (′ICMP′,′ARP′, ′DNS′,′NTP′) THEN CONVERT(′frame#len′,DECIMAL) ELSE NULL END) AScontrolpacketLengthPeak, CASEWHEN (IFNULL(′eth#src′,″)=′44:65:0d:56:cc:d3′ OR IFNULL(′eth#dst′,″)=′44:65:0d:56:cc:d3′) THEN 1 WHEN (IFNULL(′eth#src′,″)=′e0:76:d0:33:bb:85′ OR IFNULL(′eth#dst′,″)=′e0:76:d0:33:bb:85′) THEN 2 WHEN (IFNULL(′eth#src′,″) IN (′00:24:e4:11:18:a8′,′70:ee:50:18:34:43′,′00:16:6c:ab:6b:88′) OR IFNULL(′eth#dst′,″) IN (′00:24:e4:11:18:a8′,′70:ee:50:18:34:43′,′00:16:6c:ab:6b:88′)) THEN 3 WHEN (IFNULL(′eth#src′,″) IN (′ec:1a:59:79:f4:89′,′50:c7:bf:00:56:39′) OR IFNULL(′eth#dst′,″) IN (′ec:1a:59:79:f4:89′,′50:c7:bf:00:56:39′)) THEN 4 ELSE -1 END ASlabel, case WHEN (IFNULL(′eth#src′,″)=′44:65:0d:56:cc:d3′ OR IFNULL(′eth#dst′,″)=′44:65:0d:56:cc:d3′) THEN ′Hubs_Amazon Echo_44:65:0d:56:cc:d3′ WHEN (IFNULL(′eth#src′,″)=′e0:76:d0:33:bb:85′ OR IFNULL(′eth#dst′,″)=′e0:76:d0:33:bb:85′) THEN ′Electronics_Pix photo frame_e0:76:d0:33:bb:85′ WHEN (IFNULL(′eth#src′,″)=′00:24:e4:11:18:a8′ OR IFNULL(′eth#dst′,″)=′00:24:e4:11:18:a8′) THEN ′Cameras_Withing Smart Baby Monitor_00:24:e4:11:18:a8′ WHEN (IFNULL(′eth#src′,″)=′70:ee:50:18:34:43′ OR IFNULL(′eth#dst′,″)=′70:ee:50:18:34:43′) THEN ′Cameras_Netatmo Welcome_70:ee:50:18:34:43′ WHEN (IFNULL(′eth#src′,″)=′00:16:6c:ab:6b:88′ OR IFNULL(′eth#dst′,″)=′00:16:6c:ab:6b:88′) THEN ′Cameras_Samsung Smart Camera_00:16:6c:ab:6b:88′ WHEN (IFNULL(′eth#src′,″)=′ec:1a:59:79:f4:89′ OR IFNULL(′eth#dst′,″)=′ec:1a:59:79:f4:89′) THEN ′Switches&Triggers_Belkin Wemo Switch_ec:1a:59:79:f4:89′ WHEN (IFNULL(′eth#src′,″)=′50:c7:bf:00:56:39′ OR IFNULL(′eth#dst′,″)=′50:c7:bf:00:56:39′) THEN ′Switches&Triggers_TP-Link Smart Plug_50:c7:bf:00:56:39′ END ASdevice FROM world.′16-09-23_export_csv′GROUP BY label, device,5MinInterval HAVING label !=-1 /*hereunion other tables*/ ORDER BY label,device,5MinInterval 上述代碼實(shí)現(xiàn)了2016年9月23日的流量統(tǒng)計(jì)特征值提取,其他日期的特征提取,僅需在此代碼基礎(chǔ)上更換表名后使用UNION語(yǔ)句連接即可。將SQL查詢結(jié)果導(dǎo)出為CSV文件作為神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練數(shù)據(jù)集,如圖7所示,得到的屬性列可分為流量特征和業(yè)務(wù)特征兩類,其中用戶包數(shù)量(userPacketNumber)﹑用戶包長(zhǎng)度平均值(userPacketLengthAvg)﹑用戶包長(zhǎng)度峰值(userPacketLengthPeak)﹑控制包數(shù)量(controlPacketNumber)﹑控制包長(zhǎng)度平均值(controlPacketLengthAvg)﹑控制包長(zhǎng)度峰值(controlPacketLengthPeak)為六個(gè)統(tǒng)計(jì)特征列,5分鐘時(shí)間段(5MinInterval)﹑標(biāo)簽類別(lable)﹑標(biāo)簽對(duì)應(yīng)的設(shè)備(device)為三個(gè)業(yè)務(wù)特征列,通過(guò)六個(gè)統(tǒng)計(jì)特征列和一個(gè)訓(xùn)練標(biāo)簽列即構(gòu)成了深度學(xué)習(xí)領(lǐng)域的訓(xùn)練數(shù)據(jù)集,另外兩個(gè)業(yè)務(wù)特征列僅便于人工校驗(yàn)。得到的這六個(gè)統(tǒng)計(jì)特征列即完整實(shí)現(xiàn)了文獻(xiàn)[5]所提出的對(duì)于設(shè)備分類場(chǎng)景區(qū)分度最高的一組特征向量。類似地可生成測(cè)試數(shù)據(jù)集,至此完成整個(gè)預(yù)處理實(shí)驗(yàn)流程。 圖7 預(yù)處理后生成的流量統(tǒng)計(jì)特征數(shù)據(jù)集(前20條) 為了進(jìn)一步說(shuō)明本文方法的有效性,將本文方法﹑流量提取工具SDN-pcap-Simulator以及傳統(tǒng)Excel統(tǒng)計(jì)方式三者進(jìn)行實(shí)現(xiàn)對(duì)比。SDN-pcap-Simulator是文獻(xiàn)[28]中公開數(shù)據(jù)集所配套的預(yù)處理工具(C語(yǔ)言編寫),根據(jù)說(shuō)明其調(diào)用方式為bin/sim[pcap-filename][mode]。參數(shù)mode有三種模式,分別為0-獲取所有IP流﹑1-獲取所有NTP流﹑2-獲取所有DNS流,通過(guò)一條命令可以提取到所有IP包。雖然是與數(shù)據(jù)集所配套的工具,但其所提供的功能有很大局限性,僅是把解析到的網(wǎng)絡(luò)流寫到一個(gè)日志文件里,沒有進(jìn)一步處理且不計(jì)算統(tǒng)計(jì)特征。作為Office辦公軟件之一的Excel工具,具有十分強(qiáng)大的數(shù)據(jù)處理功能,可以操縱和匯總CSV文件格式數(shù)據(jù),通過(guò)其所提供的數(shù)據(jù)透視表功能可以手動(dòng)實(shí)現(xiàn)分類匯總的統(tǒng)計(jì)功能,但由于Excel同一工作表的記錄行有數(shù)量限制,在實(shí)際操作中提示超出1 048 576行的處理上限,且文件十分龐大操作響應(yīng)緩慢,這對(duì)于動(dòng)輒數(shù)千萬(wàn)記錄的pcap包文件,顯然已經(jīng)超出了其處理能力,這就導(dǎo)致傳統(tǒng)Excel的預(yù)處理方式效率低﹑易出錯(cuò)﹑不易維護(hù)。本文方法創(chuàng)新性地提出統(tǒng)計(jì)特征規(guī)則抽象與特征提取庫(kù)對(duì)應(yīng)的思想方法,較現(xiàn)有流量提取工具極大地提升了流量特征提取工作的需求通用性,在處理能力和處理效率方面較Excel手動(dòng)拖曳數(shù)據(jù)方式有了顯著提升,由于結(jié)合了關(guān)系型數(shù)據(jù)庫(kù)及SQL語(yǔ)言的處理優(yōu)勢(shì),后期數(shù)據(jù)調(diào)整的靈活性﹑海量數(shù)據(jù)的批處理能力和代碼的可擴(kuò)展可復(fù)用性均可以得到有效保證。表4為三種預(yù)處理方式的效果對(duì)比。 表4 三種預(yù)處理方式的效果對(duì)比 由于SDN-pcap-Simulator在通用性上無(wú)法實(shí)現(xiàn)定制需求,下面只對(duì)Excel和本文方法進(jìn)行數(shù)據(jù)處理效率的定量比較。對(duì)比的統(tǒng)計(jì)特征需求為匯總并提取出不同數(shù)據(jù)流的包數(shù)量和包長(zhǎng)度平均值,使用的處理機(jī)器配置為Intel i5- 4210M 2.6 GHz處理器﹑4 GB內(nèi)存﹑64位操作系統(tǒng),對(duì)比數(shù)據(jù)源選取16-09-23.pcap流量文件,該流量文件中共有947 072條數(shù)據(jù)包記錄。本文方法通過(guò)表1中第一項(xiàng)﹑第三項(xiàng)﹑第四項(xiàng)組合實(shí)現(xiàn);Excel方法通過(guò)數(shù)據(jù)透視表設(shè)置五元組為行標(biāo)簽,數(shù)量和平均值為數(shù)值標(biāo)簽來(lái)實(shí)現(xiàn)。表5顯示了兩種方法對(duì)于上述統(tǒng)計(jì)特征需求的處理效率對(duì)比,其中統(tǒng)計(jì)執(zhí)行階段本文方法用時(shí)高于Excel方法是由于Excel在數(shù)據(jù)加載(文件打開)時(shí)將數(shù)據(jù)讀取到了內(nèi)存并寫到界面上,等到統(tǒng)計(jì)執(zhí)行時(shí)Excel就只在界面上和內(nèi)存中操作,不用再讀取物理文件,因?yàn)镋xcel在數(shù)據(jù)加載階段消耗了較長(zhǎng)時(shí)間,導(dǎo)致了單純的執(zhí)行速度Excel會(huì)比較快。不難發(fā)現(xiàn)由于本文方法采用的數(shù)據(jù)載體是數(shù)據(jù)庫(kù)表,在數(shù)據(jù)加載和全部處理過(guò)程用時(shí)上有明顯優(yōu)勢(shì),且若對(duì)數(shù)據(jù)字段較為熟悉,可省略數(shù)據(jù)加載過(guò)程用時(shí),直接運(yùn)行SQL語(yǔ)句統(tǒng)計(jì)執(zhí)行即可,而Excel方法必須經(jīng)過(guò)較長(zhǎng)的數(shù)據(jù)加載過(guò)程。 表5 數(shù)據(jù)處理效率(平均用時(shí))對(duì)比 s 本文提出利用關(guān)系型數(shù)據(jù)庫(kù)提取網(wǎng)絡(luò)流統(tǒng)計(jì)特征的方法,綜合運(yùn)用了網(wǎng)絡(luò)領(lǐng)域知識(shí)和數(shù)據(jù)庫(kù)領(lǐng)域知識(shí),并結(jié)合了深度學(xué)習(xí)領(lǐng)域數(shù)據(jù)集的構(gòu)建格式[10],完成了從原始pcap流量文件至神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練文件之間的預(yù)處理轉(zhuǎn)換,實(shí)驗(yàn)結(jié)果顯示了該方法具有很好的實(shí)用性和普適性。未來(lái)可以進(jìn)一步改進(jìn)為動(dòng)態(tài)SQL結(jié)合SP(存儲(chǔ)過(guò)程)的方式,從而提升大批量pcap文件的處理效率和自動(dòng)化程度。2.2 數(shù)據(jù)交互與實(shí)現(xiàn)方法
3 實(shí) 驗(yàn)
3.1 網(wǎng)絡(luò)數(shù)據(jù)流采集
3.2 統(tǒng)計(jì)特征提取
3.3 方法對(duì)比
4 結(jié) 語(yǔ)