受保護的Hyper V環境和受保護的虛擬機器

2021-09-04 10:49:41 字數 2243 閱讀 6887

無論是企業內部還是託管在idc或雲服務商的虛擬機器,如何保障執行的環境是安全的,虛擬機器是安全的(虛擬機器檔案裡的資料以及看到的監視器畫面)成為此篇文章和大家**研究的。

比如您正在執行的虛擬機器,管理員是可以通過虛擬化平台通過監視器看到您的系統並操作的,比如關機,開啟,重啟等等操作,其次如果有別有用心的管理員或者不法分子在拿到您虛擬機器的虛擬磁碟檔案後拷貝到自己的電腦展開檢視等,那麼虛擬機器裡的資料一覽無遺,甚至嚴重一點的拿到您ad虛擬機器的虛擬磁碟後對域控使用者資料庫解密,獲取到企業使用者的登入資訊及密碼,那麼後果就相當嚴重了。

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

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

針對以上的痛點,在windows server 2016開始提供了乙個新的技術叫「受保護者服務」可以使用受保護的結構(hyper-v主機環境)為vm提供更安全的執行環境。受保護的結構主要有三個部分組成:

在windows server 2016裡只支援windows系統的虛擬機器保護,而在windows server 2019裡還新增支援了linux系統的虛擬機器保護。

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

對於工作模式只要分為2中:tpm模式和主機金鑰模式

用到的安全手段主要大致可以為四種:tpm(vtpm)、簽名證書、加密證書、bitlocker

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

從受保護的虛擬機器來判斷虛擬機器是否安全主要是根據這4點來衡量:虛擬磁碟模板是否加密,卷簽名目錄,受保護的資料檔案pdk(監護人證書:簽名和加密;防護資料檔案所有者:簽名和加密),vtpm

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

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

請求開啟受保護的虛擬機器vm01

在受保護的主機可以啟動受保護的vm之前,首先必須證明它是可信任的。為了證明它是可信任的,它必須向金鑰保護服務(kps)提供受信任證明。受信任證書通過證明過程獲得。

主機請求證明。

受保護的主機請求證明。認證模式由受保護主機服務群集決定:

tpm可信證明:hyper-v主機傳送的資訊包括:

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

主機金鑰證明:hyper-v主機傳送金鑰對的公鑰。hgs驗證主機金鑰是否已註冊。

管理員信任的證明:hyper-v主機傳送kerberos票證,該票證標識主機所在的安全組。hgs驗證主機屬於先前由受信任的hgs管理員配置的安全組。(在windows server 2019中該模式已經取消)

證明成功(或失敗)

成功證明主機受信任所需的檢查:

認證證書已傳送給主機

假設證明成功,則向主機傳送受信任證書,並且主機被視為「被保護」(被授權執行受保護的vm)。主機使用信任證書授權金鑰保護服務安全地發放使用受保護虛擬機器所需的金鑰

主機請求vm金鑰

受保護的主機沒有啟動受保護的vm(本例中為vm01)所需的金鑰。要獲得必要的金鑰,受保護的主機必須向kps提供以下內容:

發布金鑰

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

金鑰返回給主機

如果受信任證書有效,kps會嘗試解密該金鑰並安全地返回啟動vm所需的金鑰。請注意,金鑰已加密到受保護主機的vbs。

主機啟動vm01

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

部署這樣一套受保護的hyper-v環境和受保護的虛擬機器最後是可以通過powershell來管理,也或者使用scvmm或windows azure pack來管理的。

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

公有 私有和受保護

class base struct public derived public base ok i is protected derived classes can access i int use base2 error j is private struct protect drived pro...

python 受保護的封裝

私有化封裝 private 受保護的封裝 protected 公共的封裝 public 受保護的封裝 在成員名稱前面加乙個下劃線 成員名稱 訪問的效果和公共的封裝式一樣,但不要隨便訪問。受保護的目的 僅允許成員在當前類 物件或者子類 子物件中訪問,外部禁止 類 物件內 子類 子物件中 類 物件外 私...

公有 私有和受保護成員的特點

公有 私有和受保護成員的特點公有 public 公有成員能被繼承,也可以被外部函式訪問。私有 private 私有成員不能被繼承,也不能被外部函式訪問。受保護 protect 受保護成員能夠被繼承,但是不能被外部函式訪問 在實現部分定義的成員預設是受保護成員 如 class a 而在實現部分的成員則...