使用 QubesOS 與 Windows 7 搭配使用

關於Habré專門介紹Qubes作業系統的文章不多,而且我看過的也沒有太多描述使用它的體驗。 下面,我希望透過使用 Qubes 作為保護(針對)Windows 環境的手段的範例來修正這個問題,同時估計該系統的俄語使用者數量。

使用 QubesOS 與 Windows 7 搭配使用

為什麼是庫布斯?

Windows 7 技術支援結束和使用者日益焦慮的故事導致需要組織該作業系統的工作,並考慮到以下要求:

  • 確保使用完全啟動的 Windows 7,並且使用者能夠安裝更新和各種應用程式(包括透過網際網路);
  • 根據條件(自主運作和流量過濾模式)實現完全或選擇性排除網路互動;
  • 提供選擇性地連接可移動媒體和裝置的能力。

這組限制以使用者做好充分準備為前提,因為允許獨立管理,而這些限制與阻止其潛在操作無關,而是與排除可能的錯誤或破壞性軟體效果有關。 那些。 模型中不存在內部違規者。

在尋找解決方案的過程中,我們很快就放棄了使用內建或附加 Windows 工具來實施限制的想法,因為有效限制具有管理員權限的用戶,使其無法安裝應用程式是相當困難的。

下一個解決方案是使用虛擬化進行隔離。 眾所周知的桌面虛擬化工具(例如virtualbox)不太適合解決安全性問題,而所列出的限制必須由使用者透過不斷切換或調整來賓虛擬機器(以下簡稱「虛擬機器」)的屬性來完成。VM),這增加了出錯的風險。

同時,我們有使用 Qubes 作為使用者桌面系統的經驗,但對使用來賓 Windows 的穩定性有疑問。 決定檢查 Qubes 的當前版本,因為所述限制非常適合該系統的範例,特別是虛擬機器模板和視覺化整合的實作。 接下來我嘗試以解決問題的例子來簡單談談Qubes的思路和工具。

Xen 虛擬化的類型

Qubes基於Xen虛擬機器管理程序,最大限度地減少了管理處理器資源、記憶體和虛擬機器的功能。 裝置的所有其他工作都集中在基於 Linux 核心的 dom0 中(dom0 的 Qubes 使用 Fedora 發行版)。

使用 QubesOS 與 Windows 7 搭配使用

Xen 支援多種類型的虛擬化(我將給出 Intel 架構的範例,儘管 Xen 支援其他類型):

  • 半虛擬化(PV)-一種不使用硬體支援的虛擬化模式,讓人想起容器虛擬化,可用於具有適配核心的系統(dom0 在此模式下運作);
  • 完全虛擬化 (HVM) - 在此模式下,硬體支援用於處理器資源,所有其他設備均使用 QEMU 進行模擬。 這是運行各種作業系統最通用的方式;
  • 硬體半虛擬化 (PVH - ParaVirtualized Hardware) - 一種使用硬體支援的虛擬化模式,為了與硬體一起工作,來賓系統核心使用適合虛擬機器管理程式功能的驅動程式(例如共享記憶體),從而無需 QEMU 模擬並提高I/O 性能。 從4.11開始的Linux核心可以工作在該模式下。

使用 QubesOS 與 Windows 7 搭配使用

從 Qubes 4.0 開始,出於安全原因,放棄使用半虛擬化模式(包括由於 Intel 架構中的已知漏洞,透過使用全虛擬化可以部分緩解);預設使用 PVH 模式。

使用模擬(HVM 模式)時,QEMU 在稱為存根域的隔離 VM 中啟動,從而降低了利用實作中潛在錯誤的風險(QEMU 專案包含大量程式碼,包括相容性程式碼)。
在我們的例子中,這種模式應該用於 Windows。

服務虛擬機

在 Qubes 安全架構中,虛擬機器管理程式的關鍵功能之一是將 PCI 裝置傳輸到現有環境。 硬體排除可讓您將系統的主機部分與外部攻擊隔離。 Xen 支援 PV 和 HVM 模式,在第二種情況下,它需要支援 IOMMU (Intel VT-d) - 虛擬化設備的硬體記憶體管理。

這將建立多個系統虛擬機器:

  • sys-net,網路設備轉移到該網絡,並用作其他虛擬機器的橋樑,例如實現防火牆或VPN用戶端功能的虛擬機器;
  • sys-usb,USB和其他週邊設備控制器傳送到此;
  • sys-firewall,它不使用設備,但充當連接的虛擬機器的防火牆。

