◆高振鐵 馮亞麗
?
一種基于Hadoop集群的分布式入侵檢測系統模型
◆高振鐵 馮亞麗
(深圳華威世紀科技股份有限公司 廣東 518029)
入侵檢測系統是一項對網絡安全進行檢測、報警、響應的技術,它通過采集網絡中某些關鍵信息并對其進行分析,從而發現異常或者入侵攻擊行為。隨著網絡規模的擴大,傳統的入侵檢測系統已不足以應對海量數據處理。本文主要針對傳統入侵檢測系統在數據規模較大時,數據處理能力不足、單點失效的問題,設計了一種基于Hadoop集群的入侵檢測系統模型。
入侵檢測;Hadoop;數據收集;數據存儲
隨著計算機網絡的發展和互聯網信息規模的增長,加之互聯網開放性等特點,使得網絡被攻擊的可能性大大增加。信息被篡改、病毒入侵、黑客攻擊等惡意性問題,以及信息人員不規范操作導致的非惡意性安全問題頻發。因此,如何確保信息的完整性、安全性以及信息系統的安全穩定運行已成為一個亟待解決的問題。
傳統的信息安全研究主要集中在數據認證加密機制、安全審計機制、防火墻設置等靜態安全技術領域。但從信息安全管理的角度來說,僅靠靜態防御技術來解決網絡安全問題是遠遠不夠的,還需要建立動態自學習、自適應的動態策略以達到保護網絡的“雙重保險”。入侵檢測具有動態監控、預防和主動抵御攻擊等多種功能,它是對靜態防御技術的一個有效補充,同時入侵檢測配置也十分簡單、易懂。
入侵檢測技術作為繼防火墻之后的計算機網絡和系統的第二道安全防線,在網絡安全領域具有重要的地位。以美國為代表的眾多國外研究部門在入侵檢測研究方面一直處于世界領先地位,我國在入侵檢測研究和應用方面起步較晚,但也取得了一些成果,如“天眼”入侵檢測系統以及啟明星辰的黑客入侵檢測與預警系統等[1]。
智能化的入侵檢測已經成為發展趨勢,將數據挖掘技術、云計算技術等技術引入入侵檢測領域,能夠創造出更為高效、智能的入侵檢測算法和系統模型。
1.1 Hadoop相關技術簡介
Hadoop是一個基于Java的分布式數據處理和數據分析的框架,不需要使用昂貴的服務器或超級計算機就可以實現高性能計算,同時也不需要考慮單點失效的問題。Hadoop包括兩個核心部分:分布式文件系統(HDFS)和MapReduce計算框架。HDFS使用流式數據訪問模式來對大規模的文件進行存儲,實行一次寫入、多次讀取的文件訪問方式,提高了系統的吞吐量[2]。
MapReduce是一個并行化的編程模型,用戶只需要編寫Map和Reduce函數,不需要了解太多的知識,系統會自動地管理Map和Reduce的任務執行,同時也會對任務間的調度進行管理。Map和Reduce這兩個階段的輸入和輸出的形式都是鍵值對,用戶可以自由地對類型進行定義。
1.2 常見的分布式IDS架構
入侵檢測系統指在網絡環境中能夠對入侵行為進行檢測的軟硬件。它通過采集數據(日志、流量等),再經特定的方法處理后判斷是否有入侵行為,最終做出響應,同時不會影響網絡的性能。1997年,DARPA 提出了通用入侵檢測框架CIDF,不僅對組件間的通信機制進行了規范,而且對描述檢測信息的語言格式進行了定義。但這種單一的檢測防御方式并不能夠保障整個網絡的安全,特別是面對網絡內部的入侵,分布式入侵檢測技術應運而生。很多分布式IDS結構是基于CIDF設計而成的,大致歸納為以下三類:
(1)集中分布式
集中分布式IDS結構的所有數據傳感組件全部分布在網絡中,并且數據處理的功能依賴于固定數量的組件來完成。其優點是可以充分利用組件提供的檢測數據,再對數據進行融合處理后,快速地做出正確的判斷。當傳感組件數量較少時,具有很明顯的優勢。缺點是可能會出現單點失效問題以及擴展性比較差。其結構如圖1所示。

