Creare un disco modello di macchina virtuale schermata Linux

Questo argomento illustra come preparare un disco modello per le macchine virtuali schermate Linux che possono essere usate per creare un'istanza di una o più macchine virtuali tenant.

Prerequisiti

Per preparare e testare una macchina virtuale schermata linux, sono necessarie le risorse seguenti:

  • Un server con funzionalità di virtualizzazione che eseguono Windows Server, versione 1709 o successiva
  • Un secondo computer (Windows 10 o Windows Server 2016) in grado di eseguire la console di gestione di Hyper-V per connettersi alla console della macchina virtuale in esecuzione
  • Un'immagine ISO per uno dei sistemi operativi delle macchine virtuali schermate Linux supportate:
    • Ubuntu 16.04 LTS con kernel 4.4
    • Red Hat Enterprise Linux 7.3
    • SUSE Linux Enterprise Server 12 Service Pack 2
  • Accesso a Internet per scaricare il pacchetto lsvmtools e gli aggiornamenti del sistema operativo

Importante

Le versioni più recenti dei sistemi operativi Linux precedenti potrebbero includere un bug noto del driver TPM che impedirà il provisioning corretto come macchine virtuali schermate. Non è consigliabile aggiornare i modelli o le macchine virtuali schermate a una versione più recente finché non è disponibile una correzione. L'elenco dei sistemi operativi supportati indicato in precedenza verrà aggiornato quando gli aggiornamenti verranno resi pubblici.

Preparare una macchina virtuale Linux

Le macchine virtuali schermate vengono create da dischi modello sicuri. I dischi modello contengono il sistema operativo per la macchina virtuale e i metadati, inclusa una firma digitale delle partizioni /boot e /root, per garantire che i componenti principali del sistema operativo non vengano modificati prima della distribuzione.

Per creare un disco modello, è prima necessario creare una macchina virtuale normale (non schermata) che verrà preparata come immagine di base per le macchine virtuali schermate future. Il software installato e le modifiche alla configurazione apportate a questa macchina virtuale verranno applicate a tutte le macchine virtuali schermate create da questo disco modello. Questi passaggi illustrano i requisiti minimi per preparare una macchina virtuale Linux per la creazione di modelli.

Nota

