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