摘要:文章所述方案充分發揮大數據處理技術與機器學習在網絡異常監測中的優勢,有效提升了網絡異常行為監測的處理速度、準確性,大大降低了誤報率,對大數據處理環境下網絡異常行為監測具有一定的理論意義與現實應用價值。
關鍵詞:大數據技術;網絡異常行為;技術研究
doi:10.3969/J.ISSN.1672-7274.2023.02.011
中圖分類號:TP 393.08" " " " " " " "文獻標示碼:A" " " " " " " "文章編碼:1672-7274(2023)02-00-03
Research on Network Abnormal Behavior Detection Technology Based on Big Data
GAO Juxin
(Shanxi Institute of Applied Science and Technology, Lvliang 033000, China)
Abstract: The scheme described in this paper gives full play to the advantages of big data processing technology and machine learning in network anomaly monitoring, effectively improves the processing speed and accuracy of network anomaly behavior monitoring, and greatly reduces the rate of 1 positives. It has certain theoretical significance and practical application value for the monitoring of network abnormal behavior in the big data processing environment.
Key words: big data technology; network abnormal behavior; technical study
1" 基于大數據的網絡異常行為檢測模型構建
基于大數據的網絡異常分析模型通過提供大量安全數據的采集和存儲方案,以及分布式消息隊列、分布式離線分析組件以及流式處理組件,滿足數據收集和預處理、數據離線分析、數據流式處理、數據存儲等一系列需求。該模型主要包括數據采集層、數據預處理層、數據分析層、數據存儲層和可視化層,每個層之間相互獨立,即使某層組件出現問題也不會對其他層的組件造成影響,每層的數據格式是標準化的,各層之間采用標準化接口調用。用戶配置好各個組件的集群開發,對網絡流進行數據采集,經過一系列的特征提取、預處理過程,交由訓練好的網絡異常行為檢測模型進行分類,區分出正常行為和不同的攻擊行為,并向用戶展示檢測結果和結果查詢[1]。
2" 基于大數據的網絡異常行為實時檢測模型
2.1 網絡異常行為實時檢測的總體設計
2.1.1 總體設計目標
(1)準確性:提高網絡異常行為檢測準確性是最基本也是最重要的要求。
(2)實時性:實時采集并檢測數據流,在設計時盡量縮短采集和處理數據的時延,保證能盡早檢測出網絡異常,以便及時采取措施減少危害。
(3)高效性:網絡數據量大并且在不斷更新,只有保證數據采集和算法的高效性,避免傳統處理方式速度慢的缺點,才能完成大量數據的采集并提取有效信息進行檢測分析。
(4)健壯性:要保證算法具有較強的適應性,并且能解決單點故障問題,防止某節點在數據處理協和中因出現故障而影響到整體的正常運行。
(5)支持Windows和Linux系統,利用分布式計算可伸縮性的特點,通過用增加節點完成網絡異常檢測的擴展[2]。
2.1.2 網絡異常實時檢測模型總體設計
(1)數據采集模塊:通過Jnetpcap采集網絡數據并進行特征提取后保存在.csv文件中,利用Flume集中匯總、過濾.csv文件中的數據流,并將數據流發布到Kafka的topic中。
(2)網絡異常檢測模塊:首先基于Spark streaming實時讀取Kafka中的數據流,再對特征數據進行一些預處理操作,然后依據并行化的SA_SVM_RF網絡異常檢測模型對實時數據流進行檢測。
(3)數據存儲模塊:主要利用關系型數據庫Mysql存儲網絡異常實時檢測的結果數據。
(4)可視化展示模塊:提供檢測結果的展示和查詢界面,方便查看和操作。
2.2 數據采集模塊
基于Jnetpcap技術實現網絡數據的采集和特征提取,該技術的優點在于可以跨Windows和Linux平臺,Jnetpcap技術統一調用接口,只需在Windows平臺安裝Winpcap,在Linux平臺安裝Libpcap即可。Jnetpcap工具包只能獲取網卡數據包或pcap文件的一些源/目的IP地址和端口等基本特征。然而網絡異常行為檢測中需要更多的特征來保證檢測的準確率,因此特征提取成為該子模塊的重點任務,參考網絡異常行為檢測模型構建時用到的NSL-KDD數據集的特征,通過設計并實現FeaBasedTime和FeaBasedHost兩個組件完成特征提取。FeaBasedTime組件提取基于時間維度的網絡流量統計特征,FeaBasedHost組件提取基于主機維度的網絡流量統計特征。
FeaBasedTime組件將抓取數據包的時間記為當前時間,查詢并統計出與該數據記錄具有相同屬性的最近2 s內的數據記錄的特征作為新生成的特征。其具體過程是當初步生成的DataCollection對象進入FeaBasedTime組件后,首先刪除隊列中2 s之前的DataCollection對象,然后掃描隊列中的每一個DataCollection對象與當前數據包的IP地址、端口(Port)、服務(Service)分別進行比較,得到基于時間的網絡流量統計特征,并將這些特征保存在當前DataCollection對象中。為了后續生成特征,將新產生的DataCollection對象加入FeaBasedTime組件的隊列中。
FeaBasedHost組件統計與當前數據包具有相同目標主機屬性的最鄰近的100個數據記錄的特征作為新生成的特征。該組件中包含一個保存最近100個記錄的KDDConnection對象的隊列,其具體過程是當初步生成的DataCollection對象進入FeaBasedHost組件后,組件內部掃描隊列中最近的100個DataCollection對象與當前對象的IP地址、端口(Port)、服務(Service)分別進行比較,得到基于主機的網絡流量統計特征,并將這些特征保存在當前DataCollection對象中。為了后續生成特征,將新產生的DataCollection對象放入FeaBasedTime組件的隊列中。如果隊列長度大于100個,則刪除隊尾的DataCollection對象,確保隊列中最多有100個DataCollection對象[3]。
該子模塊使用Java技術開發,首先初始化Pcap對象,利用JnetPcap工具獲取網卡,用pcap_loop()函數解析出網卡或pcap文件中的JPacket對象。然后利用JPcaket對象產生具有基本流量特征信息的BasicDataFea對象,并利用CacheFea緩存上一個數據包的基本流量特征,當上一個數據記錄的IP地址等基本特征與當前數據包的特性不相同時,利用上一個數據記錄的基本特征生成一個DataCollection對象,最后使用FeaBasedTime和FeaBasedHost組件將DataCollection對象中的特征補全。
2.3 網絡異常檢測模塊
數據采集模塊將處理過的數據放入Kafka后,網絡異常檢測模塊采用Sparkstreaming通過消息訂閱讀方式取Kafka中的實時數據流,并依據檢測模型進行實時檢測[3]。當連續的數據流由Kafka傳送到網絡異常檢測模塊后,為便于Spark內核處理,SparkStreaming將其轉化為由RDD序列組成的Dstreaming分片。Spark Streaming將數據流分成多個階段并編輯成任務集提交給任務調度器,任務調度器將任務派發到集群的計算節點進行存儲計算,得到分類結果。
(1)初始化。用SparkConf對象設置Spark運行配置,這里參數Master設置為local;創建sparkContext(sc)和StreamingContext(ssc)對象。其中sc負責連接Spark集群,當程序啟動時通過sc對象調度數據計算任務,然后將任務分配給Work節點進行相關的計算。ssc作為數據流處理的唯一通道口,后續的數據流都從ssc進入完成實時處理,在初始化ssc時參數batchDuration被設置為5s,該參數表示批處理間隔,每隔batchDuration的時間會切分一個RDD,并提交新任務對RDD數據進行操作[4]。
(2)創建DStream。當Spark Streaming需要在Kafka的Topic中讀取一條DStream流時,通過二者的交互接口KafkaUtils將Topic中的數據流轉化為標準化的DStream流,便于Spark Streaming的計算處理操作。KafkaUtils類可以通過Spark Receiver方式或者Direct消費方式創建數據流。這里采用無須擔心接收和處理速度不一致導致內存溢出的Direct消費方式。
(3)數據預處理。網絡異常檢測結果受收集的數據特征格式和個數等的影響較大,因此,需要對從Kafka獲取的數據進行預處理,首先將讀取的特征格式化成DataFrame,然后通過StringIndexer索引數據中的非連續的維度特征,并且利用One-hot編碼和直接編碼字符型特征和類別標簽進行數值化操作,最后采用VectorAssembler類將數據特征向量化。預處理后的數據符合網絡異常檢測模型的輸入數據要求,保證網絡異常檢測的合理性。
(4)結果存儲。負責將網絡異常實時檢測結果流傳到數據庫中。主要操作包括指定數據庫連接和創建數據庫連接池pool。這樣就可以保證結果完整無誤地插入到特定的數據庫中,而且通過復用數據庫連接的方法減少每一次建立和釋放數據庫連接產生的開銷。設置JDBC連接數據庫的URL為參數jdbcUrl,這里設置為\"jdbc:Mysql://192.168.79.1:3306/network?useUnicode=trueamp;characterEncoding=utf8\"。輸出的數據主要包括時間、數據特征、類別。
(5)結束Spark Streaming。要滿足Spark Streaming一直運行,除非人為干預才停止調用ssc.awaitTermination()函數,如果需要終止Spark Streaming程序,調用ssc.stop()即可停止。
2.4 數據存儲模塊
可將在分布式環境中將高速并行計算訓練檢測模型的數據集存儲在HDFS中,Mysql數據庫負責存儲網絡異常行為檢測結果。這里選擇Mysql數據庫,是因為它有以下優點:①它是一種關系型數據庫,可以在網上免費下載輕量級的開源代碼使用;②穩定性和適應性強,具有強大的數據導入功能,方便用戶將文件導入數據庫中;③運行速度快,靈活性強,管理方便,提供了良好的SQL查詢功能和查詢管理工具;④安全性高,具有數據備份和恢復功能,能夠保障數據安全存儲。
數據存儲模塊主要負責將網絡異常實時檢測的結果及時準確地存儲到Mysql數據庫中,保存數據內容完整,避免數據重復冗余,為后續可視化展示提供良好的數據。通過上節創建的數據庫連接池,可以獲取數據庫的連接,然后利用該數據庫連接池執行SQL語句插入數據庫表操作,完成異常檢測結果的入庫操作。這里主要建立了兩個表,分別為表flow_quantity和表flow_time,存儲數據主要包括時間、數據特征、類別等[5]。
2.5 可視化展示模塊
數據可視化展示在數據分析過程中讓龐大的數據以一個簡明扼要的可視化形式展示,可以直觀、快速、多維度地展示信息,方便人們查看、分析和記憶,而且交互式方式方便用戶探索甚至操縱數據,以發現其他問題。網絡異常檢測的主要目的是通過實時檢測讓用戶實時看到網絡流量趨勢和異常情況并及時查詢分析檢測結果,可視化展示模塊起到很重要的作用。因此,這里搭建了一個人機交互網站,從后臺接口獲取數據,然后及時顯示結果,便于結果的展示和查詢。
使用PHP語言編寫的客戶端主要包括展示和查詢頁面,繪制圖表是基于EChart實現的。展示頁面為了讓用戶可以及時看到網絡異常行為實時檢測的結果,每隔一段時間(這里設置為5分鐘)刷新一次。前端頁面的展示主要包括網絡流量數據的實時變化趨勢;一天內總流量和5種檢測類型的總量展示;某時刻出現網絡異常的展示[6]。前端頁面的查詢主要用于根據網絡異常檢測類型和起止時間查詢網絡數據流,其實現方式主要是,將寫好的index.php、part.php、part_link.php、resum.php、resum_link.php、welcome.php、welcome_link.php代碼文件全部放入XAMPP的htdocs文件夾中,開啟大數據平臺、Apache和Mysql,就可以在瀏覽器中輸入地址http://127.0.0.1:9003/network/admin/index/查看網絡異常檢測的前段實時展示頁面的內容。
3" 實驗結果與分析
由于實驗條件有限,本地產生的數據攻擊類型很少,為了更好地驗證實時檢測效果,在網絡異常行為實時檢測的實驗中,所使用的數據源包括采集的本地數據和CICIDS2017數據。選擇Canadian Institute for Cybersecurity發布的CICIDS2017數據集是因為該數據是在研究評估了1998年以來的11種數據集之后發布的,與真實世界的數據相似,包含良性且最新的常見攻擊的數據集,其在各種IDS研究中應用廣泛,評估檢測效果良好[7]。
4" 結束語
本文提出了一個基于大數據分析技術的網絡異常分析系統,基于Spark實現并行式SA_SVM_RF網絡異常行為監測模式,并通過NSL-KDD數據分析集證明了技術的有效性,最后將其應用于網絡異常實時檢測,實現網絡異常在線檢測,同時對現有的網絡異常檢測方法中的部分不足加以改進。■
參考文獻
[1] 陳興蜀,曾雪梅,王文賢,等.基于大數據的網絡安全與情報分析[J].工程科學與技術,2017,49(3):1-12.
[2] 盧湛昌.大數據環境下網絡安全態勢感知研究進展[J].網絡安全技術與應用,2017(1):82-83.
[3] 周繼成.基于Spark的網絡異常流量檢測系統的設計與實現[D].北京:北京郵電大學,2019.
[4] 陳興蜀,江天宇,曾雪梅,等.基于多維時間序列分析的網絡異常檢測[J].工程科學與技術,2017,49(1):144-150.
[5] 胡洋瑞,陳興蜀,王俊峰,等.基于流量行為特征的異常流量檢測[J].信息網絡安全,2016(11):45-51.
[6] 賈凡,嚴妍,張家琪,等.基于K-means聚類特征消減的網絡異常檢測[J].清華大學學報(自然科學版),2018,58(2):137-142.
[7] 夏景明,李沖,談玲,等.改進的隨機森林分類器網絡入侵檢測方法[J].計算機工程與設計,2019,40(8):2146-2150.