王禹程
(陜西工業(yè)職業(yè)技術(shù)學(xué)院陜西咸陽712000)
伴隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和普及,網(wǎng)絡(luò)通信日益成為人們?nèi)粘I钪斜夭豢缮俚牟糠帧?shù)據(jù)通信、在線視頻、移動支付等均成為了人們生活中重要的習(xí)慣。人們在享受互聯(lián)網(wǎng)帶來便利的同時,也面臨著巨大的安全隱患。Web攻擊嚴重破壞了互聯(lián)網(wǎng)通信安全,網(wǎng)絡(luò)黑客可以隨意竊取用戶的個人信息、盜取銀行卡密碼、使網(wǎng)絡(luò)癱瘓或崩潰,嚴重侵犯了用戶的權(quán)益。因此,研究切實有效的可以抵抗Web攻擊的計算機安全技術(shù),已成為一個迫切的需求[1-2]。
目前,計算機安全技術(shù)研究種類繁多,常用的安全技術(shù)主要包括有計算機安全助手、網(wǎng)絡(luò)防火墻技術(shù)、用戶數(shù)據(jù)安全加密技術(shù)等。這些傳統(tǒng)的安全技術(shù)在較大程度上可以有效抵抗常規(guī)的Web攻擊,保護用戶的數(shù)據(jù)安全。但現(xiàn)有的安全技術(shù)也存在著一定的不足,常用的安全技術(shù)主要針對用戶端數(shù)據(jù)的加密與保護,是被動式的構(gòu)建防御。而基于Web攻擊的異常入侵是屬于動態(tài)的入侵行為,入侵時間有攻擊類型均具有不確定性。這就需要研究新型入侵檢測技術(shù),可以根據(jù)對網(wǎng)絡(luò)數(shù)據(jù)和用戶行為模式的分析,主動的對各種Web攻擊入侵做出響應(yīng)[3-4]。
入侵檢測作為網(wǎng)絡(luò)安全的主要技術(shù),受到了研究者的廣泛關(guān)注。目前主要的方法包括神經(jīng)網(wǎng)絡(luò)[5]、遺傳算法[6]、特征提取[7]、聚類分析等[8-10]。其中,基于聚類分析的方法又可分為k-means聚類算法、層次聚類算法、SOM聚類算法和FCM聚類算法4種[11]。雖然異常入侵檢測算法種類繁多,但均面臨著檢測準確度較低和復(fù)雜度較高的問題。
設(shè)計一個合理有效的入侵檢測系統(tǒng),首先要明確其主要需求。作為一個成功的入侵檢測系統(tǒng)要滿足三個特點,分別是可視化、易操作和高檢測率。首先,通過入侵檢測系統(tǒng),系統(tǒng)管理員可以實時檢查系統(tǒng)的狀態(tài),查詢各項系統(tǒng)指標包括程序、文件等。其次,系統(tǒng)設(shè)計應(yīng)考慮到不同的用戶層次,必須操作簡單,非專業(yè)人員可以輕松的管理和配置,更具有應(yīng)用價值。最后,系統(tǒng)對于各種類型的網(wǎng)絡(luò)入侵均可進行良好的檢測,且在發(fā)現(xiàn)網(wǎng)絡(luò)入侵之后可以及時響應(yīng),自動執(zhí)行向管理員報警并切斷網(wǎng)絡(luò)等處理。其具體設(shè)計需求包括:
1)統(tǒng)計用戶行為活動,分析計算機和網(wǎng)絡(luò)交互數(shù)據(jù);
2)鑒別已知的異常入侵類型,并進行有效響應(yīng);
3)對可疑的行為模式進行記錄和分析;
4)對計算機主要程序和數(shù)據(jù)文件的完整性進行評估。
如圖1所示,本文所設(shè)計的入侵檢測系統(tǒng)主要可以分為嗅探器、解碼器和數(shù)據(jù)預(yù)處理等8個模塊。其中,嗅探器和解碼器主要功能是實現(xiàn)抓包數(shù)據(jù)采集與解碼分析。數(shù)據(jù)預(yù)處理與異常分析器是將數(shù)據(jù)格式進行處理,利用檢測方法將已知的入侵行為與規(guī)則庫進行匹配并報警。對于未知網(wǎng)絡(luò)入侵行為則需要進行聚類分析,從而進行準確的入侵檢測。
圖1 入侵檢測系統(tǒng)原理圖
數(shù)據(jù)抓包收集模塊,如圖2所示。抓包模塊采用Socket編程,通過對底層進行捕包和分析,實現(xiàn)信息提取。并通過自身設(shè)定好的規(guī)則進行包的過濾,例如不接受規(guī)定目的ip所發(fā)送的包,限定端口不接受包,系統(tǒng)可預(yù)先設(shè)置敏感詞匯對包進行預(yù)過濾處理等。
聚類算法的基本思想就是分類,將具有同一類屬性或相似屬性的數(shù)據(jù)對象分配到同一個類別中,盡可能保證不同類別中數(shù)據(jù)具有較低的相關(guān)性。一般聚類依據(jù)的準則可以是數(shù)據(jù)間的距離或者相關(guān)性大小等,根據(jù)一定的準則將數(shù)據(jù)劃分成若干個相似性較低的類。
目前文獻研究中關(guān)于聚類算法的研究種類繁多,包括基于各種方法或不同聚類準則的聚類算法。同時,還可能結(jié)合優(yōu)化算法進行聚類分析。其中,比較經(jīng)典的聚類算法研究包括基于K-means的聚類算法[12-13]以及其改進算法和基于層次方法的聚類算法[14]。另外,聚類算法結(jié)合神經(jīng)網(wǎng)絡(luò)模型、機器學(xué)習(xí)等綜合聚類方法也開始得到了更多的關(guān)注[15]。
聚類算法研究在最近十幾年得到了廣泛的發(fā)展,充分應(yīng)用于各個領(lǐng)域。各種聚類算法被提出和改進,其在機器學(xué)習(xí)、數(shù)據(jù)挖掘等領(lǐng)域被充分的研究。將聚類算法應(yīng)用于Web攻擊類型檢測成為一種趨勢。利用聚類算法準確的分類識別性能,可以對不同的異常入侵類型進行檢測,能取得較好的檢測準確率。
目前,一般聚類的研究均是將數(shù)據(jù)簡單分類的思想,每一個數(shù)據(jù)至多屬于一個類別?;谀:垲怺16]思想的入侵檢測算法使用隸屬函數(shù)確定每一個數(shù)據(jù)與各個類別數(shù)據(jù)的相似程度來進行數(shù)據(jù)分類。眾多基于模糊聚類的入侵檢測算法已被廣泛的研究,例如比較著名的基于FCM模糊聚類的入侵檢測算法等。
圖2 數(shù)據(jù)抓包模塊界面
如表1所示,不同聚類算法的入侵檢測正確識別度對比,采用不同聚類0算法的檢測精度相差較大。綜合考慮到算法復(fù)雜度及檢測準確度,本文首先對傳統(tǒng)k-means聚類算法進行分析。
表1 不同聚類算法檢測精度對比
K-means是劃分方法中較為經(jīng)典的聚類算法之一。K-means具有效率高、聚類準確度高的特點,故被廣泛應(yīng)用于大規(guī)模的數(shù)據(jù)聚類問題。目前,基于K-means聚類的入侵檢測算法的改進算法也不斷被提出。
K-means聚類算法是一種迭代聚類算法,其主要的算法思想是利用隨機生成的k個類或子集的平均值或者中心點作為每個集合的標準,將數(shù)據(jù)空間分割成k個子空間。然后分別比較剩余數(shù)據(jù)和這k個中心點的距離,將剩余的數(shù)據(jù)對象分配給距離最近的類。并根據(jù)分配結(jié)果更新每個數(shù)據(jù)集合的平均值,重復(fù)上述分配過程直至所有數(shù)據(jù)均不再變動。K-means聚類算法通常使用均方誤差作為目標函數(shù),判斷聚類算法迭代過程是否結(jié)束:
其中,E表示的是多個類數(shù)據(jù)對象的均方誤差的總合。其表征的是子集中元素的緊湊程度,E越小表示子集中元素相似性越大;反之表示子集中元素相似性較差,則表示聚類算法性能較差。mi是子集ci的平均值[12],表示每個子集的中心位置。一般而言,不同子集的中心位置差距越大,表示聚類算法性能越好。通常,數(shù)據(jù)間距離度量使用歐式距離計算。具體算法步驟如下:
K-means聚類算法
輸入:包含n個對象的數(shù)據(jù)集合;
子集的數(shù)目k;
1)初始化子集平均值,將隨機選取的k個數(shù)據(jù)分別作為各個子集的中心;
2)計算目標函數(shù)值;
3)根據(jù)子集中數(shù)據(jù)的平均值,更新每個數(shù)據(jù)所屬的類別;
4)根據(jù)更新的數(shù)據(jù)類別,更新子集的平均值;
5)更新目標函數(shù)值;
6)判斷目標函數(shù)值是否變化,若是轉(zhuǎn)到6),否則迭代結(jié)束。
輸出:k個子集,使平方誤差準則最小。
KNN是通過測量不同特征值之間的距離進行分類。與K-means聚類方法不同,KNN聚類算法的思路是選取一個樣本的k個相似數(shù)據(jù)對象來判斷該數(shù)據(jù)對象的類型。在KNN算法中,選取的相鄰對象均是經(jīng)過正確分類的對象。KNN聚類算法使用臨近數(shù)據(jù)去判斷所屬類別,k值的選取影響聚類的準確度。
在KNN聚類算法中,是選取距離數(shù)據(jù)最近的k數(shù)據(jù)對象來判斷該數(shù)據(jù)的類別。首先需要選擇出距離最近的數(shù)據(jù)點,通常判斷距離遠近使用歐氏距離或曼哈頓距離,分別如式(2)和(3)所示:
不同于K-means算法,KNN聚類不是根據(jù)該數(shù)據(jù)對象和某一數(shù)據(jù)的距離判斷所屬類別。而是根據(jù)相鄰k個數(shù)據(jù)中大多數(shù)數(shù)據(jù)所屬類別進行判斷,因此KNN聚類算法準確性更高。
KNN聚類算法的具體步驟總結(jié)如下:
KNN聚類算法:
輸入:明確類別的數(shù)據(jù)訓(xùn)練集;
相鄰的數(shù)據(jù)數(shù)目k;
1)計算數(shù)據(jù)對象與訓(xùn)練集元素之間的距離;
2)選取距離測試數(shù)據(jù)最近的k個訓(xùn)練數(shù)據(jù);
3)判斷選取的k個點所在類別,并統(tǒng)計各個類別出現(xiàn)的次數(shù);
4)返回出現(xiàn)次數(shù)最高的類別作為測試數(shù)據(jù)的預(yù)測分類。
輸出:樣本的類別。
K-means在一定程度上可以提供相對較高的入侵檢測精度,但其實現(xiàn)復(fù)雜度也較高,其時間復(fù)雜度為O(n*k*t)。為了抵抗Web攻擊,入侵檢測算法精度仍需要進一步提高,且時間復(fù)雜度需要降低。為了滿足實際需求,文中提出基于KNN聚類的入侵檢測算法,其時間復(fù)雜度僅有O(n),大幅提高了實用性。
為了驗證算法的有效性,本節(jié)將對所提出的基于KNN聚類的入侵檢測算法和基于K-means聚類檢測算法進行對比。攻擊類型分別為參數(shù)篡改、SQL注水、路徑遍歷和緩沖區(qū)溢出四種,檢測結(jié)果如圖3和圖4所示。
圖3 K-means聚類算法入侵檢測正確率
圖4 KNN聚類算法入侵檢測正確率
由圖3和圖4可知,基于KNN聚類算法入侵檢測算法的檢測率高達98.4%。相對于K-means聚類算法要高出12%,且對各種類型的攻擊適應(yīng)性均較好,算法性能優(yōu)越。
為了更進一步驗證所提算法對各種攻擊類型的檢測性能,表2和圖3分別統(tǒng)計了所提算法對不同類型Web攻擊的檢測率。從表中可看出,對于常見的4種Web攻擊類型所提的基于KNN聚類的入侵檢測算法檢測率可達到87%以上。其對于不同類型的Web攻擊,均可以較好的進行檢測。
文中針對當前抵抗Web攻擊的安全需求,對異常入侵檢測算法進行研究。首先,文中設(shè)計了異常入侵檢測系統(tǒng),利用數(shù)據(jù)挖掘原理和數(shù)據(jù)抓包處理建立數(shù)據(jù)庫,為異常入侵檢測提供數(shù)據(jù)支持。其次,分析研究了聚類算法在入侵檢測中的應(yīng)用。通過對比幾種常見聚類算法的入侵檢測率,分析了現(xiàn)有基于聚類算法的異常入侵檢測算法存在的不足。并在此基礎(chǔ)上,提出基于KNN聚類的異常入侵檢測算法。相對于傳統(tǒng)的基于K-means聚類的入侵檢測算法,其時間復(fù)雜度更低,更具實時性。仿真結(jié)果表明,本文所提的異常入侵檢測算法檢測正確率相比于傳統(tǒng)方法高12%,且對于不同類型的Web攻擊檢測準確率高達87%以上。具有較好的普適性,可應(yīng)對不同類型的Web攻擊,實現(xiàn)較為精準的異常入侵檢測。
表2 不同攻擊類型檢測率對比
圖5 不同攻擊類型檢測率對比圖