




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
[15]。首先,這里將處理好的78維數(shù)據(jù)作為輸入,由于訓(xùn)練批次被設(shè)置為128,所以輸入維度為128*1*78,并在第一層卷積層中使用的卷積核大小為6。其次,使用Relu發(fā)起函數(shù)發(fā)起,在第二層的卷積層中使用的卷積核大小也為6,進(jìn)一步處理這些數(shù)據(jù)。在每個(gè)卷積層的處理之后,使用Relu發(fā)起函數(shù)發(fā)起。接著執(zhí)行數(shù)據(jù)展平操作,將數(shù)據(jù)轉(zhuǎn)化為17408維向量輸入到全連接層。輸出維度設(shè)置為256維。然后,為了避免過擬合,利用Dropout運(yùn)算隨機(jī)滅活全連接層后面的一些神經(jīng)元,并確定滅活率為0.5。最后再設(shè)置一層全連接層,將256維的輸入數(shù)據(jù)輸出為4維數(shù)據(jù),它是與最后分類結(jié)果相對(duì)應(yīng)的。CNN卷積神經(jīng)網(wǎng)絡(luò)具體參數(shù)如表3.7所示。表3.7CNN卷積神經(jīng)網(wǎng)絡(luò)具體參數(shù)網(wǎng)絡(luò)層輸入卷積核輸出卷積層1128*1*786128*128*73卷積層2128*128*736128*256*68全連接層117408256全連接層22564而在CNN-BILSTM和CNN-BIGRU模型中,卷積層和最后一層全連接層與CNN模型完全相同,不同點(diǎn)在于它們?cè)跀?shù)據(jù)展平之后分別用了LSTM和GRU算法來代替第一層全連接層的處理。CNN-BILSTM的代碼片段如下代碼3.8所示。代碼3.8CNN-BILSTM模型代碼片段#CNNlayersself.conv1=nn.Conv1d(in_channels=1,out_channels=128,kernel_size=6)self.conv2=nn.Conv1d(in_channels=128,out_channels=256,kernel_size=6)self.flatten=nn.Flatten()self.dropout=nn.Dropout(0.5)#BiLSTMlayersself.bilstm=nn.LSTM(input_size=17408,hidden_size=128,num_layers=1,batch_first=True,bidirectional=True)self.fc=nn.Linear(256,4)#Outputlayerwith4unitsfor4classes從代碼片段中可以看出,LSTM中輸入數(shù)據(jù)的特征維度為17408,隱層的維度為128,循環(huán)神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為1。參數(shù)的具體設(shè)置與CNN模型中完全相同。需要注意的是,在數(shù)據(jù)展平之后需要將數(shù)據(jù)處理成BILSTM算法輸入的格式,才能夠進(jìn)行后續(xù)的處理。CNN-BIGRU的代碼如下3.9所示,由于只是采用的算法不同,因此不再過多贅述。代碼3.9CNN-BIGRU模型代碼片段#CNNlayersself.conv1=nn.Conv1d(in_channels=1,out_channels=128,kernel_size=6)self.conv2=nn.Conv1d(in_channels=128,out_channels=256,kernel_size=6)self.flatten=nn.Flatten()self.dropout=nn.Dropout(0.5)#BiGRUlayersself.bigru=nn.GRU(input_size=17408,hidden_size=128,num_layers=1,batch_first=True,bidirectional=True)self.fc=nn.Linear(256,4)#Outputlayerwith4unitsfor4classes3.5訓(xùn)練測(cè)試模塊在訓(xùn)練過程中,設(shè)置了批次batch_size為128,一輪訓(xùn)練循環(huán)為20次。訓(xùn)練過程中使用交叉熵?fù)p失函數(shù)和Adam優(yōu)化器,使得損失進(jìn)行反向傳播、梯度進(jìn)行更新。在這個(gè)過程中,同時(shí)計(jì)算訓(xùn)練的損失和準(zhǔn)確率,然后用Softmax算法來得到一個(gè)最大概率的預(yù)測(cè)結(jié)果,保存每一次訓(xùn)練的準(zhǔn)確率并且與最佳的模型進(jìn)行對(duì)比,如果當(dāng)前模型的準(zhǔn)確率大于最優(yōu)的模型,那么將保存當(dāng)前模型為最佳模型并更新權(quán)重。最后用Python來繪制loss和accuracy曲線,以便及時(shí)的查看網(wǎng)絡(luò)訓(xùn)練情況。同時(shí)在驗(yàn)證集上也進(jìn)行相應(yīng)的評(píng)估,唯一的不同是不進(jìn)行反向傳播和梯度的更新。由于三個(gè)模型的曲線非常相似,本文僅展示CNN模型的準(zhǔn)確率和損失曲線。如下圖3.10所示為CNN模型的訓(xùn)練和驗(yàn)證的準(zhǔn)確率曲線。其中縱坐標(biāo)Accuracy代表準(zhǔn)確率,橫坐標(biāo)一個(gè)Epoch代表將所有的數(shù)據(jù)送入網(wǎng)絡(luò)中,完成一次前向計(jì)算和反向傳播的過程。藍(lán)色曲線代表訓(xùn)練的準(zhǔn)確率,紅色曲線代表驗(yàn)證的準(zhǔn)確率。下圖3.11所示為CNN模型訓(xùn)練和驗(yàn)證的損失曲線,縱坐標(biāo)Loss代表損失,藍(lán)色曲線代表訓(xùn)練的損失,紅色曲線代表驗(yàn)證的損失。
圖3.10CNN模型訓(xùn)練和驗(yàn)證的準(zhǔn)確率曲線圖3.11CNN模型訓(xùn)練和驗(yàn)證的損失曲線在測(cè)試模塊中,對(duì)訓(xùn)練好的最佳模型進(jìn)行測(cè)試,通過sklearn包來分別得出三種模型的準(zhǔn)確率、精確率、召回率和F1分?jǐn)?shù)。并繪制混淆矩陣,最終進(jìn)行對(duì)比和分析。3.6實(shí)驗(yàn)結(jié)果分析為了證明本章提出的模型在異常流量檢測(cè)方面的有效性,這里在CICIDS-2017數(shù)據(jù)集上分別與經(jīng)典的機(jī)器學(xué)習(xí)算法KNN、RF等其他傳統(tǒng)機(jī)器學(xué)習(xí)模型如邏輯回歸、決策樹和隨機(jī)森林進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3.12所示。表3.12實(shí)驗(yàn)?zāi)P图八捻?xiàng)評(píng)價(jià)指標(biāo)模型準(zhǔn)確率(%)精確率(%)召回率(%)F1分?jǐn)?shù)(%)Adaboost77.1377.2184.1480.52MLP76.6376.5182.7379.50KNN96.3396.3396.3296.32SVM95.2795.3295.2995.30RF96.7897.4696.7897.11DT96.3196.5796.3296.44LogisticRegression96.3696.3896.0196.19DecisionTree96.4896.2496.7896.34RandomForestAlgorithm96.8796.6496.7496.68CNN91.9092.1891.9090.86CNN-BILSTM97.4997.6497.4997.44CNN-BIGRU97.7097.8197.7997.69從表3.12中可以看出,CNN-BILSTM、CNN-BIGRU模型在準(zhǔn)確率、精確率、召回率、F1分?jǐn)?shù)這四個(gè)關(guān)鍵評(píng)價(jià)指標(biāo)上都明顯超越了其他傳統(tǒng)的機(jī)器學(xué)習(xí)算法和單一的CNN模型,充分展示了深度學(xué)習(xí)在處理異常流量檢測(cè)任務(wù)時(shí)的卓越性能。從表3.12中可以看出,CNN-BIGRU模型的性能最佳,因此本文后續(xù)建立的系統(tǒng)分類結(jié)果的判斷將由三種模型分別檢測(cè)得出,如果檢測(cè)結(jié)果相同,則直接輸出分類結(jié)果;如果不同,則取用CNN-BIGRU模型預(yù)測(cè)的結(jié)果。為了更進(jìn)一步體現(xiàn)模型在不同類別上的表現(xiàn),評(píng)估模型的性能,本文還分別繪制了CNN、CNN-BILSTM、CNN-BIGRU的混淆矩陣??梢愿玫亓私饽P驮诓煌悇e上的預(yù)測(cè)情況,從而更好地理解模型的決策過程。在訓(xùn)練的過程中,繪制混淆矩陣也幫助本文更好地優(yōu)化了模型。如下圖3.13所示為CNN模型的混淆矩陣,3.14所示為CNN-BILSTM模型的混淆矩陣,3.15所示為CNN-BIGRU模型的混淆矩陣。
圖3.13CNN模型混淆矩陣圖3.14CNN-BILSTM模型混淆矩陣
圖3.15CNN-BIGRU模型混淆矩陣如三圖所示,圖中橫坐標(biāo)為預(yù)測(cè)標(biāo)簽,縱坐標(biāo)為實(shí)際正確的標(biāo)簽,其中的數(shù)值表示為標(biāo)簽數(shù)量。例如CNN-BIGRU中第一行第一列數(shù)據(jù)表示為預(yù)測(cè)標(biāo)簽為BENIGN(正常),實(shí)際標(biāo)簽也為BENIGN的數(shù)據(jù)包有783個(gè),第一行第二列數(shù)據(jù)表示預(yù)測(cè)標(biāo)簽為DosHulk,實(shí)際標(biāo)簽為BENIGN的數(shù)據(jù)包有5個(gè),其他數(shù)據(jù)以此類推。因此在從左上到右下這條對(duì)角線的數(shù)據(jù)包都是預(yù)測(cè)正確的,其他數(shù)據(jù)表示的預(yù)測(cè)錯(cuò)誤的且預(yù)測(cè)錯(cuò)誤的標(biāo)簽也可從圖中顯示。這些混淆矩陣可以高效的評(píng)估模型性能,了解這三種模型在不同類別上的預(yù)測(cè)情況。對(duì)比三個(gè)模型的混淆矩陣,可以發(fā)現(xiàn)CNN-BIGRU模型在預(yù)測(cè)異常標(biāo)簽時(shí)明顯強(qiáng)于CNN模型,稍強(qiáng)于CNN-BILSTM。而在預(yù)測(cè)正常標(biāo)簽時(shí),三個(gè)模型的性能較為接近。
4網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)需求分析4.1系統(tǒng)可行性分析4.1.1系統(tǒng)可行性基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)在技術(shù)上是可行的,Softmax分類算法和深度學(xué)習(xí)相關(guān)技術(shù)的發(fā)展提供了檢測(cè)網(wǎng)絡(luò)異常流量的方法。本文采用了Python語言編寫,建立并訓(xùn)練了CNN、CNN-BILSTM和CNN-BIGRU三種模型來預(yù)測(cè)異常的網(wǎng)絡(luò)流量,并通過嚴(yán)密的對(duì)比分析驗(yàn)證了模型的高效性能??偠灾?,本文基于以上所建立的模型、深度學(xué)習(xí)的相關(guān)算法、數(shù)據(jù)庫以及系統(tǒng)界面開發(fā)的相關(guān)框架,開發(fā)一個(gè)具備流量數(shù)據(jù)處理、流量數(shù)據(jù)鑒別、流量數(shù)據(jù)展示、流量數(shù)據(jù)查詢功能的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)是可行的。4.1.2時(shí)間可行性本文在開發(fā)基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)前進(jìn)行了嚴(yán)密的時(shí)間計(jì)劃和任務(wù)安排,在此基礎(chǔ)上建立了詳細(xì)的時(shí)間計(jì)劃安排表,將擬開發(fā)的一整個(gè)系統(tǒng)周期分解成碎片化的任務(wù),能幫助本人更好地明確現(xiàn)階段的目標(biāo)。同時(shí)閱讀了大量關(guān)于網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)的文獻(xiàn)和資料,這些工作都為后續(xù)系統(tǒng)的開發(fā)和測(cè)試節(jié)省了大部分的時(shí)間。同時(shí)進(jìn)行相關(guān)調(diào)查分析,明確了系統(tǒng)的功能和系統(tǒng)交互界面的需求。避免了后續(xù)需求變更以及系統(tǒng)界面的調(diào)整。最后將系統(tǒng)分成多個(gè)開發(fā)周期和測(cè)試階段,以便更早地發(fā)現(xiàn)和解決問題。總而言之,以上的種種措施,節(jié)省了系統(tǒng)開發(fā)的時(shí)間,并保證了系統(tǒng)的可行性和穩(wěn)定性。4.2系統(tǒng)需求分析4.2.1應(yīng)用背景分析隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,世界上的絕大多數(shù)人都加入了互聯(lián)網(wǎng)這個(gè)大環(huán)境,隨之而來的是網(wǎng)絡(luò)流量數(shù)據(jù)呈指數(shù)級(jí)的爆炸式增長(zhǎng)趨勢(shì)??梢哉f人們的生活已經(jīng)離不開網(wǎng)絡(luò),各行各業(yè)的存在和蓬勃發(fā)展也依托于網(wǎng)絡(luò)技術(shù)。因此,本文開發(fā)的基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)擁有廣泛的應(yīng)用背景。雖然說在大多數(shù)情況下,大部分的普通人使用的網(wǎng)絡(luò)環(huán)境都是正常且不存在惡意的網(wǎng)絡(luò)攻擊的,但是,由于網(wǎng)絡(luò)環(huán)境龐大的關(guān)系,還是有很多企業(yè)、部門以及其他單位有這方面的需求。他們大多數(shù)都需要接入不安全的網(wǎng)絡(luò)環(huán)境或者擁有機(jī)密數(shù)據(jù)需要防范網(wǎng)絡(luò)攻擊。例如電信或其他運(yùn)營商公司,它們的主要營銷人們的短信服務(wù)、電話通信服務(wù)以及其他智能物聯(lián)設(shè)備,為了保障客戶的隱私以及物聯(lián)設(shè)備上的信息安全,他們可以使用本文所建立的系統(tǒng),檢測(cè)出異常流量從而加以防范和處理。再比如說是教育部門,學(xué)校和教育局也掌握著學(xué)生的個(gè)人資料和考試的絕密題目,為了保障信息安全也可以使用本文所開發(fā)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)。再有甚者,例如游戲公司需要保障用戶的虛擬資產(chǎn)、醫(yī)院需要保障病人的病情資料、金融公司需要保障公司的財(cái)務(wù)數(shù)據(jù)等等??偠灾?,本文開發(fā)的基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)擁有者強(qiáng)大的應(yīng)用背景,用戶可以使用此系統(tǒng)來檢測(cè)出網(wǎng)絡(luò)流量數(shù)據(jù)的異常,從而采取相應(yīng)措施加以處理和預(yù)防。4.2.2市場(chǎng)需求分析1.網(wǎng)絡(luò)流量數(shù)據(jù)維度大,且存在數(shù)據(jù)類型參差不一,處理方式難度較大。2.網(wǎng)絡(luò)流量數(shù)據(jù)標(biāo)簽復(fù)雜,難以分辨不同網(wǎng)絡(luò)攻擊類型中,它們的網(wǎng)絡(luò)流量數(shù)據(jù)包的區(qū)別。3.隨著互聯(lián)網(wǎng)技術(shù)發(fā)展,黑客的攻擊技術(shù)也隨之進(jìn)步,面對(duì)多樣的網(wǎng)絡(luò)攻擊類型,用戶和管理員難以選擇適當(dāng)?shù)姆婪洞胧┘右苑婪丁?.網(wǎng)絡(luò)流量數(shù)據(jù)包字段類型多,網(wǎng)絡(luò)管理員難以學(xué)習(xí)不同網(wǎng)絡(luò)攻擊類型中各種字段的區(qū)別。4.2.3功能需求分析網(wǎng)絡(luò)異常流量檢測(cè)系統(tǒng)的主要目標(biāo)是能夠檢測(cè)網(wǎng)絡(luò)流量數(shù)據(jù)的異常情況,并以可視化的方式呈現(xiàn)檢測(cè)結(jié)果,從而幫助管理員能夠采取適當(dāng)?shù)拇胧┻M(jìn)行處理和預(yù)防,也可以幫助用戶更好地學(xué)習(xí)不同網(wǎng)絡(luò)攻擊類型中網(wǎng)絡(luò)流量數(shù)據(jù)字段的不同,更好地理解網(wǎng)絡(luò)攻擊的原理。因此本文開發(fā)的系統(tǒng)主要功能應(yīng)該包括:流量數(shù)據(jù)提取、流量數(shù)據(jù)處理、流量數(shù)據(jù)鑒別、流量數(shù)據(jù)展示、流量數(shù)據(jù)查詢。如圖4.1所示為各系統(tǒng)模塊間的關(guān)系圖。圖4.1系統(tǒng)模塊關(guān)系圖(1)流量數(shù)據(jù)提取功能網(wǎng)絡(luò)異常流量檢測(cè)系統(tǒng)旨在對(duì)實(shí)際的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行分析,以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量的數(shù)據(jù)異常檢測(cè)。為此需要提取網(wǎng)絡(luò)流量數(shù)據(jù)并進(jìn)行存儲(chǔ),以供后續(xù)的數(shù)據(jù)處理和分析。(2)流量數(shù)據(jù)處理功能由于系統(tǒng)提取的流量是存在異常值和無效字段的的,不能直接導(dǎo)入到模型中進(jìn)行檢測(cè)。因此,在數(shù)據(jù)處理模塊中,需要對(duì)這些采集到的數(shù)據(jù)包進(jìn)行解析和轉(zhuǎn)換,以便于后續(xù)的異常流量檢測(cè)算法使用。在數(shù)據(jù)處理功能中,還需要考慮如何處理數(shù)據(jù)量較大的情況,以保證系統(tǒng)的高效性和可擴(kuò)展性。(3)流量數(shù)據(jù)鑒別功能為了增強(qiáng)系統(tǒng)的實(shí)用性和可遷移性,需要網(wǎng)絡(luò)異常流量檢測(cè)采用加載預(yù)先訓(xùn)練好的模型文件的方式進(jìn)行檢測(cè)。這種方式可以在不同的計(jì)算機(jī)系統(tǒng)上運(yùn)行檢測(cè)程序,并且方便進(jìn)行模型的更新和升級(jí)。在加載模型時(shí),可以通過提供模型文件路徑、模型名稱等參數(shù)來完成模型的加載。通過這種方式,可以方便地進(jìn)行三個(gè)模型之間的比較和選擇,以達(dá)到更好的檢測(cè)效果。(4)流量數(shù)據(jù)展示功能網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)的核心是輸出檢測(cè)結(jié)果,因此系統(tǒng)需要輸出處理后提取的每條數(shù)據(jù)流的相關(guān)字段進(jìn)行展示。包括目標(biāo)端口、數(shù)據(jù)包大小、流持續(xù)時(shí)間在內(nèi)的78維數(shù)據(jù)。這些信息對(duì)于網(wǎng)絡(luò)管理員和安全專業(yè)人員來說非常重要,因?yàn)樗鼈兛梢杂脕矸治龊驮u(píng)估網(wǎng)絡(luò)中的異常行為,并及時(shí)采取適當(dāng)?shù)拇胧#?)流量數(shù)據(jù)查詢功能為了使系統(tǒng)具備良好的可交互性和高可用性,需要網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)具有相應(yīng)查詢功能,由于網(wǎng)絡(luò)流量數(shù)據(jù)包維度高,數(shù)量多的關(guān)系,篩選出想要的攻擊類型數(shù)據(jù)包需要花費(fèi)大量的時(shí)間。此功能可以給用戶和管理員節(jié)省很多時(shí)間,也方便他們對(duì)不同的網(wǎng)絡(luò)攻擊類型進(jìn)行比較。
5網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)設(shè)計(jì)5.1系統(tǒng)體系結(jié)構(gòu)本文所設(shè)計(jì)的網(wǎng)絡(luò)異常流量檢測(cè)系統(tǒng)采用了分層架構(gòu)設(shè)計(jì),系統(tǒng)可分為應(yīng)用層、表示層和數(shù)據(jù)層三個(gè)層次。其中,表示層為UI界面,用于展示異常流量檢測(cè)結(jié)果,使用戶可以方便地觀察和分析檢測(cè)結(jié)果,提高系統(tǒng)的可用性和用戶體驗(yàn)。應(yīng)用層為系統(tǒng)核心部分,主要包含網(wǎng)絡(luò)模型訓(xùn)練和異常流量檢測(cè)兩個(gè)部分。在模型訓(xùn)練的過程中使用CICIDS-2017數(shù)據(jù)集和本文提出的基于CNN、CNN-BILSTM、CNN-BIGRU的三種網(wǎng)絡(luò)異常流量檢測(cè)模型進(jìn)行訓(xùn)練。在異常流量檢測(cè)階段使用訓(xùn)練好的模型對(duì)采集到的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行檢測(cè),并輸出檢測(cè)結(jié)果。數(shù)據(jù)層為系統(tǒng)的數(shù)據(jù)庫,用于存儲(chǔ)數(shù)據(jù)鑒別后的結(jié)果,為系統(tǒng)的穩(wěn)定性和可靠性提供了保障。在檢測(cè)系統(tǒng)配置好相應(yīng)參數(shù)后,它會(huì)采樣網(wǎng)絡(luò)流量數(shù)據(jù),并對(duì)采集到的數(shù)據(jù)進(jìn)行預(yù)處理。在對(duì)網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行鑒別時(shí),后臺(tái)模塊會(huì)加載預(yù)先訓(xùn)練好的模型,對(duì)處理后的數(shù)據(jù)進(jìn)行檢測(cè),并最終輸出檢測(cè)結(jié)果。同時(shí)將檢測(cè)后的流量數(shù)據(jù)(包括所有字段)存儲(chǔ)在數(shù)據(jù)庫中。最后,用戶加載數(shù)據(jù)庫后,可以自行輸入想要查找的網(wǎng)絡(luò)攻擊類型,從而篩選出所有想要查找的數(shù)據(jù)。如圖5.1所示為系統(tǒng)運(yùn)行流程圖。圖5.1系統(tǒng)運(yùn)行流程圖5.2系統(tǒng)功能設(shè)計(jì)本系統(tǒng)主要由五個(gè)個(gè)模塊組成,分別是流量提取、數(shù)據(jù)處理、流量鑒別、數(shù)據(jù)展示以及數(shù)據(jù)查詢模塊,這些模塊之間的關(guān)系如圖5.2所示。圖5.2系統(tǒng)運(yùn)行流程圖(1)流量提取模塊該模塊是采樣網(wǎng)絡(luò)流量數(shù)據(jù)信息。該系統(tǒng)能夠利用預(yù)先設(shè)定的規(guī)則和過濾機(jī)制來搜集特定數(shù)據(jù)流,同時(shí)也允許用戶自行設(shè)定數(shù)據(jù)包的數(shù)量。避免用戶因?yàn)橹鳈C(jī)配置問題而導(dǎo)致采樣緩慢預(yù)測(cè)卡頓的問題。(2)數(shù)據(jù)處理模塊該模塊對(duì)采集到的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行處理,將其轉(zhuǎn)換為模型所需的數(shù)據(jù)格式,并進(jìn)行保存。其處理過程包括最大最小標(biāo)準(zhǔn)化處理、異常值剔除、刪除無用字段、時(shí)間序列的哈希值處理等等。(3)流量鑒別模塊該模塊是對(duì)輸入的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行細(xì)致地檢查和分類。更具體地說,它會(huì)加載經(jīng)過預(yù)訓(xùn)練的模型文件,并把處理過的網(wǎng)絡(luò)數(shù)據(jù)導(dǎo)入到該模型中進(jìn)行進(jìn)一步的檢驗(yàn)。該模型將對(duì)每一條數(shù)據(jù)流進(jìn)行分類處理,并生成相應(yīng)的分類標(biāo)簽,并迅速地自動(dòng)檢測(cè)和分類輸入的網(wǎng)絡(luò)流量數(shù)據(jù)。同時(shí),會(huì)將預(yù)測(cè)后的網(wǎng)絡(luò)流量數(shù)據(jù)結(jié)果寫入數(shù)據(jù)庫,方便用戶和管理員后續(xù)的操作。(4)數(shù)據(jù)展示模塊該模塊是呈現(xiàn)模型的檢測(cè)與分類成果,主要分為兩大部分:首先是呈現(xiàn)網(wǎng)絡(luò)流量數(shù)據(jù)的78維字段信息,其次是呈現(xiàn)網(wǎng)絡(luò)攻擊類型,網(wǎng)絡(luò)攻擊類型分為4類,分別是:BENIGN、DDos、PortScan、DosHulk。本模塊為用戶提供了一個(gè)直觀的圖形界面,幫助他們更清晰地掌握檢測(cè)的結(jié)果。此外還能提供關(guān)于異常流量的詳盡資料,如異常流量包的目標(biāo)端口、數(shù)據(jù)包大小、流持續(xù)時(shí)間等等,這有助于用戶更加深入地理解各類網(wǎng)絡(luò)攻擊所導(dǎo)致的異常流量的各種特性。(5)數(shù)據(jù)查詢模塊該模塊給用戶提供了數(shù)據(jù)查詢功能,主要分為兩大部分:首先是加載數(shù)據(jù)庫,顯示所有檢測(cè)后的網(wǎng)絡(luò)數(shù)據(jù)流量,其次是數(shù)據(jù)查詢部分,用戶輸入想要查詢的網(wǎng)絡(luò)攻擊類型,界面即可返回所有此網(wǎng)絡(luò)攻擊類型的異常網(wǎng)絡(luò)流量數(shù)據(jù)。為用戶提供了一個(gè)直觀易用的圖形界面,幫助他們更快速的篩選出想要異常網(wǎng)絡(luò)流量數(shù)據(jù),以便于對(duì)比不同網(wǎng)絡(luò)攻擊類型的異常網(wǎng)絡(luò)流量數(shù)據(jù)中字段的特性不同,從而采取適當(dāng)?shù)念A(yù)防措施對(duì)網(wǎng)絡(luò)進(jìn)行保護(hù)。5.3數(shù)據(jù)庫設(shè)計(jì)5.3.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)根據(jù)基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)的功能模塊進(jìn)行分析之后,本文確立了系統(tǒng)的實(shí)體信息及實(shí)體的相關(guān)屬性,并通過E-R圖的形式來展示。因?yàn)楸疚牡膶?shí)體只有一個(gè)網(wǎng)絡(luò)流流量數(shù)據(jù),因此本文的數(shù)據(jù)庫設(shè)計(jì)較為簡(jiǎn)單。如圖5.3所示為數(shù)據(jù)庫E-R圖。
圖5.3E-R圖由于網(wǎng)絡(luò)流量數(shù)據(jù)的字段較多,因此本文繪制的E-R圖僅顯示了4個(gè)較為關(guān)鍵的屬性以作示例。Classes:網(wǎng)絡(luò)攻擊類型,包括BENIGN(正常)、DDos、PortScan、DosHulk。TotalFwdPacket:前驅(qū)數(shù)據(jù)包總數(shù)。FlowDuration:流量持續(xù)時(shí)間。DestinationPort:目標(biāo)端口。5.3.2數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫邏輯關(guān)系結(jié)構(gòu)表(也稱為數(shù)據(jù)字典)是數(shù)據(jù)庫管理系統(tǒng)中的一個(gè)重要組成部分,用于記錄數(shù)據(jù)庫中所有表、字段、索引、約束等對(duì)象的定義和屬性信息。如下圖5.4所示為result1表,由于網(wǎng)絡(luò)數(shù)據(jù)流量的字段較多,因此本表也僅列出其中少數(shù)字段。
表5.4result1表列名數(shù)據(jù)類型是否為空主鍵備注FlowBytes/sdouble否否每秒流經(jīng)字符數(shù)FlowPackets/sdouble否否每秒流經(jīng)包數(shù)Classesvarchar(10)否否攻擊類型FlowDurationbigint否否流量持續(xù)時(shí)間TotalFwdPacketsbigint否否前驅(qū)數(shù)據(jù)包總數(shù)DestinationPortbigint否否目標(biāo)端口
6網(wǎng)絡(luò)流量異常檢測(cè)系統(tǒng)實(shí)現(xiàn)6.1系統(tǒng)開發(fā)環(huán)境介紹本次設(shè)計(jì)將基于Windows平臺(tái)進(jìn)行開發(fā),使用Python軟件作為開發(fā)工具。用戶交互界面使用了Pyqt5框架進(jìn)行開發(fā),通過簡(jiǎn)單的屬性設(shè)置就能夠生成對(duì)應(yīng)的py文件。由于系統(tǒng)需要與數(shù)據(jù)庫進(jìn)行交互,因此本系統(tǒng)采用了MySQL數(shù)據(jù)庫來存儲(chǔ)相關(guān)數(shù)據(jù),并使用NavicatPremium16作為數(shù)據(jù)庫管理工具。6.2系統(tǒng)功能實(shí)現(xiàn)本文系統(tǒng)分為了流量提取,數(shù)據(jù)處理,流量鑒別,數(shù)據(jù)展示,數(shù)據(jù)查詢部分。下面將對(duì)系統(tǒng)的各個(gè)功能進(jìn)行詳細(xì)介紹。6.2.1流量提取如下圖6.1所示為本系統(tǒng)的流量提取界面。圖6.1流量提取界面用戶在右側(cè)截取數(shù)量窗體中寫入想要采樣的數(shù)據(jù)包數(shù)量后,再單擊截取數(shù)據(jù)包按鈕后,系統(tǒng)將轉(zhuǎn)而執(zhí)行數(shù)據(jù)處理功能,將處理好后的網(wǎng)絡(luò)流量數(shù)據(jù)包顯示在可視化界面中。其具體的采樣方法在本文章節(jié)3.3預(yù)處理模塊中有詳細(xì)描述。6.2.2數(shù)據(jù)處理此部分將對(duì)采樣的數(shù)據(jù)包進(jìn)行處理,以方便后續(xù)加載模型進(jìn)行預(yù)測(cè),并將結(jié)果顯示在可視化界面中。如下圖6.2所示為在單擊截取數(shù)據(jù)包按鈕后,界面顯示的網(wǎng)絡(luò)流量數(shù)據(jù)包,其包含78個(gè)不同的字段。圖6.2采樣處理后的網(wǎng)絡(luò)流量數(shù)據(jù)顯示數(shù)據(jù)處理的關(guān)鍵代碼如下6.3所示。主要包含了異常值處理和標(biāo)簽處理部分,異常值處理即是將無窮大和無限等臟值進(jìn)行處理,并對(duì)一些字段進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,標(biāo)簽處理則是將網(wǎng)絡(luò)攻擊類型標(biāo)簽處理成和其他標(biāo)簽相同的數(shù)據(jù)類型,方便后續(xù)的訓(xùn)練和預(yù)測(cè)。其具體處理方法在本文章節(jié)3.3預(yù)處理模塊中有具體描述,因此本小節(jié)不做過多贅述。
代碼6.3數(shù)據(jù)處理代碼片段#異常值處理train_data=train_data.replace('Infinity','0')train_data=train_data.replace(np.inf,0)train_data=train_data.replace('nan','0')train_data['FlowPackets/s']=pd.to_numeric(train_data['FlowPackets/s'])train_data['FlowBytes/s']=train_data['FlowBytes/s'].fillna(0)train_data['FlowBytes/s']=pd.to_numeric(train_data['FlowBytes/s'])#標(biāo)簽處理train_data['Label']=train_data['Label'].replace('BENIGN',0)train_data['Label']=train_data['Label'].replace('DoSHulk',1)train_data['Label']=train_data['Label'].replace('PortScan',2)train_data['Label']=train_data['Label'].replace('DDoS',3)6.2.3流量鑒別如下圖6.4所示為流量鑒別界面。圖6.4流量鑒別界面
此功能會(huì)加載本文所建立的CNN、CNN-BILSTM、CNN-BIGRU三種模型,分別對(duì)每一條網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行預(yù)測(cè)并將預(yù)測(cè)后的結(jié)果與網(wǎng)絡(luò)流量數(shù)據(jù)的其他標(biāo)簽進(jìn)行拼接,最后顯示到可視化界面中,如上圖6.2所示,最后一列classes標(biāo)簽即為預(yù)測(cè)后的結(jié)果。分別包含BENIGN(正常)、PortScan(端口掃描攻擊)、DDos(分布式拒絕服務(wù)攻擊)、DosHulk(http攻擊)。數(shù)據(jù)鑒別的關(guān)鍵代碼如下6.5和6.6所示。代碼6.5數(shù)據(jù)鑒別代碼片段defstartdetection(self):try:self.tableWidget_2.clearContents()path='data/test.csv'predicted=predict.predict(path)predicted.finallmainmodel1()predicted.finallmainmodel2()predicted.finallmainmodel3()predicted.statistic()test_data=pd.read_csv("data/test.csv")label_data=pd.read_csv("data/show_label.csv")test_data_without_label=test_data.drop(columns=["Label"])result=pd.concat([test_data_without_label,label_data["classes"]],axis=1)self.tableWidget_2.setRowCount(result.shape[0])self.tableWidget_2.setColumnCount(result.shape[1])headers=list(result.columns)print(headers)self.tableWidget_2.setHorizontalHeaderLabels(headers)fromsqlalchemyimportcreate_engine#連接數(shù)據(jù)庫engine=create_engine('mysql+pymysql://root:123456@localhost/test')#將DataFrame寫入數(shù)據(jù)庫try:result.to_sql('result1',con=engine,if_exists='append',index=False)print("數(shù)據(jù)寫入數(shù)據(jù)庫成功")exceptExceptionase:print("數(shù)據(jù)寫入數(shù)據(jù)庫失敗:",e)#遍歷CSV文件的每一行數(shù)據(jù),并將其添加到QTableWidget中foriinrange(result.shape[0]):forjinrange(result.shape[1]):#不顯示最后一列#獲取單元格的數(shù)據(jù),并將其添加到QTableWidgetItem中cell_data=str(result.iloc[i,j])item=QTableWidgetItem(cell_data)#將QTableWidgetItem添加到QTableWidget的對(duì)應(yīng)單元格中self.tableWidget_2.setItem(i,j,item)exceptExceptionase:print("數(shù)據(jù)寫入數(shù)據(jù)庫失敗:",e)如代碼6.5所示,系統(tǒng)會(huì)加載三種模型對(duì)每一條網(wǎng)絡(luò)流量進(jìn)行預(yù)測(cè),預(yù)測(cè)后的結(jié)果classes標(biāo)簽將被存在show_label.csv中,然后將其與網(wǎng)絡(luò)流量數(shù)據(jù)的其他字段進(jìn)行拼接,最后將其進(jìn)行可視化界面顯示。與此同時(shí),數(shù)據(jù)也被存入數(shù)據(jù)庫中,為后續(xù)的數(shù)據(jù)查詢功能做好準(zhǔn)備。三種模型會(huì)對(duì)應(yīng)三種預(yù)測(cè)結(jié)果,經(jīng)過本文章節(jié)3.5實(shí)驗(yàn)結(jié)果分析后,發(fā)現(xiàn)CNN-BIGRU的性能最佳,因此,本文使用了如下代碼6.6所示的判斷分類方法。代碼6.6預(yù)測(cè)結(jié)果判斷代碼片段defjudgment(self,pmodel1,pmodel2,pmodel3):ifpmodel1==pmodel2==pmodel3:returnpmodel1else:returnpmodel3如代碼6.6所示,在三種模型預(yù)測(cè)結(jié)果都相同時(shí),則返回其中任意一個(gè)模型的結(jié)果,在其他情況下,由于CNN-BIGRU模型的性能最佳,因此直接返回CNN-BIGRU模型的預(yù)測(cè)結(jié)果。6.2.4數(shù)據(jù)展示此功能貫穿整個(gè)系統(tǒng),即將數(shù)據(jù)進(jìn)行可視化展示,包括網(wǎng)絡(luò)流量數(shù)據(jù)的分類標(biāo)簽和其他所有字段。6.2.5數(shù)據(jù)查詢?nèi)缦聢D6.7所示為本系統(tǒng)的數(shù)據(jù)查詢界面。
圖6.7數(shù)據(jù)查詢界面如上圖所示,用戶先單擊加載數(shù)據(jù)庫按鈕,會(huì)將流量鑒別中存入數(shù)據(jù)庫的數(shù)據(jù)流量加載顯示到界面中。然后,在右上角文本框中,用戶輸入想要查詢的網(wǎng)絡(luò)攻擊類型:BENIGN、PortScan、DDos、DosHulk,最后再單擊查詢按鈕,界面上即可顯示所有此類型的網(wǎng)絡(luò)流量數(shù)據(jù)包,及其字段具體屬性。數(shù)據(jù)查詢代碼如下6.8所示,采用了模糊查詢的方法。代碼6.8數(shù)據(jù)查詢sql語句代碼片段try:query_columns="SHOWCOLUMNSFROMresult1"self.cursor.execute(query_columns)columns_data=self.cursor.fetchall()column_names=[column[0]forcolumnincolumns_data]ifsearch_text:#查詢模糊匹配的數(shù)據(jù)fuzzy_query="SELECT*FROMresult1WHERE"fuzzy_query+="OR".join(["`{}`LIKE%s".format(column)forcolumnincolumn_names])self.cursor.execute(fuzzy_query,tuple(["%"+search_text+"%"for_incolumn_names]))data=self.cursor.fetchall()else:query="SELECT*FROMresult1"self.cursor.execute(query)data=self.cursor.fetchall()7總結(jié)與展望隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的持續(xù)發(fā)展,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)變得越來越復(fù)雜,對(duì)網(wǎng)絡(luò)安全的有效監(jiān)管已經(jīng)變成一項(xiàng)挑戰(zhàn)。但是無論網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)多么復(fù)雜,其內(nèi)部的數(shù)據(jù)流動(dòng)仍然可以在網(wǎng)絡(luò)流量中得到體現(xiàn),因此網(wǎng)絡(luò)的異常檢測(cè)成為應(yīng)對(duì)此類挑戰(zhàn)的關(guān)鍵策略之一。為了應(yīng)對(duì)該問題,本文建立了三種基于深度學(xué)習(xí)的網(wǎng)絡(luò)異常流量檢測(cè)模型,并設(shè)計(jì)了一個(gè)檢測(cè)系統(tǒng),將數(shù)據(jù)輸入到CNN、CNN-BILSTM、CNN-BIGRU網(wǎng)絡(luò)進(jìn)行空間特征的抽取,通過Softmax分類器得到輸出流量的檢測(cè)和分類結(jié)果。并經(jīng)過了嚴(yán)密的實(shí)驗(yàn)結(jié)果分析,證明了所建立模型具備卓越的性能。接下來利用Python軟件和Pyqt5框架開發(fā)網(wǎng)絡(luò)異常流量檢測(cè)系統(tǒng),由流量提取模塊、數(shù)據(jù)處理模塊、流量鑒別模塊、數(shù)據(jù)展示、數(shù)據(jù)查詢模塊五個(gè)核心模塊構(gòu)建。給用戶和管理員提供了一個(gè)簡(jiǎn)潔、直觀、易用的系統(tǒng)界面,能夠幫助有需求的網(wǎng)絡(luò)管理員檢測(cè)網(wǎng)絡(luò)流量異常。本文的模型和系統(tǒng)還存在一些問題。第一:模型的卷積層數(shù)僅有兩層,可以逐級(jí)增加卷積層數(shù)來進(jìn)行測(cè)試,研究發(fā)掘出最佳的模型;第二:數(shù)據(jù)集樣本較少,難以訓(xùn)練和預(yù)測(cè)其他類型的網(wǎng)絡(luò)攻擊,例如DosGoldenEye、Ftp-Patator、SSH-Patator、DosSlowhttptest等等??梢酝ㄟ^尋找更多的數(shù)據(jù)集,擴(kuò)大系統(tǒng)能檢測(cè)的范圍;第三:系統(tǒng)在實(shí)際中的預(yù)測(cè)和分類需要用戶和管理員自行收集網(wǎng)絡(luò)流量數(shù)據(jù)信息,解決方法可以是使用npcap抓包工具實(shí)時(shí)地去抓網(wǎng)卡中的網(wǎng)絡(luò)流量數(shù)據(jù),但由于本文所處于的網(wǎng)絡(luò)環(huán)境始終是正常的,抓取不到異常的網(wǎng)絡(luò)流量數(shù)據(jù),因此還需找到方法來模擬網(wǎng)絡(luò)攻擊。本文將繼續(xù)總結(jié)和研究,旨在建立性能更好的模型,開發(fā)功能更強(qiáng)大,操作更簡(jiǎn)單,界面更美觀的系統(tǒng)。參考文獻(xiàn)楊姣.基于機(jī)器學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)技術(shù)研究[J].電子技術(shù)與軟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《管理學(xué)》課件-08 第八章 控制
- 數(shù)學(xué)奧數(shù)測(cè)試題及答案
- 養(yǎng)殖用船管理辦法
- 兼職學(xué)生管理辦法
- 內(nèi)墻裝飾管理辦法
- 內(nèi)部制定管理辦法
- 內(nèi)部評(píng)級(jí)管理辦法
- 軍人網(wǎng)格管理辦法
- 軍用房屋管理辦法
- 農(nóng)業(yè)檔案管理辦法
- (高清版)JTGT 5214-2022 在用公路橋梁現(xiàn)場(chǎng)檢測(cè)技術(shù)規(guī)程
- A01食用菌生產(chǎn)概述
- ISO 15609-1 金屬材料焊接工藝規(guī)程及評(píng)定-焊接工藝規(guī)范中文版
- 王川同教授:中國文學(xué)界的泰斗級(jí)人物
- 充電寶材料分析報(bào)告
- 風(fēng)濕免疫疾病與心腦血管疾病的關(guān)系
- 倉庫租賃合同主要條款
- 現(xiàn)代漢語語料庫詞頻表CorpusWordlist
- 工廠倉管職責(zé)培訓(xùn)課件
- 上海同濟(jì)大學(xué)附屬存志學(xué)校八年級(jí)上冊(cè)期末數(shù)學(xué)模擬試卷含詳細(xì)答案
- 設(shè)備安裝調(diào)試記錄表
評(píng)論
0/150
提交評(píng)論