Utilizzo di QubesOS per lavorare con Windows 7

Non ci sono molti articoli su Habré dedicati al sistema operativo Qubes, e quelli che ho visto non descrivono molto dell'esperienza di utilizzo. Sotto il taglio, spero di correggerlo utilizzando l'esempio dell'utilizzo di Qubes come mezzo di protezione (contro) l'ambiente Windows e, allo stesso tempo, stimare il numero di utenti di lingua russa del sistema.

Utilizzo di QubesOS per lavorare con Windows 7

Perchè Qubes?

La storia della fine del supporto tecnico per Windows 7 e la crescente ansia degli utenti hanno portato alla necessità di organizzare il lavoro di questo sistema operativo, tenendo conto dei seguenti requisiti:

  • garantire l'utilizzo di Windows 7 completamente attivato con la possibilità per l'utente di installare aggiornamenti e varie applicazioni (anche tramite Internet);
  • implementare l'esclusione completa o selettiva delle interazioni di rete in base alle condizioni (funzionamento autonomo e modalità di filtraggio del traffico);
  • fornire la possibilità di connettere selettivamente supporti e dispositivi rimovibili.

Questo insieme di restrizioni presuppone un utente chiaramente preparato, poiché è consentita un'amministrazione indipendente e le restrizioni non riguardano il blocco delle sue potenziali azioni, ma l'esclusione di possibili errori o effetti distruttivi del software. Quelli. Nel modello non è presente alcun delinquente interno.

Nella nostra ricerca di una soluzione, abbiamo rapidamente abbandonato l'idea di implementare restrizioni utilizzando strumenti Windows integrati o aggiuntivi, poiché è abbastanza difficile limitare in modo efficace un utente con diritti di amministratore, lasciandogli la possibilità di installare applicazioni.

La soluzione successiva è stata l'isolamento tramite la virtualizzazione. Gli strumenti noti per la virtualizzazione del desktop (ad esempio virtualbox) sono poco adatti per risolvere i problemi di sicurezza e le restrizioni elencate dovranno essere eseguite dall'utente cambiando o adattando costantemente le proprietà della macchina virtuale ospite (di seguito denominata come VM), il che aumenta il rischio di errori.

Allo stesso tempo, abbiamo avuto esperienza nell'utilizzo di Qubes come sistema desktop dell'utente, ma avevamo dubbi sulla stabilità del lavoro con Windows guest. Si è deciso di verificare la versione attuale di Qubes, poiché le limitazioni indicate si adattano molto bene al paradigma di questo sistema, in particolare l'implementazione dei modelli di macchine virtuali e l'integrazione visiva. Successivamente, proverò a parlare brevemente delle idee e degli strumenti di Qubes, utilizzando l'esempio della risoluzione del problema.

Tipi di virtualizzazione Xen

Qubes si basa sull'hypervisor Xen, che riduce al minimo le funzioni di gestione delle risorse del processore, della memoria e delle macchine virtuali. Tutto il resto del lavoro con i dispositivi è concentrato in dom0 basato sul kernel Linux (Qubes per dom0 utilizza la distribuzione Fedora).

Utilizzo di QubesOS per lavorare con Windows 7

