[摘要] 網(wǎng)絡(luò)入侵檢測系統(tǒng)(IDS)是保障網(wǎng)絡(luò)安全的有效手段,但目前的入侵檢測系統(tǒng)仍不能有效識別新型攻擊。應(yīng)用人工免疫的原理,設(shè)計一種新的基于免疫的入侵檢測系統(tǒng)。針對目前免疫算法的不足,設(shè)計了一個K分字符串匹配算法,使檢測效率大大提高。實驗結(jié)果表明,該系統(tǒng)在識別新型攻擊上具有較好的性能。
[關(guān)鍵詞] 人工免疫 編輯距離 網(wǎng)絡(luò)安全 入侵檢測
一、引言
入侵檢測是網(wǎng)絡(luò)安全的重要研究領(lǐng)域,主要有誤用檢測(misuse detection)和異常檢測(anomaly detection)兩類技術(shù)。其中,誤用檢測是根據(jù)已知的攻擊特征建立一個特征庫,然后將網(wǎng)絡(luò)采集的數(shù)據(jù)與特征庫中特征進行一一匹配,若存在匹配的特征,則表明其是一個入侵行為。而異常檢測則是將用戶正常的行為特征存儲在特征數(shù)據(jù)庫中,然后將用戶當前行為與特征庫中的特征進行比較,若偏離達到了一定程度,則說明發(fā)生了異常。這兩種技術(shù)各有優(yōu)缺點,誤用檢測能夠準確檢測到已知攻擊事例,但對新型攻擊行為卻無能為力;異常檢測可以檢測到新型攻擊,其誤檢率卻比較高,且不能描述入侵行為的類別。
免疫系統(tǒng)是生物體信息處理系統(tǒng)的重要組成部分,肩負著保護機體安全的重任。它實質(zhì)上是一個大規(guī)模的分布式信息處理系統(tǒng),具有識別自我與非我、學習、記憶和模式識別等重要處理機制。免疫系統(tǒng)由許多執(zhí)行免疫功能的器官、細胞、分子等組成,能將體內(nèi)的細胞或分子區(qū)分為屬于自體的種類和外部來源的非自體種類。
為了使入侵檢測系統(tǒng)能檢測到新型攻擊,人們進行了大量的研究工作。而入侵檢測系統(tǒng)與免疫系統(tǒng)有許多相似之處,它們都肩負著維護自身安全的使命,同樣要對新的信息辨別是“自我”還是“非我”。因此模擬免疫系統(tǒng)特征,將人工免疫技術(shù)應(yīng)用到入侵檢測系統(tǒng),是最近比較熱點的研究方向。
二、人工免疫的生物學原理
免疫系統(tǒng)是一個極其復雜且協(xié)調(diào)周密的系統(tǒng),它由具有免疫功能的器官、組織、細胞、免疫效應(yīng)分子和有關(guān)的基因組成。淋巴細胞是免疫系統(tǒng)中最重要的一種細胞,它作為獨立的“檢測器”分布在體內(nèi)淋巴系統(tǒng)中,主要由B細胞和T細胞組成。T細胞在胸腺中發(fā)育成熟,在免疫過程中起著協(xié)調(diào)的作用;B細胞則在骨髓中發(fā)育成熟,通過其表面的抗體識別特定的抗原,并與抗原結(jié)合將其消滅。
免疫系統(tǒng)的主要功能有:免疫防御、免疫自穩(wěn)與免疫監(jiān)視。其中免疫防御主要是抵抗病原體的入侵,免疫自穩(wěn)維護內(nèi)環(huán)境的相對穩(wěn)定,免疫監(jiān)視則消滅突變細胞。免疫系統(tǒng)的核心是免疫應(yīng)答。在識別過程中,免疫系統(tǒng)對自身的抗原不產(chǎn)生免疫應(yīng)答,對外來的抗原則應(yīng)答并將其清除。克隆選擇和否定選擇也是抗體生成和深化過程中的兩個重要過程。當抗原進入個體時,帶有該抗原受體的淋巴細胞搜尋并結(jié)合抗原,激發(fā)增殖和分化,產(chǎn)生抗原特異細胞的克隆。否定選擇則是機體內(nèi)先產(chǎn)生大量隨機抗體,把對“自身”抗原特質(zhì)產(chǎn)生破壞的清除出去,以免對自身造成傷害,剩余的抗體可以檢測外來物質(zhì)。另外,免疫系統(tǒng)還具有免疫記憶功能,免疫系統(tǒng)將與侵入抗原反應(yīng)的抗體作為記憶細胞保留下來,當有同類抗原再次侵入時,相應(yīng)的記憶細胞會被激活,并產(chǎn)生大量的抗體,從面縮短了免疫反應(yīng)的時間。
三、基于人工免疫的入侵檢測模型
人工免疫系統(tǒng)是生物免疫系統(tǒng)的模擬,它具有抗噪、自主學習、自組織等特性,能夠很清晰地表達學習的知識,同時結(jié)合了分類器、人工神經(jīng)網(wǎng)絡(luò)、機器學習等系統(tǒng)的優(yōu)點。
1.人工免疫算法流程
我們將入侵檢測系統(tǒng)模擬成生物免疫系統(tǒng),把進入計算機系統(tǒng)的數(shù)據(jù)視為抗原。根據(jù)免疫系統(tǒng)的理論,為了檢測出抗原是“自我”還是“非我”,需要系統(tǒng)生成大量的抗體。進入計算機系統(tǒng)的數(shù)據(jù)都是二進制字符串,所以采用固定長度的字符串表示抗體。我們設(shè)計了兩種產(chǎn)生抗體的方法,一種在實時檢測過程中生成,另一種為隨機產(chǎn)生。其中隨機產(chǎn)生抗體的過程即為接種疫苗的過程。其人工免疫算法流程如圖1所示。
從流程圖中可以看出,抗體隨機產(chǎn)生后,先要進行否定選擇,把對自身產(chǎn)生傷害的抗體清除。滿足條件的抗體加入疫苗模式集中。檢測過程中將疫苗庫中的疫苗與實時抗原結(jié)合,若有匹配的抗原則報警。如果此警報為一攻擊行為,則將此抗體加入抗體庫中;反之則從疫苗庫中刪除。
2.入侵檢測系統(tǒng)模型
目前已經(jīng)有很多研究人員將免疫理論應(yīng)用到入侵檢測系統(tǒng)當中,但很多只是考慮網(wǎng)絡(luò)數(shù)據(jù)包的包頭數(shù)據(jù),丟棄了包含重要信息的數(shù)據(jù)包負載部分,從而造成很高的漏報率。為此,我們使用tcpdump截獲網(wǎng)絡(luò)數(shù)據(jù)包,對整個數(shù)據(jù)包進行匹配檢查。先將系統(tǒng)在正常網(wǎng)絡(luò)流量下運行一段時間,對檢測系統(tǒng)進行訓練。訓練時期截獲的數(shù)據(jù)包均為正常數(shù)據(jù),我們把它存入“自身”數(shù)據(jù)庫中。入侵檢測系統(tǒng)的模型如圖2所示。
入侵檢測模型的左邊部分是訓練過程。其中訓練數(shù)據(jù)是不含攻擊行為的學習數(shù)據(jù),此數(shù)據(jù)全部存入“自身”庫中。經(jīng)過一段時間正常數(shù)據(jù)的學習之后,就可以通過與庫中的數(shù)據(jù)進行比較生成疫苗。
抗體庫在檢測過程中不斷地更新完善,使系統(tǒng)能檢測各類新型攻擊。自身產(chǎn)生抗體的方法如圖1中所述,此方法模擬免疫系統(tǒng)的否定選擇,對新型攻擊的檢測有一定的效果。另一種產(chǎn)生抗體的方法是,將網(wǎng)絡(luò)上截獲的數(shù)據(jù)包與“自身”庫中的數(shù)據(jù)比較,跟庫中數(shù)據(jù)不匹配的則認為是異已抗原,將其加入到疫苗庫中。疫苗庫中的數(shù)據(jù)都是與自身正常數(shù)據(jù)相偏離的,有可能是新型攻擊的特征數(shù)據(jù)。
系統(tǒng)模型的右邊部分是實時檢測模塊。首先將網(wǎng)絡(luò)實時數(shù)據(jù)與疫苗庫中的數(shù)據(jù)進行比較,若兩數(shù)據(jù)相似,則初步判斷為入侵,并向管理員報警。此警報若為誤報,則說明與之匹配的疫苗不合格,將其從疫苗庫中清除。警報若被確認為攻擊行為,則接種此疫苗,將其加入抗體庫。抗體庫中的數(shù)據(jù)均為已確認的攻擊數(shù)據(jù),與之匹配的數(shù)據(jù)可判斷為入侵。
該系統(tǒng)是自適應(yīng)入侵檢測系統(tǒng)。系統(tǒng)在運行過程中,對抗體庫不斷地接種疫苗,使系統(tǒng)對各種已知攻擊和新型攻擊都具有免疫能力。
四、K分字符串相似匹配算法
人工免疫系統(tǒng)中抗體與抗原的結(jié)合表現(xiàn)為字符串的匹配,但這種匹配跟一般的字符串匹配不同。抗原與抗體中的字符相似個數(shù)超過一定數(shù)目,我們就可以認為它與抗體相匹配,所以它并不是完全匹配。有很多人工免疫系統(tǒng)使用KMP算法進行匹配,其具有匹配指針不需回朔的優(yōu)點,但其對串的匹配是精確匹配,在近似匹配方面效果不是很好。
由于系統(tǒng)頻繁進行字符串的匹配操作,所以匹配算法的效率對系統(tǒng)至關(guān)重要。本文通過計算兩字符串的編輯距離確定其相似度。當編輯距離小于設(shè)定的閾值,則認為兩字符串是相似的。兩字符串S1與S2的編輯距離定義為:將S2轉(zhuǎn)換為S1所需最小數(shù)目的單元操作,其中單元操作包括字符的插入、刪除、替換,及相鄰字符的調(diào)換等。例如,字符串“allover”與“all over”之間很相似,只要進行一次刪除空格的操作就完全相同,所以它們間的編輯的距離為1。
由編輯距離的定義可知,字符串間的編輯距離有兩個基本性質(zhì):
distance(‘’,‘’) = 0(1)
distance(‘’,S) = |S| 其中|S|為字符串S的長度(2)
對于任意字符串S1和S2,假設(shè)|S1|=m、|S2|=n,我們使用矩陣(二維數(shù)組)M[m,n]計算它們的編輯距離。其中M[i,j] = distance(S1[1..i],S2[1..j]),因此
M[0,0]=0,
M[i,0] =i, i=1..|S1|
M[0,j] =j, j=1..|S2|
編輯距離的C語言算法描述為:
distance(S1,S2)
{
for(int i=1;i<=m;i++) {
M[i,0]=i;
for(int j=1;j<=n;j++){
if(i==1)
M[0,j]=j;
M[i,j]=min(min(M[i-1,j]+1,M[i,j-1]+1),M[i-1,j-1] +(S1[i]==S2[j])?0:1);
}
}
return M[m,n];
}
算法的時間復雜度為O(m*n),當|S1|=|S2|時,復雜度為O(n2)。當n的值比較大時,計算的開銷也非常大。為了提高檢測系統(tǒng)的性能,我們把需匹配的抗體與抗原都分割為K個子串。按順序分別對這K個子串進行匹配,串S1、S2間新的距離函數(shù)定義為:
字符串分割處理后匹配的速度大為提高,還保留了更多的字符順序信息,使得近似匹配的結(jié)果更為科學。
五、實驗及結(jié)果
我們實驗的數(shù)據(jù)選自KDD CUP 1999有關(guān)網(wǎng)絡(luò)入侵的數(shù)據(jù)集,該數(shù)據(jù)集有近500萬條活動事件記錄數(shù)據(jù)對象,每條數(shù)據(jù)在連接記錄上標記為正常或一種特定類型的攻擊(總共37種不同攻擊類型)。共有43個屬性特征用來描述這些網(wǎng)絡(luò)連接事件,包括連接時間、協(xié)議類型、傳輸字節(jié)數(shù)、文件創(chuàng)建和失敗登錄次數(shù)等屬性。
首先將入侵檢測系統(tǒng)在安全網(wǎng)絡(luò)流量中學習,使“自身”庫發(fā)育完善。系統(tǒng)在訓練過程中將逐步產(chǎn)生抗體。實驗對每一種攻擊類型進行試驗,其中每種類型使用10條記錄試驗,實驗結(jié)果如圖3所示。
檢測系統(tǒng)在運行過程中不斷地自我完善,對新型攻擊的檢測準確也在不斷地提高。通過調(diào)整字符串相似的閾值還可以提高檢測率,但誤報率也會相應(yīng)地提高。
六、結(jié)論
基于人工免疫的入侵檢測系統(tǒng)具有很好的準確性、完整性、可擴展性、可適應(yīng)性和自身的健壯性,具備了免疫系統(tǒng)各種優(yōu)點,是檢測新型攻擊很好的方法。本文提出的基于人工免疫的檢測系統(tǒng)模型和字符串近似匹配算法,解決了檢測新型攻擊的一些難題。實驗結(jié)果表明,其具有較高的檢測率和較好的運行效率。
參考文獻:
[1]焦李成杜海峰:人工免疫系統(tǒng)進展與展望.電子學報, Vol.31 No.10 Oct.2003
[2]宮新保周希朗:一種新型的網(wǎng)絡(luò)安全技術(shù)——人工免疫系統(tǒng).電氣電子教學學報,Vol.25No.3 Jun.2003
[3]楊向榮沈釣毅劉強:基于人工免疫原理的NIDS系統(tǒng)和有關(guān)算法設(shè)計.小型微型計算機系統(tǒng),Vol.25 No.3 Mar.2004
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。