Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali di Linux
Note
CentOS a cui si fa riferimento in questo articolo è una distribuzione Linux e raggiungerà End Of Life (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per altre informazioni, vedere Indicazioni sulla fine della vita di CentOS.
Sommario
Questo articolo fornisce una soluzione a un problema a causa del quale la connessione Secure Shell (SSH) a una macchina virtuale (VM) Azure ha esito negativo a causa di una configurazione errata di SELinux.
Background
Il modello di sicurezza Unix si basa sull'Controllo di accesso discrezionale (DAC). Security-Enhanced Linux (SELinux) implementa il Controllo degli Accessi Obbligatorio (MAC) per Linux utilizzando moduli del kernel e strumenti per lo spazio utente. MAC offre un ambiente più controllato per l'accesso alle risorse e rimuove la possibilità dell'utente radice di accedere a tutte le risorse nel sistema operativo (OS) senza restrizioni. Riduce inoltre più tipi di rischi per la sicurezza usando il modello di sicurezza Unix tradizionale.
Le diverse distribuzioni includono SELinux predefinito o offrono un modo semplice per attivare il supporto del kernel e installare gli strumenti dello spazio utente. Per altre informazioni, vedere gli articoli SELinux seguenti di alcuni dei principali provider Linux:
Le immagini basate su Red Hat su Azure vengono fornite con SELinux abilitato; altre distribuzioni non lo fanno. Quando si usa SELinux in Ubuntu, viene visualizzato un avviso relativo allo stato non mantenuto in questa distribuzione.When you use SELinux in Ubuntu, there's a warning about its unmaintained state on this distribution. Ubuntu implementa una soluzione diversa per MAC, denominata AppArmor.
Prerequisiti
Assicurarsi che la console seriale sia abilitata e funzionale nella macchina virtuale Linux.
Sintomi
Una configurazione errata di SELinux può comportare l'impossibilità del sistema operativo di caricare il criterio SELinux, che impedisce al sistema operativo di completare l'avvio.
Controllare la console seriale dal portale di Azure o tramite il interfaccia della riga di comando di Azure. Il messaggio seguente viene visualizzato vicino alla fine dell'output:
La configurazione SELinux viene gestita dall'amministratore di sistema. L'amministratore di sistema può risolvere questo problema usando uno dei metodi seguenti.
Soluzione 1: Avviare la macchina virtuale con SELinux disattivata usando la console seriale
Attivare Restart VM (Hard) dalla console seriale di Azure.
Interrompere la macchina virtuale nel menu GRUB con il tasto ESC .
Selezionare E per modificare la prima voce del kernel nel menu GRUB.
Passare alla
linux16riga e aggiungereselinux=0per disabilitare temporaneamente SELinux.
Convalidare e correggere la configurazione SELinux in
/etc/selinux/config.Ad esempio, un errore comune consiste nell'impostare la
SELINUXTYPEchiave su uno dei valori usati per laSELINUXchiave. Vedere lo screenshot seguente come esempio:
Si noti l'ultima riga,
SELINUXTYPE=disabled. LaSELINUXTYPEchiave deve essere impostata sutargeted,minimum, omlsanziché sudisabled. Lo screenshot seguente mostra la configurazione corretta:
Soluzione 2: Ripristinare la configurazione errata di SELinux usando una macchina virtuale di ripristino
Suggerimento
Se si dispone di un backup recente della macchina virtuale, ripristinare la macchina virtuale dal backup per risolvere il problema di configurazione.
Se la console seriale Azure non funziona nella macchina virtuale specifica o non è un'opzione nella sottoscrizione, risolvere questo problema usando una macchina virtuale di ripristino/ripristino. Utilizza i comandi di riparazione vm per creare una VM di riparazione a cui è collegata una copia del disco del sistema operativo della VM interessata. Montare la copia dei file system del sistema operativo nella macchina virtuale di ripristino utilizzando chroot.
Note
In alternativa, è possibile creare manualmente una macchina virtuale di ripristino usando il portale di Azure. Per ulteriori informazioni, consulta Risolvi i problemi di una VM Linux attaccando il disco del sistema operativo a una VM di ripristino usando il portale di Azure.
Convalidare e correggere la configurazione SELinux in
/etc/selinux/config. A tale scopo, seguire il passaggio 5 della soluzione 1: Avviare la macchina virtuale con SELinux disattivata dalla console seriale.Dopo la correzione della configurazione SELinux, eseguire le azioni seguenti:
- Uscire da chroot.
- Smontare la copia dei file system dalla macchina virtuale di salvataggio/ripristino.
- Eseguire il comando
az vm repair restoreper scambiare il disco del sistema operativo ripristinato con il disco del sistema operativo originale della macchina virtuale. Per altre informazioni, vedere il passaggio 5 in Riparare una VM Linux utilizzando i comandi di riparazione della macchina virtuale Azure. - Verificare se la macchina virtuale è in grado di eseguire l'avvio esaminando la console seriale Azure o provando a connettersi alla macchina virtuale.
Passaggi successivi
Nel caso in cui il problema non sia dovuto alla configurazione errata di SELinux, vedere la sezione Troubleshoot Azure Linux Macchine virtuali Boot Errors per altre opzioni di risoluzione dei problemi.