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