直播中
根據(jù)CIDF規(guī)范,我們從功能上將入侵檢測(cè)系統(tǒng)劃分為四個(gè)基本部分:數(shù)據(jù)采集子系統(tǒng)、數(shù)據(jù)分析子系統(tǒng)、控制臺(tái)子系統(tǒng)、數(shù)據(jù)庫(kù)管理子系統(tǒng),如附圖所示。
具體實(shí)現(xiàn)起來,一般都將數(shù)據(jù)采集子系統(tǒng)(又稱探測(cè)器)和數(shù)據(jù)分析子系統(tǒng)在Linux或Unix平臺(tái)上實(shí)現(xiàn),我們稱之為數(shù)據(jù)采集分析中心;將控制臺(tái)子系統(tǒng)在Windows NT或2000上實(shí)現(xiàn),數(shù)據(jù)庫(kù)管理子系統(tǒng)基于Access或其他功能更強(qiáng)大的數(shù)據(jù)庫(kù),多跟控制臺(tái)子系統(tǒng)結(jié)合在一起,我們稱之為控制管理中心。本文以Linux和Windows NT平臺(tái)為例介紹數(shù)據(jù)采集分析中心和控制管理中心的實(shí)現(xiàn)。
可以按照如下步驟構(gòu)建一個(gè)基本的入侵檢測(cè)系統(tǒng)。
第一步 獲取libpcap和tcpdump
審計(jì)蹤跡是IDS的數(shù)據(jù)來源,而數(shù)據(jù)采集機(jī)制是實(shí)現(xiàn)IDS的基礎(chǔ),否則,巧婦難為無米之炊,入侵檢測(cè)就無從談起。數(shù)據(jù)采集子系統(tǒng)位于IDS的最底層,其主要目的是從網(wǎng)絡(luò)環(huán)境中獲取事件,并向其他部分提供事件。目前比較流行的做法是:使用libpcap和tcpdump,將網(wǎng)卡置于“混雜”模式,捕獲某個(gè)網(wǎng)段上所有的數(shù)據(jù)流。
libpcap是Unix或Linux從內(nèi)核捕獲網(wǎng)絡(luò)數(shù)據(jù)包的必備工具,它是獨(dú)立于系統(tǒng)的API接口,為底層網(wǎng)絡(luò)監(jiān)控提供了一個(gè)可移植的框架,可用于網(wǎng)絡(luò)統(tǒng)計(jì)收集、安全監(jiān)控、網(wǎng)絡(luò)調(diào)試等應(yīng)用。
tcpdump是用于網(wǎng)絡(luò)監(jiān)控的工具,可能是Unix上最著名的sniffer了,它的實(shí)現(xiàn)基于libpcap接口,通過應(yīng)用布爾表達(dá)式打印數(shù)據(jù)包首部,具體執(zhí)行過濾轉(zhuǎn)換、包獲取和包顯示等功能。tcpdump可以幫助我們描述系統(tǒng)的正常行為,并最終識(shí)別出那些不正常的行為,當(dāng)然,它只是有益于收集關(guān)于某網(wǎng)段上的數(shù)據(jù)流(網(wǎng)絡(luò)流類型、連接等)信息,至于分析網(wǎng)絡(luò)活動(dòng)是否正常,那是程序員和管理員所要做的工作。
libpcap和tcpdump在網(wǎng)上廣為流傳,開發(fā)者可以到相關(guān)網(wǎng)站下載。
第二步 構(gòu)建并配置探測(cè)器,實(shí)現(xiàn)數(shù)據(jù)采集功能
1. 應(yīng)根據(jù)自己網(wǎng)絡(luò)的具體情況,選用合適的軟件及硬件設(shè)備,如果你的網(wǎng)絡(luò)數(shù)據(jù)流量很小,用一般的PC>機(jī)安裝Linux即可,如果所監(jiān)控的網(wǎng)絡(luò)流量非常大,則需要用一臺(tái)性能較高的機(jī)器。
2. 在Linux服務(wù)器上開出一個(gè)日志分區(qū),用于采集數(shù)據(jù)的存儲(chǔ)。
3. 創(chuàng)建libpcap庫(kù)。從網(wǎng)上下載的通常都是libpcap.tar.z的壓縮包,所以,應(yīng)先將其解壓縮、解包,然后執(zhí)行配置腳本,創(chuàng)建適合于自己系統(tǒng)環(huán)境的Makefile,再用make命令創(chuàng)建libpcap庫(kù)。libpcap安裝完畢之后,將生成一個(gè)libpcap庫(kù)、三個(gè)include文件和一個(gè)man頁(yè)面(即用戶手冊(cè))。
4. 創(chuàng)建tcpdump。與創(chuàng)建libpcap的過程一樣,先將壓縮包解壓縮、解包到與libpcap相同的父目錄下,然后配置、安裝tcpdump。
如果配置、創(chuàng)建、安裝等操作一切正常的話,到這里,系統(tǒng)已經(jīng)能夠收集到網(wǎng)絡(luò)數(shù)據(jù)流了。至于如何使用libpcap和tcpdump,還需要參考相關(guān)的用戶手冊(cè)。
第三步 建立數(shù)據(jù)分析模塊
網(wǎng)上有一些開放源代碼的數(shù)據(jù)分析軟件包,這給我們構(gòu)建數(shù)據(jù)分析模塊提供了一定的便利條件,但這些“免費(fèi)的午餐”一般都有很大的局限性,要開發(fā)一個(gè)真正功能強(qiáng)大、實(shí)用的IDS,通常都需要開發(fā)者自己動(dòng)手動(dòng)腦設(shè)計(jì)數(shù)據(jù)分析模塊,而這往往也是整個(gè)IDS的工作重點(diǎn)。
數(shù)據(jù)分析模塊相當(dāng)于IDS的大腦,它必須具備高度的“智慧”和“判斷能力”。所以,在設(shè)計(jì)此模塊之前,開發(fā)者需要對(duì)各種網(wǎng)絡(luò)協(xié)議、系統(tǒng)漏洞、攻擊手法、可疑行為等有一個(gè)很清晰、深入的研究,然后制訂相應(yīng)的安全規(guī)則庫(kù)和安全策略,再分別建立濫用檢測(cè)模型和異常檢測(cè)模型,讓機(jī)器模擬自己的分析過程,識(shí)別確知特征的攻擊和異常行為,最后將分析結(jié)果形成報(bào)警消息,發(fā)送給控制管理中心。
設(shè)計(jì)數(shù)據(jù)分析模塊的工作量浩大,并且,考慮到“道高一尺,魔高一丈”的黑客手法日益翻新,所以,這注定是一個(gè)沒有終點(diǎn)的過程,需要不斷地更新、升級(jí)、完善。在這里需要特別注意三個(gè)問題:
?、?應(yīng)優(yōu)化檢測(cè)模型和算法的設(shè)計(jì),確保系統(tǒng)的執(zhí)行效率;
?、?安全規(guī)則的制訂要充分考慮包容性和可擴(kuò)展性,以提高系統(tǒng)的伸縮性;
?、?報(bào)警消息要遵循特定的標(biāo)準(zhǔn)格式,增強(qiáng)其共享與互操作能力,切忌隨意制訂消息格式的不規(guī)范做法。
第四步 構(gòu)建控制臺(tái)子系統(tǒng)
控制臺(tái)子系統(tǒng)負(fù)責(zé)向網(wǎng)絡(luò)管理員匯報(bào)各種網(wǎng)絡(luò)違規(guī)行為,并由管理員對(duì)一些惡意行為采取行動(dòng)(如阻斷、跟蹤等)。由于Linux或Unix平臺(tái)在支持界面操作方面遠(yuǎn)不如常用的Windows產(chǎn)品流行,所以,為了把IDS做成一個(gè)通用、易用的系統(tǒng),筆者建議將控制臺(tái)子系統(tǒng)在Windows系列平臺(tái)上實(shí)現(xiàn)。
控制臺(tái)子系統(tǒng)的主要任務(wù)有兩個(gè):
?、?管理數(shù)據(jù)采集分析中心,以友好、便于查詢的方式顯示數(shù)據(jù)采集分析中心發(fā)送過來的警報(bào)消息;
?、?根據(jù)安全策略進(jìn)行一系列的響應(yīng)動(dòng)作,以阻止非法行為,確保網(wǎng)絡(luò)的安全。
控制臺(tái)子系統(tǒng)的設(shè)計(jì)重點(diǎn)是:警報(bào)信息查詢、探測(cè)器管理、規(guī)則管理及用戶管理。
1.警報(bào)信息查詢:網(wǎng)絡(luò)管理員可以使用單一條件或復(fù)合條件進(jìn)行查詢,當(dāng)警報(bào)信息數(shù)量龐大、來源廣泛的時(shí)候,系統(tǒng)需要對(duì)警報(bào)信息按照危險(xiǎn)等級(jí)進(jìn)行分類,從而突出顯示網(wǎng)絡(luò)管理員需要的最重要信息。
2.探測(cè)器管理:控制臺(tái)可以一次管理多個(gè)探測(cè)器(包括啟動(dòng)、停止、配置、查看運(yùn)行狀態(tài)等),查詢各個(gè)網(wǎng)段的安全狀況,針對(duì)不同情況制訂相應(yīng)的安全規(guī)則。
3.規(guī)則庫(kù)管理功能:為用戶提供一個(gè)根據(jù)不同網(wǎng)段具體情況靈活配置安全策略的工具,如一次定制可應(yīng)用于多個(gè)探測(cè)器、默認(rèn)安全規(guī)則等。
4.用戶管理:對(duì)用戶權(quán)限進(jìn)行嚴(yán)格的定義,提供口令修改、添加用戶、刪除用戶、用戶權(quán)限配置等功能,有效保護(hù)系統(tǒng)使用的安全性。
第五步 構(gòu)建數(shù)據(jù)庫(kù)管理子系統(tǒng)
一個(gè)好的入侵檢測(cè)系統(tǒng)不僅僅應(yīng)當(dāng)為管理員提供實(shí)時(shí)、豐富的警報(bào)信息,還應(yīng)詳細(xì)地記錄現(xiàn)場(chǎng)數(shù)據(jù),以便于日后需要取證時(shí)重建某些網(wǎng)絡(luò)事件。
數(shù)據(jù)庫(kù)管理子系統(tǒng)的前端程序通常與控制臺(tái)子系統(tǒng)集成在一起,用Access或其他數(shù)據(jù)庫(kù)存儲(chǔ)警報(bào)信息和其他數(shù)據(jù)。該模塊的數(shù)據(jù)來源有兩個(gè):
?、?數(shù)據(jù)分析子系統(tǒng)發(fā)來的報(bào)警信息及其他重要信息;
?、?管理員經(jīng)過條件查詢后對(duì)查詢結(jié)果處理所得的數(shù)據(jù),如生成的本地文件、格式報(bào)表等。
第六步 聯(lián)調(diào),一個(gè)基本的IDS搭建完畢
以上幾步完成之后,一個(gè)IDS的最基本框架已被實(shí)現(xiàn)。但要使這個(gè)IDS順利地運(yùn)轉(zhuǎn)起來,還需要保持各個(gè)部分之間安全、順暢地通信和交互,這就是聯(lián)調(diào)工作所要解決的問題。
首先,要實(shí)現(xiàn)數(shù)據(jù)采集分析中心和控制管理中心之間的通信,二者之間是雙向的通信??刂乒芾碇行娘@示、整理數(shù)據(jù)采集分析中心發(fā)送過來的分析結(jié)果及其他信息,數(shù)據(jù)采集分析中心接收控制管理中心發(fā)來的配置、管理等命令。注意確保這二者之間通信的安全性,最好對(duì)通信數(shù)據(jù)流進(jìn)行加密操作,以防止被竊聽或篡改。同時(shí),控制管理中心的控制臺(tái)子系統(tǒng)和數(shù)據(jù)庫(kù)子系統(tǒng)之間也有大量的交互操作,如警報(bào)信息查詢、網(wǎng)絡(luò)事件重建等。
聯(lián)調(diào)通過之后,一個(gè)基本的IDS就搭建完畢。后面要做的就是不斷完善各部分功能,尤其是提高系統(tǒng)的檢測(cè)能力。