趙妙軍
(杭州師范大學(xué)錢江學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),浙江 杭州 310012)
一個(gè)合格的入侵檢測(cè)系統(tǒng)能大大簡(jiǎn)化安全管理員的工作,保證網(wǎng)絡(luò)安全的運(yùn)行。具體說來,入侵檢測(cè)系統(tǒng)的主要功能有以下幾點(diǎn):監(jiān)測(cè)并分析用戶和系統(tǒng)的活動(dòng);核查系統(tǒng)配置和漏洞;評(píng)估系統(tǒng)關(guān)鍵資源和數(shù)據(jù)文件的完整性;識(shí)別已知的攻擊行為;統(tǒng)計(jì)分析異常行為;操作系統(tǒng)日志管理,并識(shí)別違反安全策略的用戶活動(dòng)。
一個(gè)入侵檢測(cè)系統(tǒng)(IDS)的通用模型。它將一個(gè)入侵檢測(cè)系統(tǒng)分為以下組件:事件產(chǎn)生器(Event Generators);事件分析器(Event Analyzers);響應(yīng)單元 (Response Units);事件數(shù)據(jù)庫(Event Databases)
CIDF將IDS需要分析的數(shù)據(jù)稱為事件(event),它可以是網(wǎng)絡(luò)中的數(shù)據(jù)包,也可以是從系統(tǒng)日志等其他路徑得到的消息。入侵檢測(cè)的通用模型見圖1:
圖1 入侵檢測(cè)的通用模型
入侵檢測(cè)系統(tǒng)的主要功能就是通過采集網(wǎng)絡(luò)數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)入侵則進(jìn)行實(shí)時(shí)報(bào)警且進(jìn)行日志記錄,并且能夠動(dòng)態(tài)配置檢測(cè)規(guī)則,將配置信息記錄在數(shù)據(jù)庫中。數(shù)據(jù)流圖如圖2所示。
圖2 入侵檢測(cè)系統(tǒng)數(shù)據(jù)流程圖
預(yù)處理實(shí)現(xiàn)數(shù)據(jù)分析中的一個(gè)預(yù)處理功能,即根據(jù)目標(biāo)主機(jī)的IP地址將檢測(cè)的規(guī)則分組,并將采集到的網(wǎng)絡(luò)數(shù)據(jù)包分發(fā)為所屬分組。系統(tǒng)的數(shù)據(jù)、預(yù)處理、檢測(cè)規(guī)則等的初始化都是在捕獲數(shù)據(jù)包前進(jìn)行的。一旦初始化完畢,那么就開始捕獲數(shù)據(jù)包,每收到一個(gè)數(shù)據(jù)包都會(huì)首先調(diào)用預(yù)處理程序中的函數(shù)進(jìn)行處理后,再調(diào)用規(guī)則函數(shù)。即首先根據(jù)數(shù)據(jù)包的協(xié)議類型定位規(guī)則函數(shù),其次調(diào)用規(guī)則函數(shù)進(jìn)行規(guī)則的逐一匹配,即首先匹配規(guī)則頭,若匹配則繼續(xù)匹配規(guī)則選項(xiàng),若不匹配,直接匹配下一條規(guī)則。本系統(tǒng)采用模塊化設(shè)計(jì)方法,依據(jù)入侵子系統(tǒng)的功能需求和系統(tǒng)結(jié)構(gòu)將系統(tǒng)劃分成如下功能模塊,如圖3:
圖3 系統(tǒng)功能模塊
各模塊功能如下:
采集模塊:網(wǎng)絡(luò)數(shù)據(jù)采集與包過濾。
分析模塊:對(duì)數(shù)據(jù)包進(jìn)行包分析和模式匹配、判斷網(wǎng)絡(luò)入侵。
響應(yīng)模塊:控制臺(tái)屏幕報(bào)警、控制臺(tái)警報(bào)報(bào)警、發(fā)送警報(bào)由防火墻阻斷攻擊。
系統(tǒng)管理模塊:控制系統(tǒng)的啟動(dòng)和系統(tǒng)的停止。
系統(tǒng)設(shè)置模塊:配置入侵檢測(cè)策略。
日志管理模塊:記錄系統(tǒng)日志和記錄網(wǎng)絡(luò)攻擊日志:讀取日志、分析日志和歸類綜合日志內(nèi)容。
幫助模塊:提供入侵檢測(cè)系統(tǒng)的一些幫助文檔。
WinPcap是面向Win32平臺(tái)的進(jìn)行數(shù)據(jù)包捕獲和網(wǎng)絡(luò)分析的一個(gè)架構(gòu)。它包括一個(gè)核心層的數(shù)據(jù)包過濾器,一個(gè)底層的動(dòng)態(tài)連接庫(packet.d 11)和一個(gè)高層并且系統(tǒng)獨(dú)立的動(dòng)態(tài)連接庫(wpcap.dll)。數(shù)據(jù)包捕獲是一個(gè)面向底層的機(jī)制,它需要與網(wǎng)絡(luò)適配器、操作系統(tǒng)、特別是網(wǎng)絡(luò)應(yīng)用程序進(jìn)行嚴(yán)格的交互。
NPF(Netgroup Packet Filter)是WinPcap的核心部分。它的主要功能就是捕獲數(shù)據(jù)包,還可以發(fā)送數(shù)據(jù)包、存儲(chǔ)數(shù)據(jù)包以及對(duì)網(wǎng)絡(luò)進(jìn)行統(tǒng)計(jì)分析。NPF工作在內(nèi)核層,有一個(gè)網(wǎng)絡(luò)轉(zhuǎn)發(fā)部件,從網(wǎng)卡驅(qū)動(dòng)程序收集網(wǎng)絡(luò)數(shù)據(jù)包,即可以發(fā)送給過濾部件,對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行過濾,也可以發(fā)給統(tǒng)計(jì)部件,對(duì)網(wǎng)絡(luò)進(jìn)行統(tǒng)計(jì)分析,還可以發(fā)送給存儲(chǔ)部件,把網(wǎng)絡(luò)數(shù)據(jù)包直接存儲(chǔ)到磁盤。數(shù)據(jù)包在NPF中使用了緩存機(jī)制,主要是為了提高效率和速度。
NPF和NDIS(Network Driver Interface Specification)有密切的關(guān)系。NDIS是一個(gè)標(biāo)準(zhǔn),它定義了網(wǎng)絡(luò)適配器(確切地說,是管理網(wǎng)絡(luò)適配器的驅(qū)動(dòng)程序)和協(xié)議驅(qū)動(dòng)程序之間的通信規(guī)范。NDIS的主要目的是使協(xié)議驅(qū)動(dòng)程序獨(dú)立于網(wǎng)絡(luò)適配器的特殊性和Win32操作系統(tǒng)的特殊性來接收網(wǎng)絡(luò)上的數(shù)據(jù)包或發(fā)送數(shù)據(jù)包到網(wǎng)絡(luò)上。
Winpcap使用NPF部件捕獲數(shù)據(jù)包。為了用戶層的應(yīng)用程序能利用核心驅(qū)動(dòng)程序所提供的服務(wù),還提供一個(gè)接口。WinPcap提供了兩種不同的動(dòng)態(tài)連接庫:packet.dll和wpcap.dll來提供這種服務(wù)。packet.dll提供了一個(gè)底層的API使用這個(gè)獨(dú)立于微軟操作系統(tǒng)的編程接口即可直接訪問核心驅(qū)動(dòng)程序提供的功能。wpcap.dll提供了一個(gè)更加強(qiáng)大的用于高層捕獲的函數(shù)子集,它和libpcap,并允許以一種獨(dú)立于下層的網(wǎng)絡(luò)硬件和操作系統(tǒng)的方式來捕獲數(shù)據(jù)包。
本系統(tǒng)就是運(yùn)用了wpcap.dll實(shí)現(xiàn)了高層的數(shù)據(jù)包捕獲。通過調(diào)用一系列的wpcap.dll函數(shù),實(shí)現(xiàn)數(shù)據(jù)包采集工作。過程如下:首先調(diào)用函數(shù)pcap_findalldevs ex()獲得本機(jī)網(wǎng)卡名,接著調(diào)用函數(shù)pcap_open()獲得網(wǎng)長(zhǎng)句柄,最后調(diào)用函數(shù)pcap_next_ex()獲得網(wǎng)絡(luò)數(shù)據(jù)包句柄,接收網(wǎng)絡(luò)數(shù)據(jù)包。出于數(shù)據(jù)分析時(shí)只需要IP包,所以數(shù)據(jù)采集只接收IP包,其它數(shù)據(jù)包則丟棄。
木系統(tǒng)基于誤用檢測(cè)的實(shí)現(xiàn):事件判決引擎依據(jù)協(xié)議解碼器提交的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)進(jìn)行分析,并從這些網(wǎng)絡(luò)活動(dòng)中找出預(yù)先定義的攻擊模式,一旦發(fā)現(xiàn)其中含有攻擊事件的特征碼,即將此事件提交“響應(yīng)系統(tǒng)”。
本系統(tǒng)基于異常檢測(cè)的實(shí)現(xiàn):對(duì)攻擊規(guī)則進(jìn)行初始化存儲(chǔ)的同時(shí)也根據(jù)配置初始化相應(yīng)的計(jì)數(shù)器、定時(shí)器,用來記錄特征包的到達(dá)。特征包到達(dá)速度判決器對(duì)每一種要檢測(cè)的初始化一個(gè)“先進(jìn)先出”隊(duì)列,記錄一定數(shù)量的包到達(dá)的時(shí)間戳,對(duì)符合條件的包的到達(dá)時(shí)問進(jìn)行登記,并對(duì)一段時(shí)間內(nèi)到達(dá)包進(jìn)行計(jì)數(shù),一旦超出預(yù)先設(shè)置的門限值,即將此事件提交“響應(yīng)系統(tǒng)”。
誤用檢測(cè)以網(wǎng)絡(luò)協(xié)議數(shù)據(jù)為檢測(cè)數(shù)據(jù)源,異常檢測(cè)以特征包的到達(dá)速度為檢測(cè)數(shù)據(jù)樣本。通過這種方式綜合運(yùn)用了兩種檢測(cè)技術(shù),實(shí)現(xiàn)誤用、異常技術(shù)的互補(bǔ),最大限度地阻斷網(wǎng)絡(luò)入侵行為,解決工DS檢測(cè)效率低的問題,提高工DS的綜合檢測(cè)能力,很好的控制了檢測(cè)系統(tǒng)產(chǎn)生的誤報(bào)、漏報(bào)現(xiàn)象。
檢測(cè)引擎通過循環(huán)捕獲數(shù)據(jù)包,對(duì)網(wǎng)絡(luò)流量進(jìn)行實(shí)時(shí)監(jiān)控的過程從程序設(shè)計(jì)的角度看是一個(gè)無限循環(huán)的過程,這個(gè)過程必將耗盡系統(tǒng)資源,使系統(tǒng)無法響應(yīng)其它事件。為了能夠主動(dòng)控制過程的開始和中止,WNIDS系統(tǒng)采用了vc++提供的線程技術(shù),采用主線程響應(yīng)用戶輸入,兩個(gè)檢測(cè)線程分別控制誤用、異常檢測(cè)的技術(shù)。
[1]薛靜鋒,入侵檢測(cè)技術(shù),機(jī)械土業(yè)出版社,2004
[2]韓東海等著,《入侵檢測(cè)系統(tǒng)實(shí)例剖析》[M],清華大學(xué)出版社,2002
[3]李曉鶯,協(xié)議分析在入侵檢測(cè)系統(tǒng)中的應(yīng)用,網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2002