Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Riepilogo

Oltre a consentire agli utenti di fornire le proprie coppie di chiavi SSH per l'autenticazione, la piattaforma Microsoft Azure si basa su coppie di chiavi SSH per attivare alcune funzioni che vengono aggiunti alla macchina virtuale (VM) in fase di distribuzione. Recentemente, abbiamo scoperto che, in alcuni scenari limitati, le chiavi pubbliche di questi certificati piattaforma Azure potrebbero essere aggiunte in modo imprevisto nel file .ssh/authorized_keys. Questi scenari sono limitati solo a una situazione in cui viene eseguito il provisioning della macchina virtuale tramite cloud-inizializzazione e l'utente seleziona funzionalità aggiuntive di Azure che si basano su certificati, ad esempio un'identità di servizio gestiti dal sistema.

Questo comportamento imprevisto si verifica una modifica nella logica del provisioning dei sistemi operativi specifici. Si tratta di sistemi che utilizzano cloud-init e di installare inavvertitamente la chiave pubblica da tutti i certificati che sono disponibili per la macchina virtuale in file di chiavi ssh autorizzato durante la creazione della macchina virtuale. 

Per ulteriori informazioni, andare al 2019-CVE-0816.

Ulteriori informazioni

Dettagli scenario

La logica di cloud-inizializzazione menzionato nella sezione "Sommario" è attualmente definita nelle immagini Azure per 18.04 Ubuntu oltre RHEL anteprima pubblica 7.4/7.5/7.6 e CentOS 7.4 cloud-inizializzazione immagini. Inoltre esiste in immagini personalizzate utilizzando questi sistemi operativi.    Se si attiva una delle seguenti funzionalità durante il provisioning di una delle immagini di Linux, potrebbe apparire impreviste, ulteriori chiavi in un file di .ssh/authorized_keys, ad esempio le seguenti:

  • Identità gestita

  • Estensioni con impostazioni protette

  • Distribuire una macchina virtuale con chiave Vault chiavi in una macchina virtuale

Identificare e correggere le macchine virtuali esistenti

Identificare

Per verificare se si dispongono di ulteriori chiavi, esaminare il file di chiavi autorizzati (file .ssh/authorized_keys vi) per determinare se sono stati aggiunti i tasti aggiuntivi che non si desidera includere.

È consigliabile manualmente Rimuovi eventuali ulteriori ssh pubblico tasti che potrebbero essere state aggiunte. Ciò non influisce sulla funzionalità che vengono distribuite con la macchina virtuale. Inoltre, non avrà alcun effetto la coppia di chiavi SSH specificata per l'autenticazione.

Se si conosce o non è in grado di differenziare le chiavi pubbliche nel file .ssh/authorized_keys è specificato per l'autenticazione, attenersi alla seguente procedura:

  1. Rivedere i modelli di distribuzione:

    1. SSH chiavi pubbliche

    2. SSH tasti nella configurazione di cloud-init

  2. Recuperare il distribuito ssh tasti in fase di creazione dall'interno della macchina virtuale, se si dispone di accesso sudo/root. A tale scopo, attenersi alla seguente procedura:

    1. Controllare la configurazione di cloud-inizializzazione passato in CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Utilizzare il valore CustomData e quindi di decodifica base64 di utilizzo per ottenere le chiavi pubbliche che è stato distribuito: echo "<customData value>" | base64 -D

    2. In alternativa, selezionare istanza Meta dati del servizio (IMDS) per visualizzare il ssh chiave pubblica che è stata passata il ssh proprietà chiave pubblica di creare macchine Virtuali: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

La risoluzione

Se è stato identificato certificati aggiuntivi che non si desidera distribuire la macchina virtuale, è possibile rimuovere questi cancellando la riga corrispondente dal file authorized_keys.

Eseguire il monitoraggio e aggiornamento connettendosi a macchina virtuale in modo interattivo oppure utilizzare l'estensione di Script personalizzati o di EseguiComando tra più macchine virtuali.

VM distribuite utilizzando le estensioni che dispongono di impostazioni o un'identità gestita protetto

Utilizzare lo script seguente per rimuovere le chiavi pubbliche da certificati in cui la macchina virtuale è stata distribuita con le estensioni o identità gestita. In questo caso non chiavi Rimuovi che sono state specificate per la distribuzione di una macchina virtuale o se la macchina virtuale è stata distribuita con chiavi chiave Vault.

Importante

