返回文章列表

在ESXi上部署Ubuntu虛擬機模擬PLC與SCADA

本文闡述在 VMware ESXi 虛擬化平台上部署 Ubuntu 虛擬機,以模擬工業控制系統(ICS)中的可程式化邏輯控制器(PLC)與監控與數據採集(SCADA)系統。內容詳述了從獲取 Ubuntu ISO 映像檔、上傳至 ESXi 資料儲存區,到創建並配置虛擬機硬體資源的完整步驟。此方法旨在建立一個隔離的實驗環境,透過精確設定 CPU、記憶體與網路介面,使虛擬機能夠有效模擬真實工控設備的運作特性,為後續的網路區段規劃與 Purdue 模型實踐奠定基礎。

虛擬化技術 工業控制系統

在工業控制系統(ICS)領域,建立一個安全且可控的實驗環境對於系統測試、資安研究與人員培訓至關重要。直接使用實體設備不僅成本高昂,且操作風險較高。本文採用虛擬化技術,以業界廣泛使用的 VMware ESXi 作為 Type-1 Hypervisor 平台,展示如何建構一個偽 PLC/SCADA 節點。透過部署輕量級且靈活的 Ubuntu 作業系統,並精準調校其虛擬硬體資源,我們可以模擬出接近真實工控設備的運作環境。此基礎建設不僅實現了資源隔離與高效管理,更為後續依循 Purdue 模型進行複雜網路拓撲的區段劃分與安全策略部署,提供了穩固的起點。這個過程是建立 OT 數位分身或資安攻防演練場域的關鍵第一步。

部署虛擬機器:Ubuntu作為偽PLC/SCADA的實踐

Ubuntu映像檔的獲取與上傳至ESXi資料儲存區

玄貓認為,在ESXi Hypervisor上部署虛擬機器的首要任務,是將作業系統的安裝映像檔(ISO)上傳至ESXi的資料儲存區(Datastore)。這種方法能有效避免本地PC因運行多個虛擬機器而造成的資源過載,並提升部署效率。

獲取Ubuntu映像檔:

  1. 下載Ubuntu Desktop ISO:從Ubuntu官方網站下載最新的Desktop版本ISO映像檔。玄貓建議選擇長期支援(LTS)版本,以確保穩定性。
  2. 等待下載完成:根據網路速度,下載可能需要一些時間。

上傳ISO至ESXi資料儲存區:

  1. 登入ESXi網頁管理介面:使用瀏覽器訪問ESXi主機的管理IP位址,並以root帳號登入。
  2. 導航至資料儲存區:在左側導覽列中選擇「儲存(Storage)」,然後點擊「資料儲存區(Datastores)」選項。
  3. 瀏覽資料儲存區:選擇一個資料儲存區(例如:VM-Storage),然後點擊「資料儲存區瀏覽器(Datastore browser)」按鈕。
  4. 創建ISO資料夾:為了方便管理,玄貓建議在資料儲存區中創建一個專門用於存放ISO映像檔的資料夾(例如:iso)。
  5. 上傳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虛擬機器為例,詳細說明配置步驟。

創建虛擬機器流程:

  1. 導航至虛擬機器列表:在左側導覽列中選擇「虛擬機器(Virtual Machines)」。
  2. 創建/註冊虛擬機器:點擊右側的「創建/註冊虛擬機器(Create / Register VM)」按鈕。
  3. 選擇創建類型:在彈出的視窗中,選擇「創建新的虛擬機器(Create a new virtual machine)」。
  4. 配置基本資訊
  • 名稱:為虛擬機器命名,例如Pseudo-PLC
  • 相容性(Compatibility):選擇與ESXi主機版本相符的虛擬硬體版本。
  • 客體作業系統家族(Guest OS family):選擇Linux
  • 客體作業系統版本(Guest OS version):選擇Ubuntu Linux (64-bit)
  1. 選擇儲存區:選擇您希望虛擬機器檔案存放的資料儲存區,例如VM-Storage
  2. 自訂設定:這是配置虛擬機器硬體資源的關鍵步驟。由於我們要模擬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-PLCCPU設定為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模型縱深防禦概念的專業級實驗室的關鍵所在。