本主題說明如何準備 Linux 受防護 VM 的範本磁碟,以用來具現化一或多個租用戶 VM。
Prerequisites
若要準備及測試 Linux 受防護的 VM,您需要下列可用資源:
- 執行 Windows Server 版本 1709 或更新版本的虛擬化功能伺服器
- 第二部電腦 (Windows 10 或 Windows Server 2016) 能夠執行 Hyper-V 管理員,以連線到執行中的 VM 主控台
- 其中一個支援的 Linux 受防護 VM OS 的 ISO 映像:
- Ubuntu 16.04 LTS 與 4.4 核心
- 紅帽企業Linux 7.3
- SUSE Linux Enterprise Server 12 服務包 2
- 網際網路存取以下載 lsvmtools 套件和 OS 更新
Important
較新版本的舊版 Linux OS 可能包含已知的 TPM 驅動程式錯誤,以防止它們成功佈建為受防護的 VM。 不建議您將範本或屏蔽的虛擬機器更新至較新版本,直到有修正程式可用。 當更新公開時,將會更新上述支援的 OS 清單。
準備 Linux VM
受防護的 VM 會從安全的範本磁碟建立。 範本磁碟包含 VM 和中繼資料的作業系統,包括 /boot 和 /root 磁碟分割的數位簽章,以確保部署前不會修改核心 OS 元件。
若要建立範本磁碟,您必須先建立一般 (未受防護的) VM,以準備作為未來受防護 VM 的基礎映像。 您安裝及設定此 VM 所做的軟體,將會套用至從此範本磁碟建立的所有受防護 VM。 這些步驟將逐步引導您完成基本需求,讓 Linux VM 準備好進行範本化。
Note
分割磁碟時,會設定 Linux 磁片加密。 這表示您必須建立使用 dm-crypt 預先加密的新 VM,以建立 Linux 受防護的 VM 範本磁碟。
在虛擬化伺服器上,在提升權限的 PowerShell 主控台中執行下列命令,以確保 Hyper-V 和主機守護者服務 Hyper-V 支援功能已安裝:
Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart從可信任的來源下載 ISO 映像,並將其儲存在您的虛擬化伺服器上,或儲存在虛擬化伺服器可存取的檔案共用上。
在執行 Windows Server 1709 版的管理電腦上,執行下列命令來安裝受防護的 VM 遠端伺服器管理工具:
Install-WindowsFeature RSAT-Shielded-VM-Tools在管理電腦上開啟 Hyper-V Manager ,然後連線到虛擬化伺服器。 您可以按一下 [連線到伺服器...] 來執行此動作。在 [動作] 窗格中,或以滑鼠右鍵按一下 [Hyper-V 管理員],然後選擇 [連線到伺服器...]提供 Hyper-V 伺服器的 DNS 名稱,並視需要提供連線至該伺服器所需的認證。
使用 Hyper-V 管理員,在您的虛擬化伺服器上 設定外部交換器 ,讓 Linux VM 可以存取因特網以取得更新。
接下來,建立新的虛擬機器以安裝 Linux OS。 在 [動作] 窗格中,按一下 [新增>虛擬機器 ] 以開啟精靈。 為您的 VM 提供易記名稱,例如 [預先範本化的 Linux],然後按一下 [下一步]。
在精靈的第二頁上,選取第 2 代 ,以確保 VM 已佈建以 UEFI 為基礎的韌體設定檔。
根據您的喜好完成向導的其餘設定。 請勿針對此 VM 使用差異磁碟; 受防護的 VM 範本磁碟無法使用差異磁碟。 最後,將您稍早下載的 ISO 映像連線到此 VM 的虛擬 DVD 光碟機,以便安裝 OS。
在 Hyper-V Manager 中,選取新建立的虛擬機器,然後按一下動作窗格中的 連線... ,以連結至虛擬機器的虛擬主控台。 在出現的視窗中,按一下 「開始」 以開啟虛擬機器。
繼續進行所選 Linux 發行版本的安裝程序。 雖然每個 Linux 發行版本使用不同的安裝精靈,但對於將成為 Linux 受防護 VM 範本磁碟的 VM,必須符合下列需求:
- 磁碟必須使用 GUID 磁碟分割表格 (GPT) 配置進行分割
- 根磁碟分割必須使用 dm-crypt 加密。 密碼應設定為 密碼 (全部小寫)。 此密碼短語將被隨機生成,並在設定受保護的 VM 時對磁碟分割重新加密。
- 開機分割區必須使用 ext2 檔案系統
一旦您的 Linux OS 已完全開機且已登入,建議您安裝 linux 虛擬核心和相關聯的 Hyper-V 整合服務套件。 此外,您會想要安裝 SSH 伺服器或其他遠端系統管理工具,以在 VM 受到防護後存取 VM。
在 Ubuntu 上,執行下列命令以安裝這些元件:
sudo apt-get install linux-virtual linux-tools-virtual linux-cloud-tools-virtual linux-image-extra-virtual openssh-server在 RHEL 上,請改為執行下列命令:
sudo yum install hyperv-daemons openssh-server sudo service sshd start在 SLES 上,執行下列命令:
sudo zypper install hyper-v sudo chkconfig hv_kvp_daemon on sudo systemctl enable sshd視需要設定您的 Linux OS。 您安裝的任何軟體、您新增的使用者帳戶,以及您所做的全系統設定變更,都會套用至從此範本磁碟建立的所有未來 VM。 您應該避免將任何祕密或不必要的套件儲存至磁碟。
如果您打算使用 System Center Virtual Machine Manager 來部署 VM,請安裝 VMM 客體代理程式,讓 VMM 在 VM 佈建期間特製化 OS。 特製化可讓每個 VM 以不同的使用者和 SSH 金鑰、網路設定和自訂設定步驟安全地設定。 瞭解如何 在 VMM 檔中取得並安裝 VMM 客體代理程式 。
使用套件管理員,安裝包含 Linux 受防護 VM 開機載入器填充碼、佈建元件和磁碟準備工具的 lsvmtools 套件。
# Ubuntu 16.04 sudo apt-get install lsvmtools # SLES 12 SP2 sudo zypper install lsvmtools # RHEL 7.3 sudo yum install lsvmtools當您完成自訂 Linux OS 時,請在系統上找出 lsvmprep 安裝程式並加以執行。
# The path below may change based on the version of lsvmprep installed # Run "find /opt -name lsvmprep" to locate the lsvmprep executable sudo /opt/lsvmtools-1.0.0-x86-64/lsvmprep將您的 VM 關機。
如果您建立了任何 VM 檢查點(包括透過 Hyper-V 使用 Windows 10 Fall Creators Update 建立的自動檢查點),請務必先將它們刪除後再繼續。 檢查點會建立不同磁碟 (.avhdx),而這些磁碟是不被範本磁碟精靈所支援的。
若要刪除檢查點,請開啟 Hyper-V Manager,選取您的 VM,以滑鼠右鍵按一下 [檢查點] 窗格中的最上層檢查點,然後按一下 [刪除檢查點子樹狀結構]。
保護範本磁碟
您在上一節中準備的 VM 幾乎已準備好作為 Linux 受防護的 VM 範本磁碟。 最後一個步驟是透過 [範本磁碟精靈] 執行磁碟,這對根和開機磁碟分割目前狀態進行雜湊並數位簽署。 佈建受防護的 VM 時,會驗證雜湊和數位簽章,以確保在範本建立和部署之間,兩個磁碟分割區不會遭到未經授權的變更。
取得憑證以簽署磁碟
若要以數位方式簽署磁碟測量,您必須在您將執行範本磁碟精靈的電腦上取得憑證。 憑證必須符合下列需求:
| 憑證屬性 | 必填值 |
|---|---|
| 關鍵演算法 | RSA |
| 最小金鑰大小 | 2048 位元 |
| 簽名演算法 | SHA256(推薦) |
| 主要用法 | 數位簽章 |
建立受防護資料檔案並授權他們信任的磁碟時,將會向租用戶顯示此憑證的詳細資料。 因此,請務必從您和租客相互信任的憑證授權單位取得此憑證。 在您既是主機服務提供者也是租用戶的企業情境中,您可能會考慮從您的企業憑證授權單位發行此憑證。 請小心保護此憑證,因為擁有此憑證的任何人都可以建立與真實磁碟相同的新範本磁碟。
在測試實驗室環境中,您可以使用下列 PowerShell 命令建立自我簽署憑證:
New-SelfSignedCertificate -Subject "CN=Linux Shielded VM Template Disk Signing Certificate"
使用範本磁碟精靈 Cmdlet 處理磁碟
將範本磁碟和憑證複製到執行 Windows Server 版本 1709 的電腦,然後執行下列命令來起始簽署程序。
您提供給 -Path 參數的 VHDX 將會以更新的範本磁碟覆寫,因此在執行命令之前,請務必先建立複本。
Important
Windows Server 2016 或 Windows 10 上提供的遠端伺服器管理工具無法用來準備 Linux 受防護的 VM 範本磁碟。 僅使用 Windows Server 1709 版上可用的 Protect-TemplateDisk Cmdlet 或 Windows Server 2019 上可用的遠端伺服器管理工具來準備 Linux 受防護的 VM 範本磁碟。
# Replace "THUMBPRINT" with the thumbprint of your template disk signing certificate in the line below
$certificate = Get-Item Cert:\LocalMachine\My\THUMBPRINT
Protect-TemplateDisk -Path 'C:\temp\MyLinuxTemplate.vhdx' -TemplateName 'Ubuntu 16.04' -Version 1.0.0.0 -Certificate $certificate -ProtectedTemplateTargetDiskType PreprocessedLinux
您的範本磁碟現在已準備好用來佈建 Linux 受防護的 VM。 如果您使用 System Center Virtual Machine Manager 來部署 VM,您現在可以將 VHDX 複製到 VMM 程式庫。
您也可以從 VHDX 擷取磁碟區簽章目錄。 此檔案可用來將簽署憑證、磁碟名稱和版本的相關資訊提供給想要使用您範本的 VM 擁有者。 他們需要將此檔案匯入防護資料檔案精靈,以授權您擁有簽署憑證的範本作者,為他們建立此和未來的範本磁碟。
若要擷取磁碟區簽章目錄,請在 PowerShell 中執行下列命令:
Save-VolumeSignatureCatalog -TemplateDiskPath 'C:\temp\MyLinuxTemplate.vhdx' -VolumeSignatureCatalogPath 'C:\temp\MyLinuxTemplate.vsc'