《虚拟化安全解决方案》一2.2 配置VMware ESXi
本節書摘來自華章出版社《虛擬化安全解決方案》一書中的第2章,第2.2節,作者[美]戴夫·沙克爾福(Dave Shackleford),更多章節內容可以訪問云棲社區“華章計算機”公眾號查看
2.2 配置VMware ESXi
今天,VMware有兩種廣泛使用的主要管理程序平臺。舊版平臺ESX大部分被新的ESXi(表示嵌入式/可安裝的ESX)替代。ESX比ESXi有更大的占有率,在被認為恰當地加固之前,它需要大量的配置。多數企業組織已經遷移到ESXi,或正在遷移的過程中,因此,我們這里將關注更新的平臺。鎖定ESXi的多數配置控制都能應用于ESXi的第4版和第5版,我將盡力在合適的地方指出它們的不同。
2.2.1 給VMware ESXi打補丁
經常給你的管理程序平臺打補丁應該被認為是最關鍵的安全操作之一。在VMware平臺上發現了許多重大的漏洞,經常給你的系統打補丁是讓它們不受傷害的最好方法。
有一些常用的系統打補丁的方法,但管理員應該意識到VMware僅為它自己的平臺提供真正的補丁程序。換句話說,如果你已經有一個補丁管理基礎設施,那么它可能對ESXi打補丁不管用。VMware提供了管理補丁的許多產品。但是,如果你在一個非常小的環境中工作,你可以在命令行使用腳本工具打補丁,這些內容我將在本章后面的“通過命令行打補丁”部分講解。但是,多數組織希望有一個更具擴展性的解決方案。
VMware GO
在2011年,VMware收購了補丁管理提供商Shavlik,從此獲得了它的技術,提供vCenter Protect和VMware GO產品。兩者都是獨立的產品,主要服務于中小型企業(SMB)市場。
VMware GO是基于云的服務,它使小型組織能夠通過建立一個中央管理系統(例如管理員的工作站)削減他們的運營費用,中央管理系統通過與VMware云通信給主機和虛擬機掃描和打補丁。一旦登錄,管理員可以通過IP范圍、主機名、域名或組掃描他們的本地環境,向這些系統推送補丁。從那里,一個簡單的內置服務臺票務系統可被用于指定補丁,并給各種組或人更新任務。在GO庫中一個完整的補丁管理程序看起來就像這樣。
多數組織使用VMware更新管理器(VMware Update Manager,VUM)給ESXi系統打補丁。VUM可以使打補丁和更新過程自動化、簡單化。使用VUM,你可以僅控制打補丁的操作周期的各個方面。
例如,VUM已經可以支持集群;所有集群成員均可以評估資源可用性,把主機轉入維護模式打補丁(這表示所有虛擬機需要遷移到其他集群成員)。一旦完成資源評估,想打補丁的集群成員將處于維護模式,虛擬機將遷移到其他成員,你就可以開始打補丁。你可以給所有集群成員打補丁,或是僅用VUM給特定管理程序打補丁。在集群主機上,某些服務可以關閉或扔在一邊。如果由于某些原因第一次打補丁失敗,可以有計劃地
重試。
在ESXi5版,VUM也可以從多個源下載補丁,過濾出特定的更新,使得只有與你環境相關的補丁被下載。VUM可以從ESX/ESXi 4.x升級到5.x,更新VMware虛擬設備(Virtual Appliance,VA)和一些第三方產品,虛擬機VMware產品的更新可以預先設定。
安裝VUM和它的vCenter插件超出了本書的范圍。斯科特勞所著的《精通VMware vSphere 5》(Sybex,2011)是個很好的資源。
1.?配置VUM
配置VUM是非常簡單的,有許多明確的打補丁的最佳實踐。第一步是定義補丁如何下載和使用。這里,你有兩個選擇:
通過互聯網直連下載。
添加本地(內部)補丁存儲庫。從存儲庫,你可以提供補丁,將鏡像更新到主機。應該以這種方式分發這些補丁和鏡像庫,以輕松地與主機通信,而不用跨廣域網或較慢的網絡連接,因為需要發送大量的數據。
選擇共享庫對大型、更加分布式的環境是最好的。一旦你制定了合理成熟的VMware平臺的補丁過程,使用共享庫是最安全的選擇,因為它給你提供了更多補丁如何存儲和分發的控制。另一個主要優點是你的vCenter系統不會持續地查詢網上的VMware補丁庫,當你有許多系統或一些系統根本不能訪問互聯網的時候,這特別有用。
為了建立共享庫,你首先需要從vSphere安裝媒體中運行VMware-UMDS.exe文件,安裝更新管理器下載服務(UMDS)。然后你可以使用這個簡單命令行工具下載所有補丁和更新到中央庫,任何vCenter系統都可以訪問它。
為了建立補丁下載或定義存儲庫、定義下載和使用補丁的任務計劃,可按照以下步驟:
1)訪問vCenter控制臺。選擇“解決方案和應用程序”,選擇“更新管理器”,選擇你的vCenter位置。
2)選擇配置標簽頁(在面板的上面)。在左邊的列上單擊下載設置。結果如圖2.2所示。
3)指定從哪里下載,這里你有兩個選項:
單擊“Direct Connection To Internet”單選按鈕,然后在右邊單擊添加下載源,添加你想要的新的外部下載源(確保它是你信任的源)。
對于大型的更加分布的選項,單擊“Use A Shared Repository”單選按鈕,它允許你指定內部存儲庫。指定和驗證你的共享庫位置。
4)單擊“Apply”按鈕,或單擊“Download Now”按鈕,立刻得到補丁。
5)下一步是定期的任務計劃下載。在左側的列中單擊下載任務計劃。在任務計劃更新下載窗口(見圖2.3),你可以指定一個任務名和描述、更新的頻率和時間,及電子郵件通知設置。
2.?定義基線配置文件
配置更新的下一步是定義細粒度的基線配置文件,包括關鍵和非關鍵的主機補丁(這些是預定義的)以及共用的虛擬設備的特定配置文件。維護一套ESXi鏡像來完成更新也是非常明智的。它們中的每個也應該有一個定義的基線配置文件。
為了了解你得到的基線選項是什么,讓我們看一個預定義的基線:
1)在屏幕上面更新管理器管理區選擇“基線和組”標簽頁。你將在窗口中看到兩個面板。左邊的面板是基線列表,右邊的面板是基線組的列表。在左側面板中,你也注意到了上面的兩個按鈕,一個用于主機,另一個用于虛擬機/虛擬設備。默認情況下,你應該有兩個默認的定義的主機基線:關鍵主機補丁和非關鍵主機補丁。
2)雙擊關鍵主機補丁基線,打開編輯基線窗口,第一屏提供了一些你能定義的選項:
因為是預定義的,所以基線名稱和描述已經填充了數據。
因為是預定義的,所以基線類型也是不能修改的,但是如果需要的話你可以創建你自己的。有一些主機基線類型供選擇:
主機補丁:這個基線用于給管理程序主機打補丁。
主機擴展:這個基線將安裝或更新主機上的附加軟件組件。
主機更新:這些基線包含一個鏡像文件,它用于你想升級的從一個ESX或ESXi到另外一個版本的主機。
而且,你有另外一個稱為單選VA基線的分類,即VA更新。這個類別把更新應用于虛擬設備,這些設備可以是VMware和VMware認可的特定第三方提供商。
3)在這個例子中,主機補丁基線類型已經被選中。請單擊“下一步”。
4)下一個界面允許你選擇補丁選項。你有兩個選擇項可選擇:
固定的:這是一個嚴格定義的類型,它指定某些系列的補丁,僅當管理員從列表中添加或刪除的時候才變更。這個選項需要更多的管理介入,但保證永遠不會推送一個你不想要的補丁。建議大多數環境使用它,因為這樣不會有任何不必要的風險。
動態的:動態補丁允許你指定某種補丁標準,VUM遵守這些標準,符合標準的新補丁被動態地添加到列表中。在某些環境中這可以加速打補丁,但你首先必須小心地測試。我建議這種設置僅用在這樣的環境中,即速度更重要,且虛擬機管理程序配置是非常好理解的。而且,需要稍微高的風險容忍度,因為使用動態補丁多數可能出錯。
關鍵補丁默認設置是動態的。使用這種補丁類型,你需要指定包含的標準,因此單擊“下一步”。
5)動態基線標準截屏(圖2.4)允許你指定補丁的標準,包括供應商、產品、及補丁嚴重程度和類型,及發布日期信息。完成后,單擊“下一步”。
6)下一個界面允許你明確地排除某些補丁,為管理員提供了另一級別的粒度,控制推出什么補丁。單擊“下一步”。
7)最后的配置頁允許你在基線中包含額外的補丁,可能是一個或若干不滿足之前指定的標準的。再次,這就是在動態補丁中允許更多的粒度。單擊“下一步”,出現總結頁,然后單擊“完成”。
相當直觀,不是嗎?創建你自己的基線是簡單的。右擊左側面板的任何地方,選擇新基線。然后,你將看到我們剛才用過的相同的向導頁面。但你將注意到對于每個不同的基線類型是有些不同點的。
對于主機固定補丁基線,你將僅從庫中選擇一個靜態的補丁列表。
對于主機擴展基線,你將選擇一個擴展列表更新。
對于主機更新基線,你將選擇你想要用于更新的ESX或ESXi鏡像文件。
這同樣也適用于VA更新,僅你創建的供應商和特定產品的規則適用。對于虛擬機和虛擬設備,有三種預定義的基線(它們不能被編輯):
VMware工具更新以匹配主機。
虛擬機硬件更新以匹配主機。
虛擬設備(VA)更新到最新。
因此,你怎么樣決定使用哪個選項?下面是一些建議:
對于多數關鍵的主機,需要嚴格控制配置的一致性,最好定義固定的主機補丁基線,每個補丁必須手動添加。
動態配置對于自動添加滿足規則的新補丁到基線是有益的,但是如果沒有足夠的測試就部署,它們可以造成嚴重的破壞。動態基線的新過濾規則使控制包含哪個補丁變得容易,因此可以極大地簡化較不重要主機的自動打補丁。
另一個合理的實踐是定義多個補丁庫,對特定鏡像和補丁包的外部(例如VMware的網站)及本地庫。
3.?定義基線組
下一個重要的實踐是定義基線組。基線組到底是什么呢?簡單!它們僅僅是你定義的可以同時應用的基線的組。例如,你可能有一個經常使用的定期動態打補丁的基線,但是你每月一次從固定的組中使用特定的補丁。這兩個過程可以被結合到一個能夠給你更多靈活性的基線組中。另一個選擇是將主機更新與補丁相結合,還可以定義包含虛擬機或虛擬設備更新的混合組。你僅需要決定什么對你自己環境的各種主機組和虛擬機有意義。
為了定義基線組,遵從下面這些步驟:
1)登錄到vCenter,轉到“更新管理器管理”頁面,單擊上面的“基線和組”標簽頁。
2)在右側的面板中,要么右擊任何位置,選擇“新基線組”,要么單擊右上角的“創建”按鈕。
3)新基線組向導打開后,你需要選擇你想要的組類型——主機基線組或虛擬機和虛擬設備基線組。填寫組名,單擊“下一步”。
4)對于主機組,下一步是選擇任何更新基線、補丁基線,最后是擴展基線。對于虛擬機/虛擬設備組,你將僅選擇定義的更新基線選項。
5)當你選擇這些(通過選擇復選框或選擇任何你想包含的基線旁邊的單選按鈕),你將在“準備完成”頁面結束定義操作,在這里你可以單擊“完成”按鈕。最后的頁面例子如圖2.5所示,你可以看到它包含一個簡單的主機基線組、關鍵和非關鍵補丁以及默認的安裝基線更新。
4.?其他VUM設置
在VUM的配置頁面,有許多你應該密切注意的設置:
網絡連接 這里,你可以為客戶設置VUM使用的連接端口,以及ESX和ESXi主機補丁庫連接。你也可以設置補丁庫的IP地址和主機名。
下載設置 包括本章之前“配置VUM”部分,這是你指定VMware URL的地方,從這里下載補丁和選擇內部補丁庫。你也可以配置代理設置或不需要驗證訪問的URL。
下載計劃 這是你設置按照任務計劃定期下載的地方。
通知檢查計劃 VUM將定期檢查補丁更新和報警,你可定義這些任務計劃以及任何你想收到的郵件通知。
虛擬機設置 為了保險起見,你可以在打補丁前對任何虛擬機生成快照以防你需要將它們回退。你也可以指定這些快照要保持多久。
ES主機/集群設置 在這部分,有許多需要考慮的選項。
首先,你可以選擇在主機進入維護模式進行更新前是否關閉電源或休眠。你也可以選擇什么都不做的選項,這表示虛擬機將必須在維護期間遷移到其他主機。
首先你可以禁止可移動媒體設備,它可能阻止主機進入維護模式。
對于集群設置,你可以選擇暫時禁止某些特性,如分布式電源管理(Distributed Power Management,DPM)和容錯功能,同時更新所有集群主機(如果你能這樣做的話,建議這么做)。
主機和集群的可用選項如圖2.6所示。
vApp設置 vApp是虛擬機組,它們由于特定目的連接在一起。一些虛擬應用組需要重啟,以保持與主機或相互間的同步,VMware的智能重啟能力使你能夠在需要的時候,有選擇地重啟VAPP虛擬機。
5.?附加基線和組
一旦配置了VUM,建立了基線和基線組,需要將基線和組應用于主機和虛擬機。這是通過將它們應用到vCenter內特定對象來完成的。有兩個你訪問的地方可以應用VUM基線:
“主機和集群”視圖用于添加基線到主機。你可以添加一個基線到數據中心、集群或單個主機。
“虛擬機和模板”視圖用于添加基線到虛擬機。你可以添加基線到一個數據中心、文件夾或單個虛擬機。
對于任何一個視圖,最簡單的添加基線、獲得補丁和開始更新的方法是使用更新管理器。遵循下面的步驟:
1)在上面選擇“更新管理器”標簽頁。
2)一旦你進入“更新管理器”標簽頁,你將看到幾個面板,包括添加基線、基線組和使用這些基線的任何對象具有的兼容狀態的簡單視圖。為了添加基線或基線組,右擊任何地方,選擇附加或單擊右上角的附加
鏈接。
3)附加基線或組向導出現(見圖2.7)。在這里,選擇任何定義的基線或組甚至是創建新基線都很簡單。
選擇基線和/或組,單擊“附加”。你應該看到更新管理器界面反映了這些變更,如圖2.8所示。
4)為了手動初始化一個合規性評估,你可以為任何vCenter對象返回主界面,單擊右上角的“掃描鏈接”。
6.?分階段和修復
現在,已經有了另外兩個可用于給主機和其他系統打補丁的選項。第一個稱為分階段(staging),能夠在打補丁之前,將補丁推送給虛擬機管理程序主機,這可能在真正安裝補丁的時候節省時間。當主機在遠程辦公室或位于網絡較慢的地方的時候,這是很方便的。
設置分階段,遵循下面的步驟:
1)在窗口的右下方部分,單擊“分階段”。
2)當分階段向導打開的時候,選擇基線和主機,選擇任何用于擴展和補丁的不適用情況,然后單擊“完成”。
第二個選擇是修復或立刻應用補丁。與分階段很像,它可以這樣完成,單擊窗口右下方的“修復”按鈕,然后選擇基線和/或基線組、主機、除外情況、你想遵從的時間表。實際上,這個過程不能再簡單了!
7.?通過命令行打補丁
對于那些僅有小型環境想通過命令行手動推送補丁的人,也有辦法。下面是可以遵循的步驟:
1)在進行任何形式的更新之前,備份ESXi配置將是明智的!在ESXi直接控制臺或通過SSH使用vicfg-cfg備份命令,或使用同樣名稱的vSphere CLI命令。下面的步驟顯示的是vSpere CLI版本:
2)現在,列出與VMware提供的更新相關的鏡像概要:
3)讓主機處于維護模式:
4)現在,可以用演習選項運行更新,它將告訴使用者可能遇到的任何潛在錯誤或問題:
5)假設沒有問題,繼續運行更新:
6)你可能需要重啟主機:
7)最后,將主機脫離維護模式:
就這樣!在這個操作上有差異;例如,舊版的ESX和ESXi可能使用esxupdate和vihostupdate工具。
2.2.2 VMware ESXi的安全通信
總之,所有與ESXi服務器的通信均使用安全套接字層(SSL)或有數字證書的傳輸層安全(Transport Layer Security,TLS)加密。在安裝期間,ESXi產生自簽名VMware證書;換句話說,它不是可信的第三方認證授權(Certif?icate Authority,CA)或你自己的內部認證授權,而是VMware發行的用于進行基于SSL加密必需的機制。在安裝以后,默認的證書和私鑰位于下面的位置:
默認SSL證書:/etc/vmware/ssl/rui.crt
默認SSL私鑰:/etc/vmware/ssl/rui.key
原則上,這些應該被更加可信的證書和私鑰替換。創建可信的證書超出了本書的范圍,但下面的鏈接描述如何使用OpenSSL創建它們:
使用vSphere CLI替換默認的私鑰和證書是非常簡單的:
1)在將虛擬機管理程序設為維護模式之前,記得將所有運行的虛擬機遷移到另一個ESXi主機上。在vCenter控制臺或vSphere客戶接口中右擊ESXi服務器將系統設為維護模式,選擇進入維護模式(見圖2.9)。
2)接著,打開一個vSphere CLI控制臺。
3)在命令提示符中,輸入下面的命令,替換單個ESXi主機上的私鑰和證書:
ssl_cert和ssl_key實際是這些文件將放置位置的“指針”,因此你需要使用完全準確的語法,太奇怪了。
在多數情況下,另一種方法完成這個操作甚至更容易些。用你新生成的rui.crt和rui.key簡單地替換/etc/vmware/ssl目錄中的文件。為此,執行下面的命令:
4)當做完這些的時候,將主機退出維護模式。
就是這樣!還有其他方式完成它,包括使用HTTP PUT命令,但這是最簡單和最合理的。
備份你的設置
記住ESXi本質上是一個臨時的操作系統,意味著它僅運行在內存中。當系統突然重啟(由于電源故障或其他問題),你不小的話就將失去這個配置。在每小時的第一分鐘,ESXi運行/sbin/auto-backup.sh腳本,然后寫當前配置到/bootbank/state.tgz,當它啟動重新配置系統時,ESXi使用后者。為了完全確定你保持了這些設置,可以手動通過SSH登錄運行腳本或使用命令行,執行下面的命令:
確保可信的證書在恰當的位置是幫助你防止中間人(Man-In-The-Middle MIMT)攻擊的簡單方法。這可以在vCenter管理控制臺開啟。一旦你有了正確的證書,登錄vCenter,完成下面的步驟:
1)在窗口上面單擊管理菜單,然后選擇vCenter設置。
2)在左邊的菜單中單擊“SSL設置”。確保右邊標簽為“vCenter需要驗證主機SSL證書”的復選框被選中。SSL設置界面如圖2.10所示。
3)為了驗證主機證書的ESXi指紋(VMware稱它們為拇指指紋),登錄到主機的直接控制臺。按F2鍵訪問系統自定義菜單。
4)選擇“視圖支持信息”,在右側查找唯一指紋,如圖2.11所示。
5)確保這些主機指紋與你的主機匹配,然后選擇vCenter中主機旁邊的“驗證”復選框。
為了SSL更加安全,你應該考慮添加超時值。在ESXi上有兩種類型的超時:
讀超時應用于在TCP 443端口SSL握手進程已經完成的連接。
握手超時應用于沒有完成SSL握手的系統。
兩種超時都應該設置。為了改變這些設置,請完成下面的步驟:
1)登錄到直接控制臺或使用SSH訪問ESXi命令解釋程序,轉到/etc/vmware/hostd目錄,使用Vi文本編輯器打開conf?ig.xml文件。
2)查找段頭標簽,將看到段頭下面的幾行有各種配置參數,在下面輸入如下兩個新行:
文件信息基本如圖2.12所示,這些設置的單位是毫秒,因此,上面的行將超時都設置為15秒,在多數環境中,這都是合理的值。如果你有網絡延時或其他可能導致更長的握手時間的問題,你可能想增大這些值。
3)保存文件(按下Escape,然后輸入“wq”)。
4)運行下面的命令,重啟主機服務:
另一種與ESX/ESXi進行安全通信的方法是使用IPSec。這僅適用于主機運行在4.1及以上版本的情況,為了使用IPSec,你需要啟動IPV6。為了啟動IPv6,并通過vCenter添加一個地址,按下面步驟做:
1)選擇一臺ESX/ESXi主機,然后單擊“配置”標簽頁,在左邊選擇網絡連接。
2)然后在右側單擊“屬性”。你將得到一個簡單的彈出窗口。單擊標簽為“在這個系統上開啟IPv6支持”的復選框,單擊“OK”。
3)現在,需要重啟主機,這表示需要首先將虛擬主機遷移。一旦完成,就可以為主機上各種網絡連接適配器設置IPv6地址。返回配置頁的網絡部分。
4)對于每個vSwitch,單擊“屬性”。選擇端口組,可以單擊或雙擊“編輯”按鈕,然后單擊第二個標簽頁(IP設置)。現在應該能夠配置一個或多個IPv6地址。
一旦設置了IPv6地址,就已經準備好配置IPSec了。IPSec可以通過vSphere CLI vicfg-ipsec命令配置。下面是你需要設置的參數:
配置IPSec的主機添加一個IPSec安全關聯(SA)vCenter服務器的IPv6地址ESX/ESXi主機的IPv6地址IPSec模式,通常是傳輸安全參數索引(SPI),或SA標識符使用的加密算法SA的加密密鑰使用的驗證算法使用的驗證加密密鑰SA的唯一名稱
看起來很多,當然它的確如此!下面是一個筆者為主機esx.abc.com配置簡單傳輸模式SA的例子,使用aes128-cbc(AES 128位加密,使用密碼塊鏈接)SA加密、HMAC-SHA2驗證加密和TestSA的SA名:
接下來,在創建了安全關聯之后,應該為加密vSphere客戶從管理服務器到主機通信建立安全策略。這也需要一個帶有多個參數的vicfg-ipsec復雜命令行:
配置IPSec的主機添加一個IPSec安全策略vCenter服務器的IPv6地址ESX/ESXi主機的IPv6地址IPSec通信的源端口IPSec通信的目的端口加密的上層協議(通常是TCP)通信方向(在本例中,入站)這個策略采取的動作(ipsec)SP模式;應該匹配SA模式與策略關聯的SASP的唯一名稱
下面是上述命令的一個例子,筆者對主機esx.abc.com應用這一安全策略,使用相同的IPv6地址(需要在結束位置為單個IPv6主機添加/128子網掩碼),對于TCP通信,設置進入端口是443,SP名是TestSP:
配置IPSec還有許多其他選項,包括允許IPSec像真正的通信過濾機制類似的配置選項(更像一個防火墻)。你應該找出在你的組織中運行得最好的選項;記住,如果錯誤配置了任何東西,它可以導致嚴重的問題,這是一個復雜的協議。
而且,需要在主機通信的vCenter服務器上建立IPSec。本章后面講解Hyper-V的時候,將介紹一個Windows 2008 IPSec的例子。
2.2.3 在VMware ESXi上改變和刪除默認設置
默認情況下,在ESXi平臺許多服務隨主服務后臺進程hostd運行,主服務作為它們的代理。在某些情況下,可以關閉一些服務。
許多人選擇關閉下面三個服務:
網絡訪問登錄頁
受管理對象瀏覽器
主機歡迎登錄頁
這些多少都是通過網絡瀏覽器訪問ESXi信息,它們默認是通過在瀏覽器中輸入ESXi系統的管理接口的IP地址開啟的。受管理的對象瀏覽器主要由vSphere軟件開發工具箱(SDK)用來預讀取主機的管理對象模型。登錄頁幾乎總是可以被禁止而沒什么影響。但是,受管理對象瀏覽器可能被各種程序所用,在禁止它之前應仔細地測試。
適用于任何列出的hostd服務的其他措施是強迫使用HTTPS而不是HTTP。這應該基于平臺所在環境和你擁有的用例而被認真地考慮,因為HTTPS確實對性能有更大的影響,盡管在企業環境中通常不是重大影響。
使用V Center或VSphere客戶端禁用這些服務以對受管理的企業環境產生最小的影響。確保首先測試通過!VMware建議在ESXi 5.x版本上不禁止網絡訪問登錄頁面,因為這可能使高可用性(HA)服務崩潰。
遵循下面的步驟關閉不需要的服務:
1)為了確定什么服務正在運行,通過SSH或在直接ESXi控制臺執行下面的命令:
2)使用下面的命令禁止不需要的服務(對于ESX平臺,使用vmware-vim-cmd替換vim-cmd)
網頁訪問登錄頁:vim-cmdproxysvc/remove_service"/ui" "httpsWithRedirect"
受管理對象瀏覽器:vim-cmdproxysvc/remove_service "/mob" "httpsWithRedirect"
主機歡迎登錄頁:vim-cmdproxysvc/remove_service"/" "httpsWithRedirect"
3)對于每個列出的服務,注意變量。基于服務,有幾個已經配置了的選項。為了使用HTTPS,配置下面其中一項:
httpsOnly——強迫使用HTTPS,使用HTTP連接將不會得到響應。
httpsWithRedirect——重定向HTTP連接到適當的端口/資源。
4)設置將立刻有效;需運行/etc/init.d/hostd restart,然后運行/sbin/autobackup.sh腳本以確保它有效。
2.2.4 在VMware ESXi上開啟運營安全
有一些支持服務可配置用于優化虛擬化運營。其中一些將在后面章節單獨講解(例如,syslog將在第7章講解),但有兩個在這里特別值得提到:
網絡時間協議(Network Time Protocol,NTP) NTP是安全的關鍵支持服務,因為它在不同系統的事件間關聯時間戳時提供了一種非常合理的方式。沒有NTP,多個系統的登錄數據(包括虛擬機、虛擬機管理程序、管理平臺)就不能準確地連接在一起,重建事件和意外。
簡單網絡管理協議(Simple Network Management Protocol,SNMP) SNMP允許管理員監控環境中的系統配置和事件細節。對于SNMP,需要配置社區字符串(community strings),它標識環境中的查詢和響應SNMP服務。許多人將SNMP社區字符串看作SNMP服務的共享密碼,這是一個合理的近似。許多SNMP實現和產品使用的默認社區字符串是公鑰和私鑰。因為它們如此普遍,多數試圖通過SNMP枚舉或改變配置項的攻擊者都會嘗試它們。你應該有非常確定的計劃修改它們!
NTP和SNMP都是安全的運營支持服務,但至關重要。NTP的配置總是心需的,而SNMP的配置取決于環境。
1.?配置NTP
在VMware平臺上開啟和配置NTP和SNMP實際上是相當簡單的。為了在ESX或ESXi主機上啟用NTP,最簡單的方法是使用有vCenter的vSphere客戶端:
1)登錄到vCenter,訪問“詳細信息”→“主機和集群區”。
2)選擇一臺主機,然后在上面單擊“配置”頁。單擊左側的“安全概要”鏈接,顯示“服務和防火墻”設置。
3)單擊“服務”列表旁邊的“屬性”鏈接。你應該看到一個NTP后臺程序的入口。高亮這個入口,然后單擊右下角的“選項”按鈕。
將看到NTP后臺程序的選項界面。有兩種可用的選項類型可供選擇,默認界面為通用(見圖2.14),允許啟動后臺程序和選擇將來如何啟動它(自動或僅當特定端口提前開啟時)。
對于多數企業,NTP后臺程序應該與主機一起啟動和停止,但如果主機處在DMZ中或面向公眾的子網中,可以選擇隨打開和關閉端口啟動和停止。
4)單擊“開始”按鈕現在就啟動后臺程序,或可以在添加NTP服務器之后啟動它。
5)選擇NTP后臺程序設置的第二個類型,對應標題“NTP設置”。這里其實只有一個選項,也就是添加NTP服務器,從這個服務器獲得ESX/ESXi主機時間。單擊“添加”按鈕,輸入一個NTP服務器的IP地址或主機名,單擊OK完成。你將看到與圖2.15類似的界面。
一個好的做法是添加至少三個NTP服務器。有許多的外部時間服務器可選,但一個好的可靠時間服務列表(對在美國的人適用)可在NIST上找到:
6)如果NTP后臺程序已經啟動了,可以單擊“重啟NTP服務以應用更改”按鈕,然后單擊“OK”。
如果你在添加NTP服務器之前沒有在第4步啟動服務,再次單擊左側的“通用”類型,然后在單擊“OK”之前單擊“開始”。
7)當回到“安全概要配置”界面的時候,注意也可以在標準服務選項下方配置防火墻端口和認可的服務。當單擊防火墻屬性的時候,也可以通過在右下角選擇NTP后臺程序和單擊“選項”按鈕啟用NTP后臺程序。
通過命令行啟用NTP也是很簡單的,即使用vicfg-ntp命令!下面是操作步驟:
1)首先,訪問vSphere CLI,添加服務器:
2)為想要添加的每個NTP服務器重復上面的步驟。
3)然后,在主機上啟動NTP服務,如下:
這就是ESXi主機上遠程命令行控制NTP服務的步驟。對于ESX主機,語法相似,除了用命令esxcfg-ntp替換。
2.?配置SN MP
為了在ESX和ESXi主機上配置SNMP,最可靠和簡單的方法是在vSphere命令行使用vicfg-snmp腳本。你也需要確保SNMP端口(UDP161)在ESX/ESXi主機上打開。
1)運行下面的命令確定主機上SNMP是否啟用:
將得到SNMP代理是否啟用(0或1)和SNMP使用的端口的信息。
2)為了檢查SNMP端口是否啟用,需要檢查主機上防火墻的配置。這可以使用vSphere客戶端或ESXi5主機的esxcli命令來完成。
為了使用vSphere客戶端,連接到主機或vCenter,導航到“主機和集群”區并選擇主機。在右側面板單擊“配置”頁,然后選擇左邊列表中的“安全概要”鏈接,查看防火墻部分。如果端口是打開的,你應該看到SNMP服務器或主機上進來(DUP端口161)和潛在的流出(UDP端口162)的snmpd列表。如果它們沒有列出,單擊“屬性”鏈接,在“防火墻屬性”窗口找到同樣名字的入口,單擊旁邊的選擇框,然后單擊“OK”(見圖2.16)。
從命令行檢查防火墻狀態,可以在vSphere CLI中使用esxcli命令如下:
3)在提示輸入密碼之后,能得到一個防火墻識別的服務和它們的狀態(啟用/禁止)。為了使用esxcli命令啟用防火墻服務,運行下面的命令(當然有點復雜):
這個命令將在ESXi防火墻中啟用已知的SNMP規則(通過選項“-e 1”)。
4)一旦打開了防火墻端口,服務已經啟用,可以使用vicfg-snmp命令啟用和配置SNMP服務。使用下面的命令啟動SNMP服務(如果沒有運行的話):
這個命令將在ESXi上運行,但對于ESX系統你需要添加與SNMP服務相關的社區字符串:
5)你可以選擇性地指向SNMP陷阱目標:
如圖2.17所示。
當沒有虛擬機管理程序安全控制的時候,另一個在vSphere基礎設施中配置SNMP的地方就是vCenter自身。在這里你能控制用于外部SNMP接收器和vCenter間通信的社區字符串,還能控制用于發送SNMP報警的端口和URL。為了配置這些設置,應登錄到vCenter,在上面選擇“管理”菜單,然后選擇“vCenter服務器設置”菜單項。在新出現的窗口中單擊SNMP選項,將看到一個SNMP接收器列表,可以配置它們的URL、端口和共享字符串,如圖2.18所示。
確認已從VMware下載中心下載與vCenter和ESX/ESXi相關的任何管理信息基礎(Management Information Base,MIB)文件。
2.2.5 在VMware ESXi中保護和監控關鍵配置文件
ESXi主機上有大量從安全配置角度被認為是非常關鍵的文件:其中一些本質上是靜態的,隨著時間推移保持一致,直到保存系統更改的時候;另一些本質上更加容易變化,經常改變日期和時間戳,一些文件大小也會發生變動。可監控的基礎文件列表可以在https:// or IP>/host上找到。通常需要認證才可獲得這個列表。這些文件沒有特定的與之相關的目錄屬性,因此不能準確識別它們在ESXi文件系統的位置。但是可以找到它們,我們不需要監控文件的完整性,因為僅僅需要指定/host/語法,就像在這個列表中看到的那樣。
下面是一些附加的文件,它們某種程度上基本保持不變,僅當系統有意更新的時候而改變。這些文件非常重要,應該監控它們的完整性且跟蹤它們:
其他需要跟蹤的重要文件包括在/etc目錄中與安全相關的配置文件,如下所示:
還有許多文件被認為是ESXi的/host列表非常重要的一部分,但是會經常更新,這導致修改日期改變。但這些文件的大小不應該經常變化。它們是:
最后,在/host中列出了一些文件,它們經常改變,按照通常的規則監控非常困難。因為它們是重要的日志文件,你應該認識它們,但是日志文件幾乎不會一直保持不變:
因此,既然已經定義了可能想監控完整性的文件,但是如何獲得并且監控它們呢?在ESXi系統上最簡單的方式是使用vSphere CLI下載這些文件到一個可信的存儲位置,然后使用Windows或其他系統工具對它們進行散列操作(hashing)。
下載文件的命令是簡單的:
一旦這些文件被保存在中心位置,可以使用常用的md5sum或sha1sum工具進行快速的完整性檢查。后者實際上是ESXi系統默認的可運行命令,但通常先下載這些文件,然后用其他方法運行散列命令。
僅僅像下面一樣運行可執行命令:
Windows版的散列工具有許多,但一個已被驗證可行的Windows sha1sum庫可以從GnuPG (ftp://ftp.gnupg.org/gcrypt/binary/sha1sum.exe)下載。
這不是最有效的方法,整個過程腳本化更有意義,創建批處理腳本是很簡單的。
2.2.6 在VMware ESXi上保護本地用戶和組
ESX和ESXi平臺有本地用戶,它們可以從本地命令行訪問(使用ESX控制臺或ESXi直接控制臺用戶接口,或DCUI)或通過使用遠程工具(SSH是一個最常用的工具)。這些用戶列在系統的/etc/passwd文件中。與這些用戶相關的文件的密碼列在文件/etc/shadow中,正如你在任何現代UNIX/Linux平臺上期望的那樣。在ESX和ESXi管理程序系統上,有四條你應該遵守的與本地用戶相關的安全指南:
1)盡可能限制系統上本地用戶的數量。
2)只要可能限制全能根賬戶的使用。
3)實現本地密碼的復雜和重復策略。
4)如果可能,實現活動目錄認證。
1.?限制本地用戶
對于vSphere 4.x和5.x系統,系統上有一小部分本地用戶。下面的用戶在多數環境中是默認存在的:
root:根用戶是系統中最強大的管理員賬戶。
vpxuser:vpxuser賬戶是當連接到(然后被管理)VMware vCenter管理平臺的時候,每個ESXi主機上創建的非常重要的用戶。
dcui:直接控制臺用戶接口(Direct Console User Interface,DCUI)賬戶是數據中心內系統本地控制臺的一個特權賬戶。
daemon:后臺程序賬戶是一個“捕獲所有”ESXi服務的賬戶,是非交互賬戶。
nfsnobody:如果需要,nfsnobody賬戶可被配置為NFS存儲的代理用戶。在舊版的ESX和ESXi上,這個賬戶名為vimuser。
現代ESXi平臺的組數量也比之前ESX和ESXi版本的數量少很多。根用戶組僅包括根用戶,后臺程序組僅包括后臺程序用戶。users和nfsnobody組默認是空的。
除了nfsnobody賬戶之外,所有ESXi的默認賬戶都是必需的。關鍵在于不要添加任何新的賬號,直到它們真正需要!ESX平臺的服務控制臺提供了控制特權使用的標準Linux命令(例如su和sudo),但是ESXi僅提供了su。總之,在系統上,交互用戶賬號越少越好。
在ESXi系統上,添加、刪除、修改本地用戶有許多方法。首先,你可以檢查看看有什么用戶。這可以用下面的步驟完成:
1)從本地DCUI或通過SSH,僅僅輸入cat /etc/passwd,所有本地用戶就都列在這里了,如圖2.19所示。
2)用下面的一種方法獲取用戶和組的信息:
應用vSphere CLI,可以列出所有本地組,以及每個組中的用戶,使用下面的命令:
另一種僅列出本地用戶和它們的全名、用戶ID(User ID,UID)數量,以及判斷它們是否具有腳本訪問(0或1)的方法如下:
最后一種選擇,可以使用vSphere客戶端直接連接ESXi主機。一旦連接后,在右側選擇“本地用戶和組”。在這個面板中你有兩個視圖選項卡,一個是用戶,另一個是組。雙擊用戶或組的任何一個將進入編輯界面,這里你可以修改屬性、設置、密碼和組關系。用戶編輯界面如圖2.20所示。
也可以通過vSphere CLI管理用戶(記住:--username參數指的是ESXi主機的admin用戶,不是正編輯的本地用戶)。
添加一個新的本地用戶,運行下面的命令:
用類似的命令可以創建組:
刪除用戶和組,vicfg-user語法類似。為了刪除一個用戶,運行下面的命令:
刪除組也很簡單,首先必須刪除組中的所有用戶(接下來講述):
修改用戶也可以使用vicfg-user命令實現,像下面這樣添加新參數,將操作參數改為modify:
給組添加用戶和刪除用戶可以用相同的命令完成:
2.?限制本地根賬號
在ESXi主機上保護本地用戶的第二個主要的步驟是盡可能地限制本地根賬號。對于ESX來說,使用sudo命令和/etc/sudoers文件完成非常容易,在文件/etc/sudoers中明確定義要限制的用戶賬戶和組。遺憾的是,在最近版本的ESXi上并沒有sudo,但有兩個可用的
選擇:
開啟lockdown模式,它限制了除vCenter之外的所有遠程訪問,也可用本地訪問禁止lockdown模式;
在/etc/ssh/sshd_conf?ig文件中限制SSH根登錄。
我們將講解這兩個過程。
使用者可以很容易地在添加一個主機到vCenter中的過程中,啟用lockdown模式,如
圖2.21所示。
也可以使用vCenter以下面的方式啟用lockdown模式:
1)選擇庫區域,然后選擇主機和集群,最后選擇一個特定的ESXi主機。
2)在右側面板中單擊“配置”頁,然后在左側選擇“安全概要”鏈接。
3)在這里,向下滾動到lockdown模式類別,單擊“編輯”鏈接。一個小窗口將彈出,里面有一個啟用lockdown模式的復選框。
最后一個選項是在主機上使用本地DCUI控制臺,在控制臺中選擇“配置Lockdown模式”,然后當窗口出現的時候,選擇“啟用Lockdown模式”,如圖2.22所示。
盡管這樣并不會真正撤銷所有根用戶對主機的訪問,但是它完成了同樣的目標——限制管理員訪問權限。
另一個方式,對多數Linux用戶來說更熟悉,是在配置文件/etc/ssh/sshd_conf?ig中限制SSH根用戶登錄。用Vi編輯器打開這個文件,然后滾動到讀取PermitRootLogin的行,確保設為no,如圖2.23底下一行所示。
最后一步是創建和增強一個策略,必須使用定期登錄,然后使用su變更到根用戶。這會在文件/scratch/log/auth.log和/scratch/log/shell.log中產生一條日志信息。這些相同的日志也會鏡像在/var/log/auth.log和/var/log/shell.log中,日志將在第7章中更深入講解。
3.?實現和增強密碼策略
本地用戶控制的第三個關鍵方面是增強密碼策略。對于ESXi,建立和修改密碼策略是相當簡單的。ESXi使用Linux可插拔驗證模塊(Pluggable Authentication Module,PAM)系統的修改版本,它允許細粒度地對最常見的配置選項進行控制。下面的內容可以很容易地設置:
密碼輸入重試:一個用戶在ESXi控制臺被禁止訪問之前,輸入錯誤密碼的次數。
復雜度:有四種字符類型用于在PAM中定義密碼,它們是大寫字母、小寫字母、數字和特殊字符、感嘆號和其他標點符號。你可以根據使用的字符類型的數量定義密碼需要多少字符。
為了修改這些配置,修改文件/etc/pam.d/system-auth-generic (ESXi 4.x)或/etc/pam.d/passwd (ESXi 5.x)。一旦文件打開,查找下面行:
下面講述如何分解這一行,“retry = 值”表示在用戶被禁止訪問之前,容忍的密碼輸入錯誤的嘗試次數。默認值是3,這對于多數組織來說都是合理的。下一部分,“min=A, B, C, D, E”需要花點時間理解。下面是這些位每個代表的意思:
A:僅使用一種字符類型的密碼需要的最小字符數量(默認是8)。
B:使用兩種字符類型的密碼需要的最小字符數量(默認是8)。
C:密碼需要的最小字符數(默認是8)。
D:使用三種字符類型的密碼需要的最小字符數量(默認是7)。
E:使用所有四種字符類型的密碼需要的最小字符數量(默認是6)。
需要注意的一個關鍵點是,對字符類型計數來說(這樣有意義,因為人們可能會嘗試使用像Password這樣糟糕的密碼)密碼的第一個和最后一個字符不計數。
因此,設置最優安全密碼策略的最佳方法是什么呢?下面是筆者推薦的,這通常也是經得起推敲的:
一些人可能會想這看起來有點嚴酷。遺憾的是,當使用較寬松的標準時,密碼相當容易猜測和破解。正如前面提到的,首先應該限制本地賬號,僅留下根賬號和每個管理員用的一個“定期”用戶賬號。這些所有賬號都應該被認為是非常重要的賬號,那么更加嚴格的密碼策略將有助于防止未授權的訪問。
4.?實現活動目錄認證
控制用戶訪問和與ESXi主機交互需要考慮的第四個方面是實現活動目錄認證和授權。啟用活動目錄認證應該是強制實行的,多數審計和安全團隊將要求看到這一項。這可以極大地簡化ESXi主機的管理,尤其是在大型、復雜環境下有多個管理的情況。AD的好處是能從中心AD組中添加和刪除管理用戶,這比登錄到每個ESXi平臺,進行用戶相關的修改要簡單很多。在某些情況下,最簡單的解決方案也是最安全的,這非常有效!
在啟用活動目錄之前,確認完成下面的預備步驟:
一個特殊的命名組ESX Admins,必須在活動目錄中被創建。它必須包含所有你想用于訪問主機的用戶賬號;
NTP應該開啟,時間應該同步到活動目錄域控制器相同的服務器時間;
一般來說,每個虛擬機管理程序主機的DNS應該能夠解析域控制器和域;
ESXi平臺應該有與它們要認證的域控制器相同的域前綴。
一旦完成了這些步驟,可以通過vSphere客戶端配置活動目錄認證,使用客戶端直接連接到vCenter或主機。在vCenter中,使用者需要導航到庫部分,選擇“主機和集群”,然后選擇一個特定的主機。一旦選擇了主機,在右側面板中選擇“配置”頁,然后從左側的列表中選擇“認證服務”,能看到在這個部分有兩個列出的選項,即目錄服務配置和域設置。這兩個都可以通過在右上角單擊“屬性”鏈接進行編輯。然后按照下面的步驟進行:
1)從第一個下拉菜單中選擇“活動目錄”。
2)在域設置部分,輸入主機將要加入的域,還可以選擇復選框,使用vSphere認證代理。然后輸入代理服務器的IP地址。
輸入代理服務器是可選的,但是這是一個非常好的功能,因為它允許主機連接域,而不在它們的配置中使用或存儲認證信息。代理可以與vCenter認證信息相關聯,然后用域服務處理所有認證。
3)最后,單擊“加入域”。如果輸入了vSphere認證代理詳細配置信息,那么主機將嘗試連接它,并且通過現有的認證信息。否則,按提示輸入認證信息,添加主機到域中。這些配置選項如圖2.24所示。
另外一個與vSphere認證代理通信的安全方式是導入一個數字認證到ESXi主機。這使得ESXi主機和代理之間的通信管理起來更加簡單,而不用輸入令人頭疼的認證信息。按照下面的步驟:
1)在主認證服務配置界面右上角單擊“導入認證”。
2)按要求輸入代理的IP地址和認證文件的路徑。
另一個方式是使用vicfg-authconf?ig vSphere CLI命令在一個特定的ESXi主機上配置活動目錄成員。
1)運行下面的命令:
2)按提示輸入ESXi主機密碼。輸入密碼,然后你將看到“成功加入<域>”的消息。
3)為了驗證現在主機已經是AD域的一部分,可使用下面的命令:
2.2.7 鎖定對虛擬機管理程序控制臺的訪問
除了執行lockdown模式(在之前“限制本地根賬戶”章節中講述的),通常有兩種方式限制對ESXi控制臺的訪問
配置ESXi內建防火墻的規則;
使用在文件/etc/security/access.conf中修改TCP包裝器的功能。
已經講解的DCUI命令行訪問(通過主機接口開啟或關閉)和遠程命令行連接的SSH訪問也是要考慮的非常重要的事情。
1.?配置ESXi防火墻
通常防火墻規則和服務的關鍵是相當簡單的——僅允許需要的那些服務,沒有更多了。ESXi防火墻默認設置是安全的配置。要確保僅在需要的時候,添加新的服務,隨著時間推移定期評估防火墻設置,確保一切都井然有序。
在ESXi版本5中,表2.1中列出的端口默認都是打開的。
有兩種方式有效管理ESXi主機的防火墻規則。第一個是直接通過vSphere客戶端或通過vCenter,這是最簡單的控制ESXi主機上已知服務的方法。但是,這種方法有個重大缺陷:沒辦法定義用戶服務!你可以在本地真正的控制臺命令行或通過SSH定義。
為了通過GUI配置防火墻,使用vSphere客戶端登錄主機或vCenter。導航到主機的配置頁面(在vCenter中,首先到庫部分的主機和集群)。按照下面的步驟做:
1)在左邊菜單列表中單擊“安全概要”鏈接,在可用的選項中向下查找直到找到防火墻部分,單擊這個部分的右側屬性鏈接。防火墻屬性界面打開,如圖2.25所示。
到許多定義的服務列在這里。可以看到域服務相關的TCP和UDP端口,以及是否開啟流入和或流出。如果服務名左邊的框被選中,那么服務是開啟的。
可以選中一些服務,然后單擊右下角的“選項”按鈕。通常單擊它使你能夠配置與服務相關的附加選項和操作,例如在主機上它如何啟動和停止。
2)選中任何你想啟用的服務的復選框,或禁止你不想啟用的(但是要小心)。
也可以單擊任何一個服務的防火墻按鈕。這允許指定與服務通信的IP地址或子網,提供了更細粒度的控制對主機和服務訪問的控制(參考圖2.26)。
3)當完成啟用和禁止服務和端口的時候,單擊“OK”完成配置本地主機防火墻。
4)可以自動為一些服務打開端口,在安全概要配置區的服務部分中啟用它們。
使用本地主機或SSH,配置自定義服務或設置防火墻訪問,可以按照下面的步驟進行:
1)登錄到本地DCUI或使用SSH訪問主機控制臺命令行。轉換到/etc/vmware/f?irewall目錄中,使用文本編輯器打開service.xml文件。你應該看到許多XML標簽段,看起來像圖2.27所示。
2)為了添加新服務定義,先退出service.xml文件,再在同一目錄中添加一個新的XML文件。下面是文件看起來的樣子的例子:
服務ID號和名稱應該反映你自己的服務,如同規則ID、方向、協議、端口類型(源或目的)一樣相當簡單。和標簽是可選的,如果你想選擇一個端口范圍而不是單一端口。
3)一旦你完成添加你想要的這些端口和服務組合,確保文件的最后一行是?igRoot>,然后保存和退出。
4)現在,需要通知ESXi系統變更,輸入下面的命令刷新防火墻規則:
這么做的關鍵在于現在可以在vSphere客戶端中看見防火墻規則了。可以看到這樣的一個例子如圖2.28所示,一個新服務標記為SybexTest。
2.?使用/ETC/SECURITY/ACCESS.CONF文件控制SSH訪問
第二種控制對ESXi平臺訪問的方法是創建常規用戶賬戶,用/etc/security/access.conf文件控制這個賬戶對平臺的訪問。ESXi將默認拒絕這個文件中明明確定義的任何人的訪問。
第一步是創建一個新用戶,這之前已經講過,確保這個用戶授予命令行訪問權限。接著,你可以以兩種方式之一授權用戶訪問權限。第一種方式是簡單的,編輯/etc/security/access.conf文件,添加下面的行:
對于用戶戴夫,添加+:dave:ALL,保存文件。現在你可以通過SSH使用常規賬戶而不是根用戶訪問系統。
為了通過遠程命令行完成相同的功能,在vSphere CLI中使用vicfg-user命令,輸入下面的命令:
總結
以上是生活随笔為你收集整理的《虚拟化安全解决方案》一2.2 配置VMware ESXi的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1592E - Скучающий Ба
- 下一篇: 浅谈权限(功能权限数据权限)