如何預防由VMware驅動和后門程序導致的系統故障
盡管有大量的受訪信息顯示,運行VMware ESX和ESXi的操作系統是非常安全的;仍不排除一些由于VMware管理程序(hypervisor)和子操作系統之前的交互機制所帶來的安全隱患。這種交互通常由三種渠道實現:半虛擬化驅動程序、常規驅動程序和VMware工具。這樣,當系統管理員希望構建一個安全的VMware環境時,有兩個部分需要關注:
第一部分是管理程序(hypervisor)和虛擬機(VM)之間的交互。虛擬化層通過組成VMware工具的半虛擬化驅動延伸到子操作系統(guest OS)之中,對于之前不太關注這部分內容的人,這是一個全新的命題;第二部分就是子操作系統本身。每個子操作系統都有需要遵循的安全加固腳本、向導和基準。然而這些腳本、向導和基準事實上都無法完全取代虛擬化層和子操作系統之間的交互,所以一般來講第一個部分會直接影響到第二個部分。總之,您可以參考下面的這些設置,來確保VMware管理程序和建立在它之上的虛擬機之間的交互更加安全:
加固子操作系統
本篇本章文將不會對子操作系統的加固問題展開討論,如果您需要對子操作系統做加固,如下這些鏈接的相關內容將對您有所幫助
Repository of Defense Information Systems Agency (DISA) Security Technical Information Guides (STIGS)
CISecurity benchmarks
Bastille-Linux
請在您的虛擬機環境中遵循其中的一項或者所有的基準和向導。同時謹記vSwitch并不包含內置的防火墻,所以一旦子操作系統接入網絡環境,它就需要加強自身的防護工作。
管理程序和虛擬機之間的交互
管理程序和虛擬機之間的交互通過三種渠道:半虛擬化驅動、常規驅動和VMware后門程序。
半虛擬化驅動程序知曉自身運行于虛擬機中,通過帶外通訊機制和硬件設備交互(也可能是通過VMware 后門程序),或者利用虛擬主機使用的特殊的指令交互。例如,在VMware子系統中,vmxnet驅動就是半虛擬化驅動程序。因為虛擬機界面(VMI)可以在Linux下幾乎透明地寫入半虛擬化驅動,所有它有很好的性能優勢。如果寫入半虛擬化程序的過程很困難,程序會試圖避開虛擬機直接跟管理程序交互,這個過程可能會直接導致系統崩潰。因此,為了避免這種情況發生,最好的辦法就是在使用半虛擬化程序之前確保他們它們都是經過驗證的。通常我們只使用那些來自已知來源(如:VMware)的半虛擬化驅動。
常規驅動程序并不知道自身運行于虛擬機管理程序之上,它和底層硬件之間的交互通常需要管理程序的轉發。這些驅動程序僅僅和子操作系統內核之間交互,然后子操作系統內核通過普通方式和虛擬機管理程序之間交互。在某些情況下,管理程序可能并不能識別驅動所發出的(或者是發往驅動)指令。這種結果下,程序會返回錯誤值寫入到每個虛擬機內部的vmware.log中,程序所需的功能將無法實現,這個過程多數時候對虛擬機的影響并不明顯。有些時候,這種情形會直接導致虛擬機的崩潰。例如,VMware的管理程序vmkernel,并不能有效執行每個SCSI指令,一些特殊的指令將導致在VMware.log中寫入錯誤日志?;蛟谝恍┣闆r下,虛擬機會癱瘓。
VMware后門程序
關于VMware的后門程序是一個讓人困惑和,并被許多人詬病的問題。一般來說,通過一些虛擬機內部的簡單設置就可以保護VMware后門程序安全。后門程序是一種旁路通訊方式,提供了管理程序和虛擬機之間的另外一條交互通路,通常情況下VMware后門程序是供給VMware工具來使用的。
VMware工具可以在所有的用戶權限下運行,因此每個用戶都可以通過虛擬機后門程序運行一些VMware工具命令行。通常普通用戶并不需要經常通過VMware工具來執行命令行指令,所以在VMware ESX環境中,VMware工具應該被嚴格限制給系統管理員使用。不幸的是,VMware后門程序是對所有用戶開放的,并且不能在子操作系統內通過設置來關閉。
如何預防由VMware驅動和后門程序導致的系統故障(下)2009-7-30 大 | 中 | 小導讀:本文解決由VMware驅動和后門程序導致的系統故障。
確保VMware后門程序的安全性
通常用來保護VMware后門程序的方式是在VMware 高級設置來配置更改一些選項?,F在通用的安全標準都不建議使用最小化配置,而是通過建立一些不同配置的子集來管理。這里提供了一些設置方式,可以在Advanced Options下設置虛擬機配置來保證VMware后門程序更高的安全性(或直接添加到每個虛擬機的.vmx 文件中):
DISA STIG for ESX
禁止從虛擬機的遠程控制端向工作站拷貝:
isolation.tools.copy.enable => false
禁止從工作站向虛擬機遠程控制端粘貼:
isolation.tools.paste.enable => false
禁止改變屏幕分辨率和色度:
isolation.tools.setguioptions.enable => false
CISecurity ESX Benchmark
禁止從虛擬機的遠程控制端向工作站拷貝:
isolation.tools.copy.enable => false
禁止從工作站向虛擬機遠程控制端粘貼:
isolation.tools.paste.enable => false
禁止改變屏幕分辨率和色度:
isolation.tools.setguioptions.enable => false
禁止VMware工具進行配置更改的功能:
isolation.tools.setinfo.disable => true
VMware VI3.5加固指導
禁止某些情況下對vmware.log文件的訪問登陸。在允許訪問的情況下極大減少了訪問量,可以減輕磁盤的I/O壓力:
isolation.tools.log.disable => true
使vmware.log文件按照設定的字節循環滾動保存,避免vmware.log文件變得非常的龐大:
log.rotatesize => 100000
只保存設定數量的歷史vmware.log文件,避免重復保存的該文件占用大量磁盤空間。在VMFS系統中,這個文件可以迅速達到32K的文件大小上限。
log.keepold => 10
限制可以發送給VMware后門程序的數據量:
tools.setinfo.sizeLimit => 1048576
禁止通過后門程序直接對虛擬機內部的一些配置信息做修改:
isolation.tools.setInfo.disable => true
禁止虛擬機通過VMware后門程序直接設置虛擬機硬件設備(軟驅、光驅、網卡等)的連接狀態(斷開或連接):
isolation.tools.connectable.disable => true
isolation.tools.diskshrink.disable => true
禁止虛擬機通過VMware后門程序直接調用diskwiper功能:
isolation.tools.diskwiper.disable => true
根據安全需求的不同,所有的選項可以被設置用來保證子系統和VMware遠程控制主機之間以及在虛擬機、管理程序及文件系統之間交互的安全。這些設置可以防止一些非常有趣的(有時是讓人迷茫的)由于缺少空間導致的管理程序故障。
對VMware后門程序的保護是非常重要的,必須強調的一點是最好適當限制使用VMware工具,而不是對驅動的訪問?;蛘?,執行集成在子操作系統內部的,像Window UAC(User Access Control)或SElinux這樣的強制訪問控制工具也是一樣的效果。通過這些來限制什么時候可以訪問VMware的后門程序。
虛擬機安全最主要的部分是在子操作系統之內,但是虛擬硬件設置也會起到作用。嘗試去掌握和練習那些用于加固虛擬機的指導方針、基準和檢查清單,幫助您更加合理地保護您的虛擬機。
【編輯推薦】