Utilizzo di QubesOS per lavorare con Windows 7

Non ci sono molte articoli su Habr dedicati al sistema operativo Qubes e quelli che ho visto descrivono poco l'esperienza d'uso. Spero di rimediare a questo nel seguito, esemplificando l'uso di Qubes come strumento di protezione dell'ambiente Windows e, al contempo, valutare il numero di utenti di lingua russa del sistema.

Utilizzo di QubesOS per lavorare con Windows 7

Perché Qubes?

La scadenza del supporto tecnico per Windows 7 e la crescente preoccupazione degli utenti hanno portato alla necessità di organizzare il lavoro di questo OS, tenendo conto dei seguenti requisiti:

  • garantire l'uso di una Windows 7 attivata pienamente, con la possibilità per l'utente di installare aggiornamenti e varie applicazioni (anche tramite Internet);
  • implementare un'esclusione totale o selettiva delle interazioni di rete in base alle condizioni (modalità offline e filtraggio del traffico);
  • fornire la possibilità di un collegamento selettivo di dispositivi e supporti rimovibili.

Questo insieme di restrizioni presuppone un utente chiaramente preparato, poiché è consentita l'amministrazione autonoma, e le restrizioni non riguardano il blocco delle azioni potenziali, ma l'esclusione di errori o impatti distruttivi del software. Cioè, non esiste un trasgressore interno nel modello.

Nella ricerca di una soluzione, abbiamo rapidamente abbandonato l'idea di implementare restrizioni tramite strumenti incorporati o aggiuntivi di Windows, poiché è piuttosto difficile limitare efficacemente un utente con privilegi di amministratore, lasciandogli la possibilità di installare applicazioni.

La soluzione successiva è stata l'isolamento tramite virtualizzazione. Gli strumenti ampiamente conosciuti per la virtualizzazione desktop (ad esempio, come virtualbox) sono poco adatti per risolvere compiti di sicurezza e le restrizioni elencate richiederebbero di essere impostate costantemente dall'utente attivando o configurando le proprietà della macchina virtuale guest (di seguito VM), aumentando così i rischi di errore.

Allo stesso tempo, abbiamo avuto esperienza nell'uso di Qubes come sistema desktop per l'utente, ma c'erano dubbi sulla stabilità del lavoro con Windows come guest. È stato deciso di testare la versione attuale di Qubes, poiché le limitazioni impostate si adattano molto bene alla logica di questo sistema, in particolare per quanto riguarda l'implementazione di template per macchine virtuali e l'integrazione visiva. Di seguito cercherò di spiegare brevemente le idee e gli strumenti di Qubes, utilizzando come esempio la soluzione al problema proposto.

Tipi di virtualizzazione Xen

Qubes si basa su un hypervisor Xen, che minimizza le proprie funzioni di gestione delle risorse della CPU, della memoria e delle macchine virtuali. Tutto il resto del lavoro con i dispositivi è concentrato in dom0 basato su kernel Linux (in Qubes, per dom0 viene utilizzata la distribuzione Fedora).

Utilizzo di QubesOS per lavorare con Windows 7

