張呂軍
(北京安帝科技有限公司,北京 100142)
近年來,物聯(lián)網(wǎng)(IoT)設(shè)備的應(yīng)用越來越廣泛,IoT設(shè)備部署的最新統(tǒng)計信息如圖1所示。其中,智能城市占28.6%;工業(yè)物聯(lián)網(wǎng)占26.4%;電子醫(yī)療占22%;智能家居占15.4%;智能車輛占7.7%[1]??梢哉f,物聯(lián)網(wǎng)設(shè)備在日常生活中具有越來越大的可用性和便利性。目前來看,大部分廠商都在積極部署其關(guān)鍵基礎(chǔ)架構(gòu)以幫助執(zhí)行專業(yè)任務(wù)。
圖1 物聯(lián)網(wǎng)應(yīng)用范圍
物聯(lián)網(wǎng)技術(shù)的應(yīng)用已向用戶證明了各種好處。但是,物聯(lián)網(wǎng)設(shè)備仍存在許多漏洞,這些漏洞暴露于網(wǎng)絡(luò)環(huán)境中是非常危險的。設(shè)備部署中各種物聯(lián)網(wǎng)協(xié)議的復(fù)雜性也阻礙了物聯(lián)網(wǎng)通用網(wǎng)絡(luò)安全解決方案的發(fā)展[2]。例如,MQTT協(xié)議是物聯(lián)網(wǎng)中普遍部署的應(yīng)用程序協(xié)議,但是該協(xié)議本身存在多個漏洞,這些漏洞很容易受到如設(shè)備泄露、數(shù)據(jù)盜竊、節(jié)點(diǎn)盜竊、拒絕服務(wù)以及中間人(MiTM)攻擊[3-4]。
本文提出了一種基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量分類的入侵檢測系統(tǒng)的新穎設(shè)計。多分類器包括帶有嵌入層的前饋神經(jīng)網(wǎng)絡(luò)模型,以識別四種攻擊類別,即拒絕服務(wù)(DoS)、分布式拒絕服務(wù)(DDoS)、數(shù)據(jù)收集和數(shù)據(jù)盜竊,同時區(qū)分攻擊的流量。另外,通過嵌入層編碼的概念提取了高維分類特征的編碼,然后基于遷移學(xué)習(xí)將其應(yīng)用于二元分類器上。本文的貢獻(xiàn)如下:
(1)基于深度學(xué)習(xí)和遷移學(xué)習(xí)的概念,設(shè)計用于物聯(lián)網(wǎng)的入侵檢測系統(tǒng)。
(2)根據(jù)原始網(wǎng)絡(luò)流量處理和生成數(shù)據(jù)包級別的特征(即包頭字段信息)。
(3)通過公開的數(shù)據(jù)集評估提出的二進(jìn)制和多分類器,其中包括模擬的IoT跟蹤和實(shí)際攻擊流量。
本文的方法分為5個步驟:數(shù)據(jù)收集、特征抽取、特征預(yù)處理、模型訓(xùn)練和測試/分類,如圖2所示。
圖2 基于深度遷移學(xué)習(xí)的物聯(lián)網(wǎng)入侵檢測框架圖
第一次迭代是收集原始網(wǎng)絡(luò)流量。本文使用由Koroniotis等人開發(fā)的可公開獲得的數(shù)據(jù)集(BoT-IoT數(shù)據(jù)集)[5]。需要使用數(shù)據(jù)集的原因有很多,包括部署實(shí)際的測試平臺、生成模擬的IoT流量和實(shí)際的攻擊流量以及插入標(biāo)記的數(shù)據(jù)。
本文通過網(wǎng)絡(luò)分析器工具(即tcpdump)以PCAP文件的格式收集了BoT-IoT數(shù)據(jù)集中的原始流量,并在收集流量時對其進(jìn)行了標(biāo)記;然后使用Argus工具生成了網(wǎng)絡(luò)流量[6]。處理后的流量存儲在Argus文件中,并進(jìn)一步轉(zhuǎn)換為CSV文件。
第二次迭代是檢索數(shù)據(jù)包級別的標(biāo)簽,并從原始網(wǎng)絡(luò)流量中的這些數(shù)據(jù)包中提取相關(guān)字段,每個字段都對應(yīng)于一個特征。在這項(xiàng)工作中采用的特征是基于來自各個數(shù)據(jù)包的包頭字段信息,而不是基于聚合數(shù)據(jù)包。本文使用TShark工具從收集的344個PCAP文件中提取單個數(shù)據(jù)包的包頭字段,將其標(biāo)記為數(shù)據(jù)包,并將其存儲在CSV文件中。然后,本文將架構(gòu)統(tǒng)一到CSV文件中,將文件轉(zhuǎn)換為單個ApacheParquet文件,并選擇大約2%的已處理數(shù)據(jù)集。下面解釋每個步驟的細(xì)節(jié)。
特征描述:本文僅考慮了IP數(shù)據(jù)包,并從PCAP文件中提取了總共29個數(shù)據(jù)包包頭字段。但是ARP數(shù)據(jù)包被排除在外,因?yàn)锳RP用于將IP地址轉(zhuǎn)換為MAC地址,與本文關(guān)注的攻擊無關(guān)。
標(biāo)簽映射:本文使用數(shù)據(jù)集中的標(biāo)簽分析了網(wǎng)絡(luò)流,并將相同的標(biāo)簽映射到這些網(wǎng)絡(luò)流中的各個數(shù)據(jù)包。由于不同子類別的攻擊流量是在不同的時間間隔執(zhí)行的,而正常流量則是后臺生成的,這使得區(qū)分攻擊更加容易。此外,還部署了四臺攻擊機(jī)來發(fā)起攻擊,這使本文能夠根據(jù)攻擊機(jī)的IP地址區(qū)分正常流量和攻擊流量。因此,本文開發(fā)了一個腳本,用于根據(jù)攻擊機(jī)的IP地址為每個攻擊子類別標(biāo)記數(shù)據(jù)包。本文將帶有標(biāo)簽的數(shù)據(jù)包存儲在CSV文件中,并將這些文件與具有不同攻擊子類別的文件放在不同的文件夾中。
文件格式統(tǒng)一:本文統(tǒng)一使用CSV文件,并將文件轉(zhuǎn)換為單個Parquet文件以減小文件大小并提高處理速度。本文將字符串類型轉(zhuǎn)換為雙精度等類型以保持一致性。
數(shù)據(jù)集提取:選擇了大約2%具有提取特征的處理數(shù)據(jù)集(數(shù)據(jù)包總數(shù)為11 252 406)。對于正常流量,從所有正常數(shù)據(jù)包中選擇2%。對于每個子類別的攻擊流量,選擇100萬個數(shù)據(jù)包作為閾值。如果數(shù)據(jù)包數(shù)量低于閾值,則選擇所有數(shù)據(jù)包;否則,將隨機(jī)選擇100萬個數(shù)據(jù)包。
第三次迭代是通過刪除和組合特征列以及對分類列特征編碼進(jìn)行字段信息提取,以將其輸入到深度神經(jīng)網(wǎng)絡(luò)模型中。本文刪除了五列,包括時間戳列(即frame.time_epoch)以及包含源IP地址(即ip.src/ipv6.src)和目標(biāo)IP地址(即ip.dst/ipv6.dst)的列。本文觀察到四對TCP/UDP相關(guān)列中的值在每對中彼此不重疊(即tcp.len和udp.length、tcp.stream和 udp.stream、tcp.srcport和 udp.srcport、tcp.dstportand和upd.dstport)。因此,本文將這四對列組合在一起,并將它們分別命名為length、stream、src.port和dst.port。對于每個具有逗號分隔值的列(即ip.ttl、ip.id、ip.hdr_len和ip.len),本文生成了一個新列,將逗號分隔值分為兩列,并使用NaN值填充空白行在新列中。
本文在所有特征列中確定了分類特征列。對于具有低維分類變量的列(即ip.proto、tcp.flags、ip.flags.df和http.response.code),本文應(yīng)用onehot編碼并刪除了原始列;將這些列和其他具有非分類值的列稱為輸入列。對于具有高維分類變量的列(即src.port、dst.port和http.request.method),本文將它們與其他列分離,并將在深度神經(jīng)網(wǎng)絡(luò)模型中用編碼方式來計算端口和表示HTTP請求方法。
本文將預(yù)處理后的數(shù)據(jù)分為訓(xùn)練集和測試集,分別用于訓(xùn)練次迭代和測試次迭代。
訓(xùn)練次迭代從訓(xùn)練集中獲取處理后的數(shù)據(jù),并將其饋入前饋神經(jīng)網(wǎng)絡(luò)模型。既考慮了二分類又考慮了多分類。本文采用具有嵌入層的前饋神經(jīng)網(wǎng)絡(luò)模型進(jìn)行多分類,其中除了正常流量類別外,一系列攻擊類別還被視為單獨(dú)的類別。然后,從嵌入層提取權(quán)重以對高維分類特征列進(jìn)行編碼,并構(gòu)建第二個前饋神經(jīng)網(wǎng)絡(luò)模型以執(zhí)行二分類。測試次迭代是評估指定測試集上的分類器。二元分類器為測試集中的每個數(shù)據(jù)實(shí)例輸出正?;蚬魳?biāo)簽,而多分類器則輸出類標(biāo)簽(即它所屬的常規(guī)或特定攻擊類)。
本文考慮使用前饋神經(jīng)網(wǎng)絡(luò)(FNN)模型,在這項(xiàng)工作中采用FNN的原因是它被認(rèn)為是第一種也是最簡單的人工神經(jīng)網(wǎng)絡(luò)。本文將多分類FNN模型表示為mFNN模型,將用于二分類的FNN模型表示為bFNN模型,并分別詳細(xì)說明這兩種模型以及遷移學(xué)習(xí)的概念[7]。
mFNN模型:使用三個數(shù)組作為輸入,其中兩個是嵌入層的輸入。端口嵌入層的輸入維數(shù)為65 537(所有正式和非官方端口的0和65 535~65 536之間的NaN值均已編碼),輸出維數(shù)為16;而HTTP請求方法嵌入層的輸入維數(shù)為93(其中92種為正式請求方法,并且為無值編碼的字符串),輸出維數(shù)為4。兩個嵌入層的權(quán)重都將通過模型訓(xùn)練來學(xué)習(xí)。全局平均池層應(yīng)用于端口嵌入層,以計算源端口和目標(biāo)端口的平均值。然后,將返回的向量與HTTP請求方法嵌入層和輸入數(shù)組連接在一起。最后與全連接層連接。
遷移學(xué)習(xí):通過在mFNN模型中的嵌入層來提取高維分類特征的編碼,并將該編碼應(yīng)用于bFNN模型中相同的高維分類特征。將特征編碼表示從mFNN模型遷移到bFNN模型是可行的,因?yàn)閎FNN模型是在mFNN模型使用的數(shù)據(jù)子集上訓(xùn)練的,所以保證了編碼的通用性。更重要的是,bFNN模型不需要通過添加嵌入層來對高維分類特征進(jìn)行編碼,因?yàn)樗鼤黾佑?xùn)練時間并導(dǎo)致失去特征表示的通用性。具體而言,提取mFNN模型的兩個嵌入層的權(quán)重并將其存儲在兩個數(shù)組中,以用作bFNN模型中的端口和HTTP請求方法的編碼。
bFNN模型:使用mFNN模型中兩個嵌入層的權(quán)重(存儲為兩個數(shù)組)對源/目標(biāo)端口和HTTP請求方法(即src.port、dst.port和http.request.method)進(jìn)行編碼。然后,將已編碼的列與其他特征列合并,并作為模型的輸入。bFNN模型包括三個具有512個神經(jīng)元的全連接層,并且在前兩個全連接層(即輸入層和隱藏層)中使用ReLU函數(shù),在最后一個全連接層(即輸出層)中使用兩個神經(jīng)元和一個Softmax函數(shù)。bFNN模型使用與mFNN模型相同的超參數(shù)(即隱藏的全連接層數(shù)量和隱藏的全連接層中的神經(jīng)元數(shù)量)
本文使用不同超參數(shù)和三種正則化技術(shù)對mFNN模型進(jìn)行了調(diào)整。將相同的超參數(shù)和正則化優(yōu)化用于bFNN模型,旨在將模型的泛化應(yīng)用于不同的分類問題。本文使用的FNN模型由三個全連接層組成,前兩個全連接層中具有512個神經(jīng)元,默認(rèn)的Adamoptimiser學(xué)習(xí)率(即0.001)作為基線模型[8]。使用512個神經(jīng)元作為起點(diǎn)有兩個原因:(1)提取的數(shù)據(jù)集已足夠(具有9 163 751條記錄),因此過擬合問題就不會發(fā)生(當(dāng)神經(jīng)網(wǎng)絡(luò)具有處理能力但訓(xùn)練數(shù)據(jù)中包含的有限信息量不足以訓(xùn)練隱藏層中的所有神經(jīng)元時,就會出現(xiàn)問題);(2)本文的深度神經(jīng)網(wǎng)絡(luò)是在GPU上訓(xùn)練的,可以以較高效率運(yùn)行。
正則化:本文嘗試了三種常用的正則化技術(shù),分別是L1、L2和Dropout。結(jié)果表明,分類精度沒有變化。已有研究證明,進(jìn)行正則化可以有效避免過度擬合的風(fēng)險。由于用于訓(xùn)練模型的數(shù)據(jù)集很大,因此過擬合問題并不是一個大問題[9]。
超參數(shù)調(diào)整:本文探索了神經(jīng)網(wǎng)絡(luò)的不同架構(gòu)。具體來說,本文添加/減少了隱藏層(從2到4),減少了神經(jīng)元的數(shù)量(128個或256個神經(jīng)元),增加了神經(jīng)元的數(shù)量(1 024個神經(jīng)元,不包括最后一個全連接層),并添加了Dropout率為0.1的Dropout層(不包括最后一個全連接層)。結(jié)果表明,基線神經(jīng)網(wǎng)絡(luò)模型具有最佳性能。在基線模型的變體上,分類準(zhǔn)確性不會提高。這可能是由于模型復(fù)雜度低/高引起的。如果模型復(fù)雜度太低,則該模型可能無法捕獲類的變化;如果模型復(fù)雜度太高,則該模型可能會在類上產(chǎn)生過度擬合問題,并且需要更多時間進(jìn)行訓(xùn)練。因此,在具有太低/太高復(fù)雜度的模型下,分類性能可能會變差。本文對Adam優(yōu)化器的不同學(xué)習(xí)率(即0.01、0.001、0.000 1和0.000 01)進(jìn)行了實(shí)驗(yàn),并選擇了0.000 1作為獲得最高準(zhǔn)確性的最優(yōu)學(xué)習(xí)率。
對于本文所有的實(shí)驗(yàn),本文使用了帶有TeslaV100GPU和93GRAM的高性能計算(HPC)集群以及TensorFlow庫和Keras庫。本文將提取的數(shù)據(jù)集劃分如下:64%用于訓(xùn)練,16%用于驗(yàn)證(在調(diào)整模型超參數(shù)時提供對訓(xùn)練數(shù)據(jù)的模型擬合的無偏評估),20%以分層方式進(jìn)行測試。由于訓(xùn)練數(shù)據(jù)中的類別不平衡,本文在訓(xùn)練期間對各類別應(yīng)用了權(quán)重,針對代表性不足的類別(即數(shù)據(jù)包數(shù)量少)獲得更高的權(quán)重值[10]。本文通過將類別中的數(shù)據(jù)包總數(shù)除以訓(xùn)練數(shù)據(jù)中的數(shù)據(jù)包總數(shù),然后將商值取反來計算每個類別的權(quán)重,實(shí)驗(yàn)結(jié)果如圖3所示。
圖3中展示了mFNN模型在訓(xùn)練集(training)和驗(yàn)證集(validation)上的性能。采用了early stoping技術(shù),讓訓(xùn)練和驗(yàn)證過程在第15次迭代結(jié)束,進(jìn)行了5次迭代以減少驗(yàn)證集損失Loss減低過擬合問題。訓(xùn)練損失從第1次迭代的0.042 6下降到第2次迭代的0.013 9,然后穩(wěn)定下降直到第15次迭代;而第1次迭代的驗(yàn)證損失為0.009 3,然后在0.009到0.005之間波動。訓(xùn)練精度Accuracy起初從0.992 3提高到0.996 9,然后穩(wěn)步提高直到第15次迭代;而驗(yàn)證集準(zhǔn)確性在0.996和0.998之間略有變化。
圖3 多分類模型測試結(jié)果
如圖4所示,二進(jìn)制分類的評估指標(biāo)采用了Accuracy、Recall、Precision和F1 score這4種。顯而易見的是,其中所有值均高于0.999 9。bFNN模型可實(shí)現(xiàn)高Accuracy、Recall、Precision和F1 score(即99.99%),而只有少數(shù)數(shù)據(jù)包被錯誤分類。關(guān)于每個攻擊子類別的分類所運(yùn)行的時間,bFNN模型在5~10 min內(nèi)完成了訓(xùn)練和驗(yàn)證任務(wù)。
圖4 二分類模型測試結(jié)果
深度學(xué)習(xí)技術(shù)已顯示出它們能夠在各種研究領(lǐng)域準(zhǔn)確地進(jìn)行模式識別的能力。在物聯(lián)網(wǎng)應(yīng)用中,此類技術(shù)可用于檢測網(wǎng)絡(luò)入侵。本文提出了一種針對物聯(lián)網(wǎng)的網(wǎng)絡(luò)入侵檢測系統(tǒng)架構(gòu),該設(shè)計基于包括定制前饋神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型。本文將流量包頭字段視為通用參數(shù),并采用嵌入編碼和遷移學(xué)習(xí)的概念對從數(shù)據(jù)集獲取的數(shù)據(jù)的高維分類特征進(jìn)行降維編碼。本文已經(jīng)在包含實(shí)際網(wǎng)絡(luò)流量的數(shù)據(jù)集上測試了用于二進(jìn)制和多分類的模型。獲得的結(jié)果表明了所提出技術(shù)的有效性;特別地,發(fā)現(xiàn)對于二元分類器,檢測精度接近99.99%,而對于多分類器,則達(dá)到了約99.79%。因此有必要據(jù)此對物聯(lián)網(wǎng)網(wǎng)絡(luò)入侵檢測系統(tǒng)設(shè)計進(jìn)行更深入的研究。
物聯(lián)網(wǎng)技術(shù)2021年11期