圖1 集中分布式IDS架構
(2)層次分布式
相對于集中分布式,該結構主要是由數據傳感層、數據分析層以及決策控制層組成。數據傳感層負責收集數據,對其提煉、精簡后,上傳至數據分析層。數據分析層接收到數據后,對其做一個簡單的處理,然后將結果上傳給決策控制層。控制層負責控制和數據處理,對數據進行分析,并在入侵發生后采取一定的措施。其結構如圖2所示。

圖2 層次分布式IDS架構
(3)對等協作分布式
該系統結構的所有組件都是對等的,相互之間進行協作,不存在任何的上下級關系或者從屬關系。這些IDS節點可以單獨進行數據收集,處理數據并采取措施。對等協作分布式可以很好地改善系統的容錯性。但當節點數據規模比較大時,會產生很大的通信量。其結構如圖3所示。

圖3 對等協作分布式IDS架構
1.3 影響大規模數據入侵檢測的因素
影響IDS性能的主要有以下兩個因素:
(1)硬件
在處理規模比較大的數據時,IDS需要進行數據包的捕獲、數據預處理、數據分析等過程,這些過程統統離不開網卡、內存、帶寬、CPU以及I/O等。數據包的捕獲需要依靠網卡,當包達到一定值時,會出現被丟棄的情況。捕獲的數據包一般都放在內存中,內存的大小嚴重影響著IDS的性能。CPU主要在IDS進行抓包以及對數據包進行分析的過程中工作,CPU的數量和主頻會影響到IDS的性能。在對數據進行傳輸的時候,I/O同樣也會影響IDS的性能。
(2)軟件
在IDS的架構方面,分布式的架構更加能夠適應對大規模數據的處理。同樣地,在檢測算法方面,分布式的檢測算法可以很好地提高檢測性能。通過上面的分析,在提高IDS性能方面,可以通過改善系統配置,對網卡設備進行優化,提高內存以及CPU的性能,也可以采用分布式的檢測算法。
2.1 HIDS模型描述
對于目前各種入侵行為對計算機網絡和系統的攻擊,入侵檢測系統已經能夠在很大程度上對其進行抵御,但是還存在著很多不足之處。
2.1.1 系統設計思想
集中分布式IDS容易出現單點失效問題,可能導致整個系統崩潰。對等協作分布式IDS的各個節點具有自主性,但是對系統的智能化程度要求很高,而且在節點相互通信過程中通信開銷太大,給系統帶來負擔。層次分布式IDS的優勢非常適用于構建實際的IDS,但是高層組件的特別容易成為制約整個系統性能的阻礙,無法處理海量數據以及系統單機的處理能力有限等問題制約入侵檢測系統的性能。本文針對傳統入侵檢測系統在數據規模較大時,表現出數據處理能力不足、單點失效的現象,設計了一種基于Hadoop集群的入侵檢測(HIDS)系統模型。該系統主要由分布在網絡節點上的檢測代理、數據收集組件和基于Hadoop集群構建的監控中心構成。其架構如圖4所示。

