楊姣
(德州職業(yè)技術(shù)學(xué)院 山東省德州市 251500)
k 近鄰算法(k-Nearest Neighbor,KNN)的算法思路是如果某樣本能夠被劃分在一個(gè)特征空間中,如果該特征空間中的k 個(gè)相鄰樣本屬于某一特定類(lèi)別,那么該樣本也屬于此類(lèi)別[1]。而且KNN算法在進(jìn)行決策時(shí)會(huì)確定當(dāng)前樣本的類(lèi)別,推測(cè)當(dāng)前樣本的類(lèi)別的方法是根據(jù)當(dāng)前樣本與K 個(gè)數(shù)據(jù)點(diǎn)之間的歐氏距離大小來(lái)進(jìn)行判定的。
KNN 算法思路是比較容易實(shí)現(xiàn)的,首先,在每一個(gè)數(shù)據(jù)點(diǎn)上計(jì)算未知實(shí)例到已知實(shí)例的歐氏距離,然后選取適當(dāng)?shù)膮?shù)k,通常k 的值比較小,不超過(guò)20。最后,對(duì)測(cè)試的未知實(shí)例進(jìn)行分類(lèi),分類(lèi)的評(píng)定規(guī)則主要是根據(jù)多數(shù)表決的結(jié)果將未知實(shí)例分類(lèi)到樣本最多的類(lèi)別。舉例說(shuō)明:在一個(gè)有三角和方框的測(cè)試樣本中,當(dāng)K=3 時(shí)距離未知數(shù)據(jù)最近的為三角所以判定為三角,當(dāng)K=5 時(shí)距離最近的為方框所以被判定為方框。
KNN 算法能有效地進(jìn)行二維空間的分類(lèi),在多維空間中分類(lèi)精度也較高。KNN 算法的優(yōu)點(diǎn)是實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,對(duì)異常數(shù)據(jù)流不是很敏感,可以對(duì)一些交叉樣本進(jìn)行正確分類(lèi)[2]。但是由于KNN 算法是通過(guò)計(jì)算歐氏距離的大小來(lái)進(jìn)行決策的,這也導(dǎo)致當(dāng)樣本數(shù)據(jù)量變大時(shí)算法的性能會(huì)受到影響。
網(wǎng)絡(luò)數(shù)據(jù)流異常檢測(cè)即在數(shù)據(jù)流發(fā)生異常時(shí)可以立即檢測(cè)出來(lái)的一種實(shí)時(shí)監(jiān)測(cè)技術(shù)。用戶(hù)實(shí)時(shí)的檢測(cè)網(wǎng)絡(luò)的安全情況,一旦發(fā)生網(wǎng)絡(luò)入侵或者是惡意攻擊行為能夠及時(shí)的采取相關(guān)的措施。因此,數(shù)據(jù)流異常檢測(cè)成為了維護(hù)和維持網(wǎng)絡(luò)安全的主要技術(shù),受到了國(guó)內(nèi)外眾多機(jī)構(gòu)的關(guān)注,是一直以來(lái)研究的熱點(diǎn)問(wèn)題。雖然檢測(cè)的方法、種類(lèi)各式各樣,但是仍存在很多弊端,所以如何準(zhǔn)確實(shí)時(shí)的發(fā)現(xiàn)網(wǎng)絡(luò)異常行為仍是一大難題。在科技飛速發(fā)展,大量持續(xù)變化的數(shù)據(jù)源源不斷產(chǎn)生的今天,將機(jī)器學(xué)習(xí)算法用于網(wǎng)絡(luò)異常檢測(cè)成為目前一個(gè)重要的研究方向。
通過(guò)高斯函數(shù)自適應(yīng)選取KNN 算法的k 值,解決了樣本空間分布不均的問(wèn)題。常規(guī)KNN 分類(lèi)算法對(duì)每個(gè)屬性賦予相同的權(quán)值。通過(guò)對(duì)屬性重要性的判別,利用隨機(jī)森林算法確定屬性的重要性,并按其重要度進(jìn)行排序。通過(guò)bootstrap 隨機(jī)重采樣技術(shù)和隨機(jī)節(jié)點(diǎn)分割技術(shù),在計(jì)算屬性重要性時(shí)構(gòu)建多個(gè)決策樹(shù),并對(duì)最終的分類(lèi)結(jié)果進(jìn)行投票。在此基礎(chǔ)上,引入了基于KNN 的組合加權(quán)(CWKNN)算法,提高了異常檢測(cè)的速度,并在此基礎(chǔ)上引入了KNN算法。若要對(duì)采樣距離進(jìn)行加權(quán),可利用高斯函數(shù)對(duì)不同距離采樣權(quán)進(jìn)行優(yōu)化。若訓(xùn)練樣本與測(cè)試樣本間的距離較大時(shí),這個(gè)距離值的權(quán)重就會(huì)減小。即兩個(gè)樣本的歐氏距離更小,則可以分配較多的權(quán)值,而樣本間的歐氏距離較大時(shí),其分配的權(quán)值相對(duì)較小[3]。圖示1 為改進(jìn)算法的異常檢測(cè)流程圖。
圖1:基于KNN 的網(wǎng)絡(luò)異常檢測(cè)流程
在KDDCUP99 數(shù)據(jù)集中收集數(shù)據(jù),然后以MATLAB 為工具進(jìn)行數(shù)據(jù)分析,數(shù)據(jù)集選取已知異常與正常具體比例的數(shù)據(jù)集組成,并將其分為3組。其中利用KNN算法進(jìn)行分類(lèi)決策獲得的實(shí)驗(yàn)結(jié)果,利用改進(jìn)的CW-KNN 算法獲得的分類(lèi)實(shí)驗(yàn)結(jié)果。通過(guò)比較很明顯,改進(jìn)后的KNN 算法不僅在分類(lèi)過(guò)程中讓數(shù)據(jù)更集中,還能夠很好的將正常數(shù)據(jù)和異常數(shù)據(jù)進(jìn)行分離。
接下來(lái)根據(jù)誤報(bào)率、準(zhǔn)確率以及檢測(cè)率三個(gè)指標(biāo)確定算法的性能,并選取KNN-ACO,ABTSVM 兩種算法進(jìn)行仿真實(shí)驗(yàn),圖2、圖3 和圖4 顯示了檢測(cè)率、誤報(bào)率和準(zhǔn)確率的具體比較情況。
圖2:檢測(cè)率比較
圖3:誤報(bào)率比較
圖4:準(zhǔn)確率比較
結(jié)果表明,改進(jìn)的CW-KNN 模型算法在檢測(cè)率、誤報(bào)率以及準(zhǔn)確率上相比其他三種算法都有明顯的優(yōu)勢(shì),具有良好的分類(lèi)效果。
隨著信息化的不斷深入和發(fā)展,計(jì)算機(jī)技術(shù)在教育行業(yè)得到廣泛的應(yīng)用,目前大部分學(xué)校都有獨(dú)立的網(wǎng)站、FTP 服務(wù)器、Email郵件服務(wù)器,極大推動(dòng)了學(xué)校教科研水平的提高[4]。校園網(wǎng)作為教學(xué)、科研、交流等資源平臺(tái),給現(xiàn)代教育帶來(lái)豐富的信息,但其本身也面臨很多的威脅:用戶(hù)無(wú)節(jié)制的使用網(wǎng)絡(luò)資源,玩網(wǎng)絡(luò)游戲、在線觀看視頻等,影響其他人的上網(wǎng)速度,造成網(wǎng)絡(luò)資源的浪費(fèi);學(xué)生瀏覽暴力和色情網(wǎng)站,嚴(yán)重影響了其身心健康的成長(zhǎng)。如何及時(shí)發(fā)現(xiàn)校園網(wǎng)絡(luò)中的異?,F(xiàn)象,杜絕濫用網(wǎng)絡(luò)資源以及瀏覽不良網(wǎng)絡(luò)內(nèi)容,合理利用網(wǎng)絡(luò)資源、凈化網(wǎng)絡(luò)環(huán)境,提高網(wǎng)絡(luò)服務(wù)質(zhì)量,是校園網(wǎng)絡(luò)須亟待解決的問(wèn)題[5]。傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)采用離線數(shù)據(jù)的檢測(cè)分析方法,但是隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)數(shù)據(jù)量的急劇增大,離線數(shù)據(jù)分析方法已經(jīng)不能滿足網(wǎng)絡(luò)應(yīng)用的需要,它沒(méi)有考慮到網(wǎng)絡(luò)數(shù)據(jù)的動(dòng)態(tài)性和實(shí)時(shí)性,對(duì)網(wǎng)絡(luò)狀態(tài)的分析相對(duì)滯后。而基于數(shù)據(jù)流的數(shù)據(jù)技術(shù)可以實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)數(shù)據(jù)、監(jiān)控網(wǎng)絡(luò)的行為。
結(jié)合校園安全的工作需求,在大數(shù)據(jù)技術(shù)的基礎(chǔ)上,將校園的網(wǎng)絡(luò)大數(shù)據(jù)通過(guò)Kafka、Redis、MPP DB、ETL 等集群技術(shù)進(jìn)行具體應(yīng)用,研發(fā)聚類(lèi)挖掘、數(shù)據(jù)采集、關(guān)鍵字過(guò)濾、流量異常檢測(cè)與預(yù)警等應(yīng)用模塊,并基于該模型,構(gòu)建了一個(gè)以校園網(wǎng)絡(luò)大數(shù)據(jù)整體架構(gòu)。
聚類(lèi)挖掘模塊主要應(yīng)用于對(duì)重點(diǎn)出口和入口的部署與控制,以及關(guān)鍵領(lǐng)域的實(shí)時(shí)監(jiān)控等需要的安全服務(wù)。數(shù)據(jù)來(lái)源主要有視頻監(jiān)控?cái)?shù)據(jù)、卡口圖片數(shù)據(jù)、通話記錄和上網(wǎng)記錄等[6]。標(biāo)準(zhǔn)化的數(shù)據(jù)集群實(shí)時(shí)收集來(lái)自數(shù)據(jù)源的數(shù)據(jù),并對(duì)收集的數(shù)據(jù)根據(jù)需求進(jìn)行預(yù)處理,然后采用數(shù)據(jù)流的形式將其寫(xiě)入Kafka 集群中。Kafka集群負(fù)責(zé)傳輸流數(shù)據(jù),提供基于Topic 的發(fā)布和訂閱機(jī)制,實(shí)現(xiàn)決策后的實(shí)時(shí)通知。接下來(lái)使用Flink 的分布式流引擎來(lái)執(zhí)行數(shù)據(jù)流的處理任務(wù),其處理數(shù)據(jù)流時(shí)的延遲是毫秒級(jí),每個(gè)節(jié)點(diǎn)均具有600M·s-1的處理能力,同時(shí)支持水平擴(kuò)展且可以擴(kuò)展到1000個(gè)節(jié)點(diǎn),還可以完成用戶(hù)任務(wù)完成狀態(tài)的實(shí)時(shí)備份,備份性能保證高可靠性,校園網(wǎng)絡(luò)的業(yè)務(wù)需求基于Flink 進(jìn)行拓?fù)鋵?shí)現(xiàn)數(shù)據(jù)流的處理邏輯。Redis 集群提供了快速的key/value 存儲(chǔ)和查詢(xún)功能,以便對(duì)中間數(shù)據(jù)進(jìn)行流處理進(jìn)行緩存[7]。MPP DB 數(shù)據(jù)庫(kù)是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)流處理結(jié)果由Fink 拓?fù)鋵?xiě)入校園網(wǎng)絡(luò)應(yīng)用程序,以便實(shí)時(shí)完成結(jié)果查詢(xún)、通知和顯示。
實(shí)時(shí)數(shù)據(jù)的采集是指在網(wǎng)絡(luò)范圍中即時(shí)數(shù)據(jù)的采集,包括網(wǎng)絡(luò)中監(jiān)視器的接入情況、各個(gè)網(wǎng)絡(luò)設(shè)備的出入流量、接口實(shí)時(shí)匯總的情況以及出現(xiàn)實(shí)時(shí)警告的情況。數(shù)據(jù)采集模塊中數(shù)據(jù)的主要來(lái)源為卡口數(shù)據(jù)、GPS 記錄、基站信息以及地圖導(dǎo)航數(shù)據(jù)。ETL 集群負(fù)責(zé)從數(shù)據(jù)源收集數(shù)據(jù)并將數(shù)據(jù)加載到Spark 集群中,以便進(jìn)行關(guān)系分析。在MPP DB 集群中,還直接將一些需要快速實(shí)時(shí)分析的數(shù)據(jù)放入比較和碰撞。MPP DB 集群用來(lái)存儲(chǔ)大量的結(jié)構(gòu)化數(shù)據(jù),支持快速的前端查詢(xún)、比較、碰撞等應(yīng)用。Hadoop 集群主要是基于Hadoop 技術(shù)進(jìn)行原始數(shù)據(jù)存儲(chǔ)的,采用Spark 計(jì)算架構(gòu)和 Hive 數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu),將卡口數(shù)據(jù)進(jìn)行分析比對(duì)形成軌跡數(shù)據(jù),并寫(xiě)入MPP DB 中進(jìn)行存儲(chǔ),可為校園網(wǎng)絡(luò)的應(yīng)用層根據(jù)需要進(jìn)行集成調(diào)用。
考慮到數(shù)據(jù)存儲(chǔ)所用的數(shù)據(jù)庫(kù)屬于能夠滿足校園網(wǎng)中的大量數(shù)據(jù)存儲(chǔ),還需要滿足數(shù)據(jù)聚合的功能,所以選用了 MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)捕獲后的數(shù)據(jù)。因?yàn)樾@網(wǎng)的龐大的數(shù)據(jù)總量及網(wǎng)絡(luò)數(shù)據(jù)的差異性,所以編寫(xiě)并使用動(dòng)態(tài)自定義的數(shù)據(jù)庫(kù),這類(lèi)數(shù)據(jù)庫(kù)可以滿足不同的需求,根據(jù)需求情況進(jìn)行調(diào)整,其中包括了符合數(shù)據(jù)聚合要求的 SQL 語(yǔ)言的整體框架,和自增字段等動(dòng)態(tài)化操作。
根據(jù)校園網(wǎng)絡(luò)業(yè)務(wù)需求進(jìn)行文本類(lèi)數(shù)據(jù)檢索時(shí)使用的,如各類(lèi)校園資料查詢(xún)、單鍵查詢(xún)服務(wù)、4G 通訊服務(wù)等。資料來(lái)源包括國(guó)家安全局國(guó)家核心信息資源數(shù)據(jù)庫(kù)、各個(gè)校園網(wǎng)絡(luò)數(shù)據(jù)庫(kù)主要數(shù)據(jù)庫(kù),還有比如互聯(lián)網(wǎng)大數(shù)據(jù)、社會(huì)媒體、網(wǎng)吧等數(shù)據(jù)庫(kù)[8]。ETL 集群從數(shù)據(jù)源中完成數(shù)據(jù)的收集工作后,并進(jìn)行清理和關(guān)聯(lián),以確保數(shù)據(jù)質(zhì)量。優(yōu)質(zhì)的數(shù)據(jù)流隨后被傳輸?shù)紿Base 集群中,同時(shí)在Solr集群中根據(jù)一些關(guān)鍵字建立索引。HBase 集群用于存儲(chǔ)被ETL 清理后的相關(guān)數(shù)據(jù),并可被校園內(nèi)的應(yīng)用層查詢(xún)和使用。
異常數(shù)據(jù)流的檢測(cè)是網(wǎng)絡(luò)異常檢測(cè)的重要研究方向[9]。異常的數(shù)據(jù)流是指在網(wǎng)絡(luò)中和正常流量明顯不同,有較大偏移的情況,一般網(wǎng)絡(luò)數(shù)據(jù)流的流量會(huì)根據(jù)網(wǎng)絡(luò)環(huán)境和用戶(hù)的操作而發(fā)生變化。所以,需要比較異常流量和在相同網(wǎng)絡(luò)狀態(tài)下運(yùn)行的正常流量的行為,從而確定網(wǎng)絡(luò)數(shù)據(jù)流中的異常行為。KDD Cup99 數(shù)據(jù)集的數(shù)據(jù)采集模塊預(yù)處理。其中包括將符號(hào)函數(shù)轉(zhuǎn)換成數(shù)字函數(shù),數(shù)字標(biāo)準(zhǔn)化以及數(shù)字的規(guī)范化。特征樣本的選取利用隨機(jī)森林算法確定屬性的重要性,根據(jù)屬性的重要性去除無(wú)關(guān)特征,并按照特征樣本屬性的重要性進(jìn)行加權(quán)。然后利用異常數(shù)據(jù)流檢測(cè)模塊根據(jù)測(cè)試樣本與訓(xùn)練樣本的加權(quán)距離,并通過(guò)改進(jìn)的KNN 算法來(lái)判斷該樣本是否是攻擊流量和類(lèi)型。
選取試驗(yàn)數(shù)據(jù):KDD-Cup99 數(shù)據(jù)集共包含31 萬(wàn)多條數(shù)據(jù)記錄,每條數(shù)據(jù)由本次實(shí)驗(yàn)選擇一個(gè)測(cè)試數(shù)據(jù)集KDD-Cup99 作為實(shí)驗(yàn)數(shù)據(jù)[10]。這個(gè)數(shù)據(jù)集有五類(lèi),一類(lèi)是普通數(shù)據(jù),四類(lèi)是攻擊類(lèi)。將異常攻擊類(lèi)型配置為DDOS 攻擊或其他異常攻擊。該數(shù)據(jù)集包含311029 條數(shù)據(jù)記錄,每條數(shù)據(jù)包含41 個(gè)維度屬性,包括34 個(gè)維度連續(xù)屬性和7 個(gè)維度離散屬性[11]。全部試驗(yàn)數(shù)據(jù)均進(jìn)行了標(biāo)準(zhǔn)化。
對(duì)原KNN 算法和改進(jìn)的模型進(jìn)行時(shí)效性分析,并對(duì)網(wǎng)絡(luò)數(shù)據(jù)流中的不同異常的誤報(bào)率和處理時(shí)長(zhǎng)進(jìn)行測(cè)試[12]。其中,KNN 算法和CW-KNN 算法的時(shí)效性比較中,兩種算法對(duì)網(wǎng)絡(luò)數(shù)據(jù)流的處理能力分析結(jié)果如圖5所示。
圖5:檢驗(yàn)對(duì)比情況
如圖5所示,兩種算法在不同數(shù)據(jù)集上的性能不存在顯著差異。CW-KNN 算法在沒(méi)有人工干預(yù)的情況下,其漂移檢測(cè)效率不低于KNN 算法。CW-KNN 算法的實(shí)時(shí)性高于KNN 算法。通過(guò)對(duì)不同攻擊類(lèi)型的檢測(cè)實(shí)驗(yàn)和未知的攻擊檢測(cè)實(shí)驗(yàn),證明了CW-KNN 算法比KNN 算法更有效。CW-KNN 算法的實(shí)時(shí)性高于KNN 算法。KNN 算法的執(zhí)行時(shí)間隨網(wǎng)絡(luò)數(shù)據(jù)量的增加而顯著高于CW-KNN 算法的執(zhí)行時(shí)間。由此可知,CW-KNN 算法比KNN 算法在檢測(cè)網(wǎng)絡(luò)流量異常方面更加及時(shí)。
對(duì)系統(tǒng)異常流量的測(cè)量分析功能進(jìn)行測(cè)量,主要查看本文提出的算法是否運(yùn)行正常,是否可以將異常流量準(zhǔn)確的檢測(cè)出來(lái)。根據(jù)實(shí)驗(yàn)結(jié)果總結(jié)分析得出:系統(tǒng)異常流量的檢測(cè)功能運(yùn)行正常,可以將校園網(wǎng)的異常流量檢測(cè)出來(lái),校園網(wǎng)網(wǎng)絡(luò)流量監(jiān)測(cè)與分析系統(tǒng)檢測(cè)異常流量能力綜合提升。