Xen supporta diversi tipi di virtualizzazione (fornirò esempi per l'architettura Intel, sebbene Xen ne supporti altri):

  • paravirtualizzazione (PV) - una modalità di virtualizzazione senza l'uso del supporto hardware, che ricorda la virtualizzazione del contenitore, può essere utilizzata per i sistemi con un kernel adattato (dom0 funziona in questa modalità);
  • virtualizzazione completa (HVM): in questa modalità, il supporto hardware viene utilizzato per le risorse del processore e tutte le altre apparecchiature vengono emulate utilizzando QEMU. Questo è il modo più universale per eseguire vari sistemi operativi;
  • paravirtualizzazione dell'hardware (PVH - ParaVirtualized Hardware) - una modalità di virtualizzazione che utilizza il supporto hardware quando, per lavorare con l'hardware, il kernel del sistema ospite utilizza driver adattati alle capacità dell'hypervisor (ad esempio, memoria condivisa), eliminando la necessità dell'emulazione QEMU e aumentare le prestazioni di I/O. Il kernel Linux a partire dalla versione 4.11 può funzionare in questa modalità.

Utilizzo di QubesOS per lavorare con Windows 7

A partire da Qubes 4.0, per ragioni di sicurezza, l'uso della modalità paravirtualizzazione viene abbandonato (anche a causa di vulnerabilità note nell'architettura Intel, parzialmente mitigate dall'uso della virtualizzazione completa); la modalità PVH viene utilizzata di default.

Quando si utilizza l'emulazione (modalità HVM), QEMU viene avviato in una VM isolata chiamata stubdomain, riducendo così i rischi di sfruttare potenziali errori nell'implementazione (il progetto QEMU contiene molto codice, anche per compatibilità).
Nel nostro caso, questa modalità dovrebbe essere utilizzata per Windows.

Assistenza macchine virtuali

Nell'architettura di sicurezza di Qubes, una delle funzionalità chiave dell'hypervisor è il trasferimento dei dispositivi PCI nell'ambiente ospite. L'esclusione hardware consente di isolare la parte host del sistema da attacchi esterni. Xen lo supporta per le modalità PV e HVM, nel secondo caso richiede il supporto per IOMMU (Intel VT-d) - gestione della memoria hardware per dispositivi virtualizzati.

Questo crea diverse macchine virtuali di sistema:

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

Per lavorare con i dispositivi USB vengono utilizzati servizi proxy che forniscono, tra le altre cose:

  • per la classe di dispositivi HID (dispositivo di interfaccia umana), inviando comandi a dom0;
  • per i supporti rimovibili, reindirizzamento dei volumi del dispositivo ad altre VM (ad eccezione di dom0);
  • reindirizzamento diretto a un dispositivo USB (utilizzando USBIP e strumenti di integrazione).

In una tale configurazione, un attacco riuscito attraverso lo stack di rete o i dispositivi connessi può portare alla compromissione solo della VM del servizio in esecuzione e non dell'intero sistema nel suo insieme. E dopo aver riavviato la VM del servizio, verrà caricata nel suo stato originale.

Strumenti di integrazione delle macchine virtuali

Esistono diversi modi per interagire con il desktop di una macchina virtuale: installando applicazioni nel sistema ospite o emulando video utilizzando strumenti di virtualizzazione. Le applicazioni guest possono essere vari strumenti di accesso remoto universale (RDP, VNC, Spice, ecc.) o adattate a un hypervisor specifico (tali strumenti sono solitamente chiamati utilità guest). È anche possibile utilizzare un'opzione mista, quando l'hypervisor emula l'I/O per il sistema guest e fornisce esternamente la possibilità di utilizzare un protocollo che combina l'I/O, ad esempio, come Spice. Allo stesso tempo, gli strumenti di accesso remoto di solito ottimizzano l'immagine, poiché implicano il lavoro tramite rete, il che non ha un effetto positivo sulla qualità dell'immagine.

Qubes fornisce i propri strumenti per l'integrazione delle VM. Prima di tutto, questo è un sottosistema grafico: le finestre di diverse macchine virtuali vengono visualizzate su un unico desktop con la propria cornice colorata. In generale, gli strumenti di integrazione si basano sulle capacità dell'hypervisor: memoria condivisa (tabella di concessione Xen), strumenti di notifica (canale eventi Xen), storage condiviso xenstore e protocollo di comunicazione vchan. Con il loro aiuto vengono implementati i componenti di base qrexec e qubes-rpc e i servizi applicativi: reindirizzamento audio o USB, trasferimento di file o contenuto degli appunti, esecuzione di comandi e avvio di applicazioni. È possibile impostare policy che consentono di limitare i servizi disponibili su una VM. La figura seguente è un esempio della procedura per inizializzare l'interazione di due VM.

Utilizzo di QubesOS per lavorare con Windows 7

Pertanto, il lavoro nella VM viene svolto senza utilizzare una rete, il che consente il pieno utilizzo delle VM autonome per evitare perdite di informazioni. Ad esempio, questo è il modo in cui viene implementata la separazione delle operazioni crittografiche (PGP/SSH), quando le chiavi private vengono utilizzate in VM isolate e non vanno oltre queste.

Modelli, applicazioni e VM monouso

Tutto il lavoro degli utenti in Qubes viene eseguito su macchine virtuali. Il sistema host principale viene utilizzato per controllarli e visualizzarli. Il sistema operativo viene installato insieme a un set di base di macchine virtuali basate su modelli (TemplateVM). Questo modello è una VM Linux basata sulla distribuzione 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 eseguiti da un gestore di pacchetti standard (dnf o apt) da repository configurati con verifica obbligatoria della firma digitale (GnuPG). Lo scopo di tali VM è garantire la fiducia nelle VM applicative lanciate su di esse.

All'avvio, una VM dell'applicazione (AppVM) utilizza uno snapshot della partizione di sistema del modello di VM corrispondente e al termine elimina questo snapshot senza salvare le modifiche. I dati richiesti dall'utente vengono archiviati in una partizione utente univoca per ciascuna VM dell'applicazione, montata nella directory home.

Utilizzo di QubesOS per lavorare con Windows 7

Utilizzare VM usa e getta (disposableVM) può essere utile dal punto di vista della sicurezza. Tale VM viene creata sulla base di un modello al momento dell'avvio e viene avviata con uno scopo: eseguire un'applicazione, completando il lavoro dopo la sua chiusura. Le VM usa e getta possono essere utilizzate per aprire file sospetti il ​​cui contenuto potrebbe portare allo sfruttamento di specifiche vulnerabilità dell'applicazione. La possibilità di eseguire una VM una tantum è integrata nel file manager (Nautilus) e nel client di posta elettronica (Thunderbird).

La macchina virtuale Windows può essere utilizzata anche per creare un modello e una macchina virtuale monouso spostando il profilo utente in una sezione separata. Nella nostra versione, tale modello verrà utilizzato dall'utente per attività di amministrazione e installazione dell'applicazione. Sulla base del modello, verranno create diverse VM applicative, con accesso limitato alla rete (funzionalità sys-firewall standard) e senza alcun accesso alla rete (non viene creato un dispositivo di rete virtuale). Tutte le modifiche e le applicazioni installate nel modello saranno disponibili per funzionare in queste VM e, anche se vengono introdotti programmi segnalibri, non avranno accesso alla rete per essere compromessi.

Lotta per Windows

Le funzionalità sopra descritte sono la base di Qubes e funzionano in modo abbastanza stabile, le difficoltà iniziano con Windows. Per integrare Windows, è necessario utilizzare una serie di strumenti guest Qubes Windows Tools (QWT), che include driver per lavorare con Xen, un driver qvideo e una serie di utilità per lo scambio di informazioni (trasferimento file, appunti). Il processo di installazione e configurazione è documentato in dettaglio sul sito Web del progetto, quindi condivideremo la nostra esperienza applicativa.

La difficoltà principale è essenzialmente la mancanza di supporto per gli strumenti sviluppati. Sembra che Key Developers (QWT) non sia disponibile e il progetto di integrazione Windows è in attesa di uno sviluppatore principale. Pertanto, prima di tutto, è stato necessario valutarne l'andamento e comprendere la possibilità di sostenerlo autonomamente, se necessario. Il più difficile da sviluppare ed eseguire il debug è il driver grafico, che emula la scheda video e il display per generare un'immagine nella memoria condivisa, consentendo di visualizzare l'intero desktop o la finestra dell'applicazione direttamente nella finestra del sistema host. Durante l'analisi del funzionamento del driver abbiamo adattato il codice per l'assemblaggio in ambiente Linux ed elaborato uno schema di debug tra due sistemi guest Windows. Nella fase di crossbuild, abbiamo apportato diverse modifiche che ci hanno semplificato le cose, principalmente in termini di installazione “silenziosa” delle utilità, ed hanno anche eliminato il fastidioso degrado delle prestazioni quando si lavora a lungo in una VM. Abbiamo presentato i risultati del lavoro in un separato repository, quindi non per molto stimolante Sviluppatore capo di Qubes.

La fase più critica in termini di stabilità del sistema ospite è l'avvio di Windows, qui puoi vedere la familiare schermata blu (o addirittura non vederla). Per la maggior parte degli errori identificati, sono state adottate varie soluzioni alternative: eliminare i driver dei dispositivi a blocchi Xen, disabilitare il bilanciamento della memoria delle VM, correggere le impostazioni di rete e ridurre al minimo il numero di core. I nostri strumenti guest creano installazioni e funzionano su Windows 7 e Windows 10 completamente aggiornati (eccetto qvideo).

Quando si passa da un ambiente reale a uno virtuale, sorge un problema con l'attivazione di Windows se vengono utilizzate versioni OEM preinstallate. Tali sistemi utilizzano l'attivazione in base alle licenze specificate nell'UEFI del dispositivo. Per elaborare correttamente l'attivazione è necessario tradurre nel sistema guest una delle intere sezioni ACPI del sistema host (tabella SLIC) e modificare leggermente le altre, registrando il produttore. Xen consente di personalizzare il contenuto ACPI di tabelle aggiuntive, ma senza modificare quelle principali. Una patch di un progetto OpenXT simile, adattato per Qubes, ha aiutato nella soluzione. Le correzioni sono sembrate utili non solo a noi e sono state tradotte nel repository principale di Qubes e nella libreria Libvirt.

Gli ovvi svantaggi degli strumenti di integrazione di Windows includono la mancanza di supporto per audio, dispositivi USB e la complessità di lavorare con i media, poiché non esiste supporto hardware per la GPU. Ma quanto sopra non impedisce l'utilizzo della VM per lavorare con documenti d'ufficio, né impedisce l'avvio di specifiche applicazioni aziendali.

Il requisito di passare alla modalità operativa senza rete o con una rete limitata dopo aver creato un modello di macchina virtuale Windows è stato soddisfatto creando le configurazioni appropriate delle macchine virtuali dell'applicazione e la possibilità di connettere selettivamente supporti rimovibili è stata risolta anche dagli strumenti del sistema operativo standard - quando connessi , sono disponibili nel sistema VM sys-usb, da dove possono essere "inoltrati" alla VM richiesta. Il desktop dell'utente è simile a questo.

Utilizzo di QubesOS per lavorare con Windows 7

La versione finale del sistema è stata accettata positivamente (per quanto consentito da una soluzione così completa) dagli utenti, e gli strumenti standard del sistema hanno permesso di espandere l’applicazione alla postazione di lavoro mobile dell’utente con accesso tramite VPN.

Invece di una conclusione

La virtualizzazione in generale consente di ridurre i rischi derivanti dall'utilizzo di sistemi Windows rimasti senza supporto: non forza la compatibilità con il nuovo hardware, consente di escludere o controllare l'accesso al sistema tramite la rete o tramite dispositivi connessi e consente di implementare un ambiente di lancio unico.

Basato sull'idea di isolamento attraverso la virtualizzazione, Qubes OS ti aiuta a sfruttare questi e altri meccanismi di sicurezza. Dall’esterno molti vedono Qubes soprattutto come desiderio di anonimato, ma è un sistema utile sia per gli ingegneri, che spesso si destreggiano tra progetti, infrastrutture e segreti per accedervi, sia per i ricercatori in materia di sicurezza. La separazione delle applicazioni, dei dati e la formalizzazione della loro interazione sono i passi iniziali dell'analisi delle minacce e della progettazione del sistema di sicurezza. Questa separazione aiuta a strutturare le informazioni e a ridurre la probabilità di errori dovuti al fattore umano: fretta, stanchezza, ecc.

Attualmente, l'enfasi principale nello sviluppo è sull'espansione delle funzionalità degli ambienti Linux. È in preparazione per il rilascio la versione 4.1, che sarà basata su Fedora 31 e includerà le versioni attuali dei componenti chiave Xen e Libvirt. Vale la pena notare che Qubes è creato da professionisti della sicurezza informatica che rilasciano sempre tempestivamente aggiornamenti se vengono identificate nuove minacce o errori.

postfazione

Una delle funzionalità sperimentali che stiamo sviluppando ci consente di creare VM con supporto per l'accesso ospite alla GPU basata sulla tecnologia Intel GVT-g, che ci consente di utilizzare le capacità dell'adattatore grafico ed espandere significativamente la portata del sistema. Al momento in cui scriviamo, questa funzionalità funziona per le build di test di Qubes 4.1 ed è disponibile su github.

Fonte: habr.com

Aggiungi un commento