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