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



















