Bei SSH-Verbindung mit virtuellen Azure-Computern unter Linux tritt aufgrund einer SELinux-Fehlkonfiguration ein Fehler auf
Gilt für: ✔️ Linux-VMs
Notiz
CentOS, auf das in diesem Artikel verwiesen wird, ist eine Linux-Verteilung und wird End Of Life (EOL) erreichen. Sie sollten sich Ihre Nutzung dieser Distribution ansehen und entsprechend planen. Weitere Informationen finden Sie unter CentOS End Of Life Guidance.
Dieser Artikel enthält eine Lösung für ein Problem, bei dem die Secure Shell (SSH)-Verbindung mit einem virtuellen Azure-Computer (VM) aufgrund von SELinux-Fehlkonfiguration fehlschlägt.
Hintergrund
Das Unix-Sicherheitsmodell basiert auf der diskretionären Zugriffssteuerung (DAC). Mit Security-Enhanced Linux (SELinux) wird die obligatorische Zugriffssteuerung (MANDATORY Access Control, MAC) für Linux mithilfe von Kernelmodulen und Benutzerraumtools implementiert. MAC bietet eine kontrolliertere Umgebung für den Ressourcenzugriff und entfernt die Möglichkeit des Stammbenutzers, ohne Einschränkungen auf alle Ressourcen auf dem Betriebssystem (Betriebssystem) zuzugreifen. Es mindert auch mehrere Arten von Sicherheitsrisiken, indem das herkömmliche Unix-Sicherheitsmodell verwendet wird.
Verschiedene Verteilungen umfassen SELinux out of the box, or provide a simple way to activate kernel support and install user space tools. Weitere Informationen finden Sie in den folgenden SELinux-Artikeln von einigen der wichtigsten Linux-Anbieter:
Red Hat-basierte Bilder auf Azure sind mit SELinux aktiviert; andere Verteilungen sind nicht vorhanden. Wenn Sie SELinux in Ubuntu verwenden, gibt es eine Warnung über seinen nicht verwalteten Zustand für diese Verteilung. Ubuntu implementiert eine andere Lösung für MAC, die als AppArmor bezeichnet wird.
Voraussetzungen
Stellen Sie sicher, dass die serielle Konsole in der Linux-VM aktiviert und funktionsfähig ist.
Symptome
Eine SELinux-Fehlkonfiguration kann dazu führen, dass das Betriebssystem die SELinux-Richtlinie nicht laden kann, wodurch das Betriebssystem den Start beendet.
Überprüfen Sie die serielle Konsole über die Azure-Portal oder über die Azure CLI. Die folgende Meldung wird am Ende der Ausgabe angezeigt:
Die SELinux-Konfiguration wird vom Systemadministrator verwaltet. Der Systemadministrator kann dieses Problem mithilfe einer der folgenden Methoden beheben.
Lösung 1: Starten des virtuellen Computers mit deaktivierter SELinux mithilfe der seriellen Konsole
Trigger Restart VM (Hard) from the Azure serial console.
Unterbrechen Sie Ihren virtuellen Computer im GRUB-Menü mit der ESC-Taste .
Wählen Sie "E " aus, um den ersten Kerneleintrag im GRUB-Menü zu ändern.
Wechseln Sie zur
linux16
Zeile, und fügen Sie sie hinzuselinux=0
, um SELinux vorübergehend zu deaktivieren.Überprüfen und korrigieren Sie die SELinux-Konfiguration in
/etc/selinux/config
.Ein häufiger Fehler ist beispielsweise das Festlegen des
SELINUXTYPE
Schlüssels auf einen der für denSELINUX
Schlüssel verwendeten Werte. Der folgende Screenshot dient als Beispiel:Beachten Sie die letzte Zeile,
SELINUXTYPE=disabled
. DerSELINUXTYPE
Schlüssel sollte auf ,minimum
odermls
nicht auftargeted
disabled
. Der folgende Screenshot zeigt die richtige Konfiguration:
Lösung 2: Reparieren einer fehlkonfigurierten SELinux-Konfiguration mithilfe eines virtuellen Rettungscomputers
Tipp
Wenn Sie über eine kürzliche Sicherung der VM verfügen, stellen Sie den virtuellen Computer aus der Sicherung wieder her, um das Konfigurationsproblem zu beheben.
Falls die serielle Azure-Konsole nicht in der jeweiligen VM funktioniert oder keine Option in Ihrem Abonnement ist, beheben Sie dieses Problem mithilfe einer Rettungs-/Reparatur-VM. Verwenden Sie VM-Reparaturbefehle, um eine Reparatur-VM zu erstellen, an die eine Kopie des Betriebssystemdatenträgers der betroffenen VM angehängt ist. Mounten Sie die Kopie der OS-Dateisysteme in der Reparatur-VM mithilfe von chroot.
Notiz
Alternativ können Sie mithilfe des Azure-Portals manuell eine Rettungs-VM erstellen. Weitere Informationen finden Sie unter Beheben von Problemen mit einer Linux-VM durch Hinzufügen des Betriebssystemdatenträgers zu einer Wiederherstellungs-VM im Azure-Portal.
Überprüfen und korrigieren Sie die SELinux-Konfiguration in
/etc/selinux/config
. Führen Sie dazu Schritt 5 in Lösung 1 aus: Starten Sie vm mit SELinux, die von der seriellen Konsole deaktiviert ist.Führen Sie nach der Korrektur der SELinux-Konfiguration die folgenden Aktionen aus:
- Beenden Sie chroot.
- Entfernen Sie die Kopie der Dateisysteme von der Rettungs-/Reparatur-VM.
- Führen Sie den Befehl
az vm repair restore
aus, um den reparierten Betriebssystemdatenträger durch den ursprünglichen Betriebssystemdatenträger der VM auszutauschen. Weitere Informationen finden Sie in Schritt 5 unter Reparieren einer Linux-VM mithilfe der Reparaturbefehle des virtuellen Azure-Computers. - Überprüfen Sie, ob die VM gestartet werden kann, indem Sie einen Blick auf die serielle Azure-Konsole werfen oder versuchen, eine Verbindung zur VM herzustellen.
Nächste Schritte
Falls das Problem nicht aufgrund von SELinux fehlkonfiguriert ist, lesen Sie die Problembehandlung bei Startfehlern bei virtuellen Azure Linux-Computern für weitere Problembehandlungsoptionen.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.