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