為了使用 USB 設備,需要使用代理服務,該服務提供以下功能:

  • 對於HID(人機介面設備)設備類,向dom0發送命令;
  • 對於可移動媒體,將裝置磁碟區重新導向至其他虛擬機器(dom0 除外);
  • 直接重定向到 USB 裝置(使用 USBIP 和整合工具)。

在這種配置中,透過網路堆疊或連接的設備進行的成功攻擊可能會導致僅影響正在運行的服務虛擬機,而不是整個系統。 並且重新啟動服務VM後,它將按原始狀態載入。

虛擬機器整合工具

有幾種方法可以與虛擬機器桌面互動 - 在來賓系統中安裝應用程式或使用虛擬化工具模擬影片。 訪客應用程式可以是各種通用遠端存取工具(RDP、VNC、Spice 等)或適用於特定管理程式(此類工具通常稱為訪客實用程式)。 當管理程式模擬來賓系統的 I/O 並在外部提供使用組合 I/O 的協定(例如 Spice)時,也可以使用混合選項。 同時,遠端存取工具通常會優化影像,因為它們涉及透過網路進行工作,這不會對影像品質產生積極影響。

Qubes 提供了自己的 VM 整合工具。 首先,這是一個圖形子系統 - 來自不同虛擬機器的視窗以自己的顏色框架顯示在單一桌面上。 一般來說,整合工具是基於虛擬機器管理程式的功能——共享記憶體(Xen 授權表)、通知工具(Xen 事件通道)、共享儲存 xenstore 和 vchan 通訊協定。 在他們的幫助下,實現了基本元件 qrexec 和 qubes-rpc 以及應用程式服務 - 音訊或 USB 重定向、傳輸檔案或剪貼簿內容、執行命令和啟動應用程式。 可以設定策略來限制虛擬機器上可用的服務。 下圖是初始化兩個VM交互作用的過程範例。

使用 QubesOS 與 Windows 7 搭配使用

因此,虛擬機器中的工作無需使用網路即可進行,從而可以充分利用自治虛擬機來避免資訊外洩。 例如,當私鑰在隔離的虛擬機器中使用並且不超越它們時,這就是實現加密操作分離(PGP/SSH)的方式。

模板、應用程式和一次性虛擬機

Qubes 中的所有使用者工作都在虛擬機器中完成。 主主機系統用於控制和可視化它們。 該作業系統與一組基本的基於模板的虛擬機器 (TemplateVM) 一起安裝。 此範本是基於 Fedora 或 Debian 發行版的 Linux VM,已安裝和設定整合工具以及專用系統和使用者分割區。 軟體的安裝和更新由標準套件管理器(dnf 或 apt)從具有強制數位簽章驗證(GnuPG)的組態儲存庫執行。 此類 VM 的目的是確保對其基礎上啟動的應用程式 VM 的信任。

啟動時,應用程式虛擬機器 (AppVM) 使用對應虛擬機器範本的系統分割區的快照,並在完成後刪除該快照而不儲存變更。 使用者所需的資料儲存在每個應用VM唯一的使用者分割區中,該使用者分割區掛載在主目錄中。

使用 QubesOS 與 Windows 7 搭配使用

從安全性角度來看,使用一次性虛擬機器 (disposableVM) 非常有用。 這樣的虛擬機是在啟動時根據模板創建的,啟動時只有一個目的——執行一個應用程序,關閉後完成工作。 一次性虛擬機器可用於開啟可疑文件,其內容可能導致利用特定應用程式漏洞。 運行一次性虛擬機器的功能已整合到檔案管理器 (Nautilus) 和電子郵件用戶端 (Thunderbird) 中。

透過將使用者設定檔移至單獨的部分,Windows VM 也可用於建立範本和一次性 VM。 在我們的版本中,使用者將使用這樣的範本來執行管理任務和應用程式安裝。 根據該模板,將創建多個應用程式虛擬機器 - 對網路的存取權限有限(標準系統防火牆功能),並且根本無法存取網路(不建立虛擬網路設備)。 模板中安裝的所有更改和應用程式都可以在這些虛擬機器中運行,即使引入了書籤程序,它們也不會具有網路存取權限。

為Windows而戰

上述功能是 Qubes 的基礎,且工作相當穩定;困難始於 Windows。 要整合 Windows,您必須使用一組來賓工具 Qubes Windows Tools (QWT),其中包括用於 Xen 的驅動程式、qvideo 驅動程式和一組用於資訊交換的實用程式(檔案傳輸、剪貼簿)。 安裝和設定過程在專案網站上有詳細記錄,因此我們將分享我們的應用經驗。