圖4 HIDS架構圖
2.1.2 HIDS各組件描述
(1)檢測代理
檢測代理分布于網絡中的各個節點,工作在HIDS系統的最底層。主要由數據采集器、數據處理模塊、通信模塊以及控制模塊組成。
數據采集器是系統最基礎的部分,負責收集系統需要的數據。數據采集器可以對系統日志、用戶行為等主機行為信息或者是記錄網絡行為的原始數據包等對象進行采集。 數據處理模塊對不同格式的數據進行處理,然后封裝成統一的格式,上傳給上一層組件。通信模塊主要負責實現檢測代理模塊與上層模塊之間的相互通信。控制模塊接收來自通信模塊的傳感器命令之后,對傳感器做出相應的操作。
(2)數據收集組件
數據收集組件將底層的檢測代理分成若干個區域,解決了檢測代理直接與Hadoop集群交互可能導致的單點瓶頸問題,包括數據解析引擎、數據接收模塊和數據發送模塊三部分。
數據解析引擎:數據收集組件工作后,會重新注冊系統的最新格式的元數據。這些元數據包括了數據格式、數據解析器等內容。引擎在接收到檢測代理傳送的數據后,會根據數據格式信息,匹配適合的數據解析器,將接收到的數據解析成為指定的格式。數據接收模塊主要負責對檢測代理的數據進行接收,然后把這些數據發送到數據解析引擎。數據發送模塊主要負責將解析后的數據發送到監控中心。
(3)監控中心
監控中心是依賴于Hadoop集群構建的,底層會將所有收集到的數據傳送到監控中心。監控中心主要由存儲模塊、挖掘模塊、規則庫以及用戶界面組成。
挖掘模塊對收集的入侵行為數據進行挖掘,尋找記錄之間的相關特性,發現和記錄新的特征。存儲模塊里面的數據包括兩個部分:第一部分是數據格式元數據,主要保存系統可以解析的數據格式信息;第二部分是系統各個組件的狀態信息,不定時地更新各個組件的運行狀態。規則庫和挖掘模塊提供的入侵行為記錄進行比對,若是新的行為,則對其記錄。用戶界面確保安全管理人員可以通過接口對入侵的行為記錄進行查詢。
2.1.3 HIDS系統特點
開放性:傳感器模塊是整個系統的檢測能力的核心組件。傳感器可以適用于不同的工作環境。若需要添加新的功能的傳感器,只需要定義好新的數據格式元數據以及與之對應的數據格式解析器。
分布性:該系統可以在不同的結構上實現了數據收集、數據分析以及處理。該系統的監控中心主要依賴于Hadoop集群構建,這樣就降低了傳統分布式系統的高層組件的系統瓶頸和單點失效問題的風險。
擴展性:系統可以根據不同的需要,進行對應的配置。
魯棒性:系統的組件是相對獨立的,當一個組件不能工作時,系統只會損失部分檢測功能。
2.2 關鍵模塊實現分析
上一節主要對提出的分布式IDS系統(HIDS)框架以及各個組件進行了描述,本節將對檢測代理、數據采集器、存儲模塊等模塊或組件的實現進行闡述。
2.2.1 檢測代理的實現
(1)運行流程
檢測代理是HIDS系統分布在網絡中各個節點的底層組件,通過內部運行的各個模塊對信息進行簡單的檢測。數據采集器不會直接和數據收集組件進行數據傳輸,而是經由檢測代理將信息發送到數據收集組件。其運行流程如圖5所示。

圖5 檢測代理運行流程
(2)數據傳輸格式
檢測代理將接收到的數據進行處理,統一數據的格式,然后將其發送給數據接收組件。HIDS選取的數據格式是JSON數據格式全稱是JavaScript Object Notation。擁有這個格式的數據一般都相對簡單,并且易于對該格式的數據進行解析。檢測代理的數據傳輸格式如表1所示。

表1 檢測代理數據傳輸格式
TimeS:代表檢測代理進行數據發送的時間戳。
AgentID:發送的數據來自哪個檢測代理。
Data:發送的數據內容。
Source:發送到檢測代理數據是來自于哪個傳感器。
2.2.2數據收集組件
在檢測代理中,數據采集器以插件的方式進行工作。由于采集器和檢測代理之間不是耦合關系,所以數據采集器可以是所有的外部程序。本系統使用抽象的Adaptor類來表示采集器的運行方式,同時定義了基礎屬性以及方法接口。Adaptor類屬性的代碼如下:
public abstract class Adaptor{
protected String type;
protected String id;
protected Manager control;
}
type表示該類的數據輸出類型。數據收集組件在接收到數據后,會根據該類型選擇與之對應的數據解析器。id是Adaptor類的標識符,是唯一的。control表示該類的控制接口。本文實現了一個派生于Adaptor類的NetAdaptor類,該類通過實現兩個讀寫線程來實現對數據的傳輸。讀的線程從進程的輸出流中讀取數據,同時以JSON格式對數據進行包裝,接下來,將其寫入一個緩存隊列。寫的線程不停地檢查緩存隊列,當隊列中存在數據時,線程則將數據寫入到全局發送隊列Queue類中。在沒有數據的情況下,進入休眠狀態,直到緩存隊列的寫線程喚醒。
2.2.3數據處理模塊的設計
數據處理模塊主要用于對網絡數據進行捕獲、分析以及檢測。HIDS的檢測代理利用Snort軟件來實現數據處理模塊的重要功能。Snort的工作流程如圖6所示:

