梁建輝,侯昱輝,劉潤福,何靖剛,李志強
(中國鐵路蘭州局集團有限公司 信息技術所,蘭州 730000)
近年來,鐵路信息網絡受到的外部攻擊量不斷增長,安全形勢日益嚴峻,對運輸生產安全造成潛在威脅。國家“十四五”規劃和2035年遠景目標綱要[1]提出了建設數字中國的方針,建設智能鐵路,全面加強網絡安全體系和保障能力建設[2]。高速鐵路大規模建設以來,我國鐵路裝備的智能化和信息化程度越來越高,新技術的應用及大量的互聯網出口,使得鐵路網絡環境越來越復雜化、多樣化、邊界模糊化,鐵路網絡安全環境面臨著嚴峻挑戰。鐵路作為重要的交通基礎設施,信息化程度較高,也是網絡攻防戰中被攻擊的重點目標之一,面向鐵路的攻擊方式也從單一的掃描滲透攻擊轉為復雜的高級持續性威脅(APT,Advanced Persistent Threat)攻擊[3]。
網絡安全靶場是進行新型網絡攻擊技術檢驗、網絡安全競賽、網絡安全人才培養的重要工具。美國早于2008年發布了關于開展“國家網絡安全靶場”項目研發工作的通知,并同時啟動國家賽博靶場建設項目[4]。2016年美國白宮公布了《網絡安全國家行動計劃》,再次對網絡基礎設施水平、專業人才隊伍建設等5個方面作出全面提升[5]。而我國的網絡安全靶場產業發展與國際水平還存在差異,國內一些科研機構及高校建立了一些滿足特定需求的網絡安全靶場[6-7],但尚缺少面向鐵路行業的網絡安全靶場。
為此,本文基于Docker技術,設計了集網絡安全競賽、仿真滲透測試、網絡安全人才培養等功能為一體的網絡安全靶場。
網絡安全靶場采用容器化分布式架構,遵循分層設計理念,將板塊設計細化為數據資源層、功能實現層及應用代理層,如圖1所示。

圖1 網絡安全靶場總體架構
1.1.1 數據資源層
數據資源層內容包括比賽庫、網絡安全培訓題庫、仿真題庫、MariaDB及Redis緩存5部分,數據資源采用容器方式實現。其中,MariaDB用于存儲用戶的登錄信息、答題信息、積分排行榜及靶場配置信息等;Redis用于緩存用戶登錄憑證、動態靶機的ID及端口號等,為不需要頻繁更新的數據提供緩存服務,從而加快靶場響應時間,提升用戶使用體驗。
1.1.2 功能實現層
網絡安全靶場、動態靶機及Frp Client是功能實現的關鍵組件,均以容器方式運行,可充分發揮容器輕量級、快速部署、快速恢復、易擴容的優勢。其中,網絡安全靶場通過使用傳輸層安全協議加密的Docker應用程序接口連接Docker Swarm集群,控制動態靶機的生成與銷毀;動態靶機底層環境使用Docker Swarm 集群,通過Frp Client程序將靶機端口進行映射,實現在網站前端點擊按鈕,即可生成用戶專屬靶機,避免因共享環境而影響用戶使用體驗,可提高網絡安全比賽時公平性,同時方便后續擴展Swarm集群節點,提升靶場整體性能。
1.1.3 應用代理層
該層主要負責靶場與用戶間的交互。多個網絡安全靶場容器通過Nginx做反向代理負載均衡,使用IP Hash負載均衡算法來分配用戶所訪問到的靶場容器,并利用Nginx緩存靜態資源,在一定程度上增加吞吐量、提高靶場可用性并提升靶場響應時間。
不同角色用戶通過Web頁面登錄、訪問靶場,可得到不同的靶場使用權限。Frp用于反向代理,包括服務器端Frp Server和客戶端Frp Client。應用代理層中的Frp Server通過與功能實現層中各類型靶機的Frp Client程序連接,以反向代理的方式,可使不同子域名或用同一IP的不同端口訪問到對應的靶機。
網絡安全靶場網絡環境部署如圖2所示。

