郎振紅
(天津電子信息職業(yè)技術(shù)學(xué)院,天津 300132)
據(jù)不完全統(tǒng)計(jì),中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)于2008年7月發(fā)布的《第22次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,截至2008年6月底,僅我國(guó)網(wǎng)民數(shù)量就高達(dá) 2.53億。而且,截至2004年12月底,我國(guó)上網(wǎng)的計(jì)算機(jī)總數(shù)達(dá)到4160萬(wàn)臺(tái),從1997年到2004年,僅在七年之內(nèi),計(jì)算機(jī)上網(wǎng)總數(shù)增長(zhǎng)了139倍。并且網(wǎng)絡(luò)的應(yīng)用領(lǐng)域已由最早的信息瀏覽發(fā)展到網(wǎng)絡(luò)銀行、電子商務(wù)、電話會(huì)議等應(yīng)用服務(wù)。因此,隨著日益龐大的網(wǎng)絡(luò)規(guī)模以及多樣化的網(wǎng)絡(luò)服務(wù),網(wǎng)絡(luò)的安全機(jī)制受到新的挑戰(zhàn)。由于網(wǎng)絡(luò)中惡意或無(wú)意的攻擊手段變得越來(lái)越隱蔽,對(duì)系統(tǒng)的破壞威力越來(lái)越大,就目前網(wǎng)絡(luò)用戶經(jīng)常使用的防火墻、防病毒軟件、加密技術(shù)以及數(shù)字簽名技術(shù)等安全防護(hù)措施在應(yīng)用中表現(xiàn)出各自的弊端。為了彌補(bǔ)以往安全防護(hù)措施的不足,誕生了一種嶄新的安全保護(hù)機(jī)制——即網(wǎng)絡(luò)入侵檢測(cè)技術(shù)。將網(wǎng)絡(luò)安全的防護(hù)手段由消極被動(dòng)的防御變?yōu)榉e極主動(dòng)的檢測(cè)與預(yù)防,在不影響網(wǎng)絡(luò)性能的前提下,可以實(shí)時(shí)保護(hù)系統(tǒng)免受來(lái)自于內(nèi)部的攻擊或外部的攻擊。
所謂入侵檢測(cè)(Intrusion Detection)是指對(duì)入侵行為的發(fā)覺(jué),它通過(guò)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)或計(jì)算機(jī)系統(tǒng)中的若干關(guān)鍵點(diǎn)收集信息并對(duì)其加以分析,從中發(fā)現(xiàn)網(wǎng)絡(luò)或系統(tǒng)中是否有違反安全策略的行為和被攻擊的跡象[1]。為了更好地對(duì)網(wǎng)絡(luò)入侵行為進(jìn)行有效地檢測(cè)與分析,自從1984年喬治敦大學(xué)的Dorothy Denning和SR/ICSL(SRI公司計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室)的PeterNeumann研究出一個(gè)實(shí)時(shí)入侵檢測(cè)系統(tǒng)模型,命名為IDES(入侵檢測(cè)專家系統(tǒng))以來(lái),相繼開(kāi)發(fā)出大量的入侵檢測(cè)系統(tǒng)(Intrusion Detection System,IDS),將入侵檢測(cè)的相關(guān)軟件與硬件設(shè)備進(jìn)行有效的結(jié)合,即防火墻之后的第二道安全屏障,是防火墻系統(tǒng)的有利補(bǔ)充。
通常根據(jù)IDS檢測(cè)對(duì)象及檢測(cè)方法的不同,可以細(xì)分為:基于主機(jī)的IDS、基于網(wǎng)絡(luò)的IDS、混合方式的IDS、基于誤用檢測(cè)的IDS和基于異常檢測(cè)的 IDS等。目前使用最廣泛的是由 Sourcefire公司MartinRoesch等人開(kāi)發(fā)的Snort入侵檢測(cè)系統(tǒng),它是一個(gè)免費(fèi)開(kāi)放源代碼的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS)。Snort以其發(fā)展速度、檢測(cè)功能、結(jié)構(gòu)簡(jiǎn)單、高效的代碼、多樣化的插件機(jī)制等優(yōu)勢(shì)受到業(yè)界人士及眾多學(xué)者的親昧。而且許多公司為了滿足不同網(wǎng)絡(luò)的安全需求,已經(jīng)在Snort系統(tǒng)的基礎(chǔ)之上進(jìn)行了二次開(kāi)發(fā),本文就是一個(gè)基于Snort系統(tǒng)的二次開(kāi)發(fā)應(yīng)用實(shí)例。
Snort系統(tǒng)主要有6個(gè)組件構(gòu)成,分別是:包嗅探器、解碼器、預(yù)處理器、檢測(cè)引擎、輸出插件和規(guī)則庫(kù)等。其系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 Snort系統(tǒng)結(jié)構(gòu)Fig.1 Snort system structure
Snort系統(tǒng)的基本工作過(guò)程是,利用包嗅探器捕獲網(wǎng)絡(luò)中的數(shù)據(jù)包將其送到解碼器,把特殊的協(xié)議元素轉(zhuǎn)換成特定的數(shù)據(jù)結(jié)構(gòu);經(jīng)過(guò)預(yù)處理器調(diào)用預(yù)處理函數(shù)完成數(shù)據(jù)包的預(yù)處理操作,改進(jìn)的Snort系統(tǒng)可以嵌入某些外部的預(yù)處理程序,提高系統(tǒng)的檢測(cè)功能;隨后將數(shù)據(jù)包傳遞到檢測(cè)引擎組件,與事先設(shè)置好的規(guī)則庫(kù)進(jìn)行模式配合,如果匹配成功,則說(shuō)明發(fā)生了入侵行為;及時(shí)將報(bào)警信息及審計(jì)日志提交輸出插件,利用輸出函數(shù)輸出相關(guān)信息。由此可見(jiàn),Snort是一個(gè)基于誤用檢測(cè)的NIDS,系統(tǒng)運(yùn)行成功與否的關(guān)鍵點(diǎn)就是規(guī)則庫(kù)的信息實(shí)時(shí)更新與擴(kuò)展機(jī)制問(wèn)題,這也是本文所要探討的問(wèn)題。
數(shù)據(jù)挖掘(Data Mining,DM)的定義有廣義與狹義之分[2],從廣義的觀點(diǎn)上講,數(shù)據(jù)挖掘是從大型數(shù)據(jù)庫(kù)(可能是不完全的、有噪聲的、不確定性的、各種存儲(chǔ)形式的)中,挖掘隱含在其中的人們事先不知道的對(duì)決策有用的知識(shí)的過(guò)程。從狹義的觀點(diǎn)上講,可以定義數(shù)據(jù)挖掘是從特定形式的數(shù)據(jù)集中提煉知識(shí)的過(guò)程。因此,數(shù)據(jù)挖掘的功能是從大量的數(shù)據(jù)信息中進(jìn)行高度智能化的分析與推測(cè),挖掘出潛在的知識(shí)與數(shù)據(jù)模型,預(yù)測(cè)未來(lái)對(duì)象的行為模式。
WenkeLee在1999年首次將數(shù)據(jù)挖掘技術(shù)引入到了網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中,可以在入侵檢測(cè)過(guò)程中實(shí)施智能化的信息分析以及動(dòng)態(tài)更新規(guī)則庫(kù),實(shí)現(xiàn)對(duì)于未知入侵行為的有效檢測(cè)。在數(shù)據(jù)挖掘算法中應(yīng)用廣泛的算法有:關(guān)聯(lián)分析算法,可以用于挖掘關(guān)聯(lián)模式,描述入侵行為并進(jìn)行異常檢測(cè)[3];序列分析算法,通過(guò)描述發(fā)現(xiàn)數(shù)據(jù)的先后關(guān)系,挖掘出序列模式[4];分類(lèi)分析算法,該算法可以用于構(gòu)造分類(lèi)器[5],分類(lèi)器經(jīng)過(guò)大量的入侵?jǐn)?shù)據(jù)集訓(xùn)練之后可以用于入侵檢測(cè);聚類(lèi)分析算法,可以用于構(gòu)造網(wǎng)絡(luò)正常行為模式或入侵行為模式[6],進(jìn)行異常檢測(cè)。本文著重介紹如何利用數(shù)據(jù)挖掘技術(shù)對(duì)捕獲信息進(jìn)行二次檢驗(yàn),以便減少系統(tǒng)漏報(bào)率,提升對(duì)新入侵行為的檢測(cè)效率。
通過(guò)上述分析可以得出如下的結(jié)論,Snort系統(tǒng)存在的最大問(wèn)題是,無(wú)法檢測(cè)到未知類(lèi)型的入侵行為,系統(tǒng)的檢測(cè)能力受到規(guī)則庫(kù)信息量大小的限制,因而造成系統(tǒng)出現(xiàn)極大的漏報(bào)率與誤報(bào)率,影響系統(tǒng)的整體性能。
針對(duì)已存在的Snort系統(tǒng)進(jìn)行多方面的改進(jìn),所提出的基于數(shù)據(jù)挖掘技術(shù)的Snort檢測(cè)系統(tǒng)模型如圖2所示,該系統(tǒng)的具體設(shè)計(jì)思想如下:
(1)利用嗅探器捕獲正在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包,并且嗅探IP網(wǎng)絡(luò)的流量,該系統(tǒng)利用libpcap捕包程序庫(kù)函數(shù)實(shí)現(xiàn)數(shù)據(jù)信息的采集,該庫(kù)函數(shù)的最大功能之一就是將網(wǎng)卡設(shè)置為混雜模式后,就可以直接從數(shù)據(jù)鏈路層捕獲數(shù)據(jù)包,或直接從網(wǎng)卡獲取數(shù)據(jù)包,為下一步的解碼操作提供了數(shù)據(jù)信息。
(2)將利用嗅探器獲取的數(shù)據(jù)包送入解碼器進(jìn)行數(shù)據(jù)解析,在解碼器中根據(jù) TCP/IP的層次,有針對(duì)性地對(duì)數(shù)據(jù)包進(jìn)行分析、解碼等操作,將進(jìn)行解析后的數(shù)據(jù)包信息傳入到預(yù)處理器。
圖2 基于數(shù)據(jù)挖掘的Snort系統(tǒng)模型結(jié)構(gòu)圖Fig.2 Based on data mining Snort system model
(3)在預(yù)處理器中,將采用不同網(wǎng)絡(luò)協(xié)議的原始數(shù)據(jù)包進(jìn)行預(yù)處理,可以實(shí)現(xiàn)應(yīng)用層協(xié)議的某些附加操作以及數(shù)據(jù)包再次被分析等功能,以便提高檢測(cè)引擎的處理速度。預(yù)處理器通常是由功能各異的多個(gè)模塊組成,在實(shí)際的應(yīng)用中,可以將其以插件的方式友好地集成到Snort系統(tǒng)中。本文所討論基于數(shù)據(jù)挖掘的Snort檢測(cè)系統(tǒng),將預(yù)處理后的數(shù)據(jù)包信息在送入異常檢測(cè)的同時(shí),存儲(chǔ)到信息待處理數(shù)據(jù)庫(kù),主要目的是為了與正常數(shù)據(jù)信息庫(kù)中的內(nèi)容配合進(jìn)行異常數(shù)據(jù)挖掘操作。
(4)異常檢測(cè)引擎
異常檢測(cè)的依據(jù)主要來(lái)源于正常行為模式規(guī)則庫(kù),該模式庫(kù)的信息是在正常數(shù)據(jù)庫(kù)的信息基礎(chǔ)上利用關(guān)聯(lián)數(shù)據(jù)挖掘算法、序列數(shù)據(jù)挖掘算法和聚類(lèi)數(shù)據(jù)挖掘算法進(jìn)行正常行為模式的數(shù)據(jù)挖掘,實(shí)時(shí)更新正常行為模式規(guī)則庫(kù)。因此,Snort檢測(cè)系統(tǒng)實(shí)施檢查之前,已知檢測(cè)規(guī)則全部設(shè)定好,可以用于檢測(cè)用戶所有的正常行為,但是對(duì)于正常行為模式規(guī)則庫(kù)中沒(méi)有的規(guī)則項(xiàng),在此無(wú)法檢測(cè)出來(lái),為了避免系統(tǒng)的漏報(bào)率,將未知入侵的數(shù)據(jù)傳輸?shù)秸`用檢測(cè)引擎模塊。
(5)誤用檢測(cè)引擎
誤用檢測(cè)引擎又稱Snort檢測(cè)引擎,它是該系統(tǒng)的設(shè)計(jì)核心,在進(jìn)行檢測(cè)過(guò)程中,將Snort檢測(cè)規(guī)則組織成鏈表形式,其中將每一個(gè)鏈表項(xiàng)細(xì)分為規(guī)則頭和規(guī)則選項(xiàng)。在進(jìn)行規(guī)則模式匹配時(shí),誤用檢測(cè)與Snort規(guī)則數(shù)據(jù)庫(kù)中的內(nèi)容進(jìn)行模式匹配,起初只檢測(cè)Snort規(guī)則數(shù)據(jù)庫(kù)中設(shè)定好的規(guī)則項(xiàng),如果檢測(cè)結(jié)果出現(xiàn)規(guī)則匹配,則將其檢測(cè)結(jié)果輸入已知入侵?jǐn)?shù)據(jù)庫(kù),入侵信息被記錄后,直接送入報(bào)警系統(tǒng),提示用戶;否則,沒(méi)有檢測(cè)到匹配的模式,系統(tǒng)并沒(méi)有將入侵信息進(jìn)行簡(jiǎn)單的丟棄,而是從信息待處理數(shù)據(jù)庫(kù)與正常數(shù)據(jù)信息庫(kù)中提取數(shù)據(jù),進(jìn)行異常數(shù)據(jù)信息挖掘,將數(shù)據(jù)挖掘的結(jié)果直接輸入到異常數(shù)據(jù)信息庫(kù),根據(jù)信息庫(kù)中的頻繁項(xiàng)集再次進(jìn)行數(shù)據(jù)信息挖掘,生成新的入侵規(guī)則,更新Snort規(guī)則數(shù)據(jù)庫(kù),然后再進(jìn)行誤用檢測(cè),與此同時(shí),將入侵檢測(cè)的新規(guī)則送入正常數(shù)據(jù)信息庫(kù),與該信息庫(kù)中的頻繁項(xiàng)集再次進(jìn)行正常行為的數(shù)據(jù)挖掘,從而更新正常行為規(guī)則模式庫(kù),為下次檢測(cè)做準(zhǔn)備,此時(shí)就實(shí)現(xiàn)了入侵信息的二次檢測(cè),可以大大減少漏報(bào)率與誤報(bào)率。
系統(tǒng)主要是在 Snort系統(tǒng)的基礎(chǔ)之上進(jìn)行改進(jìn)的,通過(guò)互聯(lián)網(wǎng)下載了一個(gè)最新版的 Snort入侵檢測(cè)系統(tǒng)Snort2.8.1,部署到Windows2003操作系統(tǒng)的平臺(tái)上,進(jìn)行系統(tǒng)的開(kāi)發(fā)與檢測(cè)運(yùn)行。在開(kāi)發(fā)的過(guò)程中用到的組件有:(1)WinPcap:網(wǎng)絡(luò)數(shù)據(jù)包的捕獲工具,其主要功能為Win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力,隨時(shí)監(jiān)聽(tīng)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)信息,以更高的效率捕獲數(shù)據(jù)包。(2)MySQL:本系統(tǒng)中用于存儲(chǔ)各種數(shù)據(jù)信息的數(shù)據(jù)庫(kù)采用MySQL數(shù)據(jù)庫(kù),連接技術(shù)采用ADODB技術(shù),從技術(shù)可行性和經(jīng)濟(jì)可行性上講,該數(shù)據(jù)庫(kù)都可以有效地支持快速、穩(wěn)定的分布式檢測(cè)操作。(3)Visual C++:該系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)語(yǔ)言與數(shù)據(jù)挖掘規(guī)則算法語(yǔ)言采用的是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 VC++,通過(guò)編輯信息更新函數(shù)、連接用戶函數(shù)、檢測(cè)入侵信息函數(shù)等實(shí)現(xiàn)Snort的二次入侵檢測(cè)操作。(4)ACID:主要是用來(lái)分析入侵?jǐn)?shù)據(jù)是已知規(guī)則還是未知規(guī)則,從而將正常數(shù)據(jù)與可疑數(shù)據(jù)分離,進(jìn)行數(shù)據(jù)信息的挖掘和生成新的規(guī)則信息,在實(shí)現(xiàn)過(guò)程中主要利用php語(yǔ)言所編輯的動(dòng)態(tài)網(wǎng)頁(yè)形式反映給用戶,實(shí)現(xiàn)人機(jī)互動(dòng)。(5)Apriori:該算法是數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則挖掘算法,本系統(tǒng)是在Apriori算法的基礎(chǔ)上進(jìn)行了必要的改進(jìn),使之實(shí)現(xiàn)對(duì)原始數(shù)據(jù)、正常數(shù)據(jù)、異常數(shù)據(jù)等信息的規(guī)則挖掘。(6)Apache:該系統(tǒng)服務(wù)器軟件采用的是基于Web的Apache,它以其簡(jiǎn)單、快速、兼容、穩(wěn)定、安全等特點(diǎn)而著稱。
系統(tǒng)是在構(gòu)建了一個(gè)C/S模式的局域網(wǎng)中進(jìn)行結(jié)果檢測(cè),為了能夠更好的說(shuō)明系統(tǒng)的檢測(cè)效果,采取了對(duì)比的方式進(jìn)行測(cè)試。先用普通的Snort系統(tǒng)進(jìn)行檢測(cè),并記錄相應(yīng)的檢測(cè)結(jié)果,然后安裝并配置基于數(shù)據(jù)挖掘技術(shù)的Snort檢測(cè)系統(tǒng),同樣記錄檢測(cè)結(jié)果。通過(guò)數(shù)據(jù)的逐一對(duì)比,不難發(fā)現(xiàn),系統(tǒng)檢測(cè)的總耗時(shí)有所減少,檢測(cè)的正確率卻大幅度地提高,并且系統(tǒng)的漏報(bào)率也有明顯地下降。在實(shí)驗(yàn)中還有一個(gè)更有意義的發(fā)現(xiàn),隨著檢測(cè)數(shù)據(jù)量的增大,上述的檢測(cè)結(jié)果更為明顯。
本文是在已有檢測(cè)系統(tǒng)的基礎(chǔ)上,通過(guò)應(yīng)用數(shù)據(jù)挖掘技術(shù),增加了新功能,實(shí)現(xiàn)了實(shí)時(shí)更新規(guī)則信息和對(duì)未知數(shù)據(jù)的二次檢測(cè),從而降低了系統(tǒng)的漏報(bào)率與誤報(bào)率。但是,在檢測(cè)效率及進(jìn)一步減少漏報(bào)率與誤報(bào)率的數(shù)據(jù)挖掘算法上還有待于改進(jìn)。
[1]唐正軍,李建華.入侵檢測(cè)技術(shù)[M].北京:清華大學(xué)出版社,2004.
[2]毛國(guó)軍,段立娟,王實(shí).數(shù)據(jù)挖掘原理與算法[M].北京:清華大學(xué)出版社,2005.
[3]陳耿,朱玉全,孫志輝.一種基于異常檢測(cè)的關(guān)聯(lián)模式挖掘模型[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(12):158-198.
[4]宋世杰,胡化平,胡笑蕾.數(shù)據(jù)挖掘技術(shù)在網(wǎng)絡(luò)型異常入侵檢測(cè)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2003,23(12):20-23.
[5]宋世杰,胡化平,胡笑蕾.數(shù)據(jù)挖掘技術(shù)在網(wǎng)絡(luò)型異常入侵檢測(cè)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2003,30(16):126-127.
[6]張博,李偉華,布日古德.數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則在入侵檢測(cè)系統(tǒng)中的應(yīng)用[J]. 航空計(jì)算技術(shù),2004,34(4):124-127.
[7]孫振龍,宋廣軍,李曉曄,等.基于數(shù)據(jù)挖掘技術(shù)的Snort入侵檢測(cè)系統(tǒng)的研究[J].微計(jì)算機(jī)信息,2006,33:16-22.
[8]崔冬霞.基于數(shù)據(jù)挖掘技術(shù)的分布式網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)[D].西安交通大學(xué)碩士研究生學(xué)位論文,2005.
[9]王艷春,郭小利,陳鴻,等.基于數(shù)據(jù)挖掘算法的教學(xué)評(píng)測(cè)系統(tǒng)研究[J].長(zhǎng)春理工大學(xué)學(xué)報(bào),2006,29(4):73-76.
長(zhǎng)春理工大學(xué)學(xué)報(bào)(自然科學(xué)版)2010年1期