Applies ToVirtual Machine running Linux

Suvestinė

Be to, leidžia vartotojams pateikti savo SSH keypairs autentifikavimo, Microsoft Azure platformos priklauso nuo SSH keypairs, kad kai kurios funkcijos, pridedami prie virtualiosios mašinos (VM) diegimo metu. Mes neseniai nustatė, tik kai kuriais atvejais, iš Azure platformos sertifikatas viešųjų raktų gali netikėtai įtraukti į .ssh/authorized_keys failą. Šiuos scenarijus yra srities tik prie situacijos, kai VM parengta naudojant debesies paleidimo ir papildomos Azure funkcijų, kurios naudoja sertifikatus, pvz., paslaugų sistemos valdomos tapatybės, kiek pasirenka vartotojas.

Netikėtas taip atsitinka dėl konkrečios operacinės sistemos parengimo logika. Tai yra sistemos, naudoti debesies paleidimo ir, netyčia įdiegti viešuoju raktu iš visus sertifikatus, kurie yra VM į ssh-leidžiama raktų failą per VM kūrimas. 

Norėdami sužinoti daugiau, eikite į CVE-2019-0816.

Daugiau informacijos

Scenarijų duomenys

Debesies paleidimo logika, paminėtam skyriuje "Suvestinė" šiuo metu yra žinoma, kad yra Azure vaizdų Ubuntu 18.04 be 7.4/7.5/7.6 viešieji peržiūra RHEL ir CentOS 7,4 debesies paleidimo vaizdus. Jis taip pat gali būti pasirinktinius vaizdus, naudojančių šias operacines sistemas.    Jei įjungsite vieną iš šių požymių, kol sukonfigūravus vieną iš Linux vaizdų, galite pamatyti daugiau, netikėtai raktų .ssh/authorized_keys failą, pvz., bet kurį iš šių veiksmų:

  • Valdomos tapatybės

  • Plėtiniai apsaugotą parametrus

  • Įdiegti rakto saugyklos raktus, VM VM

Nustatyti ir eksploatavimo esamą VM

Nustatyti

Norėdami patikrinti, ar nėra papildomų raktų, peržiūrėti įgaliotasis raktų failą (vi .ssh/authorized_keys failą) Norėdami nustatyti, ar visi papildomi raktai, kurios neketinote yra įtrauktas.

Tai galima rankiniu būdu pašalinti bet kokį papildomą ssh viešųjų raktų, buvo pridėtas. Tai neturi įtakos funkcijų, kurios yra įdiegta kartu su VM. Be to, tai neturės įtakos jūsų nurodyto SSH rakto autentifikavimas.

Jei nežinote arba negalima atskirti kokia viešųjų raktų nurodytas .ssh/authorized_keys failas autentifikavimo, atlikite šiuos veiksmus:

  1. Peržiūrėkite savo diegimo šablonus:

    1. SSH raktą

    2. SSH raktai debesies paleidimo konfigūracijos

  2. Gauti ir visuotinai įdiegtos ssh raktus Kada kūrimas viduje VM, jei turite sudo /. Norėdami tai padaryti, atlikite šiuos veiksmus:

    1. Patikrinkite, ar buvo priimtas CustomData debesies paleidimo konfigūracijos: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Naudokite CustomData reikšmę, ir tada naudokite base64 iššifruoti viešųjų raktų, kurioje galite gauti: echo "<customData value>" | base64 -D

    2. Be to, patikrinkite, ar egzempliorių Meta duomenų tarnyba (IMDS) Norėdami pamatyti į ssh viešuoju raktu, kuris buvo priimtas į ssh viešojo rakto ypatybę VM sukurti: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Eksploatavimo

Jei nustatėte papildomas sertifikatus, kurie nenori įdiegti VM, galite pašalinti juos ištrinti atitinkamos eilutės iš authorized_keys failą.

Paleisti atkūrimą interaktyviai prisijungus prie VM, arba Pasirinktinis scenarijų plėtinį arba kad Vykdyti_komandą per daug VM.

VM naudojant plėtinius, kurie yra apsaugoti parametrai arba valdomų vartotojas

Naudokite šį scenarijų pašalinti viešųjų raktų sertifikatai, kai VM buvo įdiegta su plėtiniais arba valdomi tapatybę. Tai bus ne šalinti raktų, kurie nurodyti išdėstyto VM arba VM buvo įdiegta su kodas saugyklos raktais.

Svarbu

Rekomenduojame, kad atsarginę kopiją authorized_keys failą prieš paleisdami šį scenarijų.

 

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

Po to, kai buvo paleisti scenarijų, patikrinkite, ar norint užtikrinti tik žinomų visuomenės klavišas(-i) ssh/authorized_keys failą.