Si consiglia di eseguire il backup del file authorized_keys prima di eseguire questo script.

 

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

Dopo l'esecuzione dello script, controllare il file ssh/authorized_keys per verificare che siano presenti solo le chiavi pubbliche note.

VM distribuite con chiave Vault segreti

Per identificare se la chiave è stata aggiunta quando distribuito con chiave Vault chiavi, attenersi alla seguente procedura:

  1. Ottenere il nome del certificato chiave Vault distribuito utilizzando la macchina virtuale, esaminare il codice di distribuzione Az CLI o modelli ARM o eseguire Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlLa risposta verrà visualizzato il nome del certificato: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Scaricare il certificato: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Estrarre la chiave pubblica: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Confrontare l'output del passaggio precedente per i rimanenti certificati nel file ssh/authorized_keys. vi .ssh/authorized_keys file

Risoluzione

Immagini di Azure MarketPlace

Le correzioni sono state applicate al cloud-inizializzazione nelle immagini Azure identificate:

  • 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

Immagini personalizzate

Se si utilizzano immagini personalizzate che sono fornite dal cloud-init per i sistemi operativi noti, è necessario aggiornare l'immagine personalizzata di origine.

Immagini Ubuntu 18.04

Per aggiornare un'immagine personalizzata di origine, è necessario apportare le seguenti modifiche:

  • Modificare il file seguente: /etc/cloud/cloud.cfg.d/90-Azure.cfg

  • Aggiungere il codice seguente alla fine del file.

Importante

Aggiungere il codice esattamente come indicato, inclusi gli spazi.

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

RHEL 7.4/7.5/7.6 e CentOS 7.6 immagini

Se è stato creato in precedenza le immagini RHEL/CentOS attenendosi alla procedura seguente (o un metodo simile), è necessario aggiornare l'immagine di origine da cui è stato creato le macchine virtuali. Di seguito sono operazioni aggiuntive che è necessario aggiungere alla configurazione esistente di origine VM immagine:

Passaggio 1

Modificare il file seguente:

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

Importante

Aggiungere il codice esattamente come indicato, inclusi gli spazi.

Aggiungere le seguenti righe alla fine del file:

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

Passaggio 2

Aggiornare la configurazione dell'agente come segue:

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

pacchetti di cloud-init

Tutti i pacchetti che includono una correzione cloud-inizializzazione sono in fase di aggiornamento. Microsoft si sta occupando del problema e pubblicherà ulteriori informazioni in questo articolo, non appena disponibili.

Domande frequenti

Q1: Microsoft ottenuto l'accesso al mio VM?

R1: Chiavi di crittografia vengono utilizzate per gestire le identità e le estensioni non sono progettate per l'accesso da dipendenti Microsoft. Disponiamo di processi in atto per monitorare, registrare e prevenire questo tipo di accesso. Come misura di sicurezza, esame tutti i registri per assicurarsi che nessun cliente sono state erroneamente accedere. Per i certificati vengono memorizzati nella chiave Vault cui vengono fatto riferimento in una distribuzione macchina virtuale o VMSS, i dipendenti Microsoft non ha accesso ai segreti.

Q2: Sono tutti i sistemi operativi cloud-inizializzazione distribuito e versioni interessate?

R2: No. Abbiamo visto questo problema chiave estraneo si verificano solo nei sistemi operativi identificati. Non vi può verificarsi nelle versioni precedenti di Ubuntu. Questo accade perché tali sistemi utilizzano un meccanismo diverso per impostare le chiavi pubbliche.

Q3: I pacchetti di cloud-inizializzazione interessato per le distribuzioni Linux includono la correzione?

A3: Stiamo lavorando sull'aggiunta di correzioni ai pacchetti per le versioni interessate e in questo articolo verrà aggiornato al termine di tale lavoro.

T4: Microsoft aggiornerà automaticamente qualsiasi interessato le macchine virtuali?

A4: No. Non verrà modificato il contenuto delle macchine virtuali che hanno già eseguito il provisioning.

Q5: I criteri di protezione impediscono me funziona una VM Linux con contenuto estraneo in authorized_keys. Cosa posso fare su questo oggi?

R5: È possibile rimuovere la riga errata in modo sicuro dal file authorized_keys. Ciò non influirà la coppia di chiavi SSH che è stato creato e controllo o l'identità gestita. È possibile farlo manualmente o mediante l'esecuzione di uno script personalizzato o un comando personalizzato su qualsiasi interessato flotta.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×