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.
Voorwaarden
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:
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
Start vm opnieuw opstarten (hard) vanuit de seriële Azure-console.
Onderbreek uw VIRTUELE machine in het GRUB-menu met de ESC-toets .
Selecteer E om de eerste kernelvermelding in het GRUB-menu te wijzigen.
Ga naar de
linux16
regel en voeg toeselinux=0
om SELinux tijdelijk uit te schakelen.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 deSELINUX
sleutel worden gebruikt. Zie de volgende schermopname als voorbeeld:Let op de laatste regel,
SELINUXTYPE=disabled
. DeSELINUXTYPE
sleutel moet worden ingesteld optargeted
,minimum
ofmls
in plaatsdisabled
van . In de volgende schermopname ziet u de juiste configuratie:
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.
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.
Notitie
U kunt ook handmatig een reddings-VM maken met behulp van Azure Portal. Zie Problemen met een Virtuele Linux-machine oplossen door de besturingssysteemschijf te koppelen aan een herstel-VM met behulp van Azure Portal.
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.Nadat de SELinux-configuratie is gecorrigeerd, voert u de volgende acties uit:
- Sluit chroot.
- Ontkoppel de kopie van de bestandssystemen van de herstel-/herstel-VM.
- 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. - 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.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.