Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Zusammenfassung

Benutzer können nicht nur ihre eigenen SSH-Schlüsselpaare für die Authentifizierung bereitstellen. Die Microsoft Azure-Plattform benötigt auch SSH-Schlüsselpaare, um einige Funktionen zu aktivieren, die bei der Bereitstellung zum virtuellen Computer (Virtual Machine, VM) hinzugefügt werden. Wir haben kürzlich festgestellt, dass in ganz bestimmten Fällen die öffentlichen Schlüssel aus diesen Azure-Plattformzertifikaten unerwartet zur Datei „.ssh/authorized_keys“ hinzugefügt werden. Dies betrifft nur Situationen, in denen die VM mithilfe der Cloudinitialisierung bereitgestellt wird und der Benutzer zusätzliche auf Zertifikaten basierende Azure-Features auswählt, wie beispielsweise ein vom System verwaltete Dienstidentität.

Dieses unerwartete Verhalten ist auf eine Änderung bei der Bereitstellungslogik von bestimmten Betriebssystemen zurückzuführen. Hierbei handelt es sich um Systeme, die die Cloudinitialisierung (cloud-init) verwenden und die beim Erstellen der VM versehentlich den öffentlichen Schlüssel unter allen Zertifikaten, die für die VM verfügbar sind, in der Datei „.ssh/authorized_keys“ installieren.  

Weitere Informationen finden Sie unter CVE-2019-0816.

Weitere Informationen

Szenariodetails

Die im Abschnitt „Zusammenfassung“ erwähnte Logik für die Cloudinitialisierung (cloud-init) ist aktuell bekanntermaßen in Azure-Images für Ubuntu 18.04 sowie in den Public Preview RHEL 7.4/7.5/7.6- und CentOS 7.4-Cloudinitialisierungsimages vorhanden. In benutzerdefinierten Images, die diese Betriebssysteme verwenden, ist diese Logik möglicherweise ebenfalls vorhanden. 
 
Wenn Sie beim Bereitstellen der Linux-Images eines der folgenden Features aktivieren, sind möglicherweise zusätzliche, unerwartete Schlüssel in der Datei „.ssh/authorized_keys“ vorhanden, wie beispielsweise: 

  • Verwaltete Identität

  • Erweiterungen mit geschützten Einstellungen

  • Bereitstellung einer VM mit Key Vault-Schlüsseln in einer VM

Vorhandene VMs identifizieren und korrigieren

Identifizieren

Um festzustellen, ob zusätzliche Schlüssel vorhanden sind, überprüfen Sie die Datei mit den autorisierten Schlüsseln (vi .ssh/authorized_keys) auf zusätzliche Schlüssel, die unerwartet hinzugefügt wurden.

Zusätzliche öffentliche SSH-Schlüssel, die hinzugefügt wurden, können problemlos manuell entfernt werden. Features, die zusammen mit der VM bereitgestellt werden, sind hiervon nicht betroffen. Ihr für die Authentifizierung angegebenes SSH-Schlüsselpaar ist ebenfalls nicht davon betroffen.

Wenn Sie nicht wissen oder nicht feststellen können, welche öffentlichen Schlüssel Sie in der Datei „.ssh/authorized_keys“ für die Authentifizierung angegeben haben, gehen Sie folgendermaßen vor: 

  1. Prüfen Sie Ihre Bereitstellungsvorlagen:

    1. Öffentliche SSH-Schlüssel

    2. SSH-Schlüssel in der Cloudinitialisierungskonfiguration

  2. Rufen Sie die bei der Erstellung bereitgestellten SSH-Schlüssel in der VM ab, falls Sie Sudo/Root-Zugriff haben. Gehen Sie dazu wie folgt vor:

    1. Prüfen Sie die Cloudinitialisierungskonfiguration, die in „CustomData“ übergeben wurde: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"
      Verwenden Sie den „CustomData value“, und rufen Sie anschließend mithilfe der Base64-Decodierung die von Ihnen bereitgestellten öffentlichen Schlüssel ab: echo "<customData value>" | base64 -D

    2. Überprüfen Sie alternativ den Instance Meta Data Service (IMDS), um den öffentlichen SSH-Schlüssel anzuzeigen, der in der Eigenschaft für den öffentlichen SSH-Schlüssel der VM-Erstellung übergeben wurde: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Korrigieren

