Povzetek

Poleg dajanje v najem uporabnik zagotoviti svoje SSH keypairs za preverjanje pristnosti, platformi Microsoft Azure opira na SSH keypairs omogočiti nekatere funkcije, ki so dodali v navidezni stroj (VM) v času uvajanja. Pred kratkim smo ugotovili, da v nekaterih omejenih primerih, javne ključe od teh potrdil Azure platformo bi nepričakovano dodajo .ssh/authorized_keys datoteke. Ti scenariji so zajeta samo na situacijo, v kateri VM je omogočena z uporabo oblak-init in uporabnik izbere Azure dodatne funkcije, ki se zanašajo na potrdila, kot so sistem upravlja storitev identitete.

To nepričakovano vedenje se pojavi zaradi spremembe v oskrbovalno logiko operacijski sistem. To so sistemi, ki uporabljajo oblak-init in nehote namestitvi javnega ključa iz vse certifikate, ki so na voljo v VM v ssh-pooblaščeni ključe datoteko med ustvarjanjem VM. 

Če želite izvedeti več, pojdite na CVE-2019-0816.

Več informacij

Scenarij podrobnosti

Oblak-init logike, ki je omenjeno v razdelku »Povzetek« je trenutno znano, da obstajajo barve slike za Ubuntu 18.04 poleg javno predogled RHEL 7.4/7.5/7.6 in CentOS 7.4 oblak-init slike. Obstajajo lahko tudi v slike po meri z uporabo teh operacijskih sistemov.    Če omogočite eno od teh funkcij, medtem ko omogočate eden od Linux slike, lahko vidite dodatne, nepričakovanih tipke v datoteko .ssh/authorized_keys, kot nekaj od tega:

  • Upravljana identiteta

  • Razširitve z zaščiteno nastavitve

  • Uvajanje VM z ključnih Vault sklepnik v a VM

Prepoznavanje in sanacijo obstoječih VMs

Prepoznavanje

Preverite, ali imate dodatne tipke, preglejte datoteko pooblaščeni ključe (vi .ssh/authorized_keys datoteke) za določitev, ali so bile dodane vse dodatne tipke, ki niste nameravali vključiti.

To je varno ročno odstranite dodatni ssh javne ključe, ki morda so bile dodane. To hoteti ne vplivati na značilnosti, ki se razporedi skupaj s VM. Tudi, to ne bo vplivalo na vaš določen SSH par ključev za preverjanje pristnosti.

Če ne veste ali ne morejo razlikovati katere javne ključe v datoteko .ssh/authorized_keys, določite za preverjanje pristnosti, sledite tem korakom:

  1. Pregled uvajanja predloge:

    1. SSH javnih ključev

    2. SSH sklepnik v oblak-init konfiguracijo

  2. Rešitev je razporejeno ssh tipke na ustvarjeno od znotraj VM, če imate sudo/root dostop. Če želite to narediti, sledite tem korakom:

    1. Preverite konfiguracijo init oblak, ki je bil sprejet v CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Uporabite vrednost CustomData in potem uporabo base64 dešifrirati dobiti javne ključe, ki ste uvedli: echo "<customData value>" | base64 -D

    2. Pa preverite stopnje Meta podatkov storitev (IMDS) za prikaz je ssh javni ključ, ki je bil sprejet na ssh javnega ključa lastnost VM ustvariti: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Sanacijo

Če so ugotovljene dodatne certifikate, da ne nameravate uvesti VM, lahko odstranite to z izbris ustrezne vrstice iz authorized_keys datoteke.

Sanacijo vzpostavite VM interaktivno ali uporabljate skript po meri razširitev ali je dejanje čez več.

VMs, uvedeno z uporabo pripone, ki so zaščitene nastavitve ali upravljane identiteto

Uporabite ta skript umakniti javnih ključev s certifikati v kateri VM je bila uvedena z razširitvami ali upravljati identitete. To bo ne odstrani ključi, ki so navedli, ko ste uvedli VM ali VM je bil uveden s zakleniti Vault tipke.

Pomembno

Priporočamo, da ustvarite varnostno kopijo authorized_keys datoteke, preden zaženete ta skript.

 

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

Ko je teči scenarij, preverite ssh/authorized_keys datoteke, da zagotovi prisotnost le znane javne tipke.

VMs, uveden s zakleniti Vault skrivnosti

Ugotoviti ali ključ je bila dodana, ko s zakleniti Vault ključe, sledite tem korakom:

  1. Dobil ime ključa Vault potrdilo, ki ste uvedli z uporabo VM, pregled uvajanje kodo Az CLI ali roko predloge ali teči ta skupina Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlV odgovor prikaže ime potrdila: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Travnato gričevje potrdilo: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Citat javnega ključa: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Primerjati izhod iz prejšnjega koraka v preostalih cert v ssh/authorized_keys datoteke. vi .ssh/authorized_keys file

Rešitev

Sinje MarketPlace slike

Popravki so bili uporabljeni za oblak-init v opredeljenih Azure slike:

  • 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

Slike po meri

Če uporabljate slike po meri, ki so omogočeni z oblak-init za znane operacijske sisteme, boste morali posodobiti vaš meri slike vir.

Ubuntu 18.04 slike

Posodobiti sliko po meri vir, naredite naslednje spremembe:

  • Izdajati sledeč pila: /etc/Cloud/Cloud.cfg.d/90-Azure.cfg

  • Dodajte naslednjo kodo na konec datoteke.

Pomembno

Kodo je treba dodati natančno, kot je prikazano, vključno s presledki.

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

RHEL 7.4/7.5/7.6 in CentOS 7,6 slike

Če ste prej ustvarili RHEL/CentOS slike po teh navodilih (ali na podoben način), je treba posodobiti slike vir, iz katerega ste ustvarili SSP. V nadaljevanju so dodatne ukrepe, ki so morali dodati obstoječo vir VM podoba konfiguracijo:

Korak 1

Izdajati sledeč pila:

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

Pomembno

Kodo je treba dodati natančno, kot je prikazano, vključno s presledki.

Na koncu datoteke dodajte naslednje vrstice:

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

Korak 2

Posodobi konfiguracijo agenta, kot sledi:

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

oblak-init paketi

Vse oblak-init pakete, ki vključujejo popravek so v procesu posodablja. Microsoft težavo še raziskuje in bo po več informacij v tem članku, ko ti podatki postanejo dostopni.

Pogosta vprašanja

V1: Ali je Microsoft pridobil dostop do svoj VM?

A1: Šifrirni ključi se uporabljajo za upravljanje identitet in razširitve niso namenjeni za dostop Microsoft zaposlenih. Imamo postopke za spremljanje, se prijavite in preprečiti to vrsto dostopa. Kot varnostni ukrep, smo pregled vseh dnevnikov prepričati kupca ključev, ki so neprimerno dostopne. Za potrdila, ki so shranjeni v trezorju ključ ki so navedeni v VM ali VMSS uvajanja, Microsoftovi zaposleni nimajo dostop do skrivnosti.

Q2: So vse oblak-init razporejeno OSs in različice vpliva?

A2: ne. Smo videli to tuje ključno vprašanje, ki se pojavljajo le na ugotovljene operacijskih sistemov. Videli smo, ne da pride v starejši prevod od Ubuntu. To je zato, ker ti sistemi uporabljajo drugačen mehanizem nastaviti javne ključe.

V3: Ali prizadetih oblak-init paketov za Linux distribucij vključujejo pritrditi?

A3: Delamo na dodajanje popravki paketi za prizadete različice in bomo posodobitev tega člena, ko to delo končano.

V4: Microsoft samodejno posodobi vse prizadete VMs?

A4: ne. Microsoft ne bo spremenilo vsebini VMs, ki so že omogočeni.

V5: Naše varnostne pravilnike me preprečujejo delujejo VM Linux z tuje vsebine v authorized_keys. Kaj lahko storim glede tega danes?

A5: Lahko odstranite vrstico krši varno authorized_keys datoteke. To ne vpliva na keypair SSH, ki ste jo ustvarili in nadzor ali upravljanje identitete. To lahko storite ročno ali teče skript po meri ali po meri zapoved čez vse prizadete flote.

Ali potrebujete dodatno pomoč?

Razširite svoja znanja
Oglejte si izobraževanje
Prvi dobite nove funkcije
Pridruži se Microsoftu programa Insider

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo prevoda?
Kaj je vplivalo na vašo izkušnjo?

Zahvaljujemo se vam za povratne informacije.

×