1IDS基本原理
入侵檢測系統(IDS)是一種主動保護自己免受攻擊的網絡安全系統。入侵檢測系統對網絡行為進行實時檢測,可以記錄和阻止某些網絡行為,被認為是防火墻之后的第二道安全閘門,可與防火墻配合工作。
IDS掃描當前網絡的活動,監視和記錄網絡的流量,根據定義好的規則來過濾經主機網卡的流量,并提供實時報警。入侵檢測系統至少應包括3個功能模塊:
提供事件記錄流的信息源、發現入侵跡象的分析引擎和基于分析引擎的響應部件。公共入侵檢測框架CIDF闡述了一個入侵檢測系統的通用模型,即入侵檢測系統的四個組件:事件產生器、事件分析器、響應單元和事件數據庫,共通用模型如圖1所示。CIDF將需要分析的數據統稱為事件。

2無線網絡入侵檢測系統架構
2.1入侵檢測體系結構
目前比較成熟的入侵檢測方法是異常檢測和誤用檢測兩種類型。異常檢測是根據使用者的行為或資源使用狀況的正常程度來判斷是否入侵。異常檢測與系統相對無關,通用性較強,其主要缺陷是誤檢率較高。誤用檢測有時也稱為特征分析或基于知識的檢測,根據已定義的入侵模式,判斷在實際的安全審計數據中是否出現這些入侵模式,這種檢測準確度較高,檢測結果有明確的參照性,便于決策響應,缺陷是無法檢測未知的攻擊類型。無線網絡的IDS系統,必須考慮兩者的互補性結合使用,如圖2所示。

信息獲取和預處理層主要由主機探頭(HSeNSor)和網絡探頭(NSensor)組成。綜合分析決策層包含分析器(AnalysisSvr)和數據庫(DB),在獲取數據進行預處理后,進一步詳細分析和最后的決策融合,從而制訂響應策略和方式。控制管理層則是進行人機交互、控制管理、報警融合以及態勢分析。
2.2入侵單元檢測模型
為滿足無線網絡的需要,入侵檢測與響應系統應采用分布式結構,且協同工作。網絡中的每個節點都參與入侵檢測與響應,每個節點檢測本地入侵,鄰近節點進行協作檢測。在系統的每個節點都有獨立的入侵檢測單元,每個單元能夠獨立運行,監測本地行為(包括用戶和系統的行為、節點間的通信行為),檢測來自本地的入侵,并發起響應。這些入侵檢測單元共同組成無線網絡的入侵檢測系統,如圖3所示。

數據采集模塊采集實時審計數據,這些數據包含系統和用戶在節點內部的操作行為、通過該節點的通信行為以及在通信范圍內、通過該節點可觀察到的其他通信行為。協作檢測模塊的作用是傳送鄰近節點之間的入侵檢測狀態信息,利用最近接收到的其他節點的狀態信息,計算出本節點的入侵檢測狀態。協作檢測的步驟如圖4所示。

2.3分析器概念模型與系統部署
分析器概念模型如圖5所示。首先獲取來自主機探頭和網絡探頭的數據信息,然后采用特征檢測、異常檢測、統計分析、拒絕服務檢測等多種方法進行并行分析,把分析的結果采用特定的融合算法進行融合,從而得出分析結果。分析結果一方面通知控制管理層,另一方面通知響應決策部分,驅動響應決策,并進行物理定位。

IDS系統部署時,主機探頭安裝在客戶端操作系統上,而網絡探頭則根據其地理環境情況適當布置,分析機盡可能地放在用戶內部網絡,降低分析機的風險,系統應該部署在電磁波干擾小的地方,避免由于輻射信號不穩定而帶來的影響。
3無線網絡入侵檢測系統核心模塊實現
分布式入侵檢測系統分為3個部件,(1)探測器。對應信息采集和預警層,下設探頭和數據采集模塊;(2)分析器對應綜合分析決策層,下設協議解碼模塊、預處理模塊和檢測分析模塊;(3)控制管理器。對應控制管理層,下設規則解析模塊、日志模塊和響應報警模塊。本文將重點介紹數據預處理、數據檢測與分析和規則解析三個模塊。
3.1數據預處理模塊
預處理模塊對得到的數據包進行預處理,一方面可發現入侵信息,另一方面為檢測分析模塊做最后的準備。預處理模塊采用了插件技術,可以很方便地增加功能,使系統具有可擴展性。與預處理相關的函數以鏈表的形式存在于動態鏈接庫中,如圖6所示。

圖6數據預處理模塊處理過程
預處理函數是由控制管理器來配置的。控制中心將配置規則和預處理函數一起傳送到各檢測引擎,檢測引擎在進行規則解析時,自行識別預處理指令,并作相應的處理。在IP報文的首部包含了分片和重組的信息,如圖7所示。

