鐘唐強
(漳州職業技術學院,福建漳州,363000)
Hadoop是一種分布式系統基礎架構,用戶能夠在完全不了解分布式的底層細節的情況下開發分布式程序。Hadoop非常適合用于處理大量數據,具有高效、可靠和容錯高的優點,彌補了傳統檢測的不足。基于此,本文對流量異常分布式檢測系統架構進行分析與設計。總體來說,其技術核心設計在于HDFS和MapReduce。HDFS為數據提供存儲,而MapReduce則為數據提供計算。在該檢測系統的設計過程中主要運用Hadoop技術的MapReduce分布式并行計算模型,能夠可靠高效的并行大規模數據集。該系統有效地解決了數據收集、存儲于異常分析等問題,融合了Hadoop與數據挖掘的特色,發揮了分布式計算框架的高擴展性與高吞吐性優勢,利用數據挖掘算法深入檢測網絡異常信息,監控攻擊行為,提高安全性,形成了一套較為完整且準確度較高的收集、存儲、分析與特征創建過程。
Hadoop系統架構分為HDFS層與MapReduce層。Map Reduce能夠并行運算大規模數據集,指定一個Map函數,將鍵值映射成新的鍵值對,指定并發的Reduce函數,從而保證其他映射的鍵值對實現鍵組共享。
IDS對異常流量檢測進行監控來強化系統安全系數,一般分為ST-IDS和AT-ID兩類。ST-IDS利用已知攻擊模型來檢測,采用預創建已知攻擊簽名庫發現攻擊;AT-ID對超過預設閾值的非正常數據行為進行檢測[1]。目前可知,ST-IDS對已知攻擊具有良好的實效,但對新的攻擊形式缺乏效果,所以一般采用AT-ID方法。
(1)利于提高分析速度。信息技術快速發展,數據量與網絡流量爆炸式正常,面對海量數據,傳統單機處理模式已無法在合理時間內處理完數據并得到結果,數據處理速度成為入侵檢測過程的難點,計算時間與復雜度也隨著樣本數量增加而遞增,無論對于信息收集、數據存儲以及分析處理而言,都存在時間與效率的問題。分布式檢測為數據處理的時間與效率問題帶來福音,實現了信息的分布式收集、存儲與處理,這樣既可實現多數據源收集,也可獲取足量信息提高檢測準確性。
(2)利于融合分析結果。隨著攻擊方式變體為可持續攻擊,傳統異常檢測與誤用檢測方式難以發現新出的攻擊方式,利用機器學習算法可通過自主學習不斷提高已知樣本訓練度及時發現新的攻擊方式[2]。通過融合多源數據,將來自傳統檢測代理器與不同收集源的數據信息進行數據挖掘,從而發現潛在異常流量。
(3)利于提高系統伸縮性。根據系統規模與流量情況,部署相應的分布式檢測系統,隨著網絡規模與數據量的增大,可充分利用分布式計算的伸縮特性,通過添加計算節點來擴展異常流量系統的性能。
如圖1所示,構建基于Hadoop的流量異常分布式檢測系統,該系統具體包含NetFlow數據收集服務器、Hadoop平臺與NetFlow數據分析服務器三部分。

圖1 基于Hadoop的流量異常分布式檢測系統設計
實驗數據主要來源于模擬網中的真實數據與網絡攻擊數據。NetFlow收集到的流量信息包含了源/目的主機(端口)的IP地址與協議服務類型,均體現流量異常檢測的特征。為了使流量選擇具有代表性,在數據收集時選擇3時、9時、15時、21時這4個整時時間段。對于網絡攻擊數據,Lakhina對流量當口中的異常情況進行分析,選取其包數據的頭部特性合成手動加工成的異常流量。基于此經驗,可通過工具手段合成出部分攻擊流量[3]。分布式拒絕攻擊一般呈現源主機IP地址分散、目的主機IP地址集中的特點,而蠕蟲病毒則會呈現放大擴散的特點。根據這些特點可進行手動加工模擬合成類似攻擊流量。
對所得數據包數分割后得到包單元,根據數據包中的流量特點分割(應根據流量異常檢測指標進行分割),隨后根據所得數據包量便可得到包單元DFN值。
Hadoop流量異常分布式檢測系統包括HDFS、HBase、MapReduce等系統模型[4]。NetFlow在對數據收集進行預處理后,將數據上傳至HDFS中并刪除期滿數據。Hadoop流量異常分布式檢測平臺的功能包括:(1)對預處理之后的數據進行上傳存儲;(2)把存儲數據代入進MapReduce模型中,并將所得數據輸入進NetFlow分析服務器中。
3.3.1 NetFlow數據存儲
如圖2所示,HDFS是分布式文件存儲系統,因其高吞吐與高容錯的特性,所以能支持較多的設備并適用于具有海量數據集的程序。目前HDFS所支持的接口較多,除JAVA以外,還有C、FUSE等接口。根據HDFS整體結構,未有特殊說明的情況下均默認系統中的“塊”個體所占為64M。當存儲文件大小小于64M時,一般也只占用一個“塊”的量[5]。因“塊”大小可更好地定位文件,所以64M最為合適。HDFS構成主要包括Namenode(管理HDFS存儲文件)與 Datanode(向 Namenode反饋存儲信息)兩大部分。

