本節書摘來自華章出版社《虛拟化安全解決方案》一書中的第2章,第2.3節,作者[美]戴夫·沙克爾福(dave shackleford),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
配置microsoft hyper-v是在很大方面比鎖定一些其他虛拟平台更簡單許多的。原因很簡單——它運作在windows server 2008上!好吧,也不全是這個原因。盡管許多人相信hyper-v是類型2的虛拟機管理程式,因為它與一個标準的作業系統一起運作,實際情況并非如此。當你在windows 2008平台上安裝hyper-v角色的時候,運作的作業系統實際是封裝的,并變成了虛拟管理程式層上的“父虛拟機”。這個父虛拟機然後控制其他虛拟機和管理程式間的互動和管理功能。這種關系的一個簡單描述如圖2.29所示(windows作業系統是在圖左上角标記為“父作業系統”的方塊)。

除了少數例外,鎖定windows server 2008系統的标準指南是一樣的,無論hyper-v是否運作。保護windows server 2008有許多很好的指南,本書不想重複它們講述的資訊。下面是可以自由下載下傳的一些可用指南:
microsoft windows server 2008安全指南。
還有許多其他資源,包括sybex出版的馬克米納斯(mark minasi)著的《mastering microsoft windows server 2008 r2》 (sybex,2010)。
在我們深入研究保護hyper-v平台的一些細節之前,還有一個非常重要的選擇,它可以極大增強任何microsoft hyper-v系統的整個安全樣貌,那就是在伺服器核心模式運作microsoft server 2008作業系統。運作伺服器核心本質上禁止microsoft windows圖形化界面,去掉所有windows浏覽器界面元件,它們常常是安全問題和缺陷的根源。前面minasietal寫的書可以讓使用者開始學習,microsoft也有很多非常好的可用資源。這部分沒有假設運作伺服器核心模式,但是記住許多指南都是一樣的。而且,如果想真正限制操作平台的印記,可以安裝hyper-v server 2008,一個非常特殊的伺服器核心安裝僅用于hyper-v角色甚至沒有可攻擊的表面區,因為它沒有圖形使用者界面。
給hyper-v系統打更新檔與通常windows伺服器打更新檔沒有什麼不同。多數組織使用中央管理更新檔工具如microsoft系統中心,windows伺服器更新服務(wsus),和其他的。這個戰略将正常工作,下面是一些警告:
在多數情況下,當更新檔或風險會影響它們的性能(或使性能更壞)的時候,就需要将運作的虛拟機遷移到另一個hyper-v主機,這可以很容易地使用live migration和其他工具完成,但打更新檔沒有一點計劃就無法實作;
使用者可能需要禁用任何在hyper-v主機中的自動化打更新檔政策。自動化更新檔對多數企業來說不是一項公共的配置,因為測試通常是首選,因為若不進行事前測試和準備,就不對虛拟主機應用更新檔是極其重要的。
如果使用伺服器核心,可能需要用指令行打更新檔。在這種情況下,可以使用下面的三種方法之一打更新檔:
使用msiexec或wusa指令在本地打更新檔;
使用wscript或powershell腳本安裝更新檔;
在windows server 2008 r2上使用内建的sconfig工具,它為你提供了一個簡單的菜單驅動的控制本地windows更新代理的接口。
microsoft hyper-v将數字證書用于管理客戶和工具如scumm的安全通信,從虛拟機管理程式或從遠端用戶端以及其他工具連接配接到虛拟機,遠端用戶端使用遠端桌面協定(remote desktop protocol,rdp)。為了確定你使用可信的第三方的安全數字證書,你必須完成兩個任務:
1)禁用hyper-v的生成,使用自簽名證書。
2)用使用者自己的證書替換預設的證書。
首先,為了防止hyper-v産生自簽名的證書,需要在指令提示符後運作下面的指令;
然後,按照下面的步驟删除任何預設證書:
1)在hyper-v證書庫中,删除任何已存在的自簽名證書。為打開microsoft管理控制台(mmc),單擊開始->運作,輸入mmc。單擊檔案->添加/删除管理單元,然後選擇證書。單擊“添加”。
2)選擇服務賬戶,然後單擊“下一步”。選擇本地計算機,然後可以選擇一個特定的hyper-v服務賬戶類型。有三種類型你可以選擇:
hyper-v映像管理服務
hyper-v網絡管理服務
hyper-v虛拟機管理服務
3)選擇hyper-v虛拟機管理服務。現在将看到一個有hyper-v服務賬戶的證書庫的mmc。選擇個人目錄,然後打開裡面的證書目錄,在這個目錄中删除任何證書。然後打開vmmstrusted root certif?ication authorities目錄,單擊證書。找到任何與個人位置比對的證書,删除它們。
現在,已經删除了任何自簽名證書,可以開始使用你自己的證書替換它們:
1)再次單擊檔案->添加/删除管理單元,然後選擇證書。單擊“添加”。選擇計算機賬号,然後選擇本地計算機。完成向導。
2)在左邊面闆證書下面(本地計算機),展開受信任的根證書頒發機構的位置,選擇證書,然後在右邊的面闆中輕按兩下想使用的證書。選擇“詳情”選項頁,在下拉菜單中選擇“僅屬性”。高亮指紋變量,如圖2.30所示。将這個十六進制值複制到文本檔案中以後使用。
3)打開一個windows powershell視窗。執行下面的指令:
4)将第2步中的thumbprint_value替換為你複制的十六進制值,數字間不留白白(在剪貼和粘貼之後,删除它們)。按下Enter鍵,然後輸入下面一行,将證書對象添加到一個數組中:
7)傳回mmc證書指令行。選擇本地證書庫,然後右擊右側信任的證書,選擇“所有任務”,然後選擇“管理私鑰”。選擇虛拟機組,确認它有允許的讀通路權限。單擊“ok”。
8)在系統資料庫中,啟用證書的哈希值:
9)然後需要重新開機虛拟機,使設定生效。
毫無疑問,這是非常複雜的過程。microsoft對這個過程做了詳細的解釋,并更新了它,在下面的連結可以看到:
我已經強調了增強系統的重要性。啟用記憶體保護,磁盤加密應該被認為是在這之上可以采取的額外鎖定步驟。
對于hyper-v,首先應該考慮使用基于windows本地特性進行記憶體保護,也就是資料執行保護(data execution prevention,dep)和位址空間布局随機化(address space layout randomization,aslr)。而它們都不是百分之百安全的,但是它們都是有價值的。dep可以防止緩存溢出攻擊,它可以防止被保護記憶體空間的程式執行。aslr常常改變系統檔案的記憶體位置,挫敗漏洞檢測代碼和目标是特定記憶體空間的惡意代碼。dep需要在hyper-v中在硬體中啟用。為了檢視你的硬體是否支援dep,檢檢視你的處理器是否支援amd的不執行(no execute nx)能力或英特爾的執行禁止(execute disable xd)功能。一個能幫助确定這些特性是否可用的簡單工具是securable,在gibson研究組織網站上可以找到:
最簡單的啟用dep的方式,應遵守下面的步驟:
1)右擊我的計算機或計算機開始菜單,選擇屬性。選擇進階頁籤,然後在性能區域單擊“設定”按鈕。選擇“資料執行保護”标簽,如圖2.31
所示。
理想情況下,應該看到硬體支援dep,應該為了所有程式啟用dep,除了要排除的,它們應該僅是那些dep導緻性能或穩定性問題的程式。在産品中啟用它之前,你確定在實驗室或測試系統上仔細測
試過!
2)為了啟用aslr,手動建立下面的系統資料庫
設定:
将dword值設定為-1、0或1。-1将在系統上為每個程式啟用aslr,0為不使用它,1(或任何不是-1或0的值)将僅為特定應用程式啟用aslr尤其是與這個特性相容的程式。再次強調,設定這個要非常小心,在實用之前要測試。
另一個你應該考慮改變的預設配置是在hyper-v磁盤上啟用驅動器加密(正規的稱為驅動器加密或bde)。這有助于保護虛拟磁盤和位于hyper-v平台上的配置檔案。對于企業,在獨立的存儲平台上存儲所有虛拟檔案,這是不适用的。我将在第6章單獨講述虛拟機加密。為了啟用磁盤加密,遵循下面這些步驟:
1)在現有的hyper-v安裝上,單擊“開始→所有程式→管理工具→伺服器管理”。
2)當伺服器管理器視窗打開的時候,在左側面闆高亮顯示特性,然後在右側視窗單擊“添加特性”。單擊“磁盤驅動器加密”,然後單擊“下一步”。
3)按照提示完成安裝,然後需要重新開機系統。當重新開機的時候,伺服器管理器将自動重新開機,完成磁盤加密安裝任務。
4)一旦這些完成,将可能看到錯誤,這是在嘗試标準hyper-v上啟動磁盤加密時,因為感覺驅動相容性問題而産生的。最簡單的正确設定的方式是下載下傳microsoft磁盤驅動器加密工具:
在你的windows 2008作業系統上安裝這個工具,運作它,然後當工具完成的時候重新開機。你應該看到一個類似圖2.32所示的界面。除了系統磁盤(通常是c:),你将有一個新磁盤(s:)。
5)再次重新開機你的系統。
6)一旦它開始備份,進入控制台,單擊磁盤驅動器加密圖示。當磁盤加密視窗打開的時候,選擇啟用磁盤加密。按照提示直到在系統硬體中,看到啟用受信任的平台子產品(tpm),如圖2.33所示。
7)按照指令啟用tpm,然後確定當向導完成的時候,歸檔恢複密碼。在向導中完成步驟,以繼續加密過程。
記住加密通常将對系統性能産生一點影響,是以确認在産品部署前對它進行測試。當系統磁盤沒有啟動時,這将保護你的系統磁盤,但是一個運作中的系統仍然是易受攻擊的。是以把磁盤加密看作是額外的保護層,而不是第一線的防護。
在hyper-v系統上啟用ntp和snmp與在vsphere平台上一樣重要。幸好,這兩個服務的啟用相當簡單。
了解在windows域中的成員伺服器與和它們通信的域控制器進行本地時間同步是非常重要的。校正時間敏感服務如kerberos是很重要的,當它失去同步5分鐘的時候,它的行為開始變得不确定。因為這個,建議不要改變内建的配置,僅确認你的域控制器指向你定義的内部和/或外部時間源。不管你怎樣設定你的ntp層次,下面是在windows系統上配置ntp的最簡單方法:
1)在計劃同步時間的系統上打開一個windows指令提示視窗。
在虛拟環境中,需要為運作健康配置的第二個主要服務是snmp。首先需要安裝snmp服務,單擊開始→所有程式→管理工具→伺服器管理器,當伺服器管理器打開的時候,左側高亮顯示特性,然後在右側視窗單擊“添加特性”。單擊snmp服務(如果你願意,也可以啟用snmp wmi提供者),然後單擊“下一步”。讓服務安裝,然後單擊“關閉”。
現在,按照下面的步驟配置snmp:
1)單擊“開始→運作”,輸入services.msc啟動服務控制台。
2)向下滾動到“snmp服務”,輕按兩下它,然後将在服務配置視窗的上面看到許多選項頁。我們關心的三個選項頁是代理、陷阱和安全。
3)在“代理”選項頁,輸入聯系方式和位置資訊以及snmp代理可以通路的資料類型。
4)在“陷阱”選項頁,輸入系統響應的公鑰,ip位址和/或發送資料的主機名。記住公鑰和私鑰通常是預設的,應該修改!
5)最後,在“安全”頁,指定何種系統可以從主機接收snmp資訊或向主機發送snmp資訊。
這是你能夠在hyper-v主機上配置snmp最簡單的配置。
運作加密哈希函數監控關鍵檔案,是确定最近它們是否進行過任何修改最簡單的方法。對檔案清單進行哈希操作,維護一個定期比較的基線,能提供一個簡單的方式以确定任何關鍵hyper-v檔案是否被惡意軟體或其他攻擊修改。
多數關鍵二進制和庫檔案不需要改變直到應用了更新檔,在這種情況下,你需要開發一個哈希值的新基線,從這裡開始監控。監控關鍵windows配置檔案有許多可用的線上參考。這裡,我們僅關注和hyper-v運作和功能相關的檔案和位置。如果這些檔案被意外改變,應該有潛在的運作問題或安全漏洞,就應該視情況而定開始解決問題或啟動事件響應過程。
那麼需要監控什麼檔案呢?這裡有一些,我将把它們分解為在一個路徑中有許多檔案的特殊清單。
單個檔案
正如本章之前vmware提到的,windows系統的一個很好的哈希工具是windows sha1sum程式,它可以從gnupg的網站上下載下傳。
像下面這樣運作程式:
因為hyper-v本地通路是通過windows 2008伺服器父分區管理的,是以需要考慮的細節很少。第一,強烈建議考慮僅使用域組管理使用者通路。這可以放在本地組中提供本地更細粒度的基于角色的通路。第二,應該利用管理控制台使用者控制,例如系統中心虛拟機管理器(scvmm),如果可能。這可以使管理更加流暢,這通常是提供安全和審計的先導。
也就是說,配置設定使用者群組基于角色通路hyper-v和虛拟機的最好方法是通過microsoft的認證管理器(azman)mmc。本書将講解如何使用它,也将介紹一些能夠入門的标準虛拟任務:
1)單擊“開始→運作”,然後輸入azman.msc,啟動azman。
2)第一次使用azman啟動時,使用者沒有一個加載的認證庫。在左側面闆中右擊認證管理器,選擇打開認證庫,在programdatamicrosoftwindowshyper-vinitialstore.xml加載hyper-v庫。
3)在左側面闆出現的“hyper-v服務”圖示右擊,選擇“新範圍”。填寫範圍的名稱和描述,然後單擊ok。
範圍可以定義為你想要的任何東西,例如一個特定的應用程式或叢集、某個網段、或組織部門或位置。一旦你有了定義的範圍,你可以關注三個特定的配置區域:任務定義、角色定義和角色指定。理想情況下,首先要建立的是任務定義。這是一組完成一個任務的動作,例如管理虛拟網絡元件,或建立和使用虛拟機。
4)在範圍中右擊任務定義目錄,選擇新任務定義。填寫名稱和描述,然後在視窗下面單擊“添加”按鈕,就能夠選擇一個特定操作,如圖2.34所示。
5)現在有一個新打開的視窗,有兩個選項頁,即“任務”頁和“操作”頁。單擊“操作”頁,可以添加細粒度的任務操作,這些操作符合你試圖完成的事情,如圖2.35所示。
6)單擊你想添加的每個任務旁邊的複選框,然後單擊“ok”。
7)下一步是添加角色,角色定義描述角色的類型例如網絡工程師、安全管理者、虛拟機使用者和其他人員。右擊角色定義目錄,選擇新角色定義。然後你可以像往常一樣輸入名稱和描述,然後再次單擊“添加”按鈕。現在,可以選擇添加更低層次的角色和任務給這個新角色。可以給這個角色添加特殊操作,就像之前給任務添加的那樣。建議将所有操作打包到任務,然後将任務指定給角色,這樣易于管理和維護。一旦添加了任務、額外的角色和(或)操作,單擊“ok”。任務管理網絡的一個網絡管理者角色的例子如圖2.36所示。
8)最後,需要給角色指定使用者群組。右擊“角色指定目錄”,選擇新角色指定。然後可以選擇一個已經定義的角色,單擊“ok”。選中現在這個目錄下面出現的角色,右擊它,選擇使用者群組。可以進一步選擇從視窗和活動目錄或直接從azman中添加使用者群組。如果從windows或活動目錄添加它們,那麼将得到一個标準的視窗,通過它能夠選擇對象類型,位置和使用者的名稱/或與這個角色關聯的組。
這就是所有需要做的!下面是一系列操作和操作的關鍵分類的描述,可以選擇這些操作進行hyper-v基于角色的通路:
hyper-v服務操作
讀服務配置(驗證讀取虛拟機管理服務的配置)
重配置服務(驗證虛拟機管理伺服器hyper-v網絡操作的重新配置)
綁定外部以太網端口
連接配接虛拟交換機端口
建立内部以太網端口
建立虛拟交換機
建立虛拟交換機端口
删除内部以太網端口
删除虛拟交換機
删除虛拟交換機端口
斷開虛拟交換機端口
修改内部以太網端口
修改交換機端口設定
修改交換機設定
改變vlan端口配置
解除外部以太網端口綁定
檢視外部以太網端口
檢視内部以太網端口
檢視lan端點
檢視交換機端口
檢視交換機
檢視虛拟交換機管理服務
檢視vlan設定
hyper-v虛拟機操作
允許輸入到虛拟機(授權使用者為虛拟機提供輸入)
允許從虛拟機輸出(授權檢視虛拟機的輸出)
改變虛拟機授權
建立虛拟機
删除虛拟機
暫停和重新開機虛拟機
重新配置虛拟機
啟動虛拟機
停止虛拟機
檢視虛拟機配置
下面是常用任務和相關的操作的一些例子:
任務:添加一個外部網絡到伺服器
連接配接虛拟機
任務:修改一個虛拟機
允許從一個虛拟機的輸出
讀取服務配置
檢視hyper-v設定(對于一個審計角色,可能):
允許從虛拟機輸出
重新配置服務
在microsoft網站可以看到更多任務和操作的例子:
畢竟,從安全的立場來說最佳實踐是什麼?其實很簡單——努力堅持最小特權原則。角色的粒度應該是可以得到的最小限度,每個角色應該僅有特定的任務和完成工作所需的操作,沒有任何多餘的。這有助于從内部防止惡意活動和授予更多權限導緻的後果嚴重的意外。
多數管理者将使用如下兩種方法之一通路hyper-v平台,第一種是利用中央管理控制台例如scvmm或hyper-v管理器,另一種是使用遠端桌面服務。我們将在第5章管理平台講述scvmm。這裡,将讨論你需要在本地hyper-v系統進行的改變以允許一台遠端hyper-v管理器mmc連接配接和管理應用程式:
1)首先,遵從之前讨論的相同的步驟,為azman中的hyper-v添加管理者角色使用者或組。
2)然後,單擊“開始→所有程式→管理工具→計算機管理”通路本地計算機管理控制台。打開系統工具,然後本地使用者群組。輕按兩下“分布式com使用者”組,單擊“添加”按鈕添加遠端使用者/組到本地組,單擊“ok”。
3)現在,打開服務和應用程式部分,右擊wmi控制選項,選擇屬性。單擊“安全”頁籤,展開根目錄,選擇cimv2。現在單擊下面的“安全”按鈕,如圖2.37所示。
4)确認添加遠端使用者/組。然後,在授權對話框下單擊“進階”。
5)需要對這個使用者或組的權限進行一點小小的修改。選中進階權限對話框中的使用者或組,單擊“編輯”。現在進行下面的改變(如圖2.38所示):
確定應用(apply to)設定為這個命名空間和子命名空間。
改變允許啟用遠端(單擊複選框)的權限。
單擊“僅對這個容器中對象和/或容器應用這些權限”複選框。
單擊ok保持變更,傳回wmi控制屬性視窗。
6)從cimv2向下滾動到一個類似的标簽為虛拟化的區域。如前單擊“安全”按鈕,按照同樣的步驟(步驟4和步驟5)添加使用者/組,修改啟用遠端的權限。單擊“ok”完成變更,然後退出wmi控制屬性部分。需要重新開機伺服器以便這些變更生效。
也需要確定hyper-v上的本地防火牆已經适當的配置允許遠端wmi互動。預設,安裝hyper-v時,表2.2中列出的規則是預設的。
注意,預設情況下hyper-v标準wmi接口的前四條規則是啟用的。為了啟用後四條wmi相關規則(需要遠端管理),需要在指令提示符下運作下面的指令:
這将啟用防火牆規則允許遠端mmc通路hyper-v。
管理hyper-v的第二個方法是通過遠端桌面服務。盡管充分保護遠端桌面超出了本書的範圍,但是這裡有一些恰當鎖定它的關鍵建議:
通路系統使用強密碼。這是整個安全的最基本最佳實踐,但仍有許多問題。
限制對特定使用者和系統的通路。這可以按照下面步驟完成,打開控制台,單擊系統,然後單擊“遠端”設定。首先,選擇最後一個選項,“僅允許運作遠端桌面具有網絡級認證(更安全)的計算機連接配接”,然後單擊選擇使用者按鈕。這些選項如圖2.39所示。
單擊“添加”,選擇可以從遠端桌面通路系統的使用者,然後單擊ok三次完成。
修改主機的設定。單擊“開始→所有程式→管理工具→遠端桌面服務→遠端桌面會話主機配置”。現在輕按兩下螢幕上對話框中的rdp-tcp連接配接。現在看到一個标題為rdp-tcp屬性的彈出視窗。在“通用”頁面,選擇安全層的ssl(tls 1.0)。這是建立基于證書協商連接配接的不錯選擇。對于加密等級,選擇高或fips-140。确認選擇需要網絡級别認證複選框,并使用受信任的證書頒發機構釋出的簽名證書替換預設的自簽名證書。在登入設定頁面,選中“總是提示密碼”複選框。
強烈推薦使用hyper-v管理工具管理系統,但是保護遠端桌面是非常好的實踐。