Applies ToVirtual Machine running Linux

Kokkuvõte

Lisaks lase kasutajatel anda oma SSH keypairs autentimist, sõltub Windows Azure platvorm SSH keypairs lubamiseks mõned funktsioonid, mis on lisatud juurutamise ajal virtuaalarvuti (VM). Me hiljuti avastatud, et mõned piiratud juhtudel Azure platvormi serti avalikud võtmed saanud ootamatult lisada .ssh/authorized_keys faili. Sellised juhtumid esinevad hõlmavaid ainult olukorda VM on ettevalmistatud pilve käivitamise abil ning kasutaja valib Azure'i lisafunktsioone, mis sõltuvad serdid, nagu süsteemi hallatav teenus identiteet.

See ootamatu käitumine tekib muutus operatsioonisüsteemide ettevalmistamise loogikat. Need on süsteemid, mis kasutavad pilve käivitamise ja mis tahtmatult installida avaliku võtme Kõik serdid, on saadaval VM ssh-lubatud võtmete faili VM loomisel. 

Lisateabe saamiseks minge CVE-2019-0816.

Lisateave

Stsenaariumi üksikasjad

Pilve-käivitamise loogikat, mida on nimetatud jaotises "Kokkuvõte" on praegu teadaolevalt esinevad Azure'i piltide jaoks Ubuntu 18.04 lisaks avaliku eelvaate RHEL 7.4/7.5/7.6 ja CentOS 7,4 pilve käivitamise pilte. See võib olla ka kohandatud pilte, kasutades need opsüsteemid.    Kui lubate üks järgmistest funktsioonidest ajal ette üks Linux pildid, võidakse kuvada täiendavad, ootamatu võtmed .ssh/authorized_keys faili, näiteks järgmist:

  • Hallatav identiteet

  • Kaitstud sätetega laiendid

  • VM-i võti hoidla võtmed VM juurutamine

Tuvastada ja migreerimisel ning probleemide lahendamisel olemasoleva VMs

Tehke kindlaks

Kontrollige, kas teil on rohkem võtmeid, vaadake lubatud võtmed faili (vi .ssh/authorized_keys faili) et teha kindlaks, kas rohkem võtmeid, mida te ei kavatsenud hulka on lisatud.

See on ohutu käsitsi eemaldamine täiendavad ssh avaliku võtmed mis neisse lisatud. See ei mõjuta funktsioonid, mida kasutatakse koos VM. Samuti ei mõjuta teie määratud SSH võti paari autentimiseks.

Kui ei tea või ei saa eristada avaliku klahve .ssh/authorized_keys faili määratud autentimist, toimige järgmiselt.

  1. Tutvuge juurutamine mallid.

    1. SSH avalikud võtmed

    2. SSH võtmed pilve käivitamise konfigureerimine

  2. Too on juurutatud ssh võtmed loomise ajal sees VM-i, kui teil on juurdepääs sudo/root. Selleks toimige järgmiselt.

    1. Kontrollige edastati CustomData pilve käivitamise konfiguratsiooni. sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"CustomData väärtus ja seejärel kasutage base64 dekodeerida avaliku võtme, mida olete juurutanud saamiseks: echo "<customData value>" | base64 -D

    2. Teise vaadata selle eksemplari Meta Data Service (IMDS) näha selle ssh avaliku võtme, mis edastati on ssh avaliku võtme atribuudi VM luua: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Migreerimisel ning probleemide lahendamisel

Kui te olete kindlaks teinud täiendavaid serdid, mida te ei kavatsenud VM juurutada, võite eemaldada need vastava rea authorized_keys faili kustutamine.

Käivitage puhastamiseks, ühendades VM interaktiivselt või kasutada kohandatud skripti laiendiga või selle RunCommand üle mitme VMs.

VM laiendeid, mis on kaitstud sätted või hallatud identiteedi abil

Järgmise skripti abil eemaldada avalike võtmete sertide VM võeti kasutusele laiendiga või hallatud identiteedi. See on ei Eemalda võtmed VM juurutamisel või VM võeti kasutusele võti hoidla võtmed pole määratud.

NB!