VM visuotinai kodas saugyklos paslapčių

Norėdami nustatyti, ar raktas buvo pridėta naudojant kodą saugyklos raktus, atlikite šiuos veiksmus:

  1. Gauti kodą saugyklos sertifikatą, galite įdiegti naudojant VM pavadinimas, diegimo kodas Az CLI arba ARM šablonai arba vykdyti šį Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlAtsakymas parodys sertifikato pavadinimas: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Atsisiųsti sertifikatą: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Išskleisti viešasis raktas: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Palyginkite su komandos iš ankstesnio veiksmo ir likusius sertifikatai ssh/authorized_keys failą. vi .ssh/authorized_keys file

Sprendimas

Azure parduotuvė vaizdai

Pataisų pritaikytos debesies-paleidimo nustatytos Azure vaizdus:

  • 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

Pasirinktinius vaizdus

Jei naudojate pasirinktinį vaizdus, kurie yra pateikta iš debesies-paleidimo žinomų operacinių sistemų, turėsite atnaujinti savo šaltinio pasirinktinis vaizdas.

Ubuntu 18.04 vaizdai

Norėdami atnaujinti šaltinio pasirinktinis vaizdas, turite būti šiuos pakeitimus:

  • Redaguoti šį failą: /etc/Cloud/Cloud.cfg.d/90-Azure.cfg

  • Įtraukti šį kodą į failo pabaigoje.

Svarbu

Tiksliai taip, kaip parodyta, įskaitant tarpus, turi būti įtraukta į kodą.

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

RHEL 7.4/7.5/7.6 ir CentOS 7,6 vaizdai

Jei anksčiau sukūrėte atlikdami šiuos veiksmus RHEL/CentOS vaizdus (arba panašų būdą), turite atnaujinti šaltinio vaizdą, iš kurio sukūrėte VM. Toliau pateikiami papildomi veiksmai, kurių reikia pridėti prie esamo šaltinio VM vaizdo konfigūracijos:

1 veiksmas

Redaguoti šį failą:

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

Svarbu

Tiksliai taip, kaip parodyta, įskaitant tarpus, turi būti įtraukta į kodą.

Failo pabaigoje, atlikite šiuos veiksmus:

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

2 veiksmas

Naujinimo agento konfigūravimą taip:

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

debesies paleidimo paketai

Debesies paleidimo paketai, kuriuose yra nustatyti šiuo metu atnaujinamas. Microsoft tiria šią problemą ir paskelbsime daugiau informacijos šiame straipsnyje, kai tokia informacija bus žinoma.

Dažnai užduodami klausimai

1 kl.: "Microsoft" gavo prieigą prie savo VM?

1 atsakymas: Šifravimo raktai, kuriuos naudoja tvarkyti pašto vartotojus ir plėtiniai nėra skirtos prieigos iš "Microsoft" darbuotojų. Mes turime procesams stebėti, prisijungti ir išvengti šio tipo prieigos. Saugos sumetimais, esame Peržiūrėti visus žurnalus ir patikrinkite, ar nėra klientų raktų buvo netinkamai pasiekti. Sertifikatų, kurie saugomi kodas saugyklos yra nuorodos į VM arba VMSS visuotinio diegimo, "Microsoft" darbuotojų neturi bet kokią paslaptis.

2 kl.: Ar visi debesies-paleidimo visuotinai OSs ir versijos turi įtakos?

2 atsakymas: Ne. Matome pašalinių kodo problema atsiranda tik nustatyti operacinės sistemos. Mes negalime matyti ji atsiranda senesnėse versijose Ubuntu. Taip yra todėl, kad šiose sistemose naudoti kitą mechanizmą nustatyti raktą.

3 kl.: Ar pažeistą debesies paleidimo Linux platinamos paketai yra taisyti?

3 atsakymas: Mes dirbame, pridedant pataisos dėl versijų paketai ir mes atnaujinti šį straipsnį kai, darbas baigtas.

4 kl.: "Microsoft" automatiškai atnaujina visus susijusio VM?

4 atsakymas: Ne. Microsoft VM, kad jūs jau pateikta turinį nesikeis.

5 kl.: Mūsų saugos strategijos neleisti veikia Linux VM pašalinių authorized_keys turinio. Ką daryti, tai šiandien?

5 atsakymas: Galite pašalinti problemą keliančią eilutės saugiai iš authorized_keys failą. Tai neturės įtakos SSH raktų porą, kurį sukūrėte ir valdymo arba valdomų tapatybę. Galite tai padaryti rankiniu būdu arba vykdydami pasirinktinį scenarijų arba pasirinktinį komandą per bet kurį reikalingą laivyno.

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.