主要困難本質上是缺乏對開發工具的支援。 關鍵開發人員 (QWT) 似乎無法使用,Windows 整合專案正在等待首席開發人員。 因此,首先有必要評估其績效,並了解必要時獨立支持其的可能性。 最難開發和調試的是圖形驅動程序,它模擬視訊適配器和顯示器在共享記憶體中生成圖像,使您可以直接在主機系統視窗中顯示整個桌面或應用程式視窗。 在分析驅動程式的運作過程中,我們對Linux環境下的組譯程式碼進行了修改,並制定了兩個Windows客戶系統之間的偵錯方案。 在交叉建置階段,我們進行了一些更改,這些更改為我們簡化了事情,主要是在實用程式的「靜默」安裝方面,並且還消除了長時間在虛擬機中工作時煩人的效能下降。 我們在單獨的報告中介紹了工作結果 儲存庫,因此不會持續很長時間 鼓舞人心的 Qubes 首席開發人員。

對於客戶系統的穩定性而言,最關鍵的階段是Windows的啟動,在這裡你可以看到熟悉的藍色畫面(或根本看不到)。 對於大多數已識別的錯誤,有多種解決方法 - 消除 Xen 區塊裝置驅動程式、停用 VM 記憶體平衡、修復網路設定以及最小化核心數量。 我們的訪客工具可在完全更新的 Windows 7 和 Windows 10(qvideo 除外)上建置安裝和運作。

從真實環境遷移到虛擬環境時,如果使用預先安裝的 OEM 版本,啟動 Windows 時會出現問題。 此類系統使用基於設備 UEFI 中指定的許可證的啟動。 為了正確處理激活,需要將主機系統的整個 ACPI 部分(SLIC 表)之一轉換為來賓系統,並稍微編輯其他部分,註冊製造商。 Xen 允許您自訂附加資料表的 ACPI 內容,但無需修改主表。 來自類似 OpenXT 專案的補丁(適用於 Qubes)幫助解決了這個問題。 這些修復似乎不僅對我們有用,而且已翻譯到主 Qubes 儲存庫和 Libvirt 庫中。

Windows 整合工具的明顯缺點包括缺乏對音訊、USB 設備的支持,以及媒體處理的複雜性,因為沒有對 GPU 的硬體支援。 但上述情況並不妨礙使用虛擬機器處理辦公室文檔,也不妨礙啟動特定的企業應用程式。

透過建立應用程式虛擬機器的適當配置,滿足了在建立 Windows VM 範本後切換到無網路或有限網路操作模式的要求,且標準作業系統工具還解決了選擇性連接可移動媒體的可能性 - 連接時,它們在系統VM sys-usb 中可用,從那裡可以將它們「轉送」到所需的VM。 用戶的桌面看起來像這樣。

使用 QubesOS 與 Windows 7 搭配使用

該系統的最終版本得到了用戶的積極接受(在這種全面的解決方案允許的範圍內),而該系統的標準工具使得將應用程式擴展到用戶的行動工作站(透過 VPN 存取)成為可能。

取而代之的是結論

一般來說,虛擬化可以讓您降低使用沒有支援的 Windows 系統的風險 - 它不會強制與新硬體相容,它允許您排除或控制透過網路或連接的裝置對系統的訪問,並且它允許您實施一次啟動環境。

基於透過虛擬化進行隔離的思想,Qubes OS 可以幫助您利用這些和其他機制來實現安全。 從外部來看,許多人主要將 Qubes 視為對匿名的渴望,但對於經常處理專案、基礎設施和秘密來存取它們的工程師和安全研究人員來說,它都是一個有用的系統。 應用程式、資料的分離及其互動的形式化是威脅分析和安全系統設計的初始步驟。 這種分離有助於建構資訊並減少因人為因素(倉促、疲勞等)而出現錯誤的可能性。

目前,開發的重點是擴展Linux環境的功能。 4.1 版本正在準備發布,它將基於 Fedora 31,並包括關鍵組件 Xen 和 Libvirt 的當前版本。 值得注意的是,Qubes 是由資訊安全專業人員創建的,如果發現新的威脅或錯誤,他們總是會及時發布更新。

後記

我們正在開發的實驗功能之一使我們能夠創建支援來賓存取基於 Intel GVT-g 技術的 GPU 的虛擬機,這使我們能夠使用圖形適配器的功能並顯著擴展系統的範圍。 在撰寫本文時,此功能適用於 Qubes 4.1 的測試版本,並且可在 GitHub上.

來源: www.habr.com

添加評論