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