Freigeben über


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:

Screenshot des Fehlers

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

  1. Trigger Restart VM (Hard) from the Azure serial console.

  2. Unterbrechen Sie Ihren virtuellen Computer im GRUB-Menü mit der ESC-Taste .

  3. Wählen Sie "E " aus, um den ersten Kerneleintrag im GRUB-Menü zu ändern.

  4. Wechseln Sie zur linux16 Zeile, und fügen Sie sie hinzu selinux=0 , um SELinux vorübergehend zu deaktivieren.

    Animiertes GIF, das zeigt, wie der Startvorgang auf GRUB-Menüebene unterbrochen wird, um SELinux vorübergehend zu deaktivieren.

  5. Ü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 den SELINUX Schlüssel verwendeten Werte. Der folgende Screenshot dient als Beispiel:

    Screenshot, der zeigt, dass der SELINUXTYPE-Schlüssel falsch auf

    Beachten Sie die letzte Zeile, SELINUXTYPE=disabled. Der SELINUXTYPE Schlüssel sollte auf , minimumoder mls nicht auf targeteddisabled. Der folgende Screenshot zeigt die richtige Konfiguration:

    Screenshot der richtigen Konfiguration von /etc/selinux/config.

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.

  1. 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.

  2. Ü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.

  3. Führen Sie nach der Korrektur der SELinux-Konfiguration die folgenden Aktionen aus:

    1. Beenden Sie chroot.
    2. Entfernen Sie die Kopie der Dateisysteme von der Rettungs-/Reparatur-VM.
    3. 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.
    4. Ü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.