高林娥
(運城師范高等專科學校 山西省運城市 044000)
傳統入侵檢測方法選用特征庫特征匹配或分類、聚類的方式進行學習,對特征的依賴較強,且在入侵檢測過程中易出現數據不均現象,導致入侵檢測效果不穩,當入侵病毒量較少時,檢測效果較差。為更好應對網絡安全管理需求,將深度學習的概念融入入侵檢測中,借助人工神經網絡,提升入侵檢測水平。
人工神經網絡以人造神經元為基礎,各神經元相互連接,完成信號傳輸、接收和處理。在ANN實現中,人造神經元間傳輸信號為實數,隨著學習深度的加深,該參數發生一定變化,每個神經元均對應一個閾值,當總信號高于閾值時借助激勵函數完成信號計算。一般情況下,人造神經元為多層結構,每層可能具備不同的轉換處理功能。信號從輸入層進入再到輸出層輸出,期間經歷多次穿層活動,最終輸出的結果受拓撲結構影響,節點間的權重反映節點上的映射關系[1]。該模型擬合復雜非線性函數的功能極強,依靠帶有標記的數據即可完成判斷、識別活動。例如,在識別圖像中,人工神經網絡在深度學習過程中,記憶對象特征,進而判斷圖像是否為目標圖像。
人工神經元是人工神經網絡的基本單位,其為生物神經元的仿真形式,每一神經元帶有輸入和輸出兩個端口,由多個神經元組成的人工神經網絡包括輸入層、輸出層和隱藏層,其中隱藏層指位于輸入層和輸出層之間的全部層級。現有人工神經網絡可分為單層、多層前饋、時間、自組織等類型,本文所研究的BP神經網絡即屬于多層前饋神經網絡,其使用誤差逆轉傳播算法進行訓練,位于相鄰層級的神經元之間進行互通,不存在同層或跨層互通現象,因此不出現環狀結構。
BP神經網絡為一種多層前饋神經網絡,前后層神經元相連接,深度神經元一般由輸入層、隱藏層及輸出層構成,每層均含有多個神經元,其訓練可分為正向、反向兩個過程。正向過程中,信息從輸入層進入,受隱藏層處理后,由輸出層給出實際值,若計算誤差未達標,則需要進入反向過程。反向傳輸結合誤差,從輸出層進入,在隱藏層完成網絡權值及閾值的修改再傳輸至輸入層,然后借助新的權值和閾值再次進行正向傳播。通過BP神經網絡訓練可有效降低其傳輸誤差,當誤差足夠低時,才能得到最優分類結果,同時BP神經網絡的訓練效果達到最佳。最常用的BP神經網絡誤差優化函數方法為梯度下降算法,該算法可分為全量梯度下降算法、隨機梯度下降算法及批量梯度下降算法。
基于人工神經網絡的入侵檢測方法指利用已有樣本集訓練神經網絡分類器,使其具備初始檢測的功能。將待檢測數據輸入神經網絡,通過分析和計算,在輸出端得出檢測結果。在人工神經網絡自身屬性的影響下,基于人工神經網絡的入侵檢測方法具備自主學習功能,檢測效率上存在突出優勢。
本文研究的入侵檢測模型基于CIDF通用入侵檢測框架,該框架可分為事件產生器、事件分析器、響應單元和事件數據庫。其中,事件產生器完成數據采集工作,事件分析器對數據進行分析和判斷,相應單元結合判斷結果給出相應的響應處理。該入侵檢測系統由底層網絡數據包提供事件數據,收集并整理數據包中數據,根據網絡通信原理,可得到網絡連接的局部特征,利用神經網絡對特征進行分析,即可實現對網絡入侵的檢測。
基于BP神經網絡的入侵檢測系統分為嗅探器、數據審計模塊和數據檢測模塊。嗅探器從網卡獲取原始網絡數據包,并對其中信息進行分析,如IP地址、協議等,將采集到的數據實時傳輸至數據審計模塊。數據審計模塊主要功能有二,第一,審計從嗅探器發來的數據,通過整理和分析,從中提取特征值,并將其轉換為單條連接的形式傳輸至數據檢測模塊;第二,接收數據檢測模塊的檢測反饋,結合結果給出相應的處理。數據審計模塊設計對交互界面的要求較高。數據檢測模塊負責檢測由審計模塊發來的數據,當使用BP神經網絡進行入侵檢測時,采用KDD CUP99數據集作為訓練數據來源。
2.3.1 嗅探器設計
嗅探器的開發使用JAVA語言,在eclipse環境中進行。完成開發環境配置后,進行嗅探器功能編程。
數據包獲取主要類型包括Jpcap Captor、Network Interface和Packet。以Network Interface類為例,其中包括網卡的name、description等屬性,可通過這些屬性進行網卡辨別。
數據包捕獲完成后,對其內容、結構進行分析,分析對象主要是位于網絡層的數據包,如IP、TCP、UDP等數據包。在獲取某一數據包后,分析其是否為IP數據包,若是,則將Packet對象轉化為IPPacket對象,獲取成員信息。在完成IP數據包協議字段解析后,還需對其類型作進一步的明確,若協議字段為6,則判斷為TCP數據包;若字段為17,則為UDP數據包。如表1所示為常見協議字段值。

