彭 凱,石津津,楊 岸,林 韜,梁浩東,朱帥琦,張嬌慧
(1. 華僑大學(xué)工學(xué)院,福建 泉州 362021;2. 工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,福建 泉州 362021;3. 廈門狄耐克電子科技股份有限公司研發(fā)中心,福建 廈門 361000;4. 廈門雅迅網(wǎng)絡(luò)股份有限公司,福建 廈門 361000)
網(wǎng)絡(luò)安全是一個系統(tǒng)的概念,其首要目標(biāo)是制定有效的安全策略和方案。入侵檢測系統(tǒng)(IDS,Intrusion Detection Systems)作為網(wǎng)絡(luò)安全防護的重要組成部分,是為了保證網(wǎng)絡(luò)安全而設(shè)計的。其任務(wù)是檢測在主機或網(wǎng)絡(luò)環(huán)境中的惡意活動,及時做出反應(yīng),例如,停止持續(xù)的攻擊[1]。
IDS最早出現(xiàn)在 1980年,James P.Anderson[2]在一份題為《計算機安全威脅監(jiān)控與視》的技術(shù)報告中指出,審計記錄可以用于識別計算機誤用,并對威脅進行了分類。經(jīng)過數(shù)十年的發(fā)展,IDS已經(jīng)成為一項較為成功的安全防護技術(shù)。以Snort[3]為代表的IDS為網(wǎng)絡(luò)安全做出了杰出的貢獻。其它較為出名的商用入侵檢測產(chǎn)品還有 CISCO公司的NetRanger等[4]。
模式匹配算法是IDS產(chǎn)品的核心技術(shù)之一,基于 AC、BM、MWM 等匹配算法[5]的誤用檢測可以使IDS被動式地檢測廣泛存在、特征明顯的已知攻擊。而對于未知攻擊,傳統(tǒng)IDS通常采取基于“偏離值”和“用戶行為”的異常檢測進行主動防護。利用統(tǒng)計模型、聚類分析等檢測形式[6]以及 DB等優(yōu)秀算法可以使系統(tǒng)對未知攻擊有了一定的檢測能力。KNN算法稱為k最近鄰算法[7],是一個理論上比較成熟的統(tǒng)計學(xué)習(xí)方法。目前,被廣泛應(yīng)用于模式識別、分類和回歸等[8]。而傳統(tǒng) IDS對于異常但非攻擊行為仍存在著較高的誤報率,對非異常但攻擊行為存在著較高的漏報率。已有的研究主要關(guān)注于提高檢測準(zhǔn)確率、降低誤報率,取得了很好的研究成果,但是很少關(guān)注用戶使用和算法運行效率的問題,一方面,已有的產(chǎn)品,如Snort,其配置過程繁瑣僅適合專業(yè)人員使用,因此,實現(xiàn)一種輕量級、可視化的Web版本更符合普通用戶的需求。另一方面,入侵檢測的算法的運行效率也是一個需要關(guān)注的關(guān)鍵問題,特別是在大數(shù)據(jù)環(huán)境下,如何實現(xiàn)快速檢測非常重要。
針對以上問題,本文提出了一種新型IDS入侵檢測框架。一方面:基于已有的 Snort的產(chǎn)品,提出一種 Web入侵檢測平臺,另一方面,基于Map-Reduce提出一種新的并行KNN的IDS檢測算法。實驗結(jié)果證明:該算法能夠在保證已有的準(zhǔn)確率基礎(chǔ)上極大地降低時間開銷,特別適合于大數(shù)據(jù)環(huán)境。
Snort[3]是開源入侵檢測系統(tǒng)。Snort通過對獲取的數(shù)據(jù)包,進行各規(guī)則的分析后,根據(jù)用戶的定義的規(guī)則鏈,可采取Activation(報警并啟動另外一個動態(tài)規(guī)則鏈)、Dynamic(由其它的規(guī)則包調(diào)用)、Alert(報警),Pass(忽略),Log(不報警但記錄網(wǎng)絡(luò)流量)五種響應(yīng)機制。
KNN算法核心思想是利用統(tǒng)計概率原理,采用計算機自動學(xué)習(xí)的方法。主要計算是對測試文檔在訓(xùn)練文檔中評分,從而找到k近鄰。通過對已知的樣本的學(xué)習(xí),建立特征庫,并實現(xiàn)對未知樣本的計算和預(yù)測。對于未知文檔的向量分類,KNN算法是將訓(xùn)練樣本的文檔向量按文檔近鄰排列的。隨后,使用 k個最近似的類別標(biāo)簽來預(yù)測輸入文檔的類別。其中,文檔鄰居一般通過歐幾里德距離公式或文檔間向量的余弦測量來計算。
Map-Reduce模型是Google公司提出的一種并行編程模型[9],主要被用于解決大規(guī)模數(shù)據(jù)集的并行計算問題。首先,它會對大數(shù)據(jù)集按塊進行分割,然后是將數(shù)據(jù)塊分發(fā)到若干個節(jié)點上,然后根據(jù)用戶定義的 Map-Reduce任務(wù)執(zhí)行相應(yīng)的操作。在整個計算過程中,數(shù)據(jù)的輸入輸出都是采用鍵值對
(1)用戶上傳到HDFS文件目錄中的數(shù)據(jù)被分割成數(shù)據(jù)塊(大小一般為16~64 MB,大小可以通過參數(shù)來設(shè)定)。
(2)使用Map-Reduce模式中的Jobtracker為集群分配Map或者Reduce任務(wù),其中Reduce任務(wù)可以由用戶自己設(shè)定,而Map任務(wù)則是由文件分割的塊數(shù)決定。
(3)執(zhí)行Map任務(wù),此步驟是由 worker節(jié)點執(zhí)行的。Map函數(shù)將當(dāng)前的節(jié)點上的文件解析成
(4)重新洗牌,將相同的key記錄送到同一個Reduce節(jié)點里面
(5)Reduce操作,Reducer將節(jié)點上的鍵值對
(6)等每個Map和Reduce任務(wù)都執(zhí)行完畢后,Master節(jié)點會喚醒用戶程序并報告任務(wù)執(zhí)行情況[10-11]。
綜上,以上六個步驟構(gòu)成一個完整的MapReduce任務(wù)執(zhí)行過程。其中,Map函數(shù)和 Reduce函數(shù)是Map-Reduce的核心。
根據(jù)系統(tǒng)的功能和需求,本文開發(fā)的入侵檢測Web管理平臺分為四大部分:UI界面設(shè)計、Snort配置、工具整合、數(shù)據(jù)庫。平臺總體框架如圖1所示。
圖1 平臺總體框架Fig.1 Overall framework of platform
UI界面設(shè)計是網(wǎng)頁界面布局及色彩搭配;Snort配置將入侵檢測軟件Snort在Ubuntu上[12]進行配置并使之能夠運行監(jiān)測到入侵行為;工具整合是將端口掃描器和 IP歸屬查詢工具等一系列工具集成到Web系統(tǒng)中,方便用戶使用,數(shù)據(jù)庫存儲系統(tǒng)用戶的帳號密碼信息以及和Snort數(shù)據(jù)庫的連接。
程序主要由一個 Mapper模塊、一個 Reducer模塊和主函數(shù)模塊構(gòu)成,Mapper模塊里面包含一個map函數(shù),同樣的,Reducer模塊也包含一個reduce函數(shù)。
2.2.1 Mapper模塊
Map函數(shù)的任務(wù)是先讀取訓(xùn)練樣本集,形成鍵值對
(1)首先,先調(diào)用內(nèi)置函數(shù)split按行讀取樣本,并將其轉(zhuǎn)換成特定格式,以利于后期操作。
(2)然后,遍歷每個測試樣本,計算其和每個訓(xùn)練樣本之間的相似度
(3)最后,將結(jié)果存入context集合。
輸入數(shù)據(jù)的鍵值對
2.2.2 Reducer模塊
Reduce函數(shù)主要實現(xiàn)對map函數(shù)的結(jié)果進行排序,取前k個最鄰近距離和對最后結(jié)果的判斷及輸出。具體來說,后臺系統(tǒng)需要執(zhí)行shuffle操作,為了將不同Map節(jié)點上的相同key的數(shù)據(jù)送到同一個Reduce節(jié)點上執(zhí)行相應(yīng)的操作(如排序、分類以及輸出操作等)。其中,輸入數(shù)據(jù)的鍵值對
2.2.3 主函數(shù)模塊
main函數(shù)模塊(主函數(shù)模塊)主要是對整體函數(shù)的連接和調(diào)用,以及設(shè)置輸入輸出路徑,最后計算程序運行所需的時間。
圖2 Mapper模塊Fig.2 Mapper module
圖3 map函數(shù)調(diào)用distance函數(shù)Fig.3 Map function calls distance function
本文基于 PHP與 MySQL數(shù)據(jù)庫技術(shù),結(jié)合Snort等入侵檢測軟件設(shè)計一個入侵檢測 Web管理平臺,使管理員能夠在該平臺上對入侵檢測的日志內(nèi)容進行查看和管理,同時該平臺還整理常用的一些入侵檢測工具(如端口掃描、IP查詢等功能)。系統(tǒng)實現(xiàn)(入侵檢測Web管理系統(tǒng)主界面)結(jié)果如圖8、端口掃描工具頁如圖9所示。
圖4 distance函數(shù)Fig.4 Distance fuction
圖5 reduce函數(shù)Fig.5 Reduce function
本實驗平臺操作系統(tǒng)使用 Ubuntu 15.04,云平臺采用Hadoop 2.6.0,JDK 1.8.0_45。開發(fā)環(huán)境采用Eclipse,編程語言 JAVA。實驗數(shù)據(jù)集采用KDDCUP99[19]。4.2.1介紹 KDDCUP99,4.2.2對實驗結(jié)果進行討論和分析。
3.2.1 KDDCUP99網(wǎng)絡(luò)入侵檢測數(shù)據(jù)
KDDCUP99數(shù)據(jù)集是從一個模擬的美國空軍局域網(wǎng)上采集來的9個星期的網(wǎng)絡(luò)連接數(shù)據(jù),分成具有標(biāo)識的訓(xùn)練數(shù)據(jù)和未加標(biāo)識的測試數(shù)據(jù)。
圖6 輸出結(jié)果的處理Fig.6 Process of output results
圖7 main函數(shù)模塊Fig.7 Main function module
圖8 入侵檢測Web管理系統(tǒng)主界面Fig.8 The main interface of intrusion detection web management system
圖9 端口掃描工具Fig.9 Port scanning tool
一個網(wǎng)絡(luò)連接定義為在某個時間內(nèi)從開始到結(jié)束的TCP數(shù)據(jù)包序列,并且在這段時間內(nèi),數(shù)據(jù)在預(yù)定義的協(xié)議下(如TCP、UDP)從源IP地址到目的 IP地址的傳遞。每個網(wǎng)絡(luò)連接被標(biāo)記為正常(Normal)或異常(Attack),異常類型被細(xì)分為 4大類共39種攻擊類型,其中22種攻擊類型出現(xiàn)在訓(xùn)練集中,另有17種未知攻擊類型出現(xiàn)在測試集中[13]。在訓(xùn)練數(shù)據(jù)集中包含了1種正常的標(biāo)識類型normal和22種訓(xùn)練攻擊類型,如表1所示。
3.2.2 實驗數(shù)據(jù)分析
由于 KDDCUP99數(shù)據(jù)集較大,本文采用KDDCUP99原數(shù)據(jù)集的10%作為實驗數(shù)據(jù)(訓(xùn)練樣本)。先對KDDCUP99數(shù)據(jù)集截取兩組實驗數(shù)據(jù),一組為15組數(shù)據(jù),另一組是225組數(shù)據(jù),所得的實驗結(jié)果如表2所示。
(1)首先是使用15組數(shù)據(jù)測試
1. 單機實驗數(shù)據(jù):根據(jù) 15次實驗結(jié)果顯示,其正確率主要在86.6%~100%波動,平均計算時間:0.076 ms。
表1 KDDCUP99入侵檢測實驗數(shù)據(jù)的標(biāo)識類型Tab.1 Identification type of KDDCUP99
表2 實驗運行結(jié)果Tab.2 The results of experiments
2. 分布式實驗數(shù)據(jù):依據(jù)多次實驗結(jié)果分析得出,并行化的實驗數(shù)據(jù)的正確率與單機的持平,但是在運行速率上,分布式計算時間要明顯高于單機。平均計算時間:12.233 ms
(2)使用225組數(shù)據(jù)測試
1. 單機實驗數(shù)據(jù):同樣經(jīng)過 15次實驗測試,發(fā)現(xiàn)當(dāng)訓(xùn)練數(shù)據(jù)達 225組時,正確率高達 99.5%以上,平均計算時間:29.287 ms。
2. 分布式實驗數(shù)據(jù):采用 15次實驗測試,得出的實驗數(shù)據(jù)跟單機實驗結(jié)果持平,平均計算時間:11.142 ms,但是在運行時間上是單機的38%,體現(xiàn)了分布式的高效的計算效率的特點。
(3)實驗結(jié)果討論
在經(jīng)過多次測試之后得出的結(jié)論:當(dāng)使用小數(shù)據(jù)集測試時,實驗結(jié)果不穩(wěn)定,且準(zhǔn)確率有波動;逐漸加大數(shù)據(jù)樣本時,準(zhǔn)確率會得到很大提高,但單機實驗的運行速率則會受到很大影響,雖然并行運算的運行時間也有相應(yīng)的加長,然而,與單機結(jié)果相比較,能明顯看出并行運算的運行優(yōu)勢,總運行時間明顯小于單機情況。綜上:采用并行的KNN算法,不僅能夠保證算法的準(zhǔn)確率,同時極大地降低了算法運行時間,特別是隨著數(shù)據(jù)量的增大,這種優(yōu)勢更明顯。
本文基于Snort平臺,設(shè)計出一種入侵檢測Web管理平臺;同時,設(shè)計并實現(xiàn)基于Map-reduce并行化的KNN檢測算法??偨Y(jié)起來,本文的平臺和算法主要優(yōu)點如下:
(1)使用方便:基于 Snort平臺開發(fā)出入侵檢測Web管理平臺,不僅保留了已有IDS的檢測功能,同時更方便與普通用戶的使用;
(2)高效:與單機的 KNN算法相比,使用基于Map-Reduce的KNN算法可以有效提高檢測的效率,特別是隨著樣本的增加,效率優(yōu)勢體現(xiàn)的更明顯;
(3)易擴展:基于 Map-Reduce開發(fā)的并行檢測算法,由于運行在 Hadoop平臺上,因此可以隨時通過增加節(jié)點數(shù)來進一步提高計算效率。
然而,隨著網(wǎng)絡(luò)的進一步發(fā)展,對已知攻擊的預(yù)防已經(jīng)滿足不了大數(shù)據(jù)環(huán)境下IDS需求,在以后的研究中將考慮增加系統(tǒng)對未知攻擊的預(yù)測功能。
[1] MILENKOSKI A, VIEIRA M, KOUNEV S, et al. Evaluating Computer Intrusion Detection Systems: A Survey of Common Practices[J]. ACM Computing Surveys, 2015, 48(1):1-41.
[2] ANDERSON J P. Computer security threat monitoring and surveillance[R]. 1980.
[3] 劉愛武. 基于snort的混合式入侵檢測系統(tǒng)的研究與實現(xiàn)[D]. 哈爾濱: 哈爾濱工業(yè)大學(xué), 2008.LIU A W. Research and Implementation on Snort-Based Hybrid Intrusion Detection System[D]. Dissertation for the Master Degree. Harbin Institute of Technology, 2008.
[4] 主流入侵檢測產(chǎn)品大比較[OL]. (2007-7-3)IT168). http://safe.it168.com/ss/2007-07-03/20070703019001.shtml.A large comparison of mainstream intrusion detection products [OL]. (2007-7-3) IT168). http://safe.it168.com/ss/2007-07-03/20070703019001.shtml.
[5] 唐謙, 張大方. 入侵檢測中模式匹配算法的性能分析[J].計算機工程與應(yīng)用, 2005, 41(17): 136-138.TANG Q, ZHANG D F. Performance Analysis of Pattern Matching Algorithms for Intrusion Detection[J], Computer Engineering and Applications. 2005, 41(17): 136-138.
[6] 李炎, 李皓, 錢肖魯, 等. 異常檢測算法分析[J]. 計算機工程, 2002, 28(6): 5-6.LI Y, LI H, QIAN X L, et al. A Review and Analysis of Outlier Detection Algorithms[J]. Computer Engineering. 2002,28(6): 5-6.
[7] HASTIE T, TIBSHIRANI R. Discriminant Adaptive Nearest Neighbor Classification[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1996, 18(6): 607-616.
[8] 盧鋆, 吳忠望, 王宇, 等. 基于kNN算法的異常行為檢測方法研究[J]. 計算機工程, 2007, 33(7): 133-134.LU J, WU Z W, WANG Y, et al. Research on Abnormal Behavior Detection Based on kNN Algorithm[J]. Computer Engineering. 2007, 33(7): 133-134.
[9] DEAN J, GHEMAWAT S. MapReduce: Simplified Data Processing on Large Clusters[J]. Communications of the Acm, 2004, 51(1): 107-113.
[10] 閆永剛, 馬廷淮, 王建. KNN分類算法的MapReduce并行化實現(xiàn)[J]. 南京航空航天大學(xué)學(xué)報, 2013, 45(4): 550-555.YAN Y G, MA T H, WANG J. Parallel Implementing KNN Classification Algorithm Using MapReduce Programming Mode[J]. Journal of Nanjing University of Aeronautics &Astronautics. 2013, 45(4): 550-555.
[11] 王睿. 基于MapReduce的并行KNN分類算法研究[J]. 計算機與數(shù)字工程, 2013, 41(11): 1738-1740.WANG R. Parallel KNN Classification Algorithm Based on MapRedue[J]. Computer & Digital Engineering. 2013, 41(11):1738-1740.
[12] NOAH D. Snort 2.9.7.x on Ubuntu 12 and 14 with Barnyard2,PulledPork, and BASE[EB]. January 14, 2015.
[13] KDD B. KDD99 cup dataset. 1999. http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html [OL].