Me soovitame varundada authorized_keys faili enne seda skripti käitama.

 

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

Pärast skripti käitamist, kontrollige ssh/authorized_keys faili tagada ainult tuntud avaliku klahvid on olemas.

VM juurutanud võti hoidla saladused

Kas võtme lisati võti hoidla võtmed juurutamisel tuvastamiseks toimige järgmiselt.

  1. Saada võti hoidla serti, mida saate juurutada, kasutades VM nime vaadata juurutamine koodi Az CLI või ARM mallid või käivitada selle Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlVastus näitab serdi nimi: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Laadige alla sert. az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Eraldada avaliku võtme: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Võrrelge väljund eelmises etapis ülejäänud certs ssh/authorized_keys faili. vi .ssh/authorized_keys file

Lahendus

Azure'i turuplats pildid

Pilve-käivitamise tuvastatud Azure'i pildid on rakendatud parandused:

  • 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

Kohandatud pilte

Kui kasutate kohandatud pilte, mis valmistatakse pilve-käivitamise tuntud operatsioonisüsteemi, on teil värskendada teie allikas kohandatud pildi.

Ubuntu 18.04 pildid

Kohandatud pildi allikas värskendamiseks peate tegema järgmised muudatused:

  • Redigeeri järgmine fail: /etc/Cloud/Cloud.cfg.d/90-Azure.cfg

  • Lisage järgmine kood faili lõppu.

NB!

Täpselt nii, nagu näidatud, sh tühikud tuleb lisada koodi.

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

RHEL 7.4/7.5/7.6 ja CentOS 7,6 pildid

Kui olete varem loonud RHEL/CentOS pildid, kasutades järgmist (või sarnase meetodiga), peate värskendama allikas pildi, mille lõite VMs. Meetmeid, mida on vaja lisada oma olemasolevat VM pilt konfiguratsioon on järgmised:

1. samm

Redigeeri järgmine fail:

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

NB!

Täpselt nii, nagu näidatud, sh tühikud tuleb lisada koodi.

Lisage faili lõppu järgmised read:

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

2. etapp

Update Agendi konfiguratsiooni järgmiselt:

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

pilve-käivitamise paketid

Kõik pilve käivitamise paketid, mis sisaldavad lahendus on värskendatud. Microsoft uurib probleemi ja lisab selles artiklis on saadaval.

korduma kippuvad küsimused

1. küsimus: Microsoft on saanud juurdepääsu minu VM

A1: Krüptimisvõtmed kasutatakse haldamiseks ja laiendid pole mõeldud juurdepääsu Microsofti töötajad. Meil on protsesside jälgimiseks, sisse logida ja juurdepääsu takistamiseks. Ettevaatusabinõuna, oleme üle kõik logid veendumaks, et kliendi võtmed olid eksikombel juurde. Sertifikaadid, mis on salvestatud klahvi hoidla asutuse VM või VMSS juurutamine, Microsofti töötajad ei pääse kõik saladusi.

K2: Kas kõik pilve-käivitamise juurutanud OSs ja mõjutatud versioonid?

A2: Ei. Oleme täheldanud liigse võtme probleem esineb ainult tuvastatud operatsioonisüsteemide. Meil on näha see esineda vanemate versioonide Ubuntu. Seda sellepärast, et neid süsteeme kasutada muu mehhanismi avalikud võtmed.

K3: Kas mõjutatud pilve-käivitamise paketid on Linuxi sisaldavad fix?

A3: Püüame parandused lisamine mõjutatud versioonid paketid ja värskendame selles artiklis, kui see töö on lõpule viidud.

K4: Microsoft värskendab automaatselt kõik mõjutatud VMs?

A4: Ei. Microsoft ei muuda sisu VMs, mis on juba ette valmistada.

K5: Meie turvapoliitika takistada minu opsüsteemi Linux VM authorized_keys liigse sisuga. Mida ma saan seda juba täna?

A5: Saate eemaldada häiriva rida ohutult authorized_keys faili. See ei mõjuta SSH keypair loodud ja kontrolli või hallatud identiteeti. Seda saate teha käsitsi või kohandatud skripti või kohandatud käsu kogu mis tahes mõjutatud pargi.

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.