連 棟,賈寶林
(上海工業(yè)自動化儀表研究院有限公司,上海 200233)
在工業(yè)控制系統(tǒng)和互聯(lián)網(wǎng)深入融合的背景下,越來越多的工控網(wǎng)絡(luò)暴露在外界網(wǎng)絡(luò)中[1],及時、準確地發(fā)現(xiàn)工控網(wǎng)絡(luò)中的安全隱患成為當務(wù)之急。工控網(wǎng)絡(luò)流量可視化系統(tǒng)根據(jù)不同的業(yè)務(wù)場景對工控網(wǎng)絡(luò)中的流量進行針對性的聚合分析,在交互頁面進行展示,可以幫助用戶及時發(fā)現(xiàn)可能存在的隱患,從而有效降低工控網(wǎng)絡(luò)被攻擊的風險。
工控網(wǎng)絡(luò)流量可視化系統(tǒng)是在工業(yè)控制系統(tǒng)和互聯(lián)網(wǎng)深入融合的背景下設(shè)計的[2]。為了幫助用戶及時發(fā)現(xiàn)和防范工控網(wǎng)絡(luò)的異常流量行為,需要設(shè)計一款適用于工控網(wǎng)絡(luò)的流量可視化軟件,對不同業(yè)務(wù)維度下的流量信息進行可視化展示,從而幫助用戶對異常流量行為進行捕獲和分析。通過對市場的調(diào)研,不難發(fā)現(xiàn)客戶對于異常流量所屬的目標機器、信息來源、所屬應(yīng)用等信息最為敏感,所以在進行軟件設(shè)計時需要將市場需求相關(guān)的業(yè)務(wù)結(jié)合到該軟件中,進行統(tǒng)一的開發(fā)和管理。目前,該系統(tǒng)已經(jīng)實現(xiàn)了網(wǎng)絡(luò)流量基于用戶、應(yīng)用、流量、鏈接數(shù)的分類展示,同時可以實現(xiàn)流量信息在不同分類下的相互關(guān)聯(lián)。這樣不僅可以幫助用戶快速查找和定位異常流量行為,還可以幫助用戶進行數(shù)據(jù)分析,制定相應(yīng)的防范措施[3]。
為了幫助用戶更好地制定防范措施,該可視化系統(tǒng)通過實時流量和歷史流量兩個維度對數(shù)據(jù)進行可視化展示。在實時模塊中,對實時流量按照應(yīng)用、用戶、應(yīng)用組進行分類展示,三者之間可以進行關(guān)聯(lián)查詢和可視化展示。在歷史模塊中,對歷史流量信息按照用戶、應(yīng)用、應(yīng)用組、應(yīng)用鏈接數(shù)、用戶鏈接數(shù)進行分類展示,同時不同的分類之間可以進行關(guān)聯(lián)查詢和可視化展示,以此幫助用戶更加直觀地查看工控網(wǎng)絡(luò)的流量信息。
工控網(wǎng)絡(luò)的流量信息具有數(shù)據(jù)來源雜、數(shù)據(jù)目標多、應(yīng)用類型豐富、數(shù)據(jù)量大等特點[4]。因此,工控網(wǎng)絡(luò)流量可視化系統(tǒng)作為一個面向工控網(wǎng)絡(luò)的流量分析、聚合、展示工具,需要滿足工控網(wǎng)絡(luò)的使用情況,在較短的時間內(nèi)能夠?qū)Υ罅康牧髁繑?shù)據(jù)進行不同業(yè)務(wù)維度的分析、聚合和存儲,從而保證展示系統(tǒng)中數(shù)據(jù)的真實性。本文提出一種貫穿整個系統(tǒng)的設(shè)計方法,主要包括需求調(diào)研、數(shù)據(jù)分析、架構(gòu)設(shè)計、部署測試四個部分。每個部分都著重考慮用戶的易用性及系統(tǒng)的有效性,以滿足用戶預(yù)期。
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)的安全問題已經(jīng)上升到國家戰(zhàn)略的高度。與此同時,隨著工業(yè)4.0、智能制造2025、5G等計劃的不斷實施,工控網(wǎng)絡(luò)已經(jīng)廣泛應(yīng)用于各類工業(yè)場景,是國家基礎(chǔ)設(shè)施建設(shè)的重要組成部分[5]。工控網(wǎng)絡(luò)作為一個國家工控系統(tǒng)的核心,其安全防范工作一直是重中之重。為了保障工業(yè)現(xiàn)場設(shè)備的信息安全,除了需要對工控現(xiàn)場的數(shù)據(jù)進行采集和保存外,還需要對工控網(wǎng)絡(luò)中的數(shù)據(jù)進行不同業(yè)務(wù)層面的聚合分析,通過可視化的界面在終端進行展示,幫助客戶在不同業(yè)務(wù)維度對工控網(wǎng)絡(luò)有一個直觀的了解,也便于用戶及時地發(fā)現(xiàn)和防范網(wǎng)絡(luò)安全問題。
針對工控網(wǎng)絡(luò)中數(shù)據(jù)雜亂且數(shù)據(jù)量大的特性,需要根據(jù)數(shù)據(jù)中的信息來源、信息目標、應(yīng)用類型等對數(shù)據(jù)進行基本的分類,便于用戶對數(shù)據(jù)進行梳理展示,同時將不同分類下的數(shù)據(jù)進行關(guān)聯(lián),便于用戶更好地分析數(shù)據(jù)特性。為此,不僅要將實時的數(shù)據(jù)以可視化的方式進行展示,還要對數(shù)據(jù)進行保存,為用戶提供歷史數(shù)據(jù)層面的可視化展示,幫助用戶追溯數(shù)據(jù)信息。
通過對工控網(wǎng)絡(luò)中的數(shù)據(jù)進行捕獲分析可知,其中包含了數(shù)據(jù)源MACIP端口、數(shù)據(jù)目的MAC\IP\端口、數(shù)據(jù)應(yīng)用類型等信息。數(shù)據(jù)源信息可以理解為用戶信息,數(shù)據(jù)目的信息是設(shè)備信息,應(yīng)用信息可以理解為指令操作信息。由此,可以對數(shù)據(jù)按照用戶、設(shè)備、應(yīng)用等進行基礎(chǔ)的分類[6]。
對數(shù)據(jù)進行聚合分析時,單獨一條數(shù)據(jù)是沒有意義的。因此,需要對數(shù)據(jù)進行定量操作,在數(shù)據(jù)流的角度上分析數(shù)據(jù)。在保證用戶感受到數(shù)據(jù)實時性的情況下,確保不丟失重要的信息;在達到機器性能約束的前提下,進行最大限度的實時數(shù)據(jù)計算[7]。
在進行數(shù)據(jù)分析時,首先要對用戶的需求進行細化,具體到每一個數(shù)據(jù)指標。按照不同的業(yè)務(wù)需求對數(shù)據(jù)指標進行組合,將工控網(wǎng)絡(luò)中的數(shù)據(jù)進行統(tǒng)一處理,按照統(tǒng)一的精度和格式進行輸出。然后根據(jù)不同指標之間的關(guān)聯(lián)性進行聚合分析,將分類信息和聚合信息按照統(tǒng)一的樣式在可視化界面進行展示。
對需求進行分析后,基本已經(jīng)確定需要展示在頁面上的數(shù)據(jù)信息。接下來,需要進行詳細的系統(tǒng)架構(gòu)設(shè)計和功能設(shè)計,以滿足可視化頁面的數(shù)據(jù)需求。此階段需要考慮業(yè)務(wù)模塊的劃分、各個業(yè)務(wù)的時間閾值、各個業(yè)務(wù)的數(shù)據(jù)處理邏輯等多方面的因素,設(shè)計出較為合理的系統(tǒng)架構(gòu)。同時,要考慮數(shù)據(jù)處理時的高效性、實時性和易用性。在設(shè)計架構(gòu)后,根據(jù)測試效果對系統(tǒng)進行完善和優(yōu)化。
首先,對計算流量的數(shù)據(jù)源模塊進行設(shè)計。系統(tǒng)對工控網(wǎng)絡(luò)中的流量數(shù)據(jù)進行捕獲和結(jié)構(gòu)化解析,并對解析后的數(shù)據(jù)進行定時存儲。考慮到數(shù)據(jù)的實時性,需要將數(shù)據(jù)存儲到內(nèi)存式數(shù)據(jù)庫Redis中。因此,流量可視化系統(tǒng)需要定時從Redis中獲取一次實時數(shù)據(jù),然后再將實時數(shù)據(jù)轉(zhuǎn)發(fā)到數(shù)據(jù)預(yù)處理隊列。為了適配特殊情形,需要判斷數(shù)據(jù)是否存在,當數(shù)據(jù)不存在時返回空數(shù)據(jù)。
在進行業(yè)務(wù)功能模塊劃分時,需要考慮不同業(yè)務(wù)之間的關(guān)聯(lián)性、代碼的復(fù)用性、交互的高效性,對模塊進行最小且互斥的劃分。在不同的業(yè)務(wù)需求下,只需對不同功能模塊進行聚合。根據(jù)上述分析,本系統(tǒng)將開發(fā)實時流量鏈接數(shù)會話、實時應(yīng)用、實時用戶、實時應(yīng)用組、統(tǒng)計信息、歷史流量、歷史鏈接數(shù)等模塊。因為模塊之間的互斥性,每個模塊在數(shù)據(jù)預(yù)處理中進行的業(yè)務(wù)操作互不沖突且相互補充。按照不同的業(yè)務(wù)構(gòu)造基本的應(yīng)用、用戶、應(yīng)用組等信息集,然后按照不同業(yè)務(wù)的時間聚合標準,在不同的時間觸發(fā)機制下,對信息集進行匯整,下發(fā)到各自的業(yè)務(wù)處理隊列中。考慮到信息集對于上一輪數(shù)據(jù)的依賴性,需要在數(shù)據(jù)下發(fā)到指定的隊列后,構(gòu)造相應(yīng)的臨時信息對剛剛下發(fā)的信息進行保存,存儲到Redis中,方便數(shù)據(jù)的下一輪分析。系統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure diagram
對于統(tǒng)計規(guī)則的業(yè)務(wù),只需從相應(yīng)的隊列中獲取信息集,按照syslog方式向指定的服務(wù)器進行數(shù)據(jù)傳輸,為其他業(yè)務(wù)提供數(shù)據(jù)支撐。對于實時流量鏈接數(shù)會話、實時應(yīng)用、實時用戶、實時應(yīng)用組等業(yè)務(wù),需要按照業(yè)務(wù)需求,從相應(yīng)的隊列中獲取信息集。若需要進行聚合分析,則將隊列中的數(shù)據(jù)進行關(guān)聯(lián)分析,將結(jié)果存儲到Redis中,以便快速響應(yīng)頁面需求。對于歷史流量的相關(guān)業(yè)務(wù),需要從相應(yīng)的數(shù)據(jù)隊列中獲取信息集,按照需求對數(shù)據(jù)進行匯整,然后轉(zhuǎn)存到MySQL中進行保存(因為歷史信息的數(shù)據(jù)量較大,且數(shù)據(jù)展示的實時性要求不高,故而采用硬盤式數(shù)據(jù)庫MySQL)。當頁面對歷史流量信息進行相關(guān)的請求時,從MySQL中獲取匯整后的歷史流量信息,按照業(yè)務(wù)需求進行聚合,然后在頁面上進行展示。
系統(tǒng)架構(gòu)設(shè)計與代碼開發(fā)完成后,需要對該系統(tǒng)進行部署測試,驗證設(shè)計的合理性,并對出現(xiàn)的問題進行調(diào)試修改,以此取得最佳的用戶體驗。部署測試主要包括功能測試、性能測試、數(shù)據(jù)準確性測試三個部分[8]。部署測試既可以在實際的工控網(wǎng)絡(luò)中進行,又可以在隔離的虛擬環(huán)境下進行。通過虛擬出大量的工控設(shè)備進而模擬出現(xiàn)實的工控網(wǎng)絡(luò)環(huán)境,在模擬環(huán)境中進行測試不僅可以方便數(shù)據(jù)準確性的測試,也不會對實際的工控網(wǎng)絡(luò)產(chǎn)生影響。
功能測試主要用于驗證客戶所提及的每個需求都在該系統(tǒng)中得到了實現(xiàn),以及是否在交互頁面進行了良好的效果展示。性能測試主要用于測試該系統(tǒng)在數(shù)據(jù)量大、數(shù)據(jù)種類多的情形下能否及時對數(shù)據(jù)進行處理,實時地將數(shù)據(jù)分析結(jié)果展示在交互界面上。數(shù)據(jù)準確性測試主要用于測試該系統(tǒng)在各類情況下是否會對數(shù)據(jù)進行全面的分析,保證數(shù)據(jù)的可信度。通過部署測試及后續(xù)的優(yōu)化,整個系統(tǒng)達到預(yù)期的效果,基本符合設(shè)計要求。
本文為某地區(qū)部門設(shè)計的工控網(wǎng)絡(luò)流量可視化系統(tǒng),經(jīng)上級主管部門批準,對指定范圍內(nèi)的網(wǎng)絡(luò)設(shè)備進行可視化流量處理,并將處理結(jié)果在終端界面上進行展示。根據(jù)用戶的需求,需要將工控網(wǎng)絡(luò)中的流量數(shù)據(jù)按照實時流量、歷史流量兩個維度和應(yīng)用、用戶、應(yīng)用組等分類進行聚合分析。故系統(tǒng)在設(shè)計之初對工控數(shù)據(jù)進行了最小指標的數(shù)據(jù)拆分,從數(shù)據(jù)可靠性、易用行、實時性、準確性等方面考慮,采用多線程的方式對各類指標進行數(shù)據(jù)拆分和聚合運算。在此基礎(chǔ)上得出了該系統(tǒng)最終的架構(gòu)方案。按照上述設(shè)計方案對該系統(tǒng)進行開發(fā)測試,在10 Mbit/s流量的工業(yè)模擬環(huán)境中,各項功能展示頁面的響應(yīng)時間保持在10 ms量級,充分滿足了客戶的需求。以此為依據(jù),本文完成了該部門工控網(wǎng)絡(luò)流量可視化系統(tǒng)的定制化開發(fā)和部署工作[9]。
本文提出的工控網(wǎng)絡(luò)流量可視化系統(tǒng)的設(shè)計方法,通過需求調(diào)研、數(shù)據(jù)分析、架構(gòu)設(shè)計和測試部署等一整套流程,設(shè)計出有效的工控網(wǎng)絡(luò)流量可視化系統(tǒng)。對工控網(wǎng)絡(luò)中的數(shù)據(jù)進行分析展示,可以及時、有效地發(fā)現(xiàn)可能存在的威脅,幫助客戶更好地對網(wǎng)絡(luò)風險進行防護[10-12]。該設(shè)計過程在一定程度上可以為流量可視化系統(tǒng)設(shè)計者提供設(shè)計流程上的參考,也可以為流量可視化系統(tǒng)設(shè)計人員在架構(gòu)設(shè)計方面提供一種可行的方案。