郭帥鵬
(河南省陸渾水庫運行中心,河南 洛陽 471000)
水利樞紐關系著中國經濟和社會的快速發展,是全國重要的基礎設施。水利樞紐系統主要是實現水利系統的調整控制命令、符合調度、運行操作和實時監視等功能。國內外學者對此進行大量的研究,王盛等根據樂昌峽水利樞紐工程安全監測設計成果,研究了樂昌峽水利樞紐安全監測系統設計思路與要點;劉兆楠等結合具體的案例,探討了水利樞紐工程安全監測系統的重要性,設計了水利樞紐工程安全監測系統;楊軍等設計了西藏滿拉水利樞紐工程安全監測自動化系統改造;李瑞有等設計了長江三峽水利樞紐建筑物安全監測決策支持系統,系統主要包括三個面向用戶的功能分系統,信息管理分系統。基于此,文章設計了水利樞紐系統安全風險評估系統,系統結構主要由表現層、業務層和數據支持層組成。
根據目前水利樞紐系統安全狀況,還存在現場檢測和維護難的問題,且維護人員缺少專業的安全意識和知識,因此,系統實現的目標主要如下。
①為了便于水利樞紐工控維護人員能夠合理正確地使用此系統,需要建立兩盒人幾乎交界面,該界面能夠實現用戶的操作日志記錄、用戶的管理、登錄等共功能。
②需要對脆弱性識別的結果進行風險評估,對水利樞紐工控系統入侵路徑、待保護對象、攻擊源劃分不同的安全級別,建立風險評估模型,從而進行風險評估。
③為了能夠評估目標工控設備承受高速率數據包和接收的能力,通過畸形工控協議數據包找到系統的漏洞,應建立風暴測試和脆弱性2種測試類型。
④由于目標設備需要根據多維測試用例的生成過程需求,對自身狀態進行調整,及時記錄測點斷點的位置,因此,系統需要具備對測試目標設備的網絡運行監控的功能。
⑤根據目標設備的底層協議頭部,建立符合通信協議規范的數據包,并發送至測試目標設備。系統需要實現自動執行功能。
⑥為了識別深層和潛在漏洞和提高模糊測試,系統需要實現多維模糊測試自動生成功能。
⑦為了提高系統模糊測試效率,通過已知的協議規范生成測試,支持通過源數據生成的測試試用例,系統需要實現對已知的工控協議規范導入的功能。
⑧由于水利樞紐工作人員缺乏相關能力(安全技術、工控通信協議知識),需要手動解析工控通信協議,耗時又費力。因此,系統能夠實現生成高效的測試試用例的協議解析腳本,以及工控數據的自動解析的功能。
⑨水利樞紐系統需要通過畸形的工控協議數據包來測試工控設備的健康性。因此,系統要求實現自動采集功能,能夠生成工控協議數據幀集。
系統主要由表現層、業務層和數據支持層組成。設計系統結構如圖1所示。

圖1 設計系統結構圖
2.2.1 客戶段模塊設計
主要由登錄模塊、設備管理模塊、測試過程管理模塊、測試資源管理模塊、安全風險評估模塊、用戶管理模塊和系統日志模塊組成。
2.2.2 服務端模塊設計
主要由數據采集模塊、舍爾被掃描模塊、協議解析模塊、協議規范模塊、測試用例生成模塊、測試執行器、監視器和風險評估模塊組成。安全風險評估系統服務端功能模塊實現關系如圖2所示。

圖2 安全風險評估系統服務端功能模塊實現關系圖
文章重點分析了數據采集模塊、設備掃描模塊、測試執行器模塊。
采用jNetPcap庫來實現數據的采集,捕獲工作站、HMI、控制服務器等控制設備與工控設備間的數據包。工控協議數據采集實現流程略。
設備掃描模塊主要由3 種模式組成:基于UDP 協議的ICMP 報文不可達掃描、基于TCP 協議的端口掃描、基于ICMP數據包的在線設備掃描。設備掃描模塊實現流程圖略。
主要是根據測試的配置信息送發到目標設備,并實現功能對工控協議數據幀的協議進行封存。測試執行器模塊實現流程圖略。
系統采用B/S架構實現的,利用MyAQL后端數據庫。協議解析腳本如下:①字段:AnalysisID;描述:協議解析腳本編號;類型(長度):unsigned int;鍵:是;是否允許為空:否。②字段:SourceDataID;描述:源數據編號;類型(長度):unsigned int;鍵:外鍵;是否允許為空:否。③字段:SourceDataSeq;描述:分組序號;類型(長度):unsigned int;鍵:否;是否允許為空:否。④字段:LinkProType;描述:述:數據鏈路層協議類型;類型(長度):varchar(40);鍵:否;是否允許為空:是。⑤字段:NetProType;描述:網絡層協議類型;類型(長度):varchar(40);鍵:否;是否允許為空:是。⑥字段:TranProType;描述:傳輸層協議類型;類型(長度):small int;鍵:否;是否允許為空:是。⑦字段:Port;描述:端口號;類型(長度):unsigned int;鍵:否;是否允許為空:是。⑧字段:Time;描述:協議解析時間;類型(長度):varchar(40);鍵:否;是否允許為空:否。⑨字段:UserName;描述:用戶名.;類型(長度):varchar(40);鍵:否;是否允許為空:否。⑩字段:UserID;描述:用戶編號;類型(長度):unsigned int;鍵:外鍵;是否允許為空:否。字段:AnalysisScriptPath;描述:存放路徑;類型(長度):varchar(128);鍵:否;是否允許為空:否。
文章使用測試用例表來描述測試執行中的案例,系統漏洞信息情況如下。①字段:VulnerID;描述:漏洞編號;類型(長度):unsigned int;鍵:主鍵;是否允許為空:否。②字段:DeviceID;描述:設備編號;類型(長度):unsigned int;鍵:外鍵;是否允許為空否。③字段:ProTestCaseID;描述:測試用例編號;類型(長度):unsigned int;鍵:外鍵;是否允許為空:否。④字段:ConV ulnerID;描述:預配置漏洞編號;類型(長度):unsigned int;鍵:外鍵;是否允許為空:否。⑤字段:UserName;描述:用戶名;類型(長度):varchar(40);鍵:否;是否允許為空:否。⑥字段:DiscoverDate;描述:發現日期;類型(長度):Date;鍵:否;是否允許為空:否。
通過分析了水利樞紐系統安全風險評估系統的需要,設計了水利樞紐系統安全風險評估系統,主要由表現層、業務層和數據支持層組成,最后設計了數據庫。水利樞紐系統安全風險評估系統的設計為水利樞紐系統安全提供重要的技術支持和借鑒。