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.
-
Tutvuge juurutamine mallid.
-
SSH avalikud võtmed
-
SSH võtmed pilve käivitamise konfigureerimine
-
-
Too on juurutatud ssh võtmed loomise ajal sees VM-i, kui teil on juurdepääs sudo/root. Selleks toimige järgmiselt.
-
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
-
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.
-
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"
-
Laadige alla sert. az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem
-
Eraldada avaliku võtme: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8
-
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.