吳 云
(衢州日報社,324002)
入侵檢測系統(IDS)是防火墻之后的第二道安全閘門,它的主要功能特點是:檢測網絡用戶的行為和網絡的異常動態,分析和篩選出合法用戶和非法用戶的侵權、越權行為;通過核查和分析系統存在的漏洞來分析系統的安全性,并提示網絡管理員及時對漏洞進行修補和修復;分析各個系統數據庫和網絡資源的完整性和統一性;攔截和識別存在的攻擊行為;分析和統計系統中存在的異常;對以上活動產生的具體痕跡能進行無一遺漏的記錄,對違法系統安全策略的用戶進行準確記錄。
DDoS是一種分布式的網絡攻擊方式,傳統的單機或集中示的入侵檢測技術已經不能滿足新情況下網絡安全的需要,原因在于:
1)通過關鍵部分的數據分析得出系統漏洞。如果一個侵入者能夠設使運行它的計算機軟硬件系統速度變慢或者奔潰,那么整個入侵檢測系統就起不了作用了。
2)整個系統的伸縮性受到一定限度的限制。如果對監控的網絡出現范圍受限那么意味著一臺或者少量主機并不能滿足他的應用。并且隨著網絡范圍和容量不斷擴大,少量的處理器根本不能滿足系統的監控和處理。
3)整個系統的擴充和配置比較難。往往要通過增加軟件模塊或者增強硬件資源來擴充系統能力,不能在線實時進行掛接和上線。
4)單純地對網絡數據進行分析有時會有缺陷。
基于以上原因,本文引入了基于分布式網絡入侵檢測系統(DIDS)這一概念的新的系統結構體系。該系統在結構上與傳統意義上的IDS的最大區別在于:數據提取模塊分布在指定的若干臺路由器或交換機上,數據分析和結果處理模塊分布在某一臺位于防火墻后面的服務器上。簡單地說,該系統就是一個分布式數據采集和集中式數據分析、結果處理和網絡監管的結合體。
系統主要分成兩大塊:分布在NSH的NSP,負責過濾網絡接口信息,截獲非法數據包并以日志的形式記錄在數據庫中,將記錄的日志數據交給NAP;運行在NAH上的NAP,進行數據和結果處理,以及網絡監管。
入侵檢測系統模型包括檢測檢測事件的分析、事件數據庫、響應單元、事件的產生等主要部分。
通過對網絡中的數據包或者網絡中系統和用戶留下的日志來分析,我們統稱為入侵檢測系統事件分析。通過事件產生器來獲得目前網絡中的時間,通過分析向其他信息系統傳遞此時間的內容;通過時間分析器對事件的核心內容進行分析來得出結論和結果;數據庫用來存放各種中間和最終數據;響應單元則是對分析結果做出反應;基于分布式的網絡入侵檢測系統(本系統),NAH從一個或多個NSH上收集反映該NSH系統不同方面活動情況的檢測審計數據,然后采用統計分析和基于規則的分析手段對這些審計數據進行連續分析,并對分析結果進行處理。系統服務模塊包括規則設置的規則服務器、分析服務器和處理服務器。
規則服務器發布數據檢測的基本規則,可以用文件方式傳輸給各個運行NSP的NSH。NAH可根據統計分析數據決定對NSP所使用的規則做修改或增加NSH數量。
分析服務器可以對采集的數據進行濫用檢測、異常檢測和完整性分析。本系統主要是對流量進行了異常檢測,本模塊做適當增加可實現其他模式的檢測。
處理服務器目標是對所有的NSP支持和管理,包括負責啟動和停止各個NSP的監測,負責從NSP中獲取審計數據信息;存儲審計數據存儲過程,也可以停止或啟動存儲的過程;按照規則統計分析審計數據文件和發送報警消息。

圖1 本系統網絡結構模型
首先給出幾個關鍵的用例圖:

圖2 網絡管理程序總框架用例圖

