受保護Hyper-V環境和受保護虛擬機Guarded fabric and shielded VMs

無論是企業內部還是託管在IDC或雲服務商的虛擬機,如何保障運行的環境是安全的,虛擬機是安全的(虛擬機文件裏的數據以及看到的監視器畫面)成爲此篇文章和大家探討研究的。

比如您正在運行的虛擬機,管理員是可以通過虛擬化平臺通過監視器看到您的系統並操作的,比如關機,開啓,重啓等等操作,其次如果有別有用心的管理員或者不法分子在拿到您虛擬機的虛擬磁盤文件後拷貝到自己的電腦展開查看等,那麼虛擬機裏的數據一覽無遺,甚至嚴重一點的拿到您AD虛擬機的虛擬磁盤後對域控用戶數據庫解密,獲取到企業用戶的登錄信息及密碼,那麼後果就相當嚴重了。

其次如果有人把虛擬機的虛擬磁盤拷貝出來放到競爭對手的虛擬機環境裏導入運行,那麼是否會有虛擬機業務成果的山寨呢?

當然我這裏只是列舉可能出現的風險和案例,針對這樣的問題而展開如何確保虛擬機運行安全以及虛擬機運行所處的環境是可信任的展開話題討論。

針對以上的痛點,在Windows Server 2016開始提供了一個新的技術叫“受保護者服務”可以使用受保護的結構(Hyper-V主機環境)爲VM提供更安全的運行環境。受保護的結構主要有三個部分組成:

  • 由一個主機保護者服務(HGS)組成 (通常是三個節點的集羣)

  • 一個或多個受保護的主機

  • 一組受保護的虛擬機(VM)

在Windows Server 2016裏只支持Windows系統的虛擬機保護,而在Windows Server 2019裏還新增支持了Linux系統的虛擬機保護。

那麼整個受保護的虛擬機運行在受保護的結構環境中,拓撲如下:

image  

對於工作模式只要分爲2中:TPM模式和主機密鑰模式

用到的安全手段主要大致可以爲四種:TPM(vTPM)、簽名證書、加密證書、Bitlocker

從受保護的主機來判斷是否受信任和安全主要是根據這3點來衡量:提取主機的系統特徵,硬件基準,以及當前運行環境作爲代碼完整性策略

從受保護的虛擬機來判斷虛擬機是否安全主要是根據這4點來衡量:虛擬磁盤模板是否加密,卷簽名目錄,受保護的數據文件PDK(監護人證書:簽名和加密;防護數據文件所有者:簽名和加密),vTPM

受保護的虛擬機工作關係結構是這樣的:

clip_image002  

受保護的虛擬機在受保護的Hyper-V主機工作關係結構是這樣的:

clip_image003  

  1. 請求開啓受保護的虛擬機VM01
    在受保護的主機可以啓動受保護的VM之前,首先必須證明它是可信任的。爲了證明它是可信任的,它必須向密鑰保護服務(KPS)提供受信任證明。受信任證書通過證明過程獲得。

主機請求證明。
受保護的主機請求證明。認證模式由受保護主機服務羣集決定:
TPM可信證明:Hyper-V主機發送的信息包括:

  • TPM識別信息(認可密鑰)

  • 最近的啓動引導順序的進程信息(TCG日誌)

  • 主機上應用的代碼完整性策略信息(CI)

備註:受保護的Hyper-V主機啓動後每8小時進行一次驗證,如果由於某種原因,當受保護的VM嘗試啓動時收保護的主機沒有認證證書也會觸發請求。

