UEFI Secure Boot - Amazon Linux 2023

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

UEFI Secure Boot

Amazon Linux 2023 (AL2023) supporta UEFI Secure Boot a partire dal rilascio 2023.1. Devi utilizzare AL2023 con istanze Amazon EC2 che supportano sia UEFI che UEFI Secure Boot. Per ulteriori informazioni, consulta Avvio di un'istanza nella Guida per l'utente di Amazon EC2 per istanze Linux.

Le istanze AL2023 con UEFI Secure Boot abilitato accettano solo codice a livello di kernel, incluso il kernel Linux e i moduli, che sono firmati da Amazon in modo da poterti assicurare che l'istanza esegua solo codici a livello di kernel firmati da Amazon Web Services.

Per ulteriori informazioni sulle istanze Amazon EC2 e UEFI Secure Boot, consulta UEFI Secure Boot nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Prerequisiti
  • Devi utilizzare un'AMI con AL2023 rilascio 2023.1 o successivo.

  • Il tipo di istanza deve supportare UEFI Secure Boot. Per ulteriori informazioni, consulta Avvio di un'istanza nella Guida per l'utente di Amazon EC2 per istanze Linux.

Abilitazione di UEFI Secure Boot su Amazon Linux 2023

Le AMI AL2023 standard incorporano un bootloader e un kernel firmati dalle nostre chiavi. Puoi abilitare UEFI Secure Boot registrando le istanze esistenti o creando AMI con UEFI Secure Boot preabilitato mediante registrazione un'immagine da uno snapshot. UEFI Secure Boot non è abilitato per impostazione predefinita sulle AMI AL2023 standard.

La modalità di avvio delle AMI AL2023 è impostata su uefi-preferred garantendo così che le istanze avviate con queste AMI usino il firmware UEFI, se il tipo di istanza supporta UEFI. Se il tipo di istanza non supporta UEFI, l'istanza viene avviata con il firmware BIOS legacy. Quando un'istanza viene avviata in modalità BIOS legacy, UEFI Secure Boot non viene applicato.

Per ulteriori informazioni sulle modalità di avvio AMI per le istanze Amazon EC2, consulta la pagina dedicata alle modalità di avvio nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Registrazione di un'istanza esistente

Per registrare un'istanza esistente, compila le variabili specifiche del firmware UEFI con un set di chiavi che consentono al firmware di verificare il bootloader e al bootloader di verificare il kernel all'avvio successivo.

  1. Amazon Linux fornisce uno strumento per semplificare il processo di registrazione. Esegui il comando seguente per effettuare il provisioning dell'istanza con il set di chiavi e certificati necessario.

    sudo amazon-linux-sb enroll
  2. Esegui il seguente comando per riavviare l'istanza. Dopo il riavvio dell'istanza, verrà abilitato UEFI Secure Boot.

    sudo reboot
Nota

Attualmente le AMI Amazon Linux non supportano Nitro Trusted Platform Module (NitroTPM). Se hai bisogno di NitroTPM oltre a UEFI Secure Boot, usa le informazioni nella sezione seguente.

Registrazione di un'immagine dallo snapshot

Quando registri un'AMI da uno snapshot di un volume root di Amazon EBS utilizzando l'API register-image Amazon EC2, puoi effettuare il provisioning dell'AMI con un blob binario che contiene lo stato dell'archivio di variabili UEFI. Fornendo UefiData AL2023, abiliti UEFI Secure Boot e non devi seguire i passaggi della sezione precedente.

Per ulteriori informazioni sulla creazione e l'utilizzo di un blob binario, consulta Opzione B: creazione di un blob binario contenente un archivio delle variabili preriempito nella Guida per l'utente di Amazon EC2 per le istanze Linux.

AL2023 fornisce un blob binario predefinito che può essere utilizzato direttamente sulle istanze Amazon EC2. Il blob binario si trova in /usr/share/amazon-linux-sb-keys/uefi.vars su un'istanza in esecuzione. Questo blob è fornito tramite il pacchetto RPM amazon-linux-sb-keys che viene installato per impostazione predefinita sulle AMI AL2023 a partire dal rilascio 2023.1.

Nota

Per assicurarti di utilizzare la versione più recente delle chiavi e delle revoche, usa il blob dello stesso rilascio di AL2023 che usi per creare l'AMI.