圖2 HDFS系統架構
Sqoop能夠使數據傳輸導入更加便捷。將預處理后的數據保存在NetFlow服務器上,隨后將數據上傳至HDFS系統內。(1)HDFS對 Namenode開啟遠程調用;(2)Namenode反饋“塊”信息;(3)在選取的“塊”信息讀取完后,關閉與Datanode的連接;(5)讀取“塊”信息時系統會驗證,出現問題會報錯并從下個Datanode繼續讀取。HDFS的數據傳輸分配管理特性良好,NetFlow服務器收集完數據后,根據特定時間會將數據上傳到HFDS進行后續分析。HDFD能夠實現良好的交互性,通過DFSShell來處理數據,例如更改權限、上傳復制等。應將NetFlow收集到的數據存儲至HDFS系統中,將分類后不同特性的集成于一個子文件放于NetFlow文件之下。
3.3.2 NetFlow數據分析
MapReduce可提供有關MapReduce模型的API接口,常用接口包括Mapper與Reduce兩類。Mapper處理輸入數據,將輸入初始值映射出新的對應特性數值,一般用于對輸入數據鍵值進行調用;Reducer主要負責合并分割后的數據,其過程為:借助互聯網合并Mapper調用之后的數據,合并同特性的值后通過Reducer進一步處理數據,Reducer中較為常用的方法是對每個特性值都進行調用,隨后以“繼承”來重寫方法。
NetFlow對數據收集與預處理后,通過運用MapReduce算法,將數據導入到MapReduce中,得到結果后將數據上傳并存儲進HDFS內,前兩步操作中的數據存儲始終以文件形式存儲,但并不能服務器中的數據進行有效的結果分析。
3.4.1 Sqoop工具
Sqoop工具能夠將數據提取到Hadoop內,這些數據既能被MapReduce分析也能被其他程序應用。Sqoop的操作流程為:(1)Sqoop會在MapReduce工作時將表導入MapReduce中對其進行記錄,同時也會將數據傳輸進HDFS內;(2)java包含有對關系數據庫訪問的API接口。
3.4.2 NetFlow數據導出
將數據從HDFS中導出時,應在關系數據庫中創建存儲表。由于存儲類型具有限定性,因此要事先分析數據,界定那些數據可以存儲。(1)在導出處理后的數據之前,Sqoop會根據導出目標生成與其相對的“類”,該“類”的作用是解析并轉移導出數據;(2)當開始啟動MapReduce任務時,Sqoop會自動解析讀取后的數據,這樣就可提取導出Hadoop系統中處理的數據結果;(3)將數據導出后再將其導入到MySql關系數據庫之中,由此能夠對實驗結果數據有所直觀感受,以便更好地分析數據。
如圖3所示,能夠直觀看到網絡正常/異常時兩類熵值的分布情況。當網絡處于正常時,源IP地址的特征熵值分布處于平穩,基準線處于4~5左右;當網絡異常被端口掃描時可觀察到源IP地址的特征熵值出現了劇烈波動,熵值分布處于較低狀態。

圖3 正常/異常源IP地址熵值分布與端口掃描下源IP地址分布
如圖4所示,能夠直觀看到網絡正常時兩類DFN熵值都較為平穩。網絡流量的特征熵值與特征DFN熵值也都維持在平穩閾值之內,流量分布的起伏變化較小。

圖4 正常流量特征熵值分布
如圖5所示,能夠直觀看到網絡異常時兩類DFN熵值均處于劇烈波動狀態,表明當網絡異常時熵值與特征DFN值都出現了穩定性破壞,數據分布超出正常基礎閾值。實踐表明,正常狀態下各種特征熵值與特征DFN值都存在一個分布范圍,而網絡受到攻擊時,流量特征熵值與特征DFN值的穩定性均會受到影響。

圖5 異常流量特征熵值分布
本文基于Hadoop設計了流量異常分布式檢測系統,采用HDFS存儲異常流量信息,通過MapReduce進行分布式處理,使處理能力得到顯著提高,實現了異常流量監控,能夠有效防止攻擊行為,提高了安全系數。在網絡正常時,可知流量特征熵值與流量特征DFN值的分布變化小,基本處于基礎閾值之內,穩定性較好;在網絡異常時,可發現流量特征熵值與流量特征DFN值的分布會劇烈變化,面對攻擊會出現各種變化,顯著超出基礎閾值,穩定性被破壞。