Sicurezza di IoT Edge per Linux in Windows

Si applica a: Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

Azure IoT Edge 1.5 LTS e IoT Edge 1.4 sono versioni supportate. IoT Edge 1.4 LTS sta raggiungendo la fine del servizio il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Azure IoT Edge per Linux in Windows trae vantaggio da tutte le offerte di sicurezza dall'esecuzione in un host client/server Windows e garantisce che tutti i componenti aggiuntivi mantengano la stessa sicurezza locale. Questo articolo fornisce informazioni sulle diverse impostazioni locali di sicurezza abilitate per impostazione predefinita e alcune delle impostazioni locali facoltative che l'utente può abilitare.

Sicurezza delle macchine virtuali

La macchina virtuale IoT Edge per Linux (EFLOW) è basata su Microsoft CBL-Mariner. CBL-Mariner è una distribuzione Linux interna per l'infrastruttura cloud e i servizi perimetrali di Microsoft. CBL-Mariner è progettato per offrire una piattaforma coerente per questi dispositivi e servizi e migliora la capacità di Microsoft di rimanere aggiornati sugli aggiornamenti di Linux. Per altre informazioni, vedere Sicurezza di CBL-Mariner.

La macchina virtuale EFLOW è basata su una piattaforma di sicurezza completa a quattro punti:

  1. Aggiornamenti di manutenzione
  2. File system radice di sola lettura
  3. Blocco del firewall
  4. DM-Verity

Aggiornamenti di manutenzione

Quando si verificano vulnerabilità di sicurezza, CBL-Mariner rende disponibili le patch di sicurezza e le correzioni più recenti per essere gestite tramite gli aggiornamenti mensili ELOW. La macchina virtuale non dispone di gestione pacchetti, quindi non è possibile scaricare e installare manualmente i pacchetti RPM. Tutti gli aggiornamenti alla macchina virtuale vengono installati usando il meccanismo di aggiornamento EFLOW A/B. Per altre informazioni sugli aggiornamenti di EFLOW, vedere Aggiornare IoT Edge per Linux in Windows

File system radice di sola lettura

La macchina virtuale EFLOW è costituita da due partizioni principali rootfs e dati. Le partizioni rootFS-A o rootFS-B sono intercambiabili e una delle due viene montata come file system di sola lettura in /, il che significa che non sono consentite modifiche nei file archiviati all'interno di questa partizione. D'altra parte, la partizione di dati montata in /var è leggibile e scrivibile, consentendo all'utente di modificare il contenuto all'interno della partizione. I dati archiviati in questa partizione non vengono modificati dal processo di aggiornamento e pertanto non verranno modificati tra gli aggiornamenti.

Poiché potrebbe essere necessario l'accesso in scrittura a /etc, /home, /root, /var per casi d'uso specifici, l'accesso in scrittura per queste directory viene eseguito sovrapponendoli alla partizione di dati specificamente alla directory /var/.eflow/overlays. Il risultato finale è che gli utenti possono scrivere qualsiasi elemento nelle directory indicate in precedenza. Per altre informazioni sulle sovrimpressioni, vedere overlayfs.

Layout della partizione EFLOW CR

Partizione Dimensione Descrizione
BootEFIA 8 MB Partizione del firmware A per un avvio GRUBless futuro
BootA 192 MB Contiene il bootloader per una partizione
RootFS A 4 GB Una delle due partizioni attive/passive che contengono il file system radice
BootEFIB 8 MB Partizione del firmware B per un avvio GRUBless futuro
BootB 192 MB Contiene il bootloader per la partizione B
RootFS B 4 GB Una delle due partizioni attive/passive che contengono il file system radice
Log 1 GB o 6 GB Registra una partizione specifica montata in /logs
Dati Da 2 GB a 2 TB Partizione con stato per l'archiviazione di dati persistenti tra gli aggiornamenti. Espandibile in base alla configurazione della distribuzione

Nota

Il layout della partizione rappresenta le dimensioni del disco logico e non indica lo spazio fisico che la macchina virtuale occupa sul disco del sistema operativo host.

Firewall