主機密鑰證明:Hyper-V主機發送密鑰對的公鑰。HGS驗證主機密鑰是否已註冊。
管理員信任的證明:Hyper-V主機發送Kerberos票證,該票證標識主機所在的安全組。HGS驗證主機屬於先前由受信任的HGS管理員配置的安全組。(在Windows Server 2019中該模式已經取消)

  1. 證明成功(或失敗)
    成功證明主機受信任所需的檢查:

  • 通過TPM可信證明,驗證主機的TPM標識,引導驗證和代碼完整性策略。

  • 使用主機密鑰證明,僅驗證主機密鑰的註冊。

  • 認證證書已發送給主機
    假設證明成功,則向主機發送受信任證書,並且主機被視爲“被保護”(被授權運行受保護的VM)。主機使用信任證書授權密鑰保護服務安全地發放使用受保護虛擬機所需的密鑰

  • 主機請求VM密鑰
    受保護的主機沒有啓動受保護的VM(本例中爲VM01)所需的密鑰。要獲得必要的密鑰,受保護的主機必須向KPS提供以下內容:

    • 目前的受信任證明

    • 加密密鑰(密鑰保護程序或KPS),包含啓動VM01所需的密鑰。密鑰是使用只有KPS知道的其他密鑰加密的。

  • 發佈密鑰
    KPS檢查受信任證書以確定其有效性。證書不得過期,KPS必須信任頒發證書的證明服務。

  • 密鑰返回給主機
    如果受信任證書有效,KPS會嘗試解密該密鑰並安全地返回啓動VM所需的密鑰。請注意,密鑰已加密到受保護主機的VBS。

  • 主機啓動VM01

  • 那麼部署這樣一套受保護的結構需要多少步驟呢?下面這張圖列了關鍵步驟:

    clip_image004  

    部署這樣一套受保護的Hyper-V環境和受保護的虛擬機最後是可以通過Powershell來管理,也或者使用SCVMM或Windows Azure Pack來管理的。

    過程不復雜,但要注意的點和涉及的知識是比較複雜的。

    簡單來說怎麼實現虛擬機安全以及達到的效果,我的總結是:

    • 以簽名證書和加密證書構建獨立的監護域(監護人)

    • 掃描認爲合格的Hyper-V硬件及系統環境作爲基準存放在另一個獨立域中作爲基準校驗,其中可以以TPM爲安全芯片加固

    • 虛擬機磁盤進行證書Bitlocker加密,也可以結合vTPM加固,虛擬磁盤再進行證書籤名綁定唯一性,讓在獨立域中作爲基準校驗

    • 設置虛擬機的所有者和監護域(人)進行定向校驗

    • 虛擬機的每一次啓動都會進行全方位多維度基準校驗,缺一都將導致啓動失敗

    • 虛擬機的虛擬磁盤也是全方位360度無死角加密,無論是網路複製傳輸還是拷貝都無法獲取虛擬磁盤內容

    • 受保護的虛擬機在受保護的Hyper-V主機之前移動或傳輸數據也是全加密狀態

    • 如果惡意人員要獲取虛擬機裏的數據,需要具備3大塊:受保護的Hyper-V主機,監護域(人)以及虛擬機文件,想想都不現實可以同時拿到這麼多才能獲取到vhdx裏的內容

    這項功能我覺得針對業務場景也解決如下需求:

    • 在加域的虛擬機(域成員服務器),從外圍增加了虛擬機的安全加固,但對內使用域管理員賬號進行訪問還需要多種約束手段以及其他的技術手段做安全輔助;

    • 如果虛擬機是不加域的託管在企業虛擬化平臺上,那麼業務人員直接管理該虛擬機:從外保障了惡意的IT管理員無法進行數據的竊取和窺竊,從內由直接的使用者放心的使用管理自己的系統。

    後續如何實現主要核心三個章節:

    文章鏈接
    受保護Hyper-V環境和受保護虛擬機Guarded   fabric and shielded VMshttps://blog.51cto.com/rdsrv/2332876
    HGS(主機保護者服務)配置https://blog.51cto.com/rdsrv/2335885
    配置受保護的Hyper-V主機環境https://blog.51cto.com/rdsrv/2335885
    部署受保護的虛擬機(概述)https://blog.51cto.com/rdsrv/2335903
    部署受保護的虛擬機-配置SCVMM 2016https://blog.51cto.com/rdsrv/2335905
    部署受保護的虛擬機-創建Windows磁盤模板https://blog.51cto.com/rdsrv/2336020
    部署受保護的虛擬機-創建應答文件https://blog.51cto.com/rdsrv/2336442
    部署受保護的虛擬機-獲取卷簽名目錄文件和選擇可信任的HGS羣集https://blog.51cto.com/rdsrv/2336444
    部署受保護的虛擬機-創建受保護虛擬機數據文件並添加監護域(人)https://blog.51cto.com/rdsrv/2336448
    部署受保護的虛擬機-SCVMM部署受保護的虛擬機https://blog.51cto.com/rdsrv/2336449
    部署受保護的虛擬機-受保護或防護現有(已有)的虛擬機https://blog.51cto.com/rdsrv/2336453

      最後感謝王澤和高毅的功能介紹,讓我有更深入的研究與實踐把這樣一個好的技術和功能分享給大家。


      發表評論
      所有評論
      還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
      相關文章