Wenn Sie zusätzliche Zertifikate festgestellt haben, die Sie nicht für die VM bereitstellen möchten, können Sie diese entfernen, indem Sie in der Datei „authorized_keys“ die entsprechende Zeile löschen.

Führen Sie die Korrektur aus, indem Sie eine interaktive Verbindung mit der VM herstellen, oder verwenden Sie die benutzerdefinierte Skripterweiterung oder „AusführenBefehl“ für mehrere VMs.

Mithilfe von Erweiterungen bereitgestellte VMs, die geschützte Einstellungen oder eine verwaltete Identität aufweisen

Entfernen Sie mithilfe des folgenden Skripts öffentliche Schlüssel in Zertifikaten, in denen die VM mit Erweiterungen oder einer verwalteten Identität bereitgestellt wurde. Schlüssel, die beim Bereitstellen einer VM angegeben wurden, oder eine mit Key Vault-Schlüsseln bereitgestellte VM werden hiermit nicht entfernt.

Wichtig

Sie sollten die Datei „authorized_keys“ sichern, bevor Sie dieses Skript ausführen.

 

#!/bin/bash
set -e

# /var/lib/waagent has *.crt files that include the crt files corresponding to 
# the user provided public keys and one additional .crt file from MSI.
# This script converts the content of the .crt file into the ssh public key and
# remove it from the authorized_keys file
readarray -t CRT_FILES < <(grep -l -E "(Microsoft.ManagedIdentity|Windows Azure)" /var/lib/waagent/*.crt)
for ((i=0; i < ${#CRT_FILES[@]}; i++))
do
    PUBKEY=$(openssl x509 -in "${CRT_FILES[$i]}" -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8)
    sed -i -e "\@$PUBKEY@d" $HOME/.ssh/authorized_keys
Done 

Vergewissern Sie sich nach dem Ausführen des Skripts, dass in der Datei „ssh/authorized_keys“ nur die bekannten öffentlichen Schlüssel vorhanden sind.

Mit Key Vault-Schlüsseln bereitgestellte VMs

Um festzustellen, ob der Schlüssel bei der Bereitstellung mit Key Vault-Schlüsseln hinzugefügt wurde, gehen Sie folgendermaßen vor:

  1. Rufen Sie den Namen des Key Vault-Zertifikats ab, das Sie mithilfe der VM bereitgestellt haben, überprüfen Sie den Bereitstellungscode der az-CLI oder die ARM-Vorlagen, oder führen Sie diese az-CLI aus:
      az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrl

    Die Antwort enthält den Zertifikatnamen:
      "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Laden Sie das Zertifikat herunter:
      az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Extrahieren Sie den öffentlichen Schlüssel:
      openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Vergleichen Sie die Ausgabe aus dem vorherigen Schritt mit den restlichen Zertifikaten in der Datei „ssh/authorized_keys“.
      vi .ssh/authorized_keys file

Lösung

Azure Marketplace-Images

An der Cloudinitialisierung in den angegebenen Azure-Images wurden Korrekturen vorgenommen:

  • Canonical:UbuntuServer:18.04-LTS:18.04.201902190

Hinweis

Ein Update wird den folgenden Images zu einem späteren Zeitpunkt hinzugefügt.

  • Canonical:UbuntuServer:18.10:x

  • RedHat:RHEL:7-RAW-CI (Public Preview Image)

  • OpenLogic:CentOS:7-CI (Public Preview Image)

Dieser Artikel wird aktualisiert, sobald die Images verfügbar sind.

Benutzerdefinierte Images

Wenn Sie benutzerdefinierte Images verwenden, die über die Cloudinitialisierung (cloud-init) für die bekannten Betriebssysteme bereitgestellt werden, müssen Sie Ihr benutzerdefiniertes Quellimage aktualisieren.

Ubuntu 18.04-Images

Sie müssen die folgenden Änderungen vornehmen, um ein benutzerdefiniertes Quellimage zu aktualisieren:

  • Bearbeiten Sie die folgende Datei:

    /etc/cloud/cloud.cfg.d/90-azure.cfg

  • Fügen Sie am Dateiende den folgenden Code hinzu.

Wichtig

Der Code muss genau so wie angezeigt, einschließlich der Leerzeichen, hinzugefügt werden.

datasource:
   Azure:
     agent_command: [service, walinuxagent, start]

RHEL 7.4/7.5/7.6- und CentOS 7.6-Images

Wenn Sie zuvor die RHEL/CentOS-Images mithilfe dieser Schritte (oder einer ähnlichen Methode) hinzugefügt haben, müssen Sie das Quellimage aktualisieren, von dem Sie die VMs erstellt haben. Die folgenden zusätzlichen Schritte sind zum Hinzufügen zu Ihrer vorhandenen VM-Quellimagekonfiguration erforderlich:

Schritt 1 

Bearbeiten Sie die folgende Datei:

/etc/cloud/cloud.cfg.d/91-azure_datasource.cfg 

Wichtig

Der Code muss genau so wie angezeigt, einschließlich der Leerzeichen, hinzugefügt werden.

Fügen Sie am Dateiende die folgenden Zeilen hinzu: 

datasource:
   Azure:
     agent_command: [systemctl, start, waagent, --no-block]

Schritt 2

Aktualisieren Sie die Agent-Konfiguration wie folgt:

cp /lib/systemd/system/waagent.service /etc/systemd/system/waagent.service
sed -i 's/After=network-online.target/WantedBy=cloud-init.service\\nAfter=network.service systemd-networkd-wait-online.service/g' /etc/systemd/system/waagent.service
systemctl daemon-reload

Cloudinitialisierungspakete

Alle Cloudinitialisierungspakete (cloud-init), die einen Fix enthalten, werden aktualisiert. Dieses Problem wird derzeit von Microsoft untersucht. Entsprechende Informationen werden in der Microsoft Knowledge Base veröffentlicht, sobald sie verfügbar sind. 

Häufig gestellte Fragen

F1: Hat sich Microsoft Zugriff auf meine VM verschafft?

A1: Verschlüsselungsschlüssel werden zum Verwalten von Identitäten verwendet, und für Erweiterungen ist der Zugriff durch Microsoft-Mitarbeiter nicht vorgesehen. Wir verwenden entsprechende Prozesse, um diese Art des Zugriffs zu überwachen, protokollieren und verhindern. Als Sicherheitsmaßnahme überprüfen wir alle Protokolle, um sicherzustellen, dass kein unsachgemäßer Zugriff auf Kundenschlüssel erfolgte. Für im Key Vault gespeicherte Zertifikate, auf die in einer VM- oder VMSS-Bereitstellung verwiesen wird, haben Microsoft-Mitarbeiter keinen Zugriff auf die Schlüssel.

F2: Sind alle per Cloudinitialisierung bereitgestellten Betriebssysteme und Versionen betroffen?

A2: Nein. Dieses Problem mit zusätzlichen Schlüsseln ist nur bei den angegebenen Betriebssystemen aufgetreten. In älteren Versionen von Ubuntu war dies nicht der Fall. Dies liegt daran, dass diese Systeme einen anderen Mechanismus zum Festlegen von öffentlichen Schlüsseln verwenden.

F3: Enthalten die betroffenen Cloudinitialisierungspakete (cloud-init) für die Linux-Distributionen den Fix?

A3: Wir arbeiten daran, die Fixes zu den Paketen für die betroffenen Versionen hinzuzufügen und werden diesen Artikel aktualisieren, sobald dies abgeschlossen ist.

F4: Wird Microsoft betroffene VMs automatisch aktualisieren? 

A4: Nein. Microsoft wird den Inhalt von VMs, die Sie bereits bereitgestellt haben, nicht ändern.

F5: Unsere Sicherheitsrichtlinien hindern mich daran, eine Linux-VM mit zusätzlichen Inhalten in „authorized_keys“ zu verwenden. Was kann ich aktuell tun?

A5: Sie können die den Konflikt verursachende Zeile einfach in der Datei „authorized_keys“ entfernen. Das von Ihnen erstellte SSH-Schlüsselpaar oder die verwaltete Identität ist nicht davon betroffen. Dies ist manuell oder durch Ausführen eines benutzerdefinierten Skripts oder eines benutzerdefinierten Befehls für alle betroffenen Komponenten möglich.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×