圖3 數據嗅探器功能用例圖
下面對以上幾個圖作簡要的說明:前三個用例圖可以形象地描述整個系統的功能;軟件結構模型與網絡結構模型相對應,更好地解釋了分布式網絡檢測系統的概念。
為了實現NAH與NSH之間的通信,必須要設計一套網絡傳輸協議,該協議位于TCP層之上,屬于應用層協議。
協議使用字符串作為功能標識的方式,具體說明如下:
1)“START”――啟動數據嗅探器服務。
2)“STOP”――停止數據嗅探器服務。
3)“REQCNT^n”――請求數據包統計數據,其中n表示要統計n分鐘內收到的各類數據包統計總量。
4)“REQHDR^n”――請求數據包的報頭信息,其中n表示要請求n分鐘內收到的數據包的報頭信息。
5)“OK”――NAH收到所需的數據后回送給NSH的應答。
6)NSH發送給NAH的數據也有一定的格式要求,在第3 章的3.3.4節中將作詳細說明。
下面給出有關的協議通信模型(如圖4):

圖4 啟動數據嗅探器通信模型
數據采集是IDS和DIDS的核心和最底數據層支持,是決定整個系統性能的主要因素,只有數據采集及時、準確、有效、可靠、完整、消耗資源低,才能保證上層的數據分析和結果處理模塊正常工作。
數據采集方法從結構上可以分成基于主機和基于網絡兩種。前者要求網絡中的每臺主機都必須運行數據采集進程;而后者只需要在關鍵性的主機(如路由器)上運行數據采集進程。
數據采集方法從數據來源上還可以分成直接和間接兩種。前者直接從產生它的對象或相關的對象獲得數據;后者從某個數據源獲得數據,該數據源反映了被監視對象的行為。
本系統采用snort作為端口數據采集器。snort是一個用C語言編寫開發的開發源代碼軟件,符合GPL(GNU Public License)的要求,其作者為Martin Roesch,也是開源軟件界的著名人士。
snort是一個基于Libpcap的網絡數據包嗅探器和日志記錄工具,可以用于入侵檢測,從入侵檢測分類上來看,它應該算是一個基于網絡和誤用的入侵檢測軟件。
snort采用基于規則的網絡信息搜索機制,對數據包進行內容的模式匹配,從中發現入侵和探測行為,例如:buffer overflows、stealth port scans、CGI attacks和 SMB probes等。snort具有實時報警的能力,它的報警信息可以 發 往 syslog、Server Message Block(SMB)、WinPopup Messages或者單獨的alert文件。snort 可以通過命令行進行交互,并對可選的BPF(Berkeley Packet Filter)命令進行配置。
snort由三個重要的子系統構成:數據包解碼器,檢測引擎、日志與報警系統。
1)數據包解碼器
數據包解碼器主要是對各種協議棧上的數據包進行解析、預處理,以便提交給檢測引擎進行規則匹配。
2)檢測引擎
snort用一個二維鏈表存儲它的檢測規則,其中一維稱為規則選項,另一維稱為規則頭。規則選項中放置的是一些入侵特征,而規則頭中放置的是一些公共的屬性特征。采用遞歸的方式來匹配規則,整個檢測機制主要針對當前建立的鏈表項中的數據包進行檢測。當通過滿足一個規則來出發系統的運行。Snort檢測的方式和機制非常靈敏和靈活,系統用戶可以根據自己的具體需求很便捷的在規則鏈表中添加所需要的規則模塊。
3)報警子系統和日志
報警子系統和日志可以在系統運行snort時,以交互式命令的形式進行實現。目前存在的日志形式主要是以下三種:tcpdump的二進制形式、解碼后的文本形式或數據庫形式。報警形式有五種,由于本系統并未使用,所以這里略去。
[1]朱敏,朱之平.網絡入侵檢測技術[J].計算機應用與軟件,2004,(06).
[2]陳瑾,羅敏,張煥國.入侵檢測技術概述[J].計算機工程與應用,2004,(02).
[3]張建忠,徐敬東,吳功宜,練書成,江罡.分布式入侵檢測系統研究與實現[J].計算機工程與應用,2004,(36).
[4]王世明.入侵檢測技術原理剖析及其應用實例[J].燕山大學學報,2004,(04).