VMware驅(qū)動與后門造成的系統(tǒng)故障詳解
盡管有大量的受訪信息顯示,運行VMware ESX和ESXi的操作系統(tǒng)是非常安全的;仍不排除一些由于VMware管理程序(hypervisor)和子操作系統(tǒng)之前的交互機制所帶來的系統(tǒng)故障隱患。這些隱患是由于VMware驅(qū)動、VMware后門問題造成的。這種交互通常由三種渠道實現(xiàn):半虛擬化驅(qū)動程序、常規(guī)驅(qū)動程序和VMware工具。這樣,當系統(tǒng)管理員希望構(gòu)建一個安全的VMware環(huán)境時,有兩個部分需要關(guān)注。
***部分是管理程序(hypervisor)和虛擬機(VM)之間的交互。虛擬化層通過組成VMware工具的半虛擬化驅(qū)動延伸到子操作系統(tǒng)(guest OS)之中,對于之前不太關(guān)注這部分內(nèi)容的人,這是一個全新的命題;第二部分就是子操作系統(tǒng)本身。每個子操作系統(tǒng)都有需要遵循的安全加固腳本、向?qū)Ш突鶞省H欢@些腳本、向?qū)Ш突鶞适聦嵣隙紵o法完全取代虛擬化層和子操作系統(tǒng)之間的交互,所以一般來講***個部分會直接影響到第二個部分。總之,您可以參考下面的這些設(shè)置,來確保VMware管理程序和建立在它之上的虛擬機之間的交互更加安全:
加固子操作系統(tǒng)
請在您的虛擬機環(huán)境中遵循其中的一項或者所有的基準和向?qū)АM瑫r謹記vSwitch并不包含內(nèi)置的防火墻,所以一旦子操作系統(tǒng)接入網(wǎng)絡(luò)環(huán)境,它就需要加強自身的防護工作。
管理程序和虛擬機之間的交互
管理程序和虛擬機之間的交互通過三種渠道:半虛擬化驅(qū)動、常規(guī)驅(qū)動和VMware后門程序。
半虛擬化驅(qū)動程序知曉自身運行于虛擬機中,通過帶外通訊機制和硬件設(shè)備交互(也可能是通過VMware 后門程序),或者利用虛擬主機使用的特殊的指令交互。例如,在VMware子系統(tǒng)中,vmxnet驅(qū)動就是半虛擬化驅(qū)動程序。因為虛擬機界面(VMI)可以在Linux下幾乎透明地寫入半虛擬化驅(qū)動,所有它有很好的性能優(yōu)勢。如果寫入半虛擬化程序的過程很困難,程序會試圖避開虛擬機直接跟管理程序交互,這個過程可能會直接導(dǎo)致系統(tǒng)崩潰。因此,為了避免這種情況發(fā)生,***的辦法就是在使用半虛擬化程序之前確保他們它們都是經(jīng)過驗證的。通常我們只使用那些來自已知來源(如:VMware)的半虛擬化驅(qū)動。
常規(guī)驅(qū)動程序并不知道自身運行于虛擬機管理程序之上,它和底層硬件之間的交互通常需要管理程序的轉(zhuǎn)發(fā)。這些驅(qū)動程序僅僅和子操作系統(tǒng)內(nèi)核之間交互,然后子操作系統(tǒng)內(nèi)核通過普通方式和虛擬機管理程序之間交互。在某些情況下,管理程序可能并不能識別驅(qū)動所發(fā)出的(或者是發(fā)往驅(qū)動)指令。這種結(jié)果下,程序會返回錯誤值寫入到每個虛擬機內(nèi)部的vmware.log中,程序所需的功能將無法實現(xiàn),這個過程多數(shù)時候?qū)μ摂M機的影響并不明顯。有些時候,這種情形會直接導(dǎo)致虛擬機的崩潰。例如,VMware的管理程序vmkernel,并不能有效執(zhí)行每個SCSI指令,一些特殊的指令將導(dǎo)致在VMware.log中寫入錯誤日志。或在一些情況下,虛擬機會癱瘓。
VMware后門程序
關(guān)于VMware的后門程序是一個讓人困惑和,并被許多人詬病的問題。一般來說,通過一些虛擬機內(nèi)部的簡單設(shè)置就可以保護VMware后門程序安全。后門程序是一種旁路通訊方式,提供了管理程序和虛擬機之間的另外一條交互通路,通常情況下VMware后門程序是供給VMware工具來使用的。
VMware工具可以在所有的用戶權(quán)限下運行,因此每個用戶都可以通過虛擬機后門程序運行一些VMware工具命令行。通常普通用戶并不需要經(jīng)常通過VMware工具來執(zhí)行命令行指令,所以在VMware ESX環(huán)境中,VMware工具應(yīng)該被嚴格限制給系統(tǒng)管理員使用。不幸的是,VMware后門程序是對所有用戶開放的,并且不能在子操作系統(tǒng)內(nèi)通過設(shè)置來關(guān)閉。
確保VMware后門程序的安全性
通常用來保護VMware后門程序的方式是在VMware 高級設(shè)置來配置更改一些選項。現(xiàn)在通用的安全標準都不建議使用最小化配置,而是通過建立一些不同配置的子集來管理。這里提供了一些設(shè)置方式,可以在Advanced Options下設(shè)置虛擬機配置來保證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加固指導(dǎo)
禁止某些情況下對vmware.log文件的訪問登陸。在允許訪問的情況下極大減少了訪問量,可以減輕磁盤的I/O壓力:
isolation.tools.log.disable => true
使vmware.log文件按照設(shè)定的字節(jié)循環(huán)滾動保存,避免vmware.log文件變得非常的龐大:
log.rotatesize => 100000
只保存設(shè)定數(shù)量的歷史vmware.log文件,避免重復(fù)保存的該文件占用大量磁盤空間。在VMFS系統(tǒng)中,這個文件可以迅速達到32K的文件大小上限。
log.keepold => 10
限制可以發(fā)送給VMware后門程序的數(shù)據(jù)量:
tools.setinfo.sizeLimit => 1048576
禁止通過后門程序直接對虛擬機內(nèi)部的一些配置信息做修改:
isolation.tools.setInfo.disable => true
禁止虛擬機通過VMware后門程序直接設(shè)置虛擬機硬件設(shè)備(軟驅(qū)、光驅(qū)、網(wǎng)卡等)的連接狀態(tài)(斷開或連接):
isolation.tools.connectable.disable => true
isolation.tools.diskshrink.disable => true
禁止虛擬機通過VMware后門程序直接調(diào)用diskwiper功能:
isolation.tools.diskwiper.disable => true
根據(jù)安全需求的不同,所有的選項可以被設(shè)置用來保證子系統(tǒng)和VMware遠程控制主機之間以及在虛擬機、管理程序及文件系統(tǒng)之間交互的安全。這些設(shè)置可以防止一些非常有趣的(有時是讓人迷茫的)由于缺少空間導(dǎo)致的管理程序故障。
對VMware后門程序的保護是非常重要的,必須強調(diào)的一點是***適當限制使用VMware工具,而不是對驅(qū)動的訪問。或者,執(zhí)行集成在子操作系統(tǒng)內(nèi)部的,像Window UAC(User Access Control)或SElinux這樣的強制訪問控制工具也是一樣的效果。通過這些來限制什么時候可以訪問VMware的后門程序。
虛擬機安全最主要的部分是在子操作系統(tǒng)之內(nèi),但是虛擬硬件設(shè)置也會起到作用。嘗試去掌握和練習那些用于加固虛擬機的指導(dǎo)方針、基準和檢查清單,幫助您更加合理地保護您的虛擬機。
【編輯推薦】