Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Sammanfattning

Förutom att låta användarna ange sina egna SSH-keypairs för autentisering använder Microsoft Azure-plattformen SSH-keypairs för att aktivera vissa funktioner som läggs till den virtuella datorn (VM) vid distributionen. Nyligen upptäckt att i vissa begränsade fall offentliga nycklar från dessa certifikat i Azure-plattformen kan oväntat läggas till .ssh/authorized_keys-fil. Dessa scenarier är begränsad endast till en situation där VM har etablerats genom att använda cloud-init och användaren väljer ytterligare Azure-funktioner som är beroende av certifikat, till exempel en tjänstidentitet som hanteras av datorn.

Problemet beror på en förändring i etablering logiken för specifika operativsystem. Det här är ett system som använder cloud-init och som råkar installera den offentliga nyckeln från alla certifikat som är tillgängliga för VM i ssh-auktoriserad nycklar fil under VM skapande. 

Om du vill veta mer kan du gå till CVE-2019-0816.

Mer information

Scenario-information

Cloud-init logiken som nämns i avsnittet ”Sammanfattning” är för närvarande kända i Azure bilder för Ubuntu 18.04 förutom Public Preview RHEL 7.4/7.5/7.6 och CentOS 7.4 cloud-init bilder. Det kan också finnas i egna bilder med hjälp av dessa operativsystem.    Om du aktiverar någon av följande funktioner när du konfigurerar en Linux-bilder visas ytterligare, oväntade nycklar i en .ssh/authorized_keys-filen, till exempel något av följande:

  • Hanterade identitet

  • Tillägg med skyddade inställningar

  • Distribuera en VM med Key Vault nycklar i en VM

Identifiera och åtgärda befintliga VMs

Identifiera

Om du vill kontrollera om det finns fler nycklar, granska de auktoriserade nycklar (fil vi .ssh/authorized_keys) om du vill ta reda på om några ytterligare nycklar som du inte vill inkludera har lagts.

Det är säkert att manuellt kan ta bort ytterligare ssh offentliga nycklar som har lagts till. Detta kommer inte påverka funktioner som distribueras tillsammans med VM. Dessutom påverkas inte den angivna SSH-nyckel för autentisering.

Om du inte känner till eller inte kan skilja på vilka offentliga nycklar i filen .ssh/authorized_keys du angett för autentisering, så här:

  1. Granska dina mallar för distribution:

    1. SSH offentliga nycklar

    2. SSH nycklar i molnet init-konfiguration

  2. Hämta den distribuerade nycklar ssh vid Skapandetid i VM, om du har tillgång till sudo/rot. Gör så här:

    1. Kontrollera konfigurationen för cloud-init som skickades CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Använd värdet CustomData och sedan använda base64 avkoda för att få de offentliga nycklarna som du har distribuerat: echo "<customData value>" | base64 -D

    2. Du kan också kontrollera förekomst Meta Data Service (IMDS) att se den ssh offentliga nyckel som skickades den ssh offentlig nyckel egenskap av VM skapar: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Efterbehandla

Om du har identifierat ytterligare certifikat som du inte tänker distribuera för VM kan du ta bort dessa genom att ta bort motsvarande rad från filen authorized_keys.

Kör justering genom att ansluta till VM interaktivt eller använda tillägget anpassade skript eller KörKommando över flera virtuella maskiner.

VMs som distribueras med hjälp av tillägg som har skyddat inställningar eller en hanterad identitet

Använda följande skript för att ta bort offentliga nycklar från certifikat där VM har distribuerats med tillägg eller hanteras identitet. Detta kommer inte ta bort nycklar som angavs när du har distribuerat en VM eller VM distribuerades med Key Vault nycklar.

Viktigt!

Vi rekommenderar att du säkerhetskopierar filen authorized_keys innan du kör det här skriptet.

 

#!/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 

När skriptet har körts kan du kontrollera ssh/authorized_keys-filen för att säkerställa att endast kända offentliga nycklar finns.

VMs distribueras med Key Vault hemligheter