Per impostazione predefinita, la macchina virtuale EFLOW usa l'utilità iptables per le configurazioni del firewall. Iptables viene usato per configurare, gestire ed esaminare le tabelle delle regole di filtro dei pacchetti IP nel kernel Linux. L'implementazione predefinita consente solo il traffico in ingresso sulla porta 22 (servizio SSH) e blocca il traffico in caso contrario. È possibile controllare la configurazione di iptables seguendo questa procedura:

  1. Aprire una sessione di PowerShell con privilegi elevati

  2. Connettersi alla macchina virtuale EFLOW

    Connect-EflowVm
    
  3. Elencare tutte le regole iptables

    sudo iptables -L
    

    Impostazione predefinita iptableS EFLOW

Avvio verificato

La macchina virtuale EFLOW supporta l'avvio verificato tramite la funzionalità del kernel device-mapper-verity (dm-verity) inclusa, che fornisce un controllo trasparente dell'integrità dei dispositivi bloccati. dm-verity consente di evitare rootkit persistenti che possono contenere i privilegi radice e compromettere i dispositivi. Questa funzionalità garantisce che l'immagine del software di base della macchina virtuale sia la stessa e non sia stata modificata. La macchina virtuale usa la funzionalità dm-verity per controllare un dispositivo a blocchi specifico, il livello di archiviazione sottostante del file system e determinare se corrisponde alla configurazione prevista.

Per impostazione predefinita, questa funzionalità è disabilitata nella macchina virtuale e può essere attivata o disattivata. Per altre informazioni, vedere dm-verity.

Modulo TPM (Trusted Platform Module)

La tecnologia TPM (Trusted Platform Module) è progettata per fornire funzioni correlate alla sicurezza basate su hardware. Un chip TPM è un livello di crittografia-processore protetto che è progettato per eseguire le operazioni di crittografia. Il chip include diversi meccanismi di sicurezza fisica per renderlo di manomissione e di software dannoso è in grado di alterare le funzioni di protezione del TPM.

La macchina virtuale EFLOW non supporta vTPM. Tuttavia, l'utente può abilitare/disabilitare la funzionalità pass-through TPM che consente alla macchina virtuale EFLOW di usare il TPM del sistema operativo host Windows. Ciò consente due scenari principali:

Proteggere la comunicazione tra host e macchine virtuali

EFLOW offre diversi modi per interagire con la macchina virtuale esponendo un'implementazione avanzata del modulo di PowerShell. Per altre informazioni, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows. Questo modulo richiede l'esecuzione di una sessione con privilegi elevati ed è firmato usando un certificato di Microsoft Corporation.

Tutte le comunicazioni tra il sistema operativo host Windows e la macchina virtuale EFLOW richieste dai cmdlet di PowerShell vengono eseguite usando un canale SSH. Per impostazione predefinita, il servizio SSH della macchina virtuale non consentirà l'autenticazione tramite nome utente e password ed è limitata all'autenticazione del certificato. Il certificato viene creato durante il processo di distribuzione EFLOW ed è univoco per ogni installazione EFLOW. Inoltre, per evitare attacchi di forza bruta SSH, la macchina virtuale blocca un indirizzo IP se tenta più di tre connessioni al minuto al servizio SSH.

Nella versione di EFLOW Continuous Release (CR) è stata introdotta una modifica nel canale di trasporto usato per stabilire la connessione SSH. Originariamente, il servizio SSH viene eseguito sulla porta TCP 22, accessibile da tutti i dispositivi esterni nella stessa rete usando un socket TCP per tale porta specifica. Per motivi di sicurezza, EFLOW CR esegue il servizio SSH su socket Hyper-V invece dei normali socket TCP. Tutte le comunicazioni tramite socket Hyper-V vengono eseguite tra il sistema operativo host Windows e la macchina virtuale EFLOW, senza usare la rete. Questo limita l'accesso al servizio SSH, limitando le connessioni solo al sistema operativo host Windows. Per altre informazioni, vedere Socket Hyper-V.

Passaggi successivi

Altre informazioni sulla sicurezza di Windows IoT locale

Rimanere aggiornati con gli aggiornamenti più recenti in IoT Edge per Linux in Windows.