圖7IP包(32位)格式
(1)IdenTIficATIon:唯一標識發送端的一個IP報文,如果需要分片,則所有分片具有相同的標識,這樣目標主機便能夠根據源主機的IP地址以及該標識來組合報文;(2)R:保留未用;(3)D:“不分片”位,置為1,則IP層不將數據報分片,只有為0時才允許分片;(4)F:“更多分片”位,為1表示后面還有數據報的更多分片,為0則表示這是數據報的最后一個分片;(5)FragmentOffset:分片偏移,指出該分片數據在原始數據報文(未分片前)相對于起點的位置,實際位置為偏移值乘以8,如為0則表示這是分片后的第一個信息包,放在組合后分組的最前面。
IP 重組的函數中定義了每一個分片的結構為:
STruct IpFrag
{
dint offset ; //IP 分片的偏移值
int end : // 分片的最后字節
int len ; // 分片的長度
u char mff ; // 更多的分片標志
unsigned char *ptr ; // 指向分片包中的數據
struct IpFrag *ipf next ;//鏈接的下一個分片
};
些分片形成一個單向鏈表,表示一個尚未組裝完的分片隊列,它屬于一個IP 報文,而分片鏈表的頭指針放在IpHeader 結構中:
struct IpHeader
{
struct IpFrag ; // 第一個IP 分片
int len ; // 報文長度
struct timer list timer ; // 定時器
u_char Proto ; // 協議類型
u_short Ip_ttl ; // 生存時間
u_short id ; //IP 標識
struct in addr Ip-Src ,Ip_Dst ; //IP 報文的源, 目的
IP 地址
struct IpHeader *next ; // 下一個IP 報文
} ;
IpHeader描述還未收到全部分片報文結構,多個Ip-Header構成的鏈表形成一個重裝鏈表,等待其他分片到達后重裝。
3.2數據檢測分析模塊
檢測分析模塊對預處理模塊提交的數據,運用匹配算法和規則庫中的規則進行比較分析,從而判斷是否有入侵行為。檢測分析模塊是檢測引擎的核心,它將從數據采集模塊傳來的數據順著規則鏈表與入侵規則進行比較,如果匹配成功,則說明檢測到了入侵,同時產生報警。其流程如圖8所示。

圖8數據檢測分析模塊流程圖
3.3規則解析模塊
規則解析模塊將從控制中心傳送過來的規則按照一定的數據結構存儲在規則庫中,作為對入侵行為進行判斷分析的知識庫。在該模塊的設計中,本文采用動態生成鏈表的方式構建規則的語法樹,把所選擇的規則存儲在數據檢測器所在的主機內存中,規則鏈表的結構如圖9所示。

第一層是具有相同處理動作(Alert(警告),Log(記錄),Pass(忽略))的節點,以RuleListNode結構表示。其次,是在具有相同處理動作的基礎上,按照不同的協議類型(IP,TCP,ICMP和UDP)再分成幾條鏈表。而在每條鏈表中,具有相同源IP地址、目的IP地址、源端口和目的端口的規則頭節點RuleTreeNode構成了結構圖的第二層。以下的幾層由具有相同源IP地址、目的IP地址、源端口和目的端口所對應的規則選項節點即tTreeNode組成。例如在一組規則中有45條檢測CGI-BIN探測活動的規則,而它們都具有相同的源/目的IP地址及端口號,則它們在鏈表中可以將這些共同屬性壓縮到一個單獨的RuleTreeNode節點中,而每個不同的屬性(規則選項)保存在與RuleTreeNode節點相連的OptTreeNode節點中。這樣的結構方式,將大大有助于提高檢測速度。
建立規則鏈表的流程如下:首先讀取規則文件,檢查規則文件是否存在并可讀,然后依次讀取每一條規則,同時進行多行規則的整理;對規則進行解析,按類型進行分支處理,并用相應的規則語法表示,建立規則語法樹;最后進行一些完善操作,如連接所有的動態規則,進行規則樹的完整性檢查。其中解釋規則并將其添加到規則鏈表的流程如圖10所示。

圖10規則解析模塊流程
作為個人通信的一個重要的組成部分,無線局域網在現實及未來的社會生活中將得到廣泛的應用。無線入侵檢測技術也將必然隨著計算機技術的發展而發展,隨著無線網絡的普及和移動設備的性能的提高而得到進一步的發展。下一步將在本文研究的基礎上,重點解決入侵檢測系統的應用瓶頸問題,以大幅度提升檢測準確性以及大量應用網絡環境下的系統性能。
