Dela via


SSH-anslutningen till virtuella Azure Linux-datorer misslyckas på grund av en felaktig SELinux-konfiguration

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

Kommentar

CentOS som refereras i den här artikeln är en Linux-distribution och kommer att nå End Of Life (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledning.

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

Bakgrund

Unix-säkerhetsmodellen baseras på diskretionär åtkomstkontroll (DAC). Security-Enhanced Linux (SELinux) implementerar obligatorisk åtkomstkontroll (MAC) för Linux med hjälp av kernelmoduler 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 i Azure levereras med SELinux aktiverat. andra distributioner gör det inte. När du använder SELinux i Ubuntu finns det en varning om dess oönskade tillstånd för den här fördelningen. 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 Portal 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. Starta om virtuell dator (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.

    Animerad GIF som visar processen att avbryta starten på GRUB-menynivån för att tillfälligt inaktivera SELinux.

  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 som visar att SELINUXTYPE-nyckeln är felaktigt inställd på inaktiverad.

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

    Skärmbild som visar rätt konfiguration av /etc/selinux/config.

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

Dricks

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-seriekonsolen inte fungerar på den specifika virtuella datorn eller inte är ett alternativ i din prenumeration kan du felsöka det här 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.

    Kommentar

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal. 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 Portal.

  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 Reparera en virtuell Linux-dator med hjälp av reparationskommandona för Azure Virtual Machine.
    4. Kontrollera om den virtuella datorn kan startas genom att titta på Azure-seriekonsolen eller genom att försöka ansluta till den virtuella datorn.

Nästa steg

Om problemet inte beror på SELinux-felkonfiguration kan du läsa Felsöka startfel för virtuella Azure Linux-datorer för ytterligare felsökningsalternativ.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.