如何構建一個入門級入侵檢測系統

四月 26th, 2005

如何構建一個入門級入侵檢測系統
作者: http://www.letjoin.com/ 發文時間:2004.12.15

相關鏈結:
手把手配置Linux透明防火牆
防火牆之父十六年悟出安全之”道”

  通常來說,一個企業或機構準備進軍此領域時,往往選擇從基於網路的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就搭建完畢。後面要做的就是不斷完善各部分功能,尤其是提高系統的檢測能力。

相關鏈結:
手把手配置Linux透明防火牆
防火牆之父十六年悟出安全之”道”

http://tech.ccidnet.com/pub/article/c1099_a190223_p1.html

Entry Filed under: 企鵝或惡魔

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed