Delen via


SSH-verbinding met virtuele Azure Linux-machines mislukt vanwege onjuiste SELinux-configuratie

Van toepassing op: ✔️ Virtuele Linux-machines

Notitie

CentOS waarnaar in dit artikel wordt verwezen, is een Linux-distributie en bereikt het einde van de levensduur (EOL). Houd rekening met uw gebruik en plan dienovereenkomstig. Zie De richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Dit artikel bevat een oplossing voor een probleem waarbij de SSH-verbinding (Secure Shell) met een virtuele Azure-machine (VM) mislukt vanwege onjuiste configuratie van SELinux.

Achtergrond

Het Unix-beveiligingsmodel is gebaseerd op Discretionary Access Control (DAC). Security-Enhanced Linux (SELinux) implementeert Mandatory Access Control (MAC) voor Linux met behulp van kernelmodules en hulpprogramma's voor gebruikersruimte. MAC biedt een meer gecontroleerde omgeving voor toegang tot resources en verwijdert de mogelijkheid van de hoofdgebruiker om toegang te krijgen tot alle resources op het besturingssysteem (OS) zonder beperkingen. Het beperkt ook meerdere soorten beveiligingsrisico's door gebruik te maken van het traditionele Unix-beveiligingsmodel.

Verschillende distributies zijn SELinux kant-en-klare of bieden een eenvoudige manier om kernelondersteuning te activeren en hulpprogramma's voor gebruikersruimte te installeren. Zie de volgende SELinux-artikelen van enkele van de belangrijkste Linux-providers voor meer informatie:

Op Red Hat gebaseerde installatiekopieën in Azure worden geleverd met SELinux ingeschakeld; andere distributies niet. Wanneer u SELinux in Ubuntu gebruikt, wordt er een waarschuwing weergegeven over de niet-beheerde status van deze distributie. Ubuntu implementeert een andere oplossing voor MAC, genaamd AppArmor.

Vereisten

Zorg ervoor dat de seriële console is ingeschakeld en functioneel is in de Virtuele Linux-machine.

Symptomen

Een onjuiste configuratie van SELinux kan ertoe leiden dat het besturingssysteem het SELinux-beleid niet kan laden, waardoor het besturingssysteem de opstartbewerking niet kan voltooien.

Controleer de seriële console vanuit Azure Portal of via de Azure CLI. Het volgende bericht wordt weergegeven aan het einde van de uitvoer:

Schermopname van de fout 'Kan SELinux-beleid niet laden' in het seriële consolelogboek.

De SELinux-configuratie wordt beheerd door de systeembeheerder. De systeembeheerder kan dit probleem oplossen met behulp van een van de volgende methoden.

Oplossing 1: VM starten met SELinux uitgeschakeld met behulp van seriële console

  1. Start vm opnieuw opstarten (hard) vanuit de seriële Azure-console.

  2. Onderbreek uw VIRTUELE machine in het GRUB-menu met de ESC-toets .

  3. Selecteer E om de eerste kernelvermelding in het GRUB-menu te wijzigen.

  4. Ga naar de linux16 regel en voeg toe selinux=0 om SELinux tijdelijk uit te schakelen.

    GIF-animatie die het proces van het onderbreken van opstarten op het GRUB-menuniveau laat zien om SELinux tijdelijk uit te schakelen.

  5. Valideer en corrigeer de SELinux-configuratie in /etc/selinux/config.

    Een veelvoorkomende fout is bijvoorbeeld het instellen van de SELINUXTYPE sleutel op een van de waarden die voor de SELINUX sleutel worden gebruikt. Zie de volgende schermopname als voorbeeld:

    Schermopname van de SELINUXTYPE-sleutel is onjuist ingesteld op uitgeschakeld.

    Let op de laatste regel, SELINUXTYPE=disabled. De SELINUXTYPE sleutel moet worden ingesteld op targeted, minimumof mls in plaats disabledvan . In de volgende schermopname ziet u de juiste configuratie:

    Schermopname van de juiste configuratie van /etc/selinux/config.

Oplossing 2: SELinux-onjuiste configuratie herstellen met behulp van een herstel-VM

Tip

Als u een recente back-up van de virtuele machine hebt, herstelt u de VM vanuit de back-up om het configuratieprobleem op te lossen.

  1. Als de seriële Azure-console niet werkt in de specifieke VM of geen optie in uw abonnement is, kunt u dit probleem oplossen met behulp van een herstel-/herstel-VM. Gebruik vm-herstelopdrachten om een herstel-VM te maken waarop een kopie van de besturingssysteemschijf van de betreffende VM is gekoppeld. Koppel de kopie van de besturingssysteembestandssystemen in de herstel-VM met behulp van chroot.

  2. Valideer en corrigeer de SELinux-configuratie in /etc/selinux/config. Volg hiervoor stap 5 in Oplossing 1: VM starten met SELinux uitgeschakeld vanuit seriële console.

  3. Nadat de SELinux-configuratie is gecorrigeerd, voert u de volgende acties uit:

    1. Sluit chroot.
    2. Ontkoppel de kopie van de bestandssystemen van de herstel-/herstel-VM.
    3. Voer de az vm repair restore opdracht uit om de herstelde besturingssysteemschijf te wisselen met de oorspronkelijke besturingssysteemschijf van de virtuele machine. Zie stap 5 in Een virtuele Linux-machine herstellen met behulp van de herstelopdrachten voor virtuele Azure-machines voor meer informatie.
    4. Controleer of de VIRTUELE machine kan worden opgestart door de seriële Azure-console te bekijken of door verbinding te maken met de virtuele machine.

Volgende stappen

Als het probleem niet wordt veroorzaakt door een onjuiste configuratie van SELinux, raadpleegt u Opstartfouten in virtuele Azure Linux-machines oplossen voor verdere probleemoplossingsopties.

Contact met ons opnemen voor ondersteuning

Als u vragen hebt of hulp nodig hebt, maakt u een ondersteuningsaanvraag of stelt u ondersteuning voor de Azure-community. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.