展鵬
關(guān)鍵詞:時間序列;網(wǎng)絡(luò)流量;異常檢測;前后端分離
0 引言
當前正處于網(wǎng)絡(luò)技術(shù)高速發(fā)展的時代,《“十四五”國家信息化規(guī)劃》的發(fā)布進一步推動“互聯(lián)網(wǎng)+”、大數(shù)據(jù)、云技術(shù)等前沿技術(shù)深度融合到生產(chǎn)、教育、科研等各個領(lǐng)域。以高校信息化建設(shè)為例,隨著接入校園網(wǎng)絡(luò)環(huán)境的設(shè)備、服務(wù)、信息系統(tǒng)等不斷增多,針對網(wǎng)絡(luò)的攻擊愈發(fā)頻繁,網(wǎng)絡(luò)安全問題日益嚴峻。網(wǎng)絡(luò)安全和信息化是事關(guān)國家安全、國家發(fā)展、事關(guān)全國人民學習、工作、生活的重大戰(zhàn)略問題,沒有網(wǎng)絡(luò)安全就沒有國家安全,沒有信息化就沒有現(xiàn)代化。網(wǎng)絡(luò)流量分析是一種監(jiān)測網(wǎng)絡(luò)運行的行之有效的技術(shù)手段,因此,利用信息化技術(shù),研究、設(shè)計并實現(xiàn)一套網(wǎng)絡(luò)流量分析系統(tǒng)及時發(fā)現(xiàn)網(wǎng)絡(luò)中的異常情況,對確保服務(wù)的穩(wěn)定運行具有重要的現(xiàn)實意義。
網(wǎng)絡(luò)流量數(shù)據(jù)具有典型的大數(shù)據(jù)特征:數(shù)據(jù)量大、數(shù)據(jù)種類多、持續(xù)產(chǎn)生、大量積累[1]。顯然,為了確保信息化服務(wù)的持續(xù)運行,網(wǎng)絡(luò)流量數(shù)據(jù)是隨著時間的推移不斷產(chǎn)生并積累的,是一種典型的時間序列流數(shù)據(jù)[2-3]。目前國內(nèi)外使用的網(wǎng)絡(luò)流量監(jiān)控產(chǎn)品,大多采用基于采集到的原始流量數(shù)據(jù)進行分析,往往更多地關(guān)注于流量數(shù)據(jù)的瞬時異常[4-5]。網(wǎng)絡(luò)流量是一種動態(tài)的、隨時間不斷變化的數(shù)據(jù)序列,本文著重研究一段時間內(nèi)的網(wǎng)絡(luò)流量相對于整體流量數(shù)據(jù)的異常程度,即分析流量數(shù)據(jù)局部與整體的關(guān)系,更有利于發(fā)現(xiàn)異常的數(shù)據(jù)特征,降低瞬時異常對局部異常檢測的影響。同時,實際生產(chǎn)環(huán)境中采集到的網(wǎng)絡(luò)流量數(shù)據(jù)量大,且存在一定噪聲數(shù)據(jù),直接基于原始網(wǎng)絡(luò)流量數(shù)據(jù)進行挖掘分析,計算和存儲成本較高,往往難以高效且有效地獲取隱藏在流量數(shù)據(jù)背后的信息[6]。本文以網(wǎng)絡(luò)流量為主要研究對象,對實際運維工作進行調(diào)研并做需求分析;再利用基于時間序列數(shù)據(jù)挖掘的方法進行網(wǎng)絡(luò)流量異常檢測,開發(fā)了一套功能豐富、操作便捷的網(wǎng)絡(luò)流量分析系統(tǒng);最后對系統(tǒng)進行實地部署并驗證運行效果。系統(tǒng)主要解決從海量的網(wǎng)絡(luò)流量數(shù)據(jù)中高效且有效地發(fā)現(xiàn)網(wǎng)絡(luò)中的異常情況,并將異常信息及時反饋給運維人員,以提升網(wǎng)絡(luò)服務(wù)的可持續(xù)性,提高用戶的幸福感、安全感和獲得度。
1 系統(tǒng)需求分析
系統(tǒng)的總體目標在于采集并分析、檢測網(wǎng)絡(luò)中的異常流量情況,配合告警模塊,及時將網(wǎng)絡(luò)環(huán)境中出現(xiàn)的異常情況反饋給相關(guān)運維人員,以便對發(fā)生的異常情況進行快速響應(yīng)、快速解決,確保網(wǎng)絡(luò)服務(wù)的持續(xù)與穩(wěn)定。系統(tǒng)主要功能模塊如圖1所示。
1.1 基礎(chǔ)數(shù)據(jù)管理
基礎(chǔ)數(shù)據(jù)管理模塊主要用來維護流量檢測的目標信息。在進行網(wǎng)絡(luò)流量采集之前,需維護設(shè)備或信息系統(tǒng)的基礎(chǔ)信息,以便后續(xù)數(shù)據(jù)采集、異常檢測分析以及統(tǒng)計等功能模塊的數(shù)據(jù)存儲與展示。此類信息主要包括樓宇、機房、機柜、服務(wù)器、虛擬機等,數(shù)據(jù)之間存在關(guān)聯(lián),便于從多維度進行數(shù)據(jù)統(tǒng)計與分析。
1.2 系統(tǒng)管理
系統(tǒng)管理模塊負責本系統(tǒng)的權(quán)限管理,采用RBAC(Role-Based Access Control) 權(quán)限設(shè)計思想,即將系統(tǒng)的功能權(quán)限與系統(tǒng)角色相關(guān)聯(lián),通過賦予系統(tǒng)用戶適當?shù)慕巧珌砣〉媒巧鶕碛械南到y(tǒng)權(quán)限。此設(shè)計思路清晰,有效降低權(quán)限管理的復雜度。主要的功能包括用戶管理、角色管理、菜單管理、部門管理和字典管理。其中,部門管理與數(shù)據(jù)權(quán)限相關(guān)聯(lián),以便控制用戶對數(shù)據(jù)的訪問權(quán)限;字典管理主要是系統(tǒng)中常用的代碼項,如設(shè)備類型、設(shè)備品牌等。
1.3 數(shù)據(jù)采集管理
數(shù)據(jù)采集是本系統(tǒng)的重要功能模塊,負責從多種渠道采集并存儲網(wǎng)絡(luò)流量數(shù)據(jù),提供流量數(shù)據(jù)采集與存儲功能,為網(wǎng)絡(luò)流量數(shù)據(jù)分析、異常檢測提供基礎(chǔ)保障。來源管理主要用于維護數(shù)據(jù)提供方的信息,此處與基礎(chǔ)數(shù)據(jù)中的服務(wù)器、虛擬機進行關(guān)聯(lián);接口管理主要維護數(shù)據(jù)采集中的第三方接口對接信息,如對接Zabbix、Prometheus等監(jiān)控平臺提供的數(shù)據(jù)獲取接口;任務(wù)管理用于數(shù)據(jù)采集定時任務(wù)的配置,包括任務(wù)的創(chuàng)建、編輯、開啟、關(guān)閉、任務(wù)監(jiān)控、刪除等功能;數(shù)據(jù)管理模塊提供網(wǎng)絡(luò)數(shù)據(jù)查詢功能,方便用戶掌握數(shù)據(jù)采集情況。
1.4 異常檢測管理
網(wǎng)絡(luò)流量異常檢測模塊是本系統(tǒng)的技術(shù)核心。如上文所述,網(wǎng)絡(luò)流量具有典型的時間序列流數(shù)據(jù)特征,因此,本模塊采用基于時間序列異常檢測技術(shù)對網(wǎng)絡(luò)流量數(shù)據(jù)進行數(shù)據(jù)分析,通過時間序列降維表征技術(shù)提高異常檢測的效率與精度。系統(tǒng)將檢測得到的異常流量數(shù)據(jù)序列存儲為特征序列,基于此特征序列,利用時間序列分類技術(shù)進行高效的異常檢測。同時,系統(tǒng)將檢測出的異常流量保存作為歷史異常記錄,便于運維人員進行故障分析和日志審計。告警管理模塊與通信平臺對接,可向運維人員以短信、郵件等形式及時反饋發(fā)現(xiàn)的異常情況。
1.5 統(tǒng)計分析
以數(shù)據(jù)表格與可視化圖表相結(jié)合的形式,將本系統(tǒng)中的各類數(shù)據(jù)進行集中展示,便于管理及運維人員整體把控網(wǎng)絡(luò)服務(wù)的運行情況。
2 系統(tǒng)總體設(shè)計
2.1 整體技術(shù)架構(gòu)設(shè)計
基于時序挖掘的網(wǎng)絡(luò)流量分析系統(tǒng)的整體技術(shù)框架采用了基于B/S架構(gòu)的多層框架模型,如圖2所示。整體上可以分為四個層次,分別為前端展示、負載均衡、后端業(yè)務(wù)邏輯和數(shù)據(jù)庫。系統(tǒng)采用當前流行的前后端分離開發(fā)框架,通過RESTful API[7]響應(yīng)業(yè)務(wù)請求,進而保證系統(tǒng)的開發(fā)效率和系統(tǒng)穩(wěn)定性。
2.2 前端技術(shù)架構(gòu)
隨著前端技術(shù)的不斷演進,前端開發(fā)的復雜度越來越高,存在著大量的DOM操作API、頁面渲染性能降低等問題,MVVM(Model-View-ViewModel) 架構(gòu)模式有效地解決了前端開發(fā)存在的問題,并將前端開發(fā)工程化,更加便于代碼管理。MVVM 架構(gòu)由Model、View和ViewModel三部分組成。Model即代表數(shù)據(jù)模型;View是指UI組件,負責頁面展現(xiàn);ViewModel主要用于同步Model和View對象?;贛VVM架構(gòu)思想,本系統(tǒng)采用了NodeJS+Webpack+VueJS的技術(shù)路線,構(gòu)成了系統(tǒng)的整體開發(fā)框架[8]。其中,ElementUI是一套基于Vue的桌面端組件庫,提供了大量組件模型,可實現(xiàn)快速頁面開發(fā),ES6作為JavaScript開發(fā)標準,使用SCSS作為前端樣式的預(yù)處理語言。最后,使用NPM對前端項目進行編譯、打包,部署到服務(wù)器即可。
2.3 負載均衡
Nginx是一款高性能、輕量級的Web和反向代理服務(wù)器,同時可以用其實現(xiàn)負載均衡。將編譯、打包完成的前端工程部署至Nginx服務(wù)器中,修改Nginx配置,包括服務(wù)器地址、端口、轉(zhuǎn)發(fā)策略等,即可打通前后端的數(shù)據(jù)交互。
2.4 后端技術(shù)架構(gòu)
本系統(tǒng)后端業(yè)務(wù)邏輯核心采用Spring Boot框架進行搭建[9-10]。Spring Boot是一款開源的基于Java語言的開發(fā)框架,其采用“約定優(yōu)于配置(Convention Over Configuration) ”的設(shè)計理念簡化了Spring應(yīng)用的開發(fā)、測試與部署。Spring Boot提供了豐富的開發(fā)組件,支持內(nèi)嵌運行容器(如Tomcat、Jetty等),自動管理依賴,且易與安全、日志等組件集成。基于Spring Boot 的后端業(yè)務(wù)邏輯開發(fā),主要分成了三個部分:控制層(toCroyn)t。roller) 、服務(wù)層(Service) 和數(shù)據(jù)訪問層(Reposi?控制層。接收來自客戶端的請求,在其內(nèi)部調(diào)用服務(wù)層相應(yīng)的業(yè)務(wù)邏輯,完成業(yè)務(wù)操作,并將處理結(jié)果返回,實現(xiàn)與前端頁面的交互。
服務(wù)層。Service主要用于處理請求中的業(yè)務(wù)邏輯,開發(fā)中每個Service均涉及為接口,每種服務(wù)都有對應(yīng)的業(yè)務(wù)邏輯實現(xiàn)。需要與數(shù)據(jù)庫操作的邏輯,通過調(diào)用數(shù)據(jù)訪問層完成。
數(shù)據(jù)訪問層。數(shù)據(jù)訪問層主要用于實現(xiàn)系統(tǒng)與數(shù)據(jù)庫的交互。本文設(shè)計并開發(fā)的系統(tǒng)采用Spring Data JPA對數(shù)據(jù)庫操作進行封裝,使用JPQL簡化數(shù)據(jù)庫操作語句,大幅降低開發(fā)成本,便于后期維護。此外,對于復雜的統(tǒng)計、分析業(yè)務(wù),本框架依然支持原生SQL查詢。
2.5 數(shù)據(jù)庫
根據(jù)用途不同,本系統(tǒng)使用三種數(shù)據(jù)庫作為底層數(shù)據(jù)支撐,分別是:MySQL、MongoDB和Redis。
MySQL。MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System, RDBMS) ,常用于Web 應(yīng)用開發(fā)。本系統(tǒng)五大功能模塊均基于MySQL 數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存取,并使用Druid 作為MySQL 數(shù)據(jù)庫連接池,實現(xiàn)對系統(tǒng)數(shù)據(jù)庫的有效監(jiān)控。
MongoDB。MongoDB 是當前流行的文檔型gNooDSBQL中數(shù)存據(jù)儲庫,適,其合數(shù)用據(jù)于以大J數(shù)SO據(jù)N字分符析串。的本形系式統(tǒng)在采M集o的n?網(wǎng)絡(luò)流量數(shù)據(jù)量龐大,且具有一次存儲、多次查詢的特點,因此,將MongoDB作為網(wǎng)絡(luò)流量原始數(shù)據(jù)存儲庫,在后續(xù)流量分析工作中,按需提取原始數(shù)據(jù)進行挖掘分析,將分析到的異常特征數(shù)據(jù)存入MySQL數(shù)據(jù)庫,可有效降低系統(tǒng)自身的運行和存儲壓力。
Redis。Redis 是一種運行于內(nèi)存中的NoSQL 數(shù)據(jù)庫,其具有結(jié)構(gòu)簡單、易于操作且運行速度快的特點。為了加快系統(tǒng)響應(yīng)速度、降低MySQL請求壓力,使用Redis作為MySQL數(shù)據(jù)庫的緩存。當用戶請求到達時,首先判斷緩存中是否存在該數(shù)據(jù),如存在,則直接將緩存中的數(shù)據(jù)返回;若不存在,則訪問MySQL數(shù)據(jù)庫獲取數(shù)據(jù),并將該數(shù)據(jù)存入緩存,再將數(shù)據(jù)返回給用戶。此外,對于分布式部署場景,為防止出現(xiàn)因服務(wù)器擴展、重啟等情況造成用戶Session丟失的情況發(fā)生,Redis還將用于實現(xiàn)Session共享。
3 系統(tǒng)實現(xiàn)
結(jié)合系統(tǒng)需求分析與整體技術(shù)框架,本章對系統(tǒng)開發(fā)過程中的核心技術(shù)進行詳細介紹,主要包括RESTful接口設(shè)計標準與實現(xiàn)、網(wǎng)絡(luò)流量采集過程以及異常流量檢測的核心算法。最后,將系統(tǒng)前后端代碼編譯、打包并部署到服務(wù)器端,截圖展示系統(tǒng)的關(guān)鍵功能。
3.1 RESTful 接口設(shè)計
FieldRinEgS博T(士Re在pr2es0e0n0ta年tio提na出l 的St一ate種軟Tr件an架sfe構(gòu)r)風是格[11R-12o]。yAPI接口是前后端分離架構(gòu)數(shù)據(jù)通信的基礎(chǔ),即前端通過API接口向后端請求數(shù)據(jù)。RESTful API即是具有REST風格的API接口設(shè)計,可有效提升代碼復用率,提高開發(fā)效率,降低出錯概率。以本系統(tǒng)中基礎(chǔ)數(shù)據(jù)管理的樓宇信息為例,表1列出了與樓宇管理相關(guān)的接口設(shè)計示例(HTTPS請求端口默認為443) 。
3.2 數(shù)據(jù)采集實現(xiàn)
網(wǎng)絡(luò)流量數(shù)據(jù)是本文設(shè)計并開發(fā)系統(tǒng)的核心研究對象,數(shù)據(jù)采集工作是進行異常流量檢測的基礎(chǔ)。在IT基礎(chǔ)設(shè)施監(jiān)控方面,目前市面上已經(jīng)有很多產(chǎn)品,如Zabbix、Prometheus、SNMP以及各硬件廠家提供的監(jiān)控平臺等[13]。為了實現(xiàn)從多種渠道獲取網(wǎng)絡(luò)流量數(shù)據(jù),本系統(tǒng)設(shè)計并實現(xiàn)了一套統(tǒng)一的數(shù)據(jù)采集接口程序,根據(jù)不同平臺提供的API 接口進行統(tǒng)一封裝,數(shù)據(jù)采集的整體流程如圖3所示。監(jiān)控平臺的基礎(chǔ)信息,包括地址、端口號、監(jiān)控參數(shù)等,由本系統(tǒng)的數(shù)據(jù)采集管理模塊中的來源管理實現(xiàn)。
用戶錄入待采集數(shù)據(jù)的設(shè)備信息后,可從監(jiān)控來源中選擇監(jiān)控平臺,即可將相應(yīng)監(jiān)控參數(shù)自動與該設(shè)備管理。由后端根據(jù)監(jiān)控參數(shù),利用相應(yīng)監(jiān)控平臺提供的API 接口方法統(tǒng)一封裝,供系統(tǒng)自身調(diào)用。最后,配合定時數(shù)據(jù)采集任務(wù),將監(jiān)控取得的數(shù)據(jù)進行解析,將解析后的數(shù)據(jù)與系統(tǒng)中設(shè)備信息關(guān)聯(lián)后,存儲至本系統(tǒng)數(shù)據(jù)庫內(nèi)。例如Prometheus監(jiān)控平臺,它提供了豐富的RESTful API來獲取監(jiān)控數(shù)據(jù)。為此,需要先維護Prometheus API的相關(guān)參數(shù),如表2所示。
Prometheus API 的響應(yīng)內(nèi)容是JSON 格式的,對JSON數(shù)據(jù)進行解析即可得到相應(yīng)數(shù)據(jù),將數(shù)據(jù)與設(shè)備信息進行關(guān)聯(lián)后存儲至系統(tǒng)數(shù)據(jù)庫。此外,本系統(tǒng)還提供了如Excel、CSV等數(shù)據(jù)文件線下數(shù)據(jù)導入功能,便于手工處理數(shù)據(jù)或進行數(shù)據(jù)遷移工作。
3.3 異常流量檢測核心算法
網(wǎng)絡(luò)流量異常檢測是本系統(tǒng)的核心算法,其實現(xiàn)了從海量、高維度的網(wǎng)絡(luò)流量數(shù)據(jù)中高效、有效地檢測出異常流量序列。如前文所述,網(wǎng)絡(luò)流量數(shù)據(jù)時間屬性天然相關(guān),具有時間序列流數(shù)據(jù)的特征。因此,系統(tǒng)在數(shù)據(jù)采集階段,對原始數(shù)據(jù)進行預(yù)處理,最終將帶有設(shè)備ID、時間戳、監(jiān)控指標、數(shù)據(jù)值等關(guān)鍵字段信息存儲至系統(tǒng)數(shù)據(jù)庫。
基于時間序列模式的異常檢測是時間序列數(shù)據(jù)挖掘的熱點研究方向之一,在先前的工作中,提出了一種基于特征符號表示的網(wǎng)絡(luò)異常流量檢測算法NAAD-FD[1]。本系統(tǒng)利用NAAD-FD算法對采集到的設(shè)備流量數(shù)據(jù)進行異常檢測分析,最終得出異常流量序列。異常檢測過程主要包含以下五個步驟:
1) 從系統(tǒng)數(shù)據(jù)庫中提取待檢測的流量數(shù)據(jù)信息,按照時間戳順序組成網(wǎng)絡(luò)流量時間序列模型NF,可形式化表示為式(1) 。
2) 對網(wǎng)絡(luò)流量時間序列模型NF 進行降維表示,將原始的數(shù)據(jù)序列轉(zhuǎn)化為包含七項特征值的數(shù)據(jù)子序列,特征值分別為子序列SNF 的符號表示值、子序列長度、最大值、最小值、均值、起始值和結(jié)束值。
3) 利用NAAD-FD 算法計算子序列間的相似度(即距離),進而根據(jù)LOF[14]算法思想,計算各子序列的平均異常指數(shù)。
4) 根據(jù)LOF的相關(guān)定義可知,若子序列的平均異常指數(shù)明顯大于1,則可判斷該子序列是異常的
5) 將NAAD-FD算法判斷得出的異常子序列存入系統(tǒng)異常特征庫中,以便對異常數(shù)據(jù)進行進一步分析。同時,本系統(tǒng)提供了異常告警模塊,可根據(jù)配置當異常指數(shù)超過一定閾值,即可向運維人員發(fā)送告警消息,以提醒及時處理異常。
綜上所述,本文研究并開發(fā)實現(xiàn)的基于時序挖掘的網(wǎng)絡(luò)流量分析系統(tǒng)整體運行流程如圖4 所示。
3.4 系統(tǒng)實現(xiàn)與運行效果
1) 基礎(chǔ)數(shù)據(jù)管理?;A(chǔ)數(shù)據(jù)管理模塊實現(xiàn)了流量檢測目標信息的數(shù)據(jù)維護,包括樓宇、機房、機柜、服務(wù)器、虛擬機等信息。在編輯服務(wù)器或虛擬機等設(shè)備信息時,除維護設(shè)備名稱、序列號、型號等基本信息外,還可與監(jiān)控平臺實現(xiàn)關(guān)聯(lián),便于在數(shù)據(jù)采集模塊設(shè)置采集任務(wù)。圖5為系統(tǒng)中機房信息維護的實際界面。
2) 數(shù)據(jù)采集管理。數(shù)據(jù)采集管理模塊實現(xiàn)了多渠道數(shù)據(jù)采集與存儲流量數(shù)據(jù)。通過接口管理將如Zabbix、Prometheus等監(jiān)控平臺接入系統(tǒng),設(shè)備信息與監(jiān)控平臺接口進行對接,通過API采集并存儲流量數(shù)據(jù),以供異常分析使用。圖6為系統(tǒng)中數(shù)據(jù)采集接口管理的實際界面。
圖7所示為數(shù)據(jù)采集任務(wù)管理,通過該功能可定時采集設(shè)備上的監(jiān)控數(shù)據(jù),同時提供了采集日志功能,方便了解采集情況以及日志審計。
3) 異常檢測管理。以系統(tǒng)采集并存儲的流量數(shù)據(jù)為研究基礎(chǔ),異常檢測模塊實現(xiàn)了基于時間序列數(shù)據(jù)挖掘的異常流量檢測分析。首先將流量數(shù)據(jù)轉(zhuǎn)換為時間序列模式,然后將原始流量數(shù)據(jù)降維表示成具有7項特征值的特征表示形式,利用基于LOF密度的異常檢測方法計算得出各特征序列的局部密度值,進而分析得出異常流量序列。采用該異常檢測模式,有效提升了異常檢測精度與檢測效率。系統(tǒng)將異常序列數(shù)據(jù)進行集中存儲,便于對流量的行為特征進行深入分析。圖8所示為異常數(shù)據(jù)信息庫的實際界面。
4 結(jié)束語
在當前網(wǎng)絡(luò)安全的嚴峻形勢下,本文針對網(wǎng)絡(luò)流量異常檢測展開研究,從基礎(chǔ)數(shù)據(jù)管理、監(jiān)控平臺對接、數(shù)據(jù)采集與存儲、異常流量檢測分析等角度進行需求分析,利用VueJS、Spring Boot、MySQL、MongoDB 等技術(shù),設(shè)計并開發(fā)了一套穩(wěn)定、高效、易操作的基于時間序列數(shù)據(jù)挖掘技術(shù)的網(wǎng)絡(luò)流量分析系統(tǒng),經(jīng)過單元測試、功能測試,確保系統(tǒng)內(nèi)各項功能的穩(wěn)定性、兼容性與安全性得到保障。本系統(tǒng)基于時間序列異常檢測技術(shù),從網(wǎng)絡(luò)流量整體角度出發(fā),分析局部范圍內(nèi)的流量相對于整體流量的異常程度,進而發(fā)現(xiàn)一段時間區(qū)域內(nèi)的異常,為IT管理人員提供了高效、有效的網(wǎng)絡(luò)流量分析建議,為確保實現(xiàn)持續(xù)、穩(wěn)定的高質(zhì)量網(wǎng)絡(luò)服務(wù)提供有力保障。
對于發(fā)現(xiàn)的異常流量,本系統(tǒng)將其特征進行存儲,在后續(xù)的研究工作中,可利用基于時序分類、相似性檢索、深度學習等異常檢測技術(shù)進一步提升異常檢測精度與效率。