1.1 什么是入侵檢測系統
所謂入侵,是指任何試圖危及計算機資源的完整性、機密性或可用性的行為。而入侵檢測,顧名思義,便是對入侵行為的發覺。它通過從計算機網絡或系統中的若干
關鍵點收集信息,并對這些信息進行分析,從而發現網絡或系統中是否有違反安全策略的行為和遭到襲擊的跡象。進行入侵檢測的軟件與硬件的組合便是入侵檢測系統(簡稱IDS)。與其他安全產品不同的是,入侵檢測系統需要更多的智能,它必須可以將得到的數據進行分析,并得出有用的結果。一個合格的入侵檢測系統能大大簡化管理員的工作,保證網絡安全地運行。
1.2 入侵檢測系統的分類
按檢測所使用數據源的不同可以將IDS分為基于主機的IDS和基于網絡的IDS。
基于主機的IDS使用各種審計日志信息(如主機日志、路由器日志、防火墻日志等)作為檢測的數據源。通常,基于主機的IDS可監測系統、事件和操作系統下的安全記錄以及系統記錄。當有文件發生變化時,IDS將新的記錄條目與攻擊標記相比較,看它們是否匹配。如果匹配,系統就會向管理員報警,以采取措施。
基于網絡的入侵檢測系統使用原始網絡分組數據包作為數據源。基于網絡的IDS通常利用一個運行在混雜模式下的網絡適配器來實時監視并分析通過網絡的所有通信業務。一旦檢測到了攻擊行為,IDS的響應模塊就會對攻擊采取相應的反應,如通知管理員、中斷連接、終止用戶等。
1.3 入侵檢測的檢測方法
入侵檢測技術通過對入侵行為的過程與特征的研究,使安全系統對入侵事件和入侵過程能做出實時響應,從檢測方法上分為兩種:誤用入侵檢測和異常入侵檢測。
在誤用入侵檢測中,假定所有入侵行為和手段都能夠表達為一種模式或特征,那么所有已知的入侵方法都可以用匹配的方法發現。誤用入侵檢測的關鍵是如何表達入侵的模式,把真正的入侵與正常行為區分開來。其優點是誤報少,局限性是它只能發現已知的攻擊,對未知的攻擊無能為力。
在異常入侵檢測中,假定所有入侵行為都是與正常行為不同的,這樣,如果建立系統正常行為的軌跡,那么理論上可以把所有與正常軌跡不同的系統狀態視為可疑企圖。比如,通過流量統計分析將異常時間的異常網絡流量視為可疑。異常入侵檢測的局限是并非所有的入侵都表現為異常,而且系統的軌跡難于計算和更新。
對比這兩種檢測方法可以發現,異常檢測難于定量分析,這種檢測方式有一種固有的不確定性。與此不同,誤用檢測會遵循定義好的模式,能通過對審計記錄信息做模式匹配來檢測,但僅可檢測已知的入侵方式。所以這兩類檢測機制都不完美。就具體的檢測方法來說,現在已經有了很多入侵檢測的方法,但任何一種方法都有它的局限性,都不能解決所有問題。因而對于入侵檢測方法的研究仍然是當前入侵檢測研究的一個重點。
二、Linux下的實現
在對入侵檢測技術研究的基礎上,我們在Linux系統下設計并實現了一個基于網絡的入侵檢測系統。
2.1 系統的組成結構
該系統的組成結構如圖1所示。數據采集模塊負責從網絡上收集原始的網絡數據流,在經過一定的預處理后,這些數據被送到數據分析模塊,由數據分析模塊進行分析,以便判斷是否有違反安全策略的入侵行為發生。并及時將分析結果送到告警模塊,由告警模塊向控制臺產生告警信息。用戶可以通過用戶界面與控制臺交互,通過控制臺,一方面可以對各個模塊進行配置,另一方面也可以接收告警信息。

2.2 系統的功能描述
該系統實現了入侵檢測的主要功能,包括數據采集、數據預處理、入侵分析以及告警。具體來說,可以完成以下功能:
● 捕獲符合指定條件的網絡數據包。
● 進行IP重組,提供IP包數據。
● 重組TCP流,提供TCP流數據。
● 重組應用層數據流,提供HTTP數據流。
● 實現基于規則的入侵檢測方法。
● 向控制臺提交分析結果。
● 接受控制臺的配置和管理。
由于該系統功能的實現主要體現在數據采集模塊和數據分析模塊中,所以下面將對這兩個模塊加以詳細說明。
2.3 數據采集模塊
數據采集是入侵檢測的基礎,入侵檢測的效率在很大程度上依賴于所采集信息的可靠性和正確性。在基于網絡的入侵檢測系統中,數據采集模塊需要監聽所保護網絡的某個網段或某幾臺主機的網絡流量,經過預處理后得到網絡、系統、用戶以及應用活動的狀態和行為信息。數據采集需要在網絡中的若干關鍵點進行。
具體來說,數據采集模塊需要監聽網絡數據包,進行IP重組,進行TCP/UDP協議分析,同時也要進行應用層協議數據流分析。采集到的數據要經過預處理才能提交給數據分析模塊。由于不同的分析方法所需要的數據源是不同的,所以預處理也會有很大的不同。但是,一般來說,分析模塊所分析的數據都是基于某個網絡協議層的數據信息,或是直接采用這些數據的某些部分。因此在該系統的設計中,數據采集模塊除了采集數據外,還要對這些信息進行協議分析。協議分析是指將網絡上采集到的基于IP的數據進行處理,以便得到基于某種協議的數據。在本系統中主要是針對TCP/IP協議族的分析。
網絡數據采集是利用以太網絡的廣播特性實現的,以太網數據傳輸通過廣播實現,但是在系統正常工作時,應用程序只能接收到以本主機為目標主機的數據包,其他數據包將被丟棄。為了采集到流經本網段的所有數據,我們需要首先將網卡設置為混雜模式,使之可以接收目標MAC地址不是自己MAC地址的數據包,然后直接訪問數據鏈路層,截獲相關數據,由應用程序對數據進行過濾處理,這樣就可以監聽到流經網卡的所有數據。
在進行數據捕獲時,我們采用的是libpcap,libpcap是一個與實現無關的訪問操作系統所提供的分組捕獲機制的分組捕獲函數庫,用于訪問數據鏈路層。該庫提供的C函數接口可用于需要捕獲經過網絡接口數據包的系統開發上。這個庫為不同的平臺提供了一致的編程接口,在安裝了libpcap的平臺上,以libpcap為接口寫的程序,可以自由地跨平臺使用。
Libpcap在網上捕獲到的是數據幀,我們還需要對數據幀進行協議分析,協議分析的處理過程為:首先根據預先定義的過濾規則從網絡上獲取所監聽子網上的數據包,然后進行TCP/IP棧由下至上的處理過程,主要是IP重組和TCP/UDP層協議處理,最后進行應用層協議分析。
協議分析的工作在每個操作系統里都有,在這里,我們選擇了libnids函數庫。libnids是在libnet和libpcap的基礎上開發的,它封裝了開發網絡入侵檢測系統的許多通用型函數。libnids提供的接口函數除了可以監視流經本地的所有網絡通信、檢查數據包外,還具有重組TCP數據段、處理IP分片包的功能。而且它同樣具有很好的移植性。
| 共2頁: 1 [2] 下一頁 | ||
|


