Virtualization

如何確定我的伺服器沒有虛擬化?

  • February 6, 2012

如何確保我的 Linux 伺服器在非虛擬化的真實機器上執行?

這是我正在考慮的場景:

  1. 我在機架式伺服器上安裝了一些發行版,
  2. 我在數據中心租了一些機架空間,然後把它放在那裡,
  3. Mallory(“攻擊者”)去數據中心斷開我的伺服器,
  4. Mallory 拍攝了磁碟的圖像,
  5. Mallory 在 KVM 機器上以訪客身份執行磁碟映像。

為了這個問題,假設攻擊者

  • 修改了 KVM 或任何類似的管理程序,以模擬我的伺服器執行的完全相同的硬體,
  • 知道所有已知的逃避管理程序或檢測管理程序攻擊,並已修補管理程序以抵消它們(因此沒有紅色藥丸和類似的東西)。

所以我的問題是:是否有可靠的方法來確保作業系統在物理機器(或一個精確的物理機器)上執行,不依賴於虛擬化缺陷的方法(如 Red pill)?

或者反過來:是否有證據表明這種檢測總是可能的?

澄清:這是一個假設性問題,而不是關於目前技術的討論。目前很容易檢測我是否處於虛擬化環境中,只需使用imvirt它及其已知的虛擬化故障/缺陷的集合即可。我想知道諸如“完美虛擬化”之類的事情是否已經被討論過,並且從理論的角度來看是可能的還是不可能的。

您假設攻擊者製作了一個完美模擬您的硬體的虛擬機。在這種假設下,根據定義,您無法檢測到您的程式碼正在虛擬機中執行。

如果虛擬機實際上執行在真實硬體上,您應該能夠從外部檢測到它,因為虛擬化的成本很可能會引入一些額外的響應延遲。與其他網路成本相比,成本可能並不明顯。如果虛擬機在更快的硬體上執行,理論上它可以提供完美的仿真。

在實踐中,提供完美的硬體仿真是極其困難的。(這是作業系統和驅動程序開發人員想要的東西,不幸的是,對他們來說,模擬器並不完美。)當然,理論上這是可能的,但對於攻擊者來說,會有更便宜的攻擊方法。你假設物理訪問;攻擊者可以植入一個隱藏的 rootkit,或者在 PCI 或 RAM 匯流排上放置一個間諜:這比為周圍的所有硬體開發完美的仿真器成本要低。或者,更有可能的是,Mallory 會利用軟體漏洞、釣魚密碼,或者作為最後手段使用扳手密碼分析,如果她真的被打擾的話。

複製數據並植入 rootkit 是迄今為止最簡單的攻擊方法。您可以通過在伺服器中使用TPM在某種程度上防止這種情況。TPM 設計為難以複製,如果使用正確(注意:這很困難!目前沒有現成的作業系統可以從 TPM 信任根驗證整個作業系統的完整性。)TPM 可以保護您的作業系統及其數據的完整性和機密性。

引用自:https://unix.stackexchange.com/questions/30851