SSH-anslutning till Azure virtuella Linux-datorer misslyckas på grund av felkonfiguration av SELinux

Gäller för: ✔️ Virtuella Linux-datorer

Anteckning

CentOS som refereras i den här artikeln är en Linux-distribution och kommer att nå End Of Life (EOL). Överväg hur du använder och planera därefter. Mer information finns i CentOS End Of Life-vägledning.

Sammanfattning

Den här artikeln innehåller en lösning på ett problem där SSH-anslutningen (Secure Shell) till en Azure virtuell dator (VM) misslyckas på grund av felkonfiguration av SELinux.

Bakgrund

Unix-säkerhetsmodellen baseras på diskretionär Access Control (DAC). Security-Enhanced Linux (SELinux) implementerar obligatorisk åtkomstkontroll (MAC) för Linux med hjälp av kärnmoduler och verktyg för användarutrymme. MAC ger en mer kontrollerad miljö för resursåtkomst och tar bort rotanvändarens möjlighet att komma åt alla resurser i operativsystemet (OS) utan begränsningar. Det minskar också flera typer av säkerhetsrisker genom att använda den traditionella Unix-säkerhetsmodellen.

Olika distributioner inkluderar SELinux direkt eller ger ett enkelt sätt att aktivera kernelstöd och installera verktyg för användarutrymme. Mer information finns i följande SELinux-artiklar från några av de större Linux-leverantörerna:

Red Hat-baserade avbildningar på Azure och Azure Linux-avbildningar (tidigare Mariner) har SELinux aktiverat. Andra distributioner gör det inte. När du använder SELinux i Ubuntu finns det en varning om dess icke-underhållet tillstånd i den här distributionen. Ubuntu implementerar en annan lösning för MAC, kallad AppArmor.

Förutsättningar

Kontrollera att seriekonsolen är aktiverad och funktionell på den virtuella Linux-datorn.

Symptom

En SELinux-felkonfiguration kan leda till att operativsystemet inte kan läsa in SELinux-principen, vilket hindrar operativsystemet från att slutföra starten.

Kontrollera seriekonsolen från Azure-portalen eller via Azure CLI. Följande meddelande visas nära slutet av utdata:

Skärmbild som visar felet

SELinux-konfigurationen hanteras av systemadministratören. Systemadministratören kan lösa problemet med någon av följande metoder.

Lösning 1: Starta en virtuell dator med SELinux inaktiverat med seriekonsolen

  1. Utlösa Starta om VM (hårt) från Azure-seriekonsolen.

  2. Avbryt den virtuella datorn på GRUB-menyn med ESC-nyckeln .

  3. Välj E för att ändra den första kernelposten i GRUB-menyn.

  4. Gå till raden linux16 och lägg till selinux=0 för att inaktivera SELinux tillfälligt.

    Skärmbild av grub-menyredigeringssteget som används för att lägga till selinux=0 och tillfälligt inaktivera SELinux under start.

  5. Verifiera och korrigera SELinux-konfigurationen i /etc/selinux/config.

    Ett vanligt misstag är till exempel att ange SELINUXTYPE nyckeln till ett av de värden som används för SELINUX nyckeln. Se följande skärmbild som ett exempel:

    Skärmbild av /etc/selinux/config med SELINUXTYPE felaktigt inställd på inaktiverad.

    Lägg märke till den sista raden, SELINUXTYPE=disabled. Nyckeln SELINUXTYPE ska vara inställd på targeted, minimum, eller mls i stället för disabled. Följande skärmbild visar rätt konfiguration:

    Skärmbild av rätt /etc/selinux/config-värden för SELINUX och SELINUXTYPE.

Lösning 2: Reparera SELinux-felkonfiguration med hjälp av en virtuell räddningsdator

Tips

Om du har en säkerhetskopia av den virtuella datorn nyligen återställer du den virtuella datorn från säkerhetskopian för att åtgärda konfigurationsproblemet.

  1. Om Azure seriekonsol inte fungerar på den specifika virtuella datorn eller inte är ett alternativ i din prenumeration, kan du felsöka problemet med hjälp av en virtuell dator för återställning/reparation. Använd vm-reparationskommandon för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten. Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.

    Anteckning

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure portalen. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure-portalen.

  2. Verifiera och korrigera SELinux-konfigurationen i /etc/selinux/config. Det gör du genom att följa steg 5 i Lösning 1: Starta en virtuell dator med SELinux inaktiverat från seriekonsolen.

  3. När SELinux-konfigurationen har korrigerats utför du följande åtgärder:

    1. Avsluta chroot.
    2. Demontera kopian av filsystemen från den virtuella datorn för räddning/reparation.
    3. az vm repair restore Kör kommandot för att växla den reparerade OS-disken med den virtuella datorns ursprungliga OS-disk. Mer information finns i steg 5 i Repair a Linux VM by using the Azure Virtual Machine repair commands.
    4. Kontrollera om den virtuella datorn kan startas genom att titta på den Azure seriekonsolen eller genom att försöka ansluta till den virtuella datorn.

Nästa steg

Om problemet inte beror på felkonfigurationen av SELinux kan du läsa Felsöka Azure Linux Virtual Machines startfel för ytterligare felsökningsalternativ.