數據安全戰略非常重要,必須做好計划; 特別是在數據中心,所有虛擬資產都必須得到很好的保護。 一個圖謀不軌的hacker可能會劫持VM並重新配置以滿足他的邪惡目的。本文詳細講述了vSphere虛擬交換機基於2層的安全策略。
有3個安全策略可供選擇:混雜模式、MAC地址更改、偽傳輸。
既然是2層安全策略,而MAC地址又是處於2層,所以這3個策略都與MAC地址有關,可稱之為“MAC防火牆”。
背景知識:
對於物理機,有2個MAC地址:
■固化在物理網卡ROM中的MAC地址,不可更改,該地址稱為”初始MAC地址“;
■操作系統也有個MAC地址,叫做”有效MAC地址“(也就是網卡地址),該地址能在網卡屬性或者注冊表中更改,如:
可見通過物理機網卡發送到網絡上的幀,源MAC不一定是固化的原始MAC。
在默認的情況下,初始MAC地址和有效MAC地址是相同的,除非用戶更改。
虛擬機也有類似的2個概念:
■存在於VMX配置文件中的MAC地址(在“虛擬機網卡配置”里可也看到這個地址,類似於固化的初始MAC地址),客戶OS無法更改。
示例:ethernet0.generatedAddress = "00:50:56:8e:ca:14"
■客戶OS的網卡地址(也就是有效MAC地址),可以更改;
地位超然的ESXi主機當然對其管轄下的所有VM的這2個MAC地址了然於胸。
名詞解釋:
虛擬交換機:vSwitch
入站幀:進入虛擬機網卡的幀
出站幀:離開虛擬機網卡的幀
主機:運行ESXi的物理服務器
客戶機:虛擬機(VM)
客戶機OS:在虛擬機上運行的操作系統
有了以上知識儲備,就可以詳細解讀這3個安全策略了。
安全策略既可以在vSwitch級別設置,也可以在端口/端口組級別設置,如過是后者,初始情況下這3個策略都是灰色,意為執行vSwitch級別的策略,選中以后,端口組策略就覆蓋了交換機的策略。
混雜模式:
在同一個VLAN里的VM能收到本VLAN的全部數據包,客戶安裝WireShark或者IDS,就可以看到目標是其它VM的數據包和廣播包
注:該功能可能被惡意使用。
MAC地址更改:
ESXi發現有VM篡改了MAC地址,把網卡MAC地址改為與VMX文件中定義的MAC地址不同(有效MAC與初始MAC不同),該咋辦?
我們這樣思考:
首先,ESXi明確知道內部所有客戶機的2個MAC地址及其所屬虛擬交換機的端口;
其次,發現VM1的網卡MAC與VMX文件中定義的初始MAC不符(A≠C,有效MAC≠初始MAC),說明VM1修改了有效MAC;
但這種修改是善意的,還是惡意的呢?虛擬交換機必須做出選擇:
拒絕 - VM1修改了MAC?它想干嘛?想冒充其它的VM么?與VM1連接的虛擬交換機端口被禁用!
接受 - 這是善意的修改,VM1連接的虛擬端口啟用。
Hacker經常用MAC欺騙(MAC模擬)來冒充另一個虛擬機,或通過將MAC更改為隨機值將自己隱身。 將此項設為“拒絕”就切斷了可疑分子的網絡連接,從而保護了網絡。
注1:本策略的執行者是虛擬交換機。
注2:如果使用Microsoft網絡負載平衡(NLB),或連接了iSCSI存儲,需設為“接受”。
注3:雖然與VM1連接的端口被禁用,但客戶OS無法檢測出這種情況(因為並不是在第1、2層上從虛擬網卡上斷開,而是丟棄了所有發往該VM的幀)。
偽傳輸:
在網卡屬性窗口里修改了MAC地址,發出的幀的源MAC肯定就改變了,但有些軟件(或者是木.馬)會直接修改以太網幀的源MAC。此時正在傳輸的幀的源MAC與虛擬網卡的MAC不同,本策略關注的就是這點:是否有軟件修改了幀的源MAC地址,使其與網卡的“有效MAC地址”不符。
再次強調:上個策略比較的是虛擬網卡的”有效地址“與”初始地址“的不符,方向是入站;本策略比較的是”正在傳輸的幀的源地址“與虛擬網卡的”有效地址“的不符,方向是出站。
一旦有軟件以偽造的源MAC地址向外發送數據幀,虛擬網卡就刪除該幀,但放行合法的幀。這說明本策略的執行動作是”過濾“,而非一刀切的”斷網“。
試想VM感染了木.馬,該木.馬以虛假的源MAC地址向外發欺騙幀,此時正在傳輸的幀的源MAC與虛擬網卡的有效MAC不同。虛擬網卡將會丟棄該幀,但其它合法軟件的幀正常發出。
對於另一種情況,“嵌套虛擬機”也就會造成這種現象,這需要詳細解釋一下:
在物理EXSi主機里再建立一個虛擬的ESXi主機,里面的VM3和VM4是嵌套虛擬機,也就是“虛擬機里的虛擬機”。
物理ESXi主機給虛擬ESXi主機分配了4個網卡,MAC地址分別給了C,D,E,F。
如果嵌套VM3和嵌套VM4通過網卡F向外發送數據,出去的源MAC地址就不是F而是A或B。
ESXi一旦發現正在傳輸的幀的源MAC與發送該幀的虛擬網卡MAC地址不符(運行時MAC與有效MAC地址不符),該咋辦?
拒絕 - 凡不符的幀被虛擬網卡丟棄,符合的幀出站,也就意味着拒絕嵌套VM發送流量;
接受 - 源MAC愛誰誰,統統向外轉發。MAC地址A,B,C,D,E,F都可以從網卡F離開虛擬機向外傳輸。
注:本策略的執行者是VM的虛擬網卡。
理論驗證:
為了檢驗前述的3個理論,我做了一次實驗,准備了2台虛擬機:XP1和XP2。在XP1里安裝“網絡執法官”,它能以虛假的源MAC向外發送ARP欺騙包。
實驗開始:
驗證“MAC地址更改”
1、設為“拒絕”並修改XP1的網卡MAC:XP1與XP2之間相互ping不通,且都沒有收到對方的ARP請求,證明在初始MAC與有效MAC不符的情況下,與該VM連接的虛擬交換機端口被禁用,幀出不去也進不來。
2、把策略改回“接受”:再用XP1以虛假的MAC向XP2發起欺騙,此時向XP2發出的幀的源MAC被欺騙軟件修改,且欺騙有效,XP2網絡被斷開。這說明本策略不判斷虛擬網卡有效MAC與運行時幀的源MAC是否相符的情況(網卡MAC≠運行時幀MAC)。
總結:由此可見本策略不防ARP病毒,不防虛假MAC欺騙,僅判斷VM的MAC是否與初始MAC不同,在相同的情況下,對黑、客軟件發起的MAC地址欺騙沒有防御力。
驗證“偽傳輸”
1、設為“拒絕”且不修改XP1網卡的MAC:XP1欺騙XP2失敗,但XP1能ping通XP2,這說明XP1欺騙軟件發出的虛假源MAC的ARP包被虛擬網卡丟棄(有效MAC與運行時幀的源MAC不符),但ping包放行(有效MAC與運行時MAC相符)。虛擬網卡起到了“過濾”的作用。
2、還是設為“拒絕”同時修改XP1網卡MAC:有趣的事情發生了:XP1完全無法與外界通信了!說明XP1與虛擬交換機所連接的端口被禁用,難道同時“MAC地址更改”被設為“拒絕”?非也,設置的是“接受”。
這說明本策略內含“MAC地址更改”策略,且有更高的優先級。
尊重實驗結果,總結如下:
初始MAC=有效MAC=運行時幀的源MAC,這樣的幀被放行發出,其余的幀被刪除。
總結:在VM的MAC沒有被修改的前提下設為”拒絕“起到過濾的作用,非法源MAC包被丟棄,合法源MAC包放行;
同樣設為”拒絕“並修改VM的MAC,會丟棄所有的幀,又能起到防MAC修改的作用
對下圖的解釋:
MAC地址更改:如果設為“拒絕”並修改了VM的MAC,虛擬交換機會關閉該VM所連接的端口。
偽傳輸:設置為“拒絕”的前提下:
修改VM的MAC:禁用該VM所連接的端口。
不修改VM的MAC:轉發合法源MAC幀,被軟件修改的非法的源MAC幀被虛擬網卡被丟棄。
驗證“混雜模式”
重新安排實驗:
ESXi主機192.168.1.202之下有3個XP虛擬機,當前是在“xp-03 47”控制台,IP是192.168.1.47,安裝了嗅探軟件Ethereal,現在xp-04 44” ping “xp-05 31”。
拒絕 - vSwitch端口組仍然處於默認的交換模式,ICMP數據包只能在這2個虛擬機中往返,”xp03 47“看不到這些流量。
接受 - vSwitch端口組處於混雜模式,”xp-03 47“就能看到這些數據包了,注意上圖ICMP協議包源地址和目標地址不是監聽者“xp-03 47”的。
虛擬交換機與物理交換機的異同
相同點:VMware 虛擬交換機(常稱為vSwitch )不對流量進行特殊或者專利的修改。所有流入虛擬交換機的幀遵循IEEE 802.3協議的相同標准,遵循OSI 模型數據鏈路層的概念框架,以及TCP/IP 網絡接口層的實際應用。同時,參考VMware官方的硬件兼容性列表,vSwitch支持多個廠商的網卡。
不同點:
■可以調整接口數量
■交換邏輯與物理交換機不同。
如果一個幀進入交換機,目標是未知的MAC 地址,物理交換機就會進入學習狀態-在所有端口泛洪該幀。但對於虛擬交換機,由於明確知道內部虛擬機的MAC地址及其屬於哪個端口(虛擬機端口和Vmkernel端口),所以不需要經歷MAC地址學習的過程-該幀會被忽略。
類似地,如果一個幀從虛擬端口進入虛擬交換機(例如從一個VM 發出),目標是未知的MAC 地址,它將通過物理上聯鏈路處理。這使得虛擬交換機的二層交換策略變得非常簡潔。
虛擬交換機的交換邏輯如下:
1 )以太網幀進入虛擬交換機。
2 )如果目標是已知的MAC 地址,將該幀交換到擁有該地址的虛擬端口。
3 ) 如果目標是未和的MAC 地址:
a )如果來自外部源, 拋棄該幀。
b )如果來自內部源,將其發到物理上聯鏈路。
希望這篇文章能夠給你一個清晰的概念。