Quando registri un'immagine, si consiglia di utilizzare il parametro BootMode dell'API RegisterImage impostata su uefi. Ciò consente di abilitare NitroTPM impostando il parametro TpmSupport su. v2.0 Inoltre, impostando BootMode su uefi è possibile garantire che UEFI Secure Boot sia abilitato e non possa essere disabilitato accidentalmente quando si passa a un tipo di istanza che non supporta UEFI.

Per ulteriori informazioni su NitroTPM, consulta la pagina dedicata a NitroTPM nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Aggiornamenti di revoca

Potrebbe essere necessario che Amazon Linux distribuisca una nuova versione del bootloader grub2 o del kernel Linux firmata con chiavi aggiornate. In tal caso, potrebbe essere necessario revocare la vecchia chiave per evitare la possibilità che bug sfruttabili delle versioni precedenti del bootloader possano aggirare il processo di verifica di UEFI Secure Boot.

Gli aggiornamenti dei pacchetti ai pacchetti grub2 o kernel aggiornano sempre automaticamente l'elenco delle revoche nell'archivio di variabili UEFI dell'istanza in esecuzione. Ciò significa che con UEFI Secure Boot abilitato, non è più possibile eseguire la vecchia versione di un pacchetto dopo aver installato un aggiornamento di sicurezza per il pacchetto.

Come funziona UEFI Secure Boot in Amazon Linux 2023

A differenza di altre distribuzioni Linux, Amazon Linux non fornisce un componente aggiuntivo, chiamato shim, che funge da bootloader di prima fase. Lo shim è generalmente firmato con chiavi Microsoft. Ad esempio, nelle distribuzioni Linux con shim, lo shim carica il bootloader grub2 che usa il codice dello shim per verificare il kernel Linux. Inoltre, lo shim mantiene il proprio set di chiavi e revoche nel database Machine Owner Key (MOK) situato nell'archivio di variabili UEFI e controllato con lo strumento mokutil.

Amazon Linux non fornisce uno shim. Poiché il proprietario dell'AMI controlla le variabili UEFI, questo passaggio intermedio non è necessario e può influire negativamente sui tempi di avvio e lancio. Inoltre, per impostazione predefinita, abbiamo scelto di non includere l'attendibilità nelle chiavi di tutti i fornitori, per ridurre la possibilità che i file binari indesiderati possano essere eseguiti. Come sempre, i clienti possono includere file binari se lo desiderano.

Con Amazon Linux, UEFI carica e verifica direttamente il nostro bootloader grub2. Il bootloader grub2 è stato modificato per utilizzare UEFI per verificare il kernel Linux dopo averlo caricato. Pertanto, il kernel Linux viene verificato utilizzando gli stessi certificati memorizzati nella normale variabile db UEFI (database delle chiavi autorizzate) e testato rispetto alla stessa variabile dbx (database delle revoche) del bootloader e di altri file binari UEFI. Poiché forniamo le nostre chiavi PK e KEK, che controllano l'accesso al database db e al database dbx, possiamo distribuire le revoche e gli aggiornamenti firmati secondo necessità senza un intermediario come lo shim.

Per ulteriori informazioni su UEFI Secure Boot, consulta Come funziona UEFI Secure Boot nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Registrazione di chiavi personalizzate

Come documentato nella sezione precedente, Amazon Linux non richiede uno shim per UEFI Secure Boot su Amazon EC2. Quando leggi la documentazione per altre distribuzioni Linux, potresti trovare documentazione per la gestione del database Machine Owner Key (MOK) utilizzando mokutil, che non è presente su AL2023. Gli ambienti shim e MOK aggirano alcune limitazioni della registrazione delle chiavi nel firmware UEFI che non sono applicabili al modo in cui Amazon EC2 implementa UEFI Secure Boot. Con Amazon EC2 sono disponibili meccanismi per manipolare facilmente e direttamente le chiavi nell'archivio di variabili UEFI.

Se desideri registrare le tue chiavi, puoi farlo manipolando l'archivio delle variabili all'interno di un'istanza esistente (consulta Aggiunta delle chiavi all'archivio delle variabili dall'interno dell'istanza) o creando un blob binario precompilato (consulta Creazione di un blob binario contenente un archivio delle variabili preriempito).