表1:常見協議字段值
本文研究的基于BP神經網絡的入侵檢測方法,主要涉及到IP協議和TCP協議。在IP協議的數據包結構中,報表長度為4位、總長度占2個字節,以上數據分別對應報頭長度及包含數據報文的總長度。報文的標志、標識及分段偏移量可用來表示報文的分組信息,協議號則對應數據報的協議,IP源地址及目的地址均為其數據報中含有的基本信息。而TCP數據報源端口號及目的端口號均占用2個字節,序號和確認號占用4個字節,URG表示加急包,ACK表示確認,PSH為立刻發送,RST表示連接重置,SYN表示連接同步,FIN表示連接中止請求。窗口占2個字節,可表示窗口大小。
數據包信息分析頒布后,需將信息傳輸至數據審計模塊。網絡情況檢查等問題會導致重復數據包的出現,因此在傳輸之前需對重復數據包進行過濾,過濾方式為:記錄數據包的MF、DF、ident和offset,再根據以上信息判斷是否為重復數據包,若是,則僅發送一次信息。使用Socket編程完成數據包數據信息的發送,當兩項數據包發送完成后,都表現為包括IP頭部分的9種特征數據,TCP數據包為20種特征數據。
2.3.2 數據審計模塊設計
數據審計模塊為入侵檢測系統的數據處理中心,完成數據分析、反饋、存儲和展示活動。
(1)信息審計。將嗅探器傳輸回的數據包存儲在數據庫當中,并對數據包信息進行整理,從中提取連接信息,再將連接信息與連接過程相結合,提取每條連接信息的特征值。TCP傳輸過程分為三個環節。第一,建立TCP連接。客戶端向服務端發送帶有STN標志、初始序號為1000、不帶數據的段1,提出連接請求。服務端接收到請求后,傳回帶有SYN標志及ACK標志、初始序列號為8000的段2,確認序號1001,反饋服務端接收請求并發起連接。客戶端收到連接提醒后,反饋帶有ACK標志的段3,表明已接收連接。數據連接完成后,全部數據包的ack位置均為1,證明序號有效。第二,TCP傳輸。客戶端向服務端發送初始序號1001、確認序號8001及含有20字節的段4,成功接收后,傳回確認序號1021及帶10個字節的段5,表明已收到[2]。客戶端再向服務端傳輸8011的段6進行確認。第三,終止連接。客戶端發送帶有FIN標志的段7提出斷開連接請求,服務端發送帶有ACK標志的段8及帶有FIN標志的段9及段10進行確認并終止連接。
(2)特征提取。數據包整理后可獲取大量連接信息,為使其服務于入侵檢測,需從連接信息中提取特征值。特征值提取與入侵檢測精度直接相關,因此選取KDD CUP99數據集中的41維特征值,可分為TCP連接基本特征、內容特征、基于2S時間內的網絡流量統計特征和基于前100個連接中的主機網絡流量統計特征。TCP連接基本特征可通過更新連接狀態來獲得,依照端口號判斷其服務類型。TPC連接的內容特征需在數據包數據解析中獲得,現有可參考資料非常有限,一般確認為0。基于2S時間內的網絡流量統計特征在連接信息統計中獲取。
(3)交互界面設計。考慮到程序開發的便捷性,數據審計模塊使用C#在Visual Studio2012環境下進行開發。交互界面主要用于顯示連接信息及入侵檢測系統的連接響應判斷結果。交互界面為入侵檢測系統發生人機交互的核心,其設計應結合用戶使用習慣及要求進行,保證內容呈現清晰、簡潔。
(4)數據庫選擇。本文設計的入侵檢測系統選用SQLsever 2008數據庫,分為攻擊統計數據、網絡會話記錄、網絡連接內容、數據流量統計、原始數據包等存儲模塊。
2.3.3 數據檢測模塊設計
數據檢測模塊成為入侵檢測核心任務,能夠準確、及時辨別攻擊數據,以保證入侵檢測系統穩定發揮作用。
(1)數據預處理。數據預處理對來自數據審計模塊的信息進行數值化、標準化、特征選擇、特征提取等操作,形成標準化的數據集。例如,數據數值化對KDD CUP99數據集中41項特征值中的協議、目標主機網絡服務、連接狀態及類標簽進行處理,采用將字符轉化為數值的方式完成處理過程。數據標準化則依照一定方法對數據進行收縮處理,使其位于有限范圍內,常用處理方法包括最小最大標準化、小數定標標準化等,其目的是將各項數據置于同一數量級,以便進行綜合分析。
(2)檢測算法設計。BP神經網絡自帶權重和與閾值,閾值作用于不同的映射函數可產生不同的映射效果,甚至可順利反映無法用數學方式進行描述的關系。借助誤差公式及權重積分,可不斷對權重進行修改,逐漸降低誤差。神經網絡拓撲結構至少包括三層,設某相鄰兩層的i、j節點權重為ωij,不同節點j的閾值為bj,輸出值為xj。使用如下公式可計算出每個節點的輸出值:當權重賦值在0~1時,完成權重初始化并依照順序輸入相關數值,得到的激活函數圖像表現為S形[3]。函數遞增、遞減趨勢表現相對平坦,覆蓋率高、微分效果好,相較于線性函數更加精準,適用于BP算法。最終的輸出函數為線性形式,證明至少存在一個隱藏層S形函數及線性函數可逼近全部輸出值。
(3)檢測模塊實現。在JAVA環境中完成模塊開發,主程序完成配置文件讀取、訓練數據集加載、神經網絡分類器搭建、待檢測數據監測、數據檢測等工作,使用BP神經網絡分類器劃分連接數據并返回分類結果。數據檢測模塊的實現流程如下:訓練神經網絡并搭建分類器,接收審計模塊傳輸回的流量特征數據并給出分類結果,將結果傳輸回審計模塊。BP神經網絡通過自主學習,可實現數據檢測模塊功能的自主優化,以適應更復雜的入侵檢測需求。
系統測試可驗證基于BP神經網絡的入侵檢測方法是否能夠充分達到其預設功能、運行狀態是否穩定。在常規測試活動中,可將不同模塊安裝至不同機器上,多個主機同時運行。但由于本次系統測試主要檢驗其功能性,因此將各個模塊放置在統一機器上。
使用的計算機處理器為Intel(R)Core(TM)i7-7700HQ CPU@ 2.80GHz,操作系統為Windows 10,借助WinPcap進行嗅探器測試。
3.2.1 嗅探器測試
在計算機中運行嗅探器程序時,界面出現計算機網卡列表,結合提示選取相應的網卡,嗅探器在接收到審計端開始指令后進行數據包抓取并完成信息傳輸。運行過程中,數據庫內存有大量數據包特征及鏈接特征,證明嗅探器數據采集功能達標。
3.2.2 數據審計模塊測試
啟動檢測響應平臺后,界面出現實時連接信息及當前的真實檢測結果,根據檢測結果可判斷設計模塊運行正常,審計響應端順利完成待檢數據發送,并接收來自檢測平臺的反饋數據,給出準確的流量數據檢測結果。
3.2.3 數據檢測模塊測試
系統實現數據檢測功能時,應完成檢測算法效果的評估,并對數據傳輸過程進行測試,檢測結果正常。
總體看來,方案中設計的入侵檢測功能可基本實現,且能夠正常運行。由于該入侵檢測方案還未在真實的網絡環境中長時間運行,因此檢測結果還存在一定局限,但基本達到設計預期。
基于人工神經網絡的入侵檢測系統被設計為嗅探器、數據審計和數據檢測三個模塊,深度學習與網絡安全管理的結合有利于二者的同步發展。借助深度學習,不斷提高網絡安全管理水平,同時給人工神經網絡帶來更大的發展空間。為應對不斷復雜的網絡入侵手段,入侵檢測需動態化發展,圍繞人工神經網絡,研究更多高效防御方法。