圖6 Snort工作流程
捕獲數據:系統進行檢測時需要先從網絡中對數據包進行捕獲。Snort利用libpcap來捕獲數據包。Libpcap可以單獨地從網絡中捕獲沒有經過任何修改的數據包,原始包的所有信息都是完整的。
包解碼程序:網絡數據包收集到以后,Snort會建立堆棧,在數據包中,由低層協議到高層協議的順序,對所有的協議元素進行解碼。
預處理程序:一是對數據包進行檢查或者修改,使得檢測引擎可以正確地處理數據包;二是對流量進行標準處理,使得檢測引擎可以進行特征匹配。
檢測引擎:檢測引擎的主要功能是對Snort的規則進行分析,建立攻擊特征;同時對流量和規則進行匹配。
輸出插件:Snort輸出插件的目的是用來將入侵記錄的數據存儲到另外的文件或者資源當中,比如:數據庫、日志等。在本系統中,選取CSV作為插件的輸出結構,CSV需要進行兩項配置,一是配置告警字段的輸出順序;二是輸出文件名設置成/des/file,表示會將輸出到標準的輸出流中。經過這樣的配置,檢測代理就可以捕獲到輸出的結果。
2.2.4 存儲模塊實現
存儲模塊主要功能是存儲入侵行為記錄,提供給安全管理人員進行查詢、分析。同時,里面也存放著所有的元數據信息。HDFS默認的塊比傳統的塊要大得多,這樣的設定使得有助于提高整個系統對數據的吞吐率。
在本文的HIDS系統中,在底層的傳輸的數據大小一般不會超過64M,假如直接將這些數據存放到HDFS里面,會造成很大的存儲資源浪費。同時,如果將底層的數據先存入到緩沖中,數據量達到64M時再傳輸,會影響系統對入侵行為檢測的實時性。因此,如何在存儲效率和檢測實時性之間找到一個平衡點,是HIDS實現存儲模塊的一個關鍵問題。本HIDS系統采用了HBase數據庫,可以實時地對大規模數據集進行隨機讀寫。
HIDS系統的存儲模塊,主要對以下兩種數據進行存放:
(1)組件狀態數據庫
組件的狀態信息,會定時地進行更新。時間戳、組件的標識以及組件的類型構成了Row Key,如果該系統沒有在一定時間內接收到來自組件的信息,則說明組件已經失效,需要向安全管理人員報告。Message代表組件發送到狀態信息。如表2所示。

表2 組件狀態數據庫
(2)數據格式元數據庫
在該數據庫上,存放著解析器在HDFS上面的路徑,以及代表HIDS能夠解析的數據格式信息。如表3所示。

表3 數據格式元數據庫
Type:同數據格式對應的標識符;
ClassName:解析器的類名;
Path:在HDFS上,用于解析的jar包的存放路徑。
隨著網絡業務的不斷增多以及網絡流量規模急劇加大,傳統的入侵檢測系統的單機處理模式已經難以對龐大的數據集進行處理,檢測入侵行為也變得越來越困難。因此,本文結合分布式技術與入侵檢測技術,提出了一種基于Hadoop的入侵檢測系統HIDS,首先介紹了系統的架構,并且對各個組件的功能進行了闡述,同時介紹了系統的特點;然后介紹了HIDS幾個重點組件的實現機制,闡述了檢測代理的處理流程,數據采集器和數據處理模塊的實現;最后,闡述了數據收集組件以及存儲模塊的實現。
[1]李賀玲.數據挖掘在網絡入侵檢測中的應用研究[D].吉林大學,2013.
[2]Wbite T.Hadoop權威指南[M].北京:清華大學出版社,2011.
[3]周永福,曾志.Linux下采用Libpcap實現IDS的網絡數據包監控[J].現代計算機,2015.
[4]盧榮.基于Snort的分布式入侵檢測系統[J].信息系統工程,2015.
深圳市技術創新計劃技術攻關項目(項目編號:深科技創新[2015]293號)。