La crittografia del disco Linux viene configurata quando il disco è partizionato. Ciò significa che è necessario creare una nuova macchina virtuale pre-crittografata usando dm-crypt per creare un disco modello di macchina virtuale schermata Linux.

  1. Nel server di virtualizzazione assicurarsi che siano installate le funzionalità di supporto Hyper-V e Host Guardian Hyper-V eseguendo i comandi seguenti in una console di PowerShell con privilegi elevati:

    Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
    
  2. Scaricare l'immagine ISO da un'origine attendibile e archiviarla nel server di virtualizzazione o in una condivisione file accessibile al server di virtualizzazione.

  3. Nel computer di gestione che esegue Windows Server versione 1709, installare gli strumenti di amministrazione remota del server della macchina virtuale schermata eseguendo il comando seguente:

    Install-WindowsFeature RSAT-Shielded-VM-Tools
    
  4. Aprire console di gestione di Hyper-V nel computer di gestione e connettersi al server di virtualizzazione. A tale scopo, fare clic su "Connetti al server..." nel riquadro Azioni o facendo clic con il pulsante destro del mouse su Console di gestione di Hyper-V e scegliendo "Connetti al server..." Specificare il nome DNS per il server Hyper-V e, se necessario, le credenziali necessarie per la connessione.

  5. Usando la console di gestione di Hyper-V, configurare un commutatore esterno nel server di virtualizzazione in modo che la macchina virtuale Linux possa accedere a Internet per ottenere gli aggiornamenti.

  6. Creare quindi una nuova macchina virtuale in cui installare il sistema operativo Linux. Nel riquadro Azioni fare clic su Nuova>macchina virtuale per visualizzare la procedura guidata. Specificare un nome descrittivo per la macchina virtuale, ad esempio "Linux pre-templatizzato" e fare clic su Avanti.

  7. Nella seconda pagina della procedura guidata selezionare Generazione 2 per assicurarsi che venga effettuato il provisioning della macchina virtuale con un profilo firmware basato su UEFI.

  8. Completare il resto della procedura guidata in base alle preferenze. Non usare un disco differenze per questa macchina virtuale; i dischi modello della macchina virtuale schermati non possono usare dischi diversi. Infine, connettere l'immagine ISO scaricata in precedenza all'unità DVD virtuale per questa macchina virtuale in modo da poter installare il sistema operativo.

  9. In Console di gestione di Hyper-V, selezionare la macchina virtuale appena creata e fare clic su Connetti... nel riquadro Azioni per connettersi a una console virtuale della macchina virtuale. Nella finestra visualizzata, fare clic su Avvia per attivare la macchina virtuale.

  10. Procedere con il processo di installazione per la distribuzione Linux selezionata. Mentre ogni distribuzione Linux usa un'installazione guidata diversa, è necessario soddisfare i requisiti seguenti per le macchine virtuali che diventeranno dischi modello di macchina virtuale schermati Linux:

    • Il disco deve essere partizionato usando il layout GPT (GUID Partitioning Table)
    • La partizione radice deve essere crittografata con dm-crypt. La passphrase deve essere impostata su passphrase (tutte lettere minuscole). Questa passphrase verrà randomizzata e la partizione verrà ricrittografata quando viene effettuato il provisioning di una macchina virtuale schermata.
    • La partizione di avvio deve usare il file system ext2
  11. Dopo aver avviato completamente il sistema operativo Linux e aver eseguito l'accesso, è consigliabile installare il kernel Linux virtuale e i pacchetti di servizi di integrazione Hyper-V associati. Inoltre, è necessario installare un server SSH o un altro strumento di gestione remota per accedere alla macchina virtuale una volta schermata.

    In Ubuntu, usare quindi il comando seguente per installare questi componenti:

    sudo apt-get install linux-virtual linux-tools-virtual linux-cloud-tools-virtual linux-image-extra-virtual openssh-server
    

    In RHEL, eseguire invece il seguente comando:

    sudo yum install hyperv-daemons openssh-server
    sudo service sshd start
    

    In SLES, eseguire il comando seguente:

    sudo zypper install hyper-v
    sudo chkconfig hv_kvp_daemon on
    sudo systemctl enable sshd
    
  12. Configurare il sistema operativo Linux in base alle proprie esigenze. Tutti i software installati, gli account utente aggiunti e le modifiche alla configurazione apportate a livello di sistema verranno applicate a tutte le macchine virtuali future create dal disco modello. È consigliabile evitare di salvare eventuali segreti o pacchetti non necessari nel disco.

  13. Se si prevede di usare System Center Virtual Machine Manager per distribuire le macchine virtuali, installare l'agente guest Virtual Machine Manager per consentire di specializzare il sistema operativo durante il provisioning delle macchine virtuali. La specializzazione consente di configurare ogni macchina virtuale in modo sicuro con chiavi SSH e utenti diversi, configurazioni di rete e passaggi di configurazione personalizzati. Informazioni su come ottenere e installare l'agente guest VMM nella documentazione di VMM.

  14. Successivamente, aggiungere il repository software Microsoft Linux allo strumento di gestione pacchetti.

  15. Usando la gestione pacchetti, installare il pacchetto lsvmtools che contiene lo shim del bootloader della macchina virtuale schermata Linux, i componenti di provisioning e lo strumento di preparazione del disco.

    # Ubuntu 16.04
    sudo apt-get install lsvmtools
    
    # SLES 12 SP2
    sudo zypper install lsvmtools
    
    # RHEL 7.3
    sudo yum install lsvmtools
    
  16. Al termine della personalizzazione del sistema operativo Linux, individuare il programma di installazione lsvmprep nel sistema ed eseguirlo.

    # The path below may change based on the version of lsvmprep installed
    # Run "find /opt -name lsvmprep" to locate the lsvmprep executable
    sudo /opt/lsvmtools-1.0.0-x86-64/lsvmprep
    
  17. Arrestare la macchina virtuale.

  18. Se sono stati eseguiti checkpoint della macchina virtuale (inclusi i checkpoint automatici creati da Hyper-V con Windows 10 Fall Creators Update), assicurarsi di eliminarli prima di continuare. I checkpoint creano dischi diversi (con estensione AVHDX) che non sono supportati dalla Creazione guidata disco modello.

    Per eliminare i checkpoint, aprire console di gestione di Hyper-V, selezionare la macchina virtuale, fare clic con il pulsante destro del mouse sul checkpoint più in alto nel riquadro Checkpoint, quindi scegliere Elimina sottoalbero checkpoint.

    Eliminare tutti i checkpoint per la macchina virtuale modello nella console di gestione di Hyper-V

