在工業控制系統(ICS)領域,建立一個安全且可控的實驗環境對於系統測試、資安研究與人員培訓至關重要。直接使用實體設備不僅成本高昂,且操作風險較高。本文採用虛擬化技術,以業界廣泛使用的 VMware ESXi 作為 Type-1 Hypervisor 平台,展示如何建構一個偽 PLC/SCADA 節點。透過部署輕量級且靈活的 Ubuntu 作業系統,並精準調校其虛擬硬體資源,我們可以模擬出接近真實工控設備的運作環境。此基礎建設不僅實現了資源隔離與高效管理,更為後續依循 Purdue 模型進行複雜網路拓撲的區段劃分與安全策略部署,提供了穩固的起點。這個過程是建立 OT 數位分身或資安攻防演練場域的關鍵第一步。
部署虛擬機器:Ubuntu作為偽PLC/SCADA的實踐
Ubuntu映像檔的獲取與上傳至ESXi資料儲存區
玄貓認為,在ESXi Hypervisor上部署虛擬機器的首要任務,是將作業系統的安裝映像檔(ISO)上傳至ESXi的資料儲存區(Datastore)。這種方法能有效避免本地PC因運行多個虛擬機器而造成的資源過載,並提升部署效率。
獲取Ubuntu映像檔:
- 下載Ubuntu Desktop ISO:從Ubuntu官方網站下載最新的Desktop版本ISO映像檔。玄貓建議選擇長期支援(LTS)版本,以確保穩定性。
- 等待下載完成:根據網路速度,下載可能需要一些時間。
上傳ISO至ESXi資料儲存區:
- 登入ESXi網頁管理介面:使用瀏覽器訪問ESXi主機的管理IP位址,並以root帳號登入。
- 導航至資料儲存區:在左側導覽列中選擇「儲存(Storage)」,然後點擊「資料儲存區(Datastores)」選項。
- 瀏覽資料儲存區:選擇一個資料儲存區(例如:
VM-Storage),然後點擊「資料儲存區瀏覽器(Datastore browser)」按鈕。 - 創建ISO資料夾:為了方便管理,玄貓建議在資料儲存區中創建一個專門用於存放ISO映像檔的資料夾(例如:
iso)。 - 上傳ISO檔案:進入新創建的
iso資料夾,點擊「上傳(Upload)」按鈕,選擇您剛下載的Ubuntu ISO映像檔。此時會顯示上傳進度條。
此圖示:將Ubuntu ISO上傳至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
actor "使用者 (User)" as user
rectangle "ESXi Web Client" as web_client {
component "儲存 (Storage)" as storage_menu
component "資料儲存區 (Datastores)" as datastores_list
component "資料儲存區瀏覽器 (Datastore Browser)" as datastore_browser
component "上傳介面 (Upload Interface)" as upload_ui
}
rectangle "ESXi 資料儲存區 (ESXi Datastore)" as esxi_datastore {
folder "iso" as iso_folder
file "ubuntu-server.iso" as ubuntu_iso
}
user -> web_client : 登入
user -> storage_menu : 點擊
storage_menu --> datastores_list : 顯示清單
user -> datastores_list : 選擇資料儲存區 (e.g., VM-Storage)
user -> datastore_browser : 點擊
datastore_browser --> iso_folder : 創建資料夾
user -> iso_folder : 進入資料夾
user -> upload_ui : 點擊上傳
upload_ui --> ubuntu_iso : 選擇本地ISO檔案
ubuntu_iso --> esxi_datastore : 上傳至 iso 資料夾
note right of esxi_datastore
存放虛擬機器映像檔
end note
@enduml
看圖說話:
此圖示詳細描繪了將Ubuntu ISO映像檔上傳至ESXi資料儲存區的過程。使用者首先登入ESXi Web Client,導航至「儲存」選單,然後選擇「資料儲存區」。在資料儲存區列表中,使用者選擇一個目標資料儲存區(例如VM-Storage),並點擊「資料儲存區瀏覽器」。為了更好地組織檔案,使用者在資料儲存區中創建一個名為iso的資料夾。進入此資料夾後,使用者點擊「上傳」按鈕,從本地電腦選擇ubuntu-server.iso檔案。該檔案隨後會被上傳至ESXi資料儲存區的iso資料夾中。這個過程確保了ISO映像檔可以被ESXi主機直接存取,為後續虛擬機器的創建做好準備。
創建新的虛擬機器:Ubuntu偽PLC/SCADA的配置
在ISO映像檔上傳完成後,就可以開始在ESXi上創建新的虛擬機器了。玄貓將以創建一個模擬PLC的Ubuntu虛擬機器為例,詳細說明配置步驟。
創建虛擬機器流程:
- 導航至虛擬機器列表:在左側導覽列中選擇「虛擬機器(Virtual Machines)」。
- 創建/註冊虛擬機器:點擊右側的「創建/註冊虛擬機器(Create / Register VM)」按鈕。
- 選擇創建類型:在彈出的視窗中,選擇「創建新的虛擬機器(Create a new virtual machine)」。
- 配置基本資訊:
- 名稱:為虛擬機器命名,例如
Pseudo-PLC。 - 相容性(Compatibility):選擇與ESXi主機版本相符的虛擬硬體版本。
- 客體作業系統家族(Guest OS family):選擇
Linux。 - 客體作業系統版本(Guest OS version):選擇
Ubuntu Linux (64-bit)。
- 選擇儲存區:選擇您希望虛擬機器檔案存放的資料儲存區,例如
VM-Storage。 - 自訂設定:這是配置虛擬機器硬體資源的關鍵步驟。由於我們要模擬PLC,資源配置應盡量接近實際設備。
- CPU:設定為
1個虛擬CPU。 - 記憶體(RAM):設定為
1 GB。 - 硬碟空間:設定為
40 GB。 - 網路介面卡:選擇
VM Network,這將是虛擬機器連接到虛擬網路的介面。 - CD/DVD光碟機:將其設定為「資料儲存區ISO檔案(Datastore ISO file)」,然後瀏覽並選擇您之前上傳的Ubuntu ISO映像檔。
此圖示:虛擬機器自訂設定
@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 "虛擬機器設定介面 (VM Configuration Interface)" as vm_config {
component "名稱 (Name): Pseudo-PLC" as vm_name
component "CPU: 1" as vm_cpu
component "記憶體 (RAM): 1 GB" as vm_ram
component "硬碟 (Disk): 40 GB" as vm_disk
component "網路介面卡 (Network Adapter): VM Network" as vm_net
component "CD/DVD 光碟機 (CD/DVD Drive 1): Datastore ISO File" as vm_cd
}
rectangle "資料儲存區 (Datastore)" as datastore {
file "ubuntu-server.iso" as iso_file
}
vm_name --> vm_cpu
vm_cpu --> vm_ram
vm_ram --> vm_disk
vm_disk --> vm_net
vm_net --> vm_cd
vm_cd --> iso_file : 掛載
note right of vm_config
模擬PLC硬體資源
end note
@enduml
看圖說話:
此圖示展示了創建虛擬機器時的自訂設定介面。在這個介面中,使用者可以為虛擬機器配置各種硬體資源,以模擬特定的設備。對於偽PLC虛擬機器,玄貓建議將名稱設定為Pseudo-PLC,CPU設定為1個核心,記憶體設定為1 GB,硬碟空間設定為40 GB。網路介面卡預設連接到VM Network。最關鍵的是,CD/DVD光碟機需要選擇「資料儲存區ISO檔案」,並掛載之前上傳的ubuntu-server.iso映像檔。這些設定旨在模擬真實PLC的資源限制,同時提供足夠的資源來運行Ubuntu作業系統。
網路區段配置:模擬Purdue模型
在完成虛擬機器的硬體配置後,下一步將是配置網路區段,以模擬類似Purdue模型的工業控制系統網路架構。這對於建立一個真實且安全的ICS實驗室至關重要。玄貓將在下一節中詳細闡述如何進行網路配置,以實現不同虛擬機器之間的隔離與通訊控制。
結論
縱觀現代工業控制系統(Industrial Control System, ICS)環境的虛擬化趨勢,將Ubuntu部署於ESXi作為偽PLC/SCADA的實踐,不僅是單純的技術操作,更是建構低成本、高彈性安全實驗室的策略起點。
此方法的整合價值在於,它巧妙地運用成熟的IT虛擬化技術,來應對OT(Operational Technology)領域對封閉、昂貴硬體的依賴,大幅降低了研究與測試的門檻。然而,真正的挑戰並非虛擬機的創建本身,而是後續如何精準配置網路區段與應用軟體,使其行為特徵無限趨近真實的工業控制器。本文所建議的低資源配置(1 CPU、1GB RAM)正是基於此「實務落地」考量,旨在從根本上模擬資源受限的工控環境,確保後續測試的有效性。
展望未來,這類虛擬化ICS實驗室將成為OT安全人才培育、漏洞研究與防禦策略驗證的核心平台。玄貓認為,完成虛擬機的基礎部署僅是第一步,接下來的網路區段規劃,才是決定此模擬環境能否從單一節點,升級為具備Purdue模型縱深防禦概念的專業級實驗室的關鍵所在。