圖2 網絡安全靶場網絡環境部署
用戶通過終端交換機可直接與網絡安全靶場實現網絡互通。由于服務器底層均采用Docker Swarm技術,因此搭建網絡安全靶場的服務器數量不受限制,后續可根據用戶數量動態擴展節點,提高靶場同時在線用戶數。服務器1主要運行網絡安全靶場平臺、MariaDB、Redis、Frp Server 4種類型的容器,用于搭建靶場網站,網絡安全靶場容器直接映射網站端口提供服務。其余服務器主要用于運行Frp Client容器及給用戶下發動態靶機,3種類型的動態靶機通過Frp Client與服務器1上的Frp Server相連接,通過Frp程序反向代理動態靶機,用戶即可通過服務器1的不同端口號訪問對應靶機。
基于Docker的網絡安全靶場可實現以下功能。
(1)網絡安全競賽功能。該靶場可作為奪旗賽(CTF,Capture The Flag)平臺,采用動態獨立靶機技術,每道動態靶機題目被開啟后,會自動生成一個虛擬題目環境,并為每個用戶生成一個獨一無二的Flag,可防止作弊行為。當題目完成后,用戶可將動態靶機銷毀,網絡安全靶場會快速釋放動態靶機所占系統資源,以便其他用戶快速生成動態靶機。
(2)仿真環境滲透測試功能。通過添加仿真環境容器鏡像,可快速生成仿真環境動態靶機;通過對仿真環境靶機的滲透測試和反復攻擊,可提升網絡信息系統相關人員的實戰技能水平;根據對仿真環境靶機的滲透測試,發現鐵路系統中可能存在的安全漏洞和風險,找到鐵路安全防護中的短板,可優化防御策略,提高相關人員的網絡安全防御能力和意識。
(3)網絡安全人才培訓功能。靶場可作為日常網絡安全理論知識及網絡安全實操的學習平臺,為不同水平、不同類型的用戶提供難度逐步進階的課程及實操環境,使其逐步掌握網絡安全的理論知識、實操技能及攻防技戰法,從而提高鐵路行業網絡安全人才的培養效能。
Docker使用Linux虛擬網絡技術,Docker 中的每個網絡接口默認都是虛擬的接口。容器之間要相互通信的前提是兩者必須有屬于同一個網絡的網卡。網絡安全靶場中所有關鍵模塊及動態獨立靶機均以Docker 容器的形式存在,容器之間資源是相互隔離的。靶場使用Docker容器網絡控制動態獨立靶機及各容器之間的連通與隔離,使用Docker Compose定義和運行多容器網絡。
網絡安全靶場包含CTF、MariaDB、Redis緩存、Frp Server、Frp Client共5個容器組件。其中,容器CTF即網絡安全靶場平臺網站;用戶的個人信息和答題信息等存儲到MariaDB容器中;緩存數據存儲到Redis容器中;Frp Client與Frp Server容器通過Frp網絡相互連接,用于反向代理Web、Pwn及仿真環境這3種類型的動態靶機。靶機控制開啟銷毀模塊由Python腳本完成,通過網絡安全靶場管理界面進行統一管理和控制。網絡安全靶場容器架構如圖3所示。

圖3 網絡安全靶場容器架構
Frp網 絡、Internal網 絡 和Default網 絡 都 以Bridge橋接模式連接。其中,Internal網絡為容器內部通信網絡,用于網絡安全靶場與MariaDB、Redis緩存間的通信,不對外提供端口映射;Default網絡為網絡安全靶場容器的Web界面所在網絡,對外提供端口映射,可創建多個網絡安全靶場容器,并使用Nginx做負載均衡及緩存;Frp網絡為Frp Client與Frp Server程序所使用,通過Frp程序的反向代理功能可將動態靶機通過Default容器網絡對外提供端口映射。
Docker Swarm是 Docker的集群管理工具,它的主要作用是把多個Docker主機作為一個整體來進行管理,通過一個入口管理多個Docker主機上的資源[8]。任何安裝Docker的主機都可以使用Docker Swarm功能快速擴展多個主機。網絡安全靶場利用Docker Swarm的集群管理能力,能夠將題目容器分發到不同的節點上運行。用戶每次請求啟動題目容器時,靶場將根據Swarm調度算法,選出適合的節點運行該題目容器。
網絡安全靶場采用了動態獨立靶機技術。每個動態獨立靶機存在的時間可由參賽隊伍進行設置,防止空閑靶機占用系統資源。靶機可隨時延長時間或銷毀,方便用戶使用全新的環境進行測試。動態獨立靶機通過 Frp提供容器端口映射,服務端部署的Frp Server程序通過Frp Client應用程序接口,使用基本身份驗證控制動態獨立靶機端口,該程序能夠安全、便捷地將動態獨立靶機對外提供服務的IP暴露給用戶。
本文設計的網絡安全靶場已成功應用于中國鐵路蘭州局集團有限公司,取得的效果如下。
(1) 在網絡安全人才的培養選拔方面,該靶場已用于舉辦網絡信息系統職業技能競賽,有利于發掘網絡安全人才、建立完善的網絡安全人才培養體系。
(2) 在網絡安全日常培訓方面,該靶場已用于開展日常網絡安全理論知識學習、網絡安全競賽知識學習、網絡安全滲透測試實戰學習等,進一步提高了鐵路網絡信息系統相關技術人員網絡安全技能和攻防技能。
(3) 在仿真環境滲透測試方面,該靶場已用于構建部分業務應用系統運行環境并進行仿真測試,有利于預先發現網絡安全隱患,降低測試成本。
本文設計了基于Docker技術的網絡安全靶場,該靶場可用于日常的網絡安全學習、競賽、仿真環境滲透測試等,有助于鐵路行業開展網絡安全人才的培訓選拔、內部攻防演習、網絡安全日常培訓等工作,進而為鐵路網絡安全管理提供技術支撐,為下一步開展鐵路網絡安全靶場體系構建提供參考。