Proteggere il disco modello

La macchina virtuale preparata nella sezione precedente è quasi pronta per essere usata come disco modello di macchina virtuale schermata Linux. L'ultimo passaggio consiste nell'eseguire il disco tramite la Creazione guidata disco modello, che eseguirà l'hash e firma digitalmente lo stato corrente delle partizioni radice e di avvio. L'hash e la firma digitale vengono verificati quando viene effettuato il provisioning di una macchina virtuale schermata per assicurarsi che non siano state apportate modifiche non autorizzate alle due partizioni tra la creazione del modello e la distribuzione.

Ottenere un certificato per firmare il disco

Per firmare digitalmente le misurazioni del disco, è necessario ottenere un certificato nel computer in cui si eseguirà la Creazione guidata disco modello. Il certificato deve soddisfare i requisiti seguenti:

Proprietà del certificato Valore obbligatorio
Algoritmo chiave RSA
Dimensioni minime della chiave 2048 bit
Algoritmo di firma SHA256 (consigliato)
Utilizzo chiavi Firma digitale

I dettagli su questo certificato verranno mostrati ai tenant quando creano i file di dati di schermatura e autorizzano i dischi considerati attendibili. Pertanto, è importante ottenere questo certificato da un'autorità di certificazione considerata reciprocamente attendibile sia dall'utente che dai tenant. Negli scenari aziendali in cui si è sia l'host che il tenant, è consigliabile prendere in considerazione di far emettere questo certificato dall'autorità di certificazione aziendale. Proteggere con attenzione questo certificato, poiché chiunque vi abbia può creare nuovi dischi modello considerati attendibili come il disco autentico.

In un ambiente lab di test, è possibile creare un certificato autofirmato con il comando di PowerShell seguente:

New-SelfSignedCertificate -Subject "CN=Linux Shielded VM Template Disk Signing Certificate"

Elaborare il disco con il cmdlet Creazione guidata disco modello

Copiare il disco modello e il certificato in un computer che esegue Windows Server versione 1709, quindi eseguire i comandi seguenti per avviare il processo di firma. Il VHDX fornito al parametro -Path verrà sovrascritto con il disco modello aggiornato, quindi assicurarsi di creare una copia prima di eseguire il comando.

Importante

Gli strumenti di amministrazione remota del server disponibili in Windows Server 2016 o Windows 10 non possono essere usati per preparare un disco modello di macchina virtuale schermata Linux. Usare solo il cmdlet Protect-TemplateDisk disponibile in Windows Server, versione 1709 o strumenti di amministrazione remota del server disponibili in Windows Server 2019 per preparare un disco modello di macchina virtuale schermata Linux.

# Replace "THUMBPRINT" with the thumbprint of your template disk signing certificate in the line below
$certificate = Get-Item Cert:\LocalMachine\My\THUMBPRINT

Protect-TemplateDisk -Path 'C:\temp\MyLinuxTemplate.vhdx' -TemplateName 'Ubuntu 16.04' -Version 1.0.0.0 -Certificate $certificate -ProtectedTemplateTargetDiskType PreprocessedLinux

Il disco modello è ora pronto per essere usato per il provisioning delle macchine virtuali schermate. Se si usa System Center Virtual Machine Manager per distribuire la macchina virtuale, ora è possibile copiare il file VHDX nella libreria VMM.

È anche possibile estrarre il catalogo delle firme del volume dal VHDX. Questo file viene usato per fornire informazioni sul certificato di firma, sul nome del disco e sulla versione ai proprietari di macchine virtuali che vogliono usare il modello. Il file va importato nella Creazione guidata file di dati di schermatura per autorizzare l'autore del modello, che possiede il certificato di firma, a creare questo e i futuri dischi modello per gli utenti.

Per estrarre il catalogo delle firme del volume eseguire il comando seguente in PowerShell:

Save-VolumeSignatureCatalog -TemplateDiskPath 'C:\temp\MyLinuxTemplate.vhdx' -VolumeSignatureCatalogPath 'C:\temp\MyLinuxTemplate.vsc'