Gör följande om du vill identifiera om nyckeln lades till när distribueras med valv nycklar:

  1. Hämta namnet på nyckeln valv certifikatet som du har distribuerat med VM, granska distribution kod Az CLI eller ARM-mallar eller köra den här Az-CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlSvaret visas namnet på: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Hämta certifikatet: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Extrahera den offentliga nyckeln: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Jämför utdata från föregående steg till återstående certifikat i ssh/authorized_keys-fil. vi .ssh/authorized_keys file

Lösning

Azure MarketPlace-bilder

Korrigeringar har tillämpats på cloud-init i Azure identifierade bilderna:

  • Canonical:UbuntuServer:18.04-LTS:18.04.201902190

  • Canonical:UbuntuServer:18.10-DAILY:18.10.201903200

  • RedHat:RHEL:7-RAW-CI:7.6.2019030421

  • OpenLogic:CentOS-CI:7-CI:7.6.20190306

Egna bilder

Om du använder anpassade images som etablerats genom cloud-init för kända operativsystem behöver du uppdatera din anpassade källbilden.

Ubuntu 18.04 bilder

Om du vill uppdatera en anpassad källbilden, måste du göra följande ändringar:

  • Redigera följande fil: /etc/cloud/cloud.cfg.d/90-Azure.cfg

  • Lägg till följande kod i slutet av filen.

Viktigt!

Koden måste läggas exakt som de visas, inklusive blanksteg.

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

RHEL 7.4/7.5/7.6 och CentOS 7.6 bilder

Om du redan har skapat RHEL/CentOS-bilder med hjälp av dessa steg (eller en liknande metod), måste du uppdatera källbilden som du har skapat de virtuella maskiner. Ytterligare åtgärder som krävs för att lägga till i den befintliga källa VM image-konfigurationen är följande:

Steg 1

Redigera följande fil:

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

Viktigt!

Koden måste läggas exakt som de visas, inklusive blanksteg.

Lägg till följande rader i slutet av filen:

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

Steg 2

Uppdatera konfigurationen för Agent enligt följande:

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

cloud-init-paket

Alla moln init-paket som innehåller en korrigeringsfil håller på att uppdateras. Microsoft undersöker problemet och kommer att publicera mer information i den här artikeln när informationen blir tillgänglig.

Vanliga frågor och svar

Q1: Har Microsoft fick tillgång till min VM?

A1: Krypteringsnycklar som används för att hantera identiteter och tillägg har inte utformats för åtkomst av Microsofts anställda. Vi har processer för att övervaka, logga och förhindra att den här typen av åtkomst. Som en säkerhetsåtgärd kan granskar vi alla loggar Kontrollera användes att inga Kundnycklar. Microsoft-anställda har inte åtkomst till hemligheterna för certifikat som lagras i Key Vault som refereras i en VM eller VMSS distribution.

Q2: Är alla cloud-init distribueras OSs och versioner berörs?

A2: Nej. Vi har sett främmande nyckel problemet inträffar endast i de identifiera operativsystem. Vi har inte sett det förekommer i äldre versioner av Ubuntu. Detta beror på att dessa system använda en annan mekanism för att ange offentliga nycklar.

Q3: Ta påverkas cloud-init-paket för Linux-distributioner med fix?

A3: Vi arbetar med att lägga till korrigeringar till paketen för de berörda versionerna och vi kommer att uppdatera artikeln när arbetet är slutfört.

Q4: Microsoft uppdateras automatiskt alla påverkade VMs?

A4: Nej. Microsoft kommer inte att ändra innehållet i VMs som du redan har tillhandahållit.

F5: Våra säkerhetsprinciper hindra mig från att bedriva en Linux VM med extra innehåll i authorized_keys. Vad kan jag göra om detta idag?

A5: Du kan på ett säkert sätt ta bort den felaktiga raden från filen authorized_keys. Detta påverkar inte SSH-nyckelpar som du skapade och kontroll eller hanterade identitet. Du kan göra detta manuellt eller genom att köra ett anpassat skript eller anpassade kommando över alla berörda flottan.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×