Xen supporta diversi tipi di virtualizzazione (farò esempi per l'architettura Intel, anche se Xen supporta altre):

  • paravirtualizzazione (PV) — modalità di virtualizzazione senza supporto hardware, somiglia alla virtualizzazione in contenitori, può essere utilizzata per sistemi con kernel adattato (dom0 funziona in questa modalità);
  • virtualizzazione completa (HVM) — in questa modalità viene utilizzato il supporto hardware per le risorse della CPU, mentre tutto il resto dell'hardware è emulato tramite QEMU. Questo è il modo più universale per avviare diversi sistemi operativi;
  • paravirtualizzazione dell'hardware (PVH — ParaVirtualized Hardware) — modalità di virtualizzazione che utilizza il supporto hardware, dove il kernel del sistema guest utilizza driver adattati alle capacità dell'hypervisor (ad esempio, per la memoria condivisa), eliminando la necessità di emulare QEMU e migliorando le prestazioni di input-output. Il kernel Linux a partire dalla versione 4.11 può funzionare in questa modalità.

Utilizzo di QubesOS per lavorare con Windows 7

A partire dalla versione Qubes 4.0, per motivi di sicurezza, si è rinunciato all'uso della modalità di paravirtualizzazione (anche a causa delle note vulnerabilità nell'architettura Intel, che vengono parzialmente mitigate dall'uso della virtualizzazione completa), per impostazione predefinita viene utilizzata la modalità PVH.

Utilizzando l'emulazione (modalità HVM), il caricamento di QEMU avviene in una VM isolata chiamata stubdomain, riducendo così i rischi derivanti dall'exploitazione di potenziali errori di implementazione (il progetto QEMU contiene molto codice, inclusi quelli per la compatibilità).
Questa modalità, nel nostro caso, dovrebbe essere utilizzata per Windows.

Macchine virtuali di servizio

Nell'architettura di sicurezza di Qubes, una delle funzionalità chiave dell'ipervisore è la possibilità di passare dispositivi PCI all'ambiente guest. L'eccezione dell'hardware consente di isolare la parte host del sistema dagli attacchi esterni. Xen supporta questo per le modalità PV e HVM; nel secondo caso è necessaria il supporto IOMMU (Intel VT-d) — gestione hardware della memoria per dispositivi virtualizzati.

In questo modo si creano diverse macchine virtuali di sistema:

  • sys-net, a cui vengono assegnati i dispositivi di rete e che viene utilizzata come ponte per altre VM, ad esempio, quelle che implementano le funzioni di firewall o client di rete VPN;
  • sys-usb, a cui vengono assegnati USB e altri controller di dispositivi periferici;
  • sys-firewall, che non utilizza dispositivi, ma funziona come un firewall per le VM connesse.

Per lavorare con i dispositivi USB, vengono utilizzati servizi proxy che forniscono anche:

  • per la classe di dispositivi HID (human interface device) la trasmissione di comandi nel dom0;
  • per i supporti rimovibili il reindirizzamento dei volumi dei dispositivi ad altre VM (escluso il dom0);
  • il reindirizzamento diretto del dispositivo USB (viene utilizzato USBIP e strumenti di integrazione).

In questa configurazione, un attacco riuscito attraverso lo stack di rete o dispositivi connessi può portare alla compromissione solo della VM di servizio attiva, e non dell'intero sistema. Dopo il riavvio della VM di servizio, essa verrà caricata in uno stato originale.

Strumenti di integrazione VM

Ci sono diversi modi per interagire con il desktop di una macchina virtuale: installazione di applicazioni nel sistema guest o emulazione video tramite virtualizzazione. Le applicazioni guest possono comprendere vari strumenti di accesso remoto universali (RDP, VNC, Spice, ecc.) o strumenti adattati a un ipervisor specifico (questi strumenti sono generalmente chiamati utility guest). Può essere utilizzata anche una variante mista, in cui l'ipervisor emula l'input-output per il sistema guest e fornisce la possibilità di utilizzare un protocollo che combina input-output, ad esempio come avviene con Spice. In questo caso, gli strumenti di accesso remoto ottimizzano generalmente l'immagine, poiché sono progettati per funzionare attraverso una rete, il che influisce negativamente sulla qualità dell'immagine.

Qubes fornisce propri strumenti per l'integrazione delle VM. In primo luogo, c'è il sottosistema grafico: le finestre delle diverse VM vengono visualizzate su un unico desktop con un proprio contorno colorato. In generale, gli strumenti di integrazione si basano sulle capacità dell'ipervisor: memoria condivisa (Xen grant table), strumenti di notifica (Xen event channel), archiviazione condivisa xenstore e protocollo di comunicazione vchan. Grazie a questi strumenti vengono realizzati i componenti di base qrexec e qubes-rpc, e i servizi applicativi come il reindirizzamento audio o USB, la trasmissione di file o del contenuto degli appunti, l'esecuzione di comandi e l'avvio di applicazioni. È possibile impostare delle politiche che limitano i servizi disponibili sulla VM. Nella figura sottostante si trova un esempio della procedura di inizializzazione dell'interazione tra due VM.

Utilizzo di QubesOS per lavorare con Windows 7

In questo modo, il lavoro nella VM avviene senza l'uso della rete, consentendo di utilizzare appieno le VM autonome per evitare la fuga di informazioni. Ad esempio, così viene realizzata la separazione delle operazioni crittografiche (PGP/SSH), in cui le chiavi private sono utilizzate in VM isolate e non escono dai loro confini.

Modelli, VM applicative e VM monouso

Tutto il lavoro dell'utente in Qubes avviene in macchine virtuali. Il sistema host principale è utilizzato per gestire il loro funzionamento e visualizzazione. Il sistema operativo viene installato insieme a un insieme base di macchine virtuali basate su modelli (TemplateVM). Tale modello è una VM Linux basata su distribuzioni Fedora o Debian, con strumenti di integrazione installati e configurati, e partizioni di sistema e utente dedicate. L'installazione e l'aggiornamento del software vengono effettuati mediante il gestore di pacchetti standard (dnf o apt) da repository configurati, con obbligo di verifica della firma digitale (GnuPG). Lo scopo di queste VM è garantire fiducia nelle VM applicative che vengono eseguite su di esse.

La VM applicativa (AppVM) al momento dell'avvio utilizza uno snapshot della partizione di sistema del modello VM corrispondente e, al termine, elimina questo snapshot senza salvare le modifiche. I dati necessari all'utente vengono memorizzati in una partizione utente unica per ogni VM applicativa, che viene montata nella home directory.

Utilizzo di QubesOS per lavorare con Windows 7

Utilizzare VM usa e getta (disposibleVM) può essere utile dal punto di vista della sicurezza. Tale VM viene creata a partire da un modello al momento dell'avvio ed è avviata con un unico scopo: eseguire un'applicazione, terminando il proprio lavoro al termine della chiusura. Le VM usa e getta possono essere utilizzate per aprire file sospetti, il cui contenuto potrebbe portare all'esploitazione di vulnerabilità di specifiche applicazioni. La possibilità di eseguire una VM usa e getta è integrata nel file manager (Nautilus) e nel client di posta (Thunderbird).

Le VM Windows possono anche essere utilizzate per creare un modello e una VM usa e getta; per questo il profilo utente viene trasferito in una partizione separata. Nel nostro caso, tale modello sarà utilizzato dall'utente per attività di amministrazione e installazione di applicazioni. Sulla base del modello verranno create diverse VM applicative — con accesso limitato alla rete (funzionalità standard di sys-firewall) e senza accesso alla rete in generale (non viene creato un dispositivo di rete virtuale). In queste VM saranno disponibili tutte le modifiche e le applicazioni installate nel modello e, anche in caso di introduzione di malware, non avranno accesso alla rete per la compromissione.

La lotta per Windows

Le capacità descritte sopra costituiscono la base di Qubes e funzionano abbastanza stabilmente; le difficoltà iniziano con Windows. Per l'integrazione con Windows è necessario utilizzare il pacchetto di strumenti per guest Qubes Windows Tools (QWT), che include driver per lavorare con Xen, il driver qvideo e un insieme di utilità per lo scambio di informazioni (trasferimento di file, appunti). Il processo di installazione e configurazione è documentato dettagliatamente sul sito del progetto, quindi condivideremo la nostra esperienza di utilizzo.

La principale difficoltà è essenzialmente l'assenza di supporto per gli strumenti sviluppati. I principali sviluppatori (QWT) sembrano non essere disponibili e il progetto di integrazione con Windows è in attesa di un lead developer. Pertanto, è stato necessario innanzitutto valutare la funzionalità e comprendere la possibilità di fornire supporto autonomamente se necessario. La parte più complessa da sviluppare e debuggare è il driver grafico, che emula l’adattatore video e il display per formare l'immagine nella memoria condivisa, consentendo di visualizzare l'intero desktop o direttamente la finestra dell'applicazione nella finestra del sistema host. Durante l'analisi del funzionamento del driver, abbiamo adattato il codice per la compilazione in un ambiente Linux e abbiamo testato lo schema di debug tra due sistemi Windows guest. Nella fase di cross-building, abbiamo apportato alcune modifiche semplificanti principalmente nel processo di installazione repositorysilenziosa delle utilità, e abbiamo anche eliminato una fastidiosa degradazione delle prestazioni durante un utilizzo prolungato della VM. Documentando i risultati del nostro lavoro, abbiamo elaborato così ispirando il lead developer di Qubes.

Il passaggio più critico in termini di stabilità del sistema guest è l'avvio di Windows; qui si può vedere il famigerato schermo blu (o anche non vederlo). Per la maggior parte degli errori riscontrati sono stati trovati vari modi per aggirare le problematiche: disattivazione dei driver Xen per i dispositivi di blocco, disattivazione del bilanciamento della memoria della VM, fissazione delle impostazioni di rete e minimizzazione del numero di core. La nostra compilazione degli strumenti guest si installa e funziona su Windows 7 e Windows 10 completamente aggiornati (eccetto qvideo).

Quando si passa dall'ambiente reale a quello virtuale, sorge un problema con l'attivazione di Windows nel caso si utilizzino versioni OEM preinstallate. Questi sistemi utilizzano l'attivazione basata sulle licenze scritte nell'UEFI del dispositivo. Per un corretto funzionamento dell'attivazione, è necessario trasmettere al sistema ospite una delle sezioni ACPI del sistema host per intero (tabella SLIC) e apportare alcune modifiche ad altre, specificando il produttore. Xen consente di configurare il contenuto delle tabelle ACPI aggiuntive, ma senza modificare quelle principali. La soluzione è stata facilitata da una patch di un progetto simile, OpenXT, che è stata adattata per Qubes. Le correzioni sono sembrate utili non solo a noi e sono state trasmesse al repository principale di Qubes e alla libreria Libvirt.

I difetti evidenti dei mezzi di integrazione di Windows includono l'assenza di supporto audio, di dispositivi USB e la complessità nella gestione dei media, poiché non è presente il supporto hardware per GPU. Tuttavia, quanto elencato non impedisce l'uso delle macchine virtuali per lavorare con documenti di ufficio, né ostacola l'esecuzione di applicazioni aziendali specifiche.

Il requisito di passare alla modalità di lavoro senza rete o con rete limitata dopo la creazione del template di Windows VM è stato soddisfatto creando le configurazioni corrispondenti delle VM applicative, e la possibilità di collegare selettivamente i supporti rimovibili è stata risolta anche con gli strumenti integrati del sistema operativo: quando vengono collegati, sono disponibili nella VM di sistema sys-usb, da dove possono essere 'passati' alla VM necessaria. Il desktop dell'utente appare all'incirca in questo modo.

Utilizzo di QubesOS per lavorare con Windows 7

La versione finale del sistema è stata accolta positivamente (per quanto consenta una soluzione così complessa) dagli utenti, e gli strumenti nativi del sistema hanno permesso di estendere l'uso a un posto di lavoro mobile per l'utente con accesso tramite VPN.

In conclusione

La virtualizzazione in generale consente di ridurre i rischi legati all'uso di sistemi Windows non più supportati: non costringe a garantire la compatibilità con nuove attrezzature hardware, permette di escludere o controllare l'accesso al sistema tramite rete o tramite dispositivi collegati, consente di implementare un ambiente per avvii temporanei.

Qubes OS, basata sull'idea di isolamento attraverso la virtualizzazione, aiuta a utilizzare questi e altri meccanismi per garantire la sicurezza. Dall'esterno, molti vedono in Qubes prima di tutto un'insegna di anonimato, ma è un sistema utile sia per gli ingegneri, che spesso uniscono progetti, infrastrutture e segreti di accesso a essi, sia per i ricercatori sulla sicurezza. La separazione di applicazioni, dati e la formalizzazione della loro interazione sono i primi passi nell'analisi delle minacce e nella progettazione di un sistema di protezione. Tale separazione aiuta a strutturare le informazioni e a ridurre la probabilità di errori legati al fattore umano — fretta, affaticamento, ecc.

Attualmente, l'accento nello sviluppo è posto sull'espansione delle funzionalità degli ambienti Linux. È in fase di preparazione il rilascio della versione 4.1, che sarà basata su Fedora 31 e includerà versioni aggiornate dei componenti chiave Xen e Libvirt. Vale la pena notare che Qubes è sviluppato da professionisti della sicurezza informatica, che rilasciano sempre aggiornamenti tempestivi in caso di nuove minacce o bug.

Postfazione

Una delle funzionalità sperimentali che stiamo sviluppando consente di creare VM con supporto per l'accesso ospite a GPU basato sulla tecnologia Intel GVT-g, permettendo di sfruttare le potenzialità della scheda grafica e ampliando notevolmente l'ambito di utilizzo del sistema. Al momento della scrittura di questo articolo, questa funzionalità è operativa per le versioni di test di Qubes 4.1, ed è disponibile su github.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster