在工業控制系統(ICS)與營運技術(OT)的資安防護領域,網路區段化是實現縱深防禦的基石。傳統上,IT 與 OT 網路的融合帶來了效率,卻也擴大了攻擊面,使得來自企業網路的威脅能輕易橫向移動至生產控制層。Purdue 模型為此提供了一個標準化的分層框架,旨在透過嚴格的網路隔離與存取控制,限縮威脅擴散的路徑。本篇文章將此理論模型應用於虛擬化環境,展示如何在 ESXi 平台上模擬一個符合 Purdue 架構的 ICS 網路。此舉不僅能重現真實工業場域的網路拓撲,更能建立一個可控且安全的沙箱環境,用以研究、測試和驗證針對不同層級的攻擊手法與防禦策略,從而深化對 ICS 資安實務的理解。
軟體套件更新與安裝:Kali Linux的準備
與Ubuntu虛擬機器類似,部署完成的Kali Linux也需要進行系統更新和安裝必要的套件。
Kali Linux軟體套件安裝:
- 系統更新與升級: 登入Kali Linux後,執行以下命令:
sudo apt update
sudo apt upgrade
這將確保您的Kali Linux系統擁有最新的安全補丁和軟體版本。
- 安裝類似的工業協議相關套件: 雖然Kali Linux已預裝了大量工具,但為了與我們的ICS實驗室更好地整合,並確保所有必要的工業協議相關工具都已到位,玄貓建議安裝與Ubuntu偽PLC/SCADA類似的Python套件:
sudo apt install git
sudo apt install vsftpd
sudo apt install telnetd
sudo apt install openssh-server
sudo apt install php7.4-cli # 如果需要模擬Web介面
sudo apt install python3-pip
pip3 install twisted
pip3 install testresources
pip3 install pytest
pip3 install cpppo
pip3 install pymodbus
同樣,您也可以克隆並編譯mbtget工具。
透過這些步驟,我們已經成功部署了所有核心虛擬機器,並為其安裝了初步的軟體環境。接下來的重點將是網路區段的精細配置,以實現不同虛擬機器之間的隔離和通訊控制,從而完整模擬Purdue模型下的工業控制網路架構。這將是我們ICS安全實驗室的最終成型階段。
ICS網路區段化:Purdue模型實踐與IP位址規劃
Purdue模型與網路分層:
Purdue模型提供了一個標準化的框架,用於將工業控制網路劃分為不同的安全層級。玄貓將其應用於我們的實驗室環境:
- 第5層:企業層(Enterprise):通常是企業IT網路,與網際網路連接。在我們的實驗室中,Kali Linux攻擊主機將模擬此層級,作為外部攻擊者或安全分析師的起點。
- 第4層:站點業務系統層(Site Business Systems):包含生產管理、排程等系統。此層級在本次實驗室中暫不直接模擬,但可視為與企業層緊密相連。
- 第3層:操作與控制層(Operations and Control):包含HMI、工程工作站、資料歷史庫等。Windows 7工程工作站將模擬此層級,用於組態和監控下層設備。
- 第2層:本地化控制層(Localized Control):包含SCADA伺服器、區域控制器等。SCADA虛擬機器將模擬此層級,負責監控和控制第1層的設備。
- 第1層:過程控制層(Process Control):包含PLC、RTU等現場控制器。PLC虛擬機器將模擬此層級,直接與工業過程互動。
- 第0層:I/O層(I/O):感測器和執行器。此層級在虛擬環境中通常不直接模擬,而是由PLC虛擬機器負責其邏輯。
此圖示:ICS實驗室的Purdue模型映射
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
rectangle "Purdue 模型 (Purdue Model)" as purdue {
rectangle "Level 5: 企業層 (Enterprise)" as L5
rectangle "Level 4: 站點業務系統層 (Site Business Systems)" as L4
rectangle "Level 3: 操作與控制層 (Operations and Control)" as L3
rectangle "Level 2: 本地化控制層 (Localized Control)" as L2
rectangle "Level 1: 過程控制層 (Process Control)" as L1
rectangle "Level 0: I/O 層 (I/O)" as L0
}
rectangle "ICS 實驗室虛擬機器 (ICS Lab VMs)" as lab_vms {
component "Kali Linux 攻擊主機 (Kali Attacker)" as kali
component "Windows 7 工程工作站 (Windows EWS)" as win_ews
component "SCADA VM" as scada
component "PLC VM" as plc
}
L5 <--> kali : 模擬
L3 <--> win_ews : 模擬
L2 <--> scada : 模擬
L1 <--> plc : 模擬
L5 -[hidden]d-> L4
L4 -[hidden]d-> L3
L3 -[hidden]d-> L2
L2 -[hidden]d-> L1
L1 -[hidden]d-> L0
note right of L5
外部網路/攻擊者
end note
note right of L3
HMI/組態軟體
end note
note right of L2
監控伺服器
end note
note right of L1
現場控制器
end note
@enduml
看圖說話:
此圖示展示了ICS實驗室中各個虛擬機器如何映射到Purdue模型的不同層級。Kali Linux攻擊主機被安排在第5層企業層,模擬來自外部的攻擊者或進行高層次的網路分析。Windows 7工程工作站則代表第3層操作與控制層,用於運行HMI和組態軟體。SCADA虛擬機器位於第2層本地化控制層,負責集中監控和控制。而PLC虛擬機器則處於最底層的第1層過程控制層,直接模擬現場控制器。這種映射關係有助於我們在虛擬環境中,按照Purdue模型的安全原則,設計和實施網路區段化,從而更好地理解和測試ICS網路的安全防護。
ESXi網路配置:虛擬交換器與連接埠群組
為了實現Purdue模型的網路區段化,我們需要在ESXi中創建多個虛擬交換器(vSwitch)和連接埠群組(Port Groups)。
- 登入ESXi並導航至網路設定:
- 登入ESXi網頁管理介面。
- 在左側導覽列中選擇「網路(Networking)」。
- 創建新的虛擬交換器:
- 切換到「虛擬交換器(Virtual switches)」選項卡。
- 點擊「新增標準虛擬交換器(Add standard virtual switch)」。
- 為每個Purdue層級創建一個獨立的虛擬交換器,例如
vSwitch-Level1、vSwitch-Level2等。 - 暫時不需要將實體網路介面卡(vmnic)分配給這些新的虛擬交換器,因為我們希望這些層級在內部是隔離的。
- 配置連接埠群組:
- 切換到「連接埠群組(Port groups)」選項卡。
- 點擊「新增連接埠群組(Add port group)」。
- 為每個Purdue層級創建一個連接埠群組,並將其關聯到對應的虛擬交換器:
- 名稱:
Level 1,虛擬交換器:vSwitch-Level1 - 名稱:
Level 2,虛擬交換器:vSwitch-Level2 - 名稱:
Level 3,虛擬交換器:vSwitch-Level3 - 名稱:
Level 5,虛擬交換器:vSwitch-Level5 - 對於連接埠安全性,玄貓建議暫時繼承虛擬交換器的預設設定。
此圖示:ESXi網路配置概覽
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
rectangle "ESXi 網路設定 (ESXi Networking Configuration)" as esxi_net {
rectangle "虛擬交換器 (Virtual Switches)" as vswitches {
component "vSwitch-Level1" as vsw1
component "vSwitch-Level2" as vsw2
component "vSwitch-Level3" as vsw3
component "vSwitch-Level5" as vsw5
}
rectangle "連接埠群組 (Port Groups)" as port_groups {
component "PortGroup-Level1" as pg1
component "PortGroup-Level2" as pg2
component "PortGroup-Level3" as pg3
component "PortGroup-Level5" as pg5
}
}
vsw1 -- pg1 : 關聯
vsw2 -- pg2 : 關聯
vsw3 -- pg3 : 關聯
vsw5 -- pg5 : 關聯
note right of vswitches
每個Purdue層級一個獨立vSwitch
end note
note right of port_groups
每個vSwitch一個Port Group
end note
@enduml
看圖說話:
此圖示展示了ESXi網路配置中虛擬交換器與連接埠群組的關係。為了實現Purdue模型的網路區段化,我們創建了多個虛擬交換器,每個交換器對應一個Purdue層級(例如vSwitch-Level1到vSwitch-Level5)。然後,為每個虛擬交換器創建一個連接埠群組(例如PortGroup-Level1到PortGroup-Level5),並將其與對應的虛擬交換器關聯起來。這樣,每個連接埠群組就代表了一個獨立的網路區段,虛擬機器可以被分配到這些區段中,實現網路隔離。這種分層設計是構建安全ICS實驗室的基礎,它允許我們精確控制不同層級之間的通訊,並模擬真實世界中的網路安全挑戰。
虛擬機器網路介面卡配置與IP位址規劃
在創建了虛擬交換器和連接埠群組後,我們需要將虛擬機器的網路介面卡(NIC)連接到對應的連接埠群組,並手動配置IP位址。
虛擬機器網路介面卡配置:
- 編輯虛擬機器設定:
- 在ESXi左側導覽列中選擇「虛擬機器(Virtual Machines)」。
- 選擇
PLC VM,點擊「編輯(Edit)」按鈕。 - 在硬體設定中,找到「網路介面卡(Network Adapter)」。
- 將其從預設的
VM Network更改為Level 1連接埠群組。 - 對其他虛擬機器執行類似操作:
SCADA VM連接到Level 2連接埠群組。Windows EWS連接到Level 3連接埠群組。Kali Attacker連接到Level 5連接埠群組。- 點擊「儲存(Save)」應用更改。
IP位址規劃策略:
玄貓建議為每個網路區段分配一個專用的IP位址範圍,以確保網路隔離和易於管理。
| 網路區段 | 虛擬機器 | IP位址範圍 | 虛擬機器IP位址 |
|---|---|---|---|
| Level 1 | PLC VM | 192.168.1.0/24 | 192.168.1.10 |
| Level 2 | SCADA VM | 192.168.2.0/24 | 192.168.2.10 |
| Level 3 | Windows EWS | 192.168.3.0/24 | 192.168.3.10 |
| Level 5 | Kali Attacker | 172.16.0.0/24 | 172.16.0.10 |
手動配置虛擬機器IP位址:
以PLC VM為例,手動配置IP位址:
- 開啟虛擬機器控制台:在ESXi管理介面中,選擇
PLC VM,點擊「控制台(Console)」按鈕。 - 登入Ubuntu:使用您在安裝時設定的使用者帳戶登入。
- 編輯網路設定:
- 對於Ubuntu Desktop版本,可以透過圖形介面進行配置:點擊右上角的網路圖示,選擇「有線設定(Wired Settings)」。
- 點擊連接埠旁邊的齒輪圖示,進入詳細設定。
- 切換到「IPv4」選項卡,選擇「手動(Manual)」。
- 輸入IP位址:
192.168.1.10 - 網路遮罩:
255.255.255.0 - 閘道:
192.168.1.1(這將是該網路區段的虛擬路由器或防火牆的IP,我們稍後會配置) - 點擊「應用(Apply)」儲存設定。
- 驗證IP位址:在終端機中執行
ip addr命令,確認IP位址已正確配置。
重複上述步驟,為SCADA VM、Windows EWS和Kali Attacker配置其各自的IP位址。
透過這些精細的網路配置,我們已經在ESXi Hypervisor上成功構建了一個基於Purdue模型的ICS安全實驗室。每個虛擬機器都位於其專屬的網路區段中,並被分配了唯一的IP位址。這為我們接下來進行的各種ICS安全測試、漏洞分析和攻擊模擬提供了真實且受控的環境。
結論
檢視此ICS安全實驗室從概念到實踐的完整建構過程,其核心成就並非僅止於虛擬機器的部署與軟體安裝,而是將抽象的Purdue模型成功轉化為具體的、可操作的虛擬網路架構。這項工作的精髓,在於透過ESXi的虛擬交換器與連接埠群組,將理論上的安全層級(Levels 1-5)精準對應到隔離的網路區段,從而奠定了高擬真度攻防演練的基礎。
深入分析此過程可以發現,真正的挑戰與價值並非技術操作的複製,而在於安全架構思維的內化。許多團隊在建構類似環境時,常陷入「為隔離而隔離」的誤區,卻忽略了每個區段的IP規劃、預設通訊規則,以及未來模擬跨區攻擊路徑的策略性佈局。因此,能否將此實驗室視為一個動態的、可演進的「安全沙盤」,而非靜態的網路拓撲,是衡量其建構成效的關鍵指標。
展望未來,這個精心區段化的實驗室不僅是一個測試平台,它更是一個組織OT資安能力的「孵化器」。它將成為攻擊路徑模擬、防禦策略驗證、事件應變程序演練,乃至於培育新一代ICS資安人才的核心基石。對於追求卓越的資安專家與管理者而言,其最終價值不在於這個實驗環境資產本身,而在於建構過程中所淬鍊出的系統化思維與安全設計能力,這才是應對未來工業物聯網複雜威脅的關鍵競爭力。