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

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