建立 Linux 受防護的 VM 範本磁碟

適用於︰Windows Server 2022、Windows Server 2019

本主題說明如何準備 Linux 受防護 VM 的範本磁碟,以用來具現化一或多個租用戶 VM。

必要條件

若要準備及測試 Linux 受防護的 VM,您需要下列可用資源:

  • 執行 Windows Server 版本 1709 或更新版本的虛擬化功能伺服器
  • 第二部電腦 (Windows 10 或 Windows Server 2016) 能夠執行 Hyper-V 管理員,以連線到執行中的 VM 主控台
  • 其中一個支援的 Linux 受防護 VM OS 的 ISO 映像:
    • Ubuntu 16.04 LTS 與 4.4 核心
    • Red Hat Enterprise Linux 7.3
    • SUSE Linux Enterprise Server 12 Service Pack 2
  • 網際網路存取以下載 lsvmtools 套件和 OS 更新

重要

較新版本的舊版 Linux OS 可能包含已知的 TPM 驅動程式錯誤,以防止它們成功佈建為受防護的 VM。 建議您在有修正程式之前,將範本或受防護的 VM 更新為較新版本。 當更新公開時,將會更新上述支援的 OS 清單。

準備 Linux VM

受防護的 VM 會從安全的範本磁碟建立。 範本磁碟包含 VM 和中繼資料的作業系統,包括 /boot 和 /root 磁碟分割的數位簽章,以確保部署前不會修改核心 OS 元件。

若要建立範本磁碟,您必須先建立一般 (未受防護的) VM,以準備作為未來受防護 VM 的基礎映像。 您安裝及設定此 VM 所做的軟體,將會套用至從此範本磁碟建立的所有受防護 VM。 這些步驟將逐步引導您完成基本需求,讓 Linux VM 準備好進行範本化。

注意

分割磁碟時,會設定 Linux 磁片加密。 這表示您必須建立使用 dm-crypt 預先加密的新 VM,以建立 Linux 受防護的 VM 範本磁碟。

  1. 在虛擬化伺服器上,在提升權限的 PowerShell 主控台中執行下列命令,以確保 Hyper-V 和主機守護者服務 Hyper-V 支援功能已安裝:

    Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
    
  2. 從可信任的來源下載 ISO 映像,並將其儲存在您的虛擬化伺服器上,或儲存在虛擬化伺服器可存取的檔案共用上。

  3. 在執行 Windows Server 1709 版的管理電腦上,執行下列命令來安裝受防護的 VM 遠端伺服器管理工具:

    Install-WindowsFeature RSAT-Shielded-VM-Tools
    
  4. 在管理電腦上開啟 [Hyper-V 管理員],並連線到您的虛擬化伺服器。 您可以按一下 [連線到伺服器...] 來執行此動作。在 [動作] 窗格中,或以滑鼠右鍵按一下 [Hyper-V 管理員],然後選擇 [連線到伺服器...]提供 Hyper-V 伺服器的 DNS 名稱,並視需要提供連線至該伺服器所需的認證。

  5. 使用 Hyper-V 管理員,在虛擬化伺服器上設定外部交換器,讓 Linux VM 可以存取網際網路以取得更新。

  6. 接下來,建立新的虛擬機器以安裝 Linux OS。 在 [動作] 窗格中,按一下 [新增]>[虛擬機器] 以顯示精靈。 為您的 VM 提供自訂名稱,例如「預先範本化 Linux」,然後按 [下一步]

  7. 在精靈的第二個頁面上,選取 [第 2 代],以確保 VM 是以 UEFI 型的韌體設定檔佈建。

  8. 根據您的喜好設定完成精靈的其餘部分。 請勿針對此 VM 使用差異磁碟; 受防護的 VM 範本磁碟無法使用差異磁碟。 最後,將您稍早下載的 ISO 映像連線到此 VM 的虛擬 DVD 光碟機,以便安裝 OS。

  9. 在 [Hyper-V 管理員] 中,選取新建立的 VM,然後按一下 [動作] 窗格中的 [連線...],以連結至 VM 的虛擬主控台。 在出現的視窗中,按一下 [開始] 以開啟虛擬機器。

  10. 繼續進行所選 Linux 發行版本的安裝程序。 雖然每個 Linux 發行版本使用不同的安裝精靈,但對於將成為 Linux 受防護 VM 範本磁碟的 VM,必須符合下列需求:

    • 磁碟必須使用 GUID 磁碟分割表格 (GPT) 配置進行分割
    • 根磁碟分割必須使用 dm-crypt 加密。 複雜密碼應該設定為 passphrase (全部小寫)。 此複雜密碼將會隨機化,並在佈建受防護的 VM 時重新加密磁碟分割。
    • 開機磁碟分割必須使用 ext2 檔案系統
  11. 一旦您的 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
    
  12. 視需要設定您的 Linux OS。 您安裝的任何軟體、您新增的使用者帳戶,以及您所做的全系統設定變更,都會套用至從此範本磁碟建立的所有未來 VM。 您應該避免將任何祕密或不必要的套件儲存至磁碟。

  13. 如果您打算使用 System Center Virtual Machine Manager 來部署 VM,請安裝 VMM 客體代理程式,讓 VMM 在 VM 佈建期間特製化 OS。 特製化可讓每個 VM 以不同的使用者和 SSH 金鑰、網路設定和自訂設定步驟安全地設定。 在 VMM 文件中,了解如何取得並安裝 VMM 客體代理程式

  14. 接下來,將 Microsoft Linux 軟體存放庫新增至套件管理員

  15. 使用套件管理員,安裝包含 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
    
  16. 當您完成自訂 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
    
  17. 將您的 VM 關機。

  18. 如果您採取了 VM 的任何檢查點 (包括透過 Hyper-V 使用 Windows 10 Fall Creators Update 建立的自動檢查點),請務必先將其刪除,再繼續。 檢查點會建立範本磁碟精靈不支援的不同磁碟 (.avhdx)。

    若要刪除檢查點,請開啟 [Hyper-V 管理員],選取您的 VM,以滑鼠右鍵按一下 [檢查點] 窗格中最上層的檢查點,然後按一下 [刪除檢查點樹狀子目錄]

    Delete all checkpoints for your template VM in Hyper-V manager

保護範本磁碟

您在上一節中準備的 VM 幾乎已準備好作為 Linux 受防護的 VM 範本磁碟。 最後一個步驟是透過 [範本磁碟精靈] 執行磁碟,這對根和開機磁碟分割目前狀態進行雜湊並數位簽署。 佈建受防護的 VM 時,會驗證雜湊和數位簽章,以確保在範本建立和部署之間不會對兩個磁碟分割進行未經授權的變更。

取得憑證以簽署磁碟

若要以數位方式簽署磁碟測量,您必須在您將執行範本磁碟精靈的電腦上取得憑證。 憑證必須符合下列需求:

Certificate 屬性 必要值
金鑰演算法 RSA
最小金鑰大小 2048 位元
簽章演算法 SHA256 (建議)
金鑰使用方法 數位簽章

建立受防護資料檔案並授權他們信任的磁碟時,將會向租用戶顯示此憑證的詳細資料。 因此,請務必從您和租用戶相互信任的憑證授權單位單位取得此憑證。 在主機服務提供者和租用戶的企業案例中,您可能會考慮從企業憑證授權單位單位發行此憑證。 請小心保護此憑證,因為擁有此憑證的任何人都可以建立與真實磁碟相同的新範本磁碟。

在測試實驗室環境中,您可以使用下列 PowerShell 命令建立自我簽署憑證:

New-SelfSignedCertificate -Subject "CN=Linux Shielded VM Template Disk Signing Certificate"

使用範本磁碟精靈 Cmdlet 處理磁碟

將範本磁碟和憑證複製到執行 Windows Server 版本 1709 的電腦,然後執行下列命令來起始簽署程序。 您提供給 -Path 參數的 VHDX 將會以更新的範本磁碟覆寫,因此在執行命令之前,請務必先建立複本。

重要

Windows Server 2016 或 Windows 10 上提供的遠端伺服器管理工具無法用來準備 Linux 受防護的 VM 範本磁碟。 請只使用 Windows Server 1709 版或 Windows Server 2019 上提供的遠端伺服器管理工具,以準備 Linux 受防護 VM 範本磁碟的 Protect-TemplateDisk Cmdlet。

# 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'