歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 入侵檢測系統分析及其在Linux下的實現

入侵檢測系統分析及其在Linux下的實現

日期:2017/2/27 14:24:33   编辑:更多Linux
  作者:北京理工大學計算機科學工程系 薛靜鋒 李志強     一、入侵檢測系統分析    1.1 什麼是入侵檢測系統    所謂入侵,是指任何試圖危及計算機資源的完整性、機密性或可用性的行為。而入侵檢測,顧名思義,便是對入侵行為的發覺。它通過從計算機網絡或系統中的若干   關鍵點收集信息,並對這些信息進行分析,從而發現網絡或系統中是否有違反安全策略的行為和遭到襲擊的跡象。進行入侵檢測的軟件與硬件的組合便是入侵檢測系統(簡稱IDS)。與其他安全產品不同的是,入侵檢測系統需要更多的智能,它必須可以將得到的數據進行分析,並得出有用的結果。一個合格的入侵檢測系統能大大簡化管理員的工作,保證網絡安全地運行。    1.2 入侵檢測系統的分類    按檢測所使用數據源的不同可以將IDS分為基於主機的IDS和基於網絡的IDS。    基於主機的IDS使用各種審計日志信息(如主機日志、路由器日志、防火牆日志等)作為檢測的數據源。通常,基於主機的IDS可監測系統、事件和操作系統下的安全記錄以及系統記錄。當有文件發生變化時,IDS將新的記錄條目與攻擊標記相比較,看它們是否匹配。如果匹配,系統就會向管理員報警,以采取措施。    基於網絡的入侵檢測系統使用原始網絡分組數據包作為數據源。基於網絡的IDS通常利用一個運行在混雜模式下的網絡適配器來實時監視並分析通過網絡的所有通信業務。一旦檢測到了攻擊行為,IDS的響應模塊就會對攻擊采取相應的反應,如通知管理員、中斷連接、終止用戶等。     1.3 入侵檢測的檢測方法    入侵檢測技術通過對入侵行為的過程與特征的研究,使安全系統對入侵事件和入侵過程能做出實時響應,從檢測方法上分為兩種:誤用入侵檢測和異常入侵檢測。    在誤用入侵檢測中,假定所有入侵行為和手段都能夠表達為一種模式或特征,那麼所有已知的入侵方法都可以用匹配的方法發現。誤用入侵檢測的關鍵是如何表達入侵的模式,把真正的入侵與正常行為區分開來。其優點是誤報少,局限性是它只能發現已知的攻擊,對未知的攻擊無能為力。    在異常入侵檢測中,假定所有入侵行為都是與正常行為不同的,這樣,如果建立系統正常行為的軌跡,那麼理論上可以把所有與正常軌跡不同的系統狀態視為可疑企圖。比如,通過流量統計分析將異常時間的異常網絡流量視為可疑。異常入侵檢測的局限是並非所有的入侵都表現為異常,而且系統的軌跡難於計算和更新。    對比這兩種檢測方法可以發現,異常檢測難於定量分析,這種檢測方式有一種固有的不確定性。與此不同,誤用檢測會遵循定義好的模式,能通過對審計記錄信息做模式匹配來檢測,但僅可檢測已知的入侵方式。所以這兩類檢測機制都不完美。就具體的檢測方法來說,現在已經有了很多入侵檢測的方法,但任何一種方法都有它的局限性,都不能解決所有問題。因而對於入侵檢測方法的研究仍然是當前入侵檢測研究的一個重點。    二、Linux下的實現    在對入侵檢測技術研究的基礎上,我們在Linux系統下設計並實現了一個基於網絡的入侵檢測系統。    2.1 系統的組成結構    該系統的組成結構如圖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.4 數據分析模塊    數據分析是入侵檢測系統的核心。各種分析方法各有利弊,但基於規則的檢測方法因為事先將各種入侵方式表示為規則存放於規則庫中,因此在規則庫比較完備的基礎上,可以有很好的檢測效率,所以我們在該系統的實現中主要考慮了基於規則的檢測方法。    基於規則的檢測方法是誤用檢測的一種。入侵檢測系統需要從以往的攻擊入侵活動中,歸納識別出對應的入侵模式,並將這些入侵模式存放於規則庫中,然後將系統現有的活動與規則庫中的規則進行模式匹配,從而決定是否有入侵行為發生。    每一種基於規則的入侵檢測方法都需要一個確定的入侵模式庫,即規則庫,其中存放著描述入侵方法和行為的規則。在我們的系統中,采用了SNORT的入侵行為描述方法。SNORT是一個開放源代碼的輕量級的基於網絡的入侵檢測系統。這種描述方法簡單、易於實現,能夠描述絕大多數的入侵行為。由於其簡單,因此檢測速度比較快。    規則庫中的每條規則在邏輯上分為兩部分:規則頭部和規則選項。規則頭部包含規則的操作、協議、源IP地址和目標IP地址及其網絡掩碼和端口。規則選項包括報警信息及需要檢測的模式信息。規則的一般格式為:    (;;…;;)    在圓括號前的部分是規則頭部,在圓括號中的部分是規則選項。規則選項部分中冒號前面的詞組稱為選項關鍵字。規則選項不是規則的必需部分,它只是用來定義收集特定數據包的特定特征。一條規則中不同部分必須同時滿足才能執行,相當於“與”操作。而同一個規則庫文件中的所有規則之間相當於一個“或”操作。    以下是一個例子:alert tcp any any -> 192.168.1.0/24 111 (content:"00 01 86 a5"; msg: "mountd Access";)。該條規則描述了:任何使用TCP協議連接網絡192.168.1.0/24中任何主機的111端口的數據包中,如果出現了二進制數據00 01 86 a5,便發出警告信息mountd access。    規則操作說明當發現適合條件的數據包時應該做些什麼。有兩種操作:alert和log。如果是 alert,則使用選定的告警方法產生警報,並記錄這個數據包;如果是log,則只記錄該數據包。    協議指明當前使用的是何種協議。對於IP地址和端口,關鍵字“any”可以用來定義任何IP地址。在IP地址後指定網絡掩碼,如/24指定一個C類網絡,/16指定一個B類網絡,/32指定一個特定主機。如192.168.1.0/24指定了從192.168.1.1 到 192.168.1.255的一個范圍的




Copyright © Linux教程網 All Rights Reserved