Applies ToVirtual Machine running Linux

Sažetak

Osim ako dopustimo korisnicima pružaju vlastite keypairs SSH za provjeru autentičnosti Microsoft Azure platforme oslanja na SSH keypairs da biste omogućili neke značajke koje su dodane virtualni stroj (VM) u vrijeme uvođenja. Možemo nedavno pronađu i da, u nekim scenarijima ograničeni javne ključeve iz te certifikate Azure platforme nije neočekivano doda datoteku .ssh authorized_keys. Ti Scenariji su ograničena samo na situaciju u kojoj u VM resursi pomoću oblak init i korisnik odabere dodatne značajke Azure koji se oslanjaju na potvrde, kao što je usluga sustava upravljanih identiteta.

Neočekivano ponašanje pojavljuje zbog promjena u dodjele resursa logiku određene operacijski sustavi. Te su sustavi koji koristite oblak init i koji javni ključ nenamjerno instalirati iz sve certifikate koje su dostupne u VM u datoteku ssh ovlaštenog tipke tijekom stvaranja VM. 

Da biste saznali više, posjetite CVE 2019 0816.

Dodatne informacije

Scenarij pojedinosti

Oblak init logiku koja se spominje u odjeljku "Sažetak" trenutno poznato da postoji u Azure slike za Ubuntu 18.04 uz javne pretpregled RHEL 7.4/7.5/7.6 i CentOS 7,4 oblak init slike. Također mogu postojati u prilagođene slike pomoću tih operacijskih sustava.    Ako tijekom jedne slike Linux Dodjela omogućite jedan od sljedećih značajki, možda ćete vidjeti dodatne, neočekivane ključeva u .ssh authorized_keys datoteka, primjerice bilo što od sljedećeg:

  • Upravljani identitet

  • Proširenja s zaštićene postavke

  • Uvođenje VM s tipkama ključa sef u na VM

Identificiranje i remediate postojeće VMs

Prepoznavanje

Da biste provjerili imate li dodatnih ključeva, pregledajte datoteke ovlaštenog tipke (smjer .ssh authorized_keys datoteka) da biste odredili da li su dodani dodatnih ključeva koji niste namjeravali uključiti.

Je sigurno ručno Ukloni dodatne ssh javno tipke koje možda dodani. To će ne utječu i na značajke koje su uvedene s na VM. Također, neće utjecati par vaše navedeni SSH ključa za provjeru autentičnosti.

Ako ne znate ili ne može razlikovati javne tipke u navedenu datoteku .ssh authorized_keys za provjeru autentičnosti, slijedite ove korake:

  1. Pregledajte uvođenja predložaka:

    1. ssh javnih ključeva

    2. ssh tipke u konfiguraciji init oblaka

  2. Dohvaćanje na distribuiranih ssh tipki u trenutku stvaranja iz unutar VM, ako imate pristup sudo korijen. Da biste to učinili, slijedite ove korake:

    1. Provjerite konfiguraciju oblak inicijalizacije koji je proslijeđen CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Koristite vrijednost CustomData i zatim dekodirati base64 koristite da biste dobili javni ključ možete uvesti: echo "<customData value>" | base64 -D

    2. Umjesto toga, provjerite na instancu Meta podataka servisa (IMDS) da biste vidjeli na ssh javni ključ koji je proslijeđen u u ssh javnog ključa svojstvo VM stvoriti: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Remediate

Ako identificiranja Dodatni certifikati koje niste namjeravali uvođenje u VM, možete ukloniti te po brisanje odgovarajućem retku iz datoteke authorized_keys.

Pokrenite u olakšava povezivanjem na VM interaktivno ili koristiti prilagođene skripte proširenje ili na RunCommand preko više VMs.

VMs implementirati pomoću proširenja zaštićene postavke ili upravljani identitet

Koristite sljedeću skriptu za uklanjanje javnih ključeva iz potvrde u kojem se VM je uveden s nastavcima ili upravljani identitet. To će ne Ukloni ključeve koje su navedeni kada uveden na VM ili na VM je uveden s tipkama ključ sef.

Važno

Preporučujemo da sigurnosnu datoteku authorized_keys prije nego što pokrenete ovu skriptu.

 

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

Nakon što je pokrenuti skriptu, provjerite datoteku ssh/authorized_keys da biste osigurali prisutni su samo poznate javnih ključeva.

VMs uveden tajne sef ključ

Da biste identificirali li ključ je dodan kada uveden s tipkama sef ključ, slijedite ove korake:

  1. Dobivanje naziva certifikat sef ključ koji implementirati pomoću na VM, pregledajte uvođenja kod Az CLI za Defragmentaciju ili ARM predlošci ili pokrenuti ovaj Az CLI za Defragmentaciju: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlOdgovor će prikazati naziv certifikata: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Preuzmite certifikat: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

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

  4. Usporedba izlaza iz prethodni korak preostale certifikati o u datoteci ssh/authorized_keys. vi .ssh/authorized_keys file

Rješenje

Slike Azure MarketPlace

Primijenjeni popravke oblak init u identificirani 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

Prilagođeni slike

Ako koristite prilagođeni slike koje su dodijeljeni resursi po oblak init za poznate operacijske sustave, morate ažurirati izvor prilagođenu sliku.

Ubuntu 18.04 slike

Da biste ažurirali izvor prilagođenu sliku, morate napraviti sljedeće izmjene:

  • Uređivanje sljedeće datoteke: /etc/Cloud/Cloud.CFG.d/90-Azure.CFG

  • Dodajte sljedeći kôd kraj datoteke.

Važno

Šifra mora dodati točno kako je prikazano, uključujući razmake.

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

RHEL 7.4/7.5/7.6 i CentOS 7.6 slike

Ako ste prethodno stvorili RHEL CentOS slike korištenjem ove korake (ili sličan način), morate ažurirati izvorne slike iz kojeg je kreirana u VMs. Dodatne korake potrebne za dodavanje postojeće konfiguracija izvora VM slike su:

Korak 1

Uređivanje sljedeće datoteke:

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

Važno

Šifra mora dodati točno kako je prikazano, uključujući razmake.

Dodajte sljedeće retke na kraj datoteke:

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

Korak 2

Ažuriranja konfiguracija Agent kako slijedi:

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

Sve oblak init pakete koji uključuju popravak su upravo ažurira. Microsoft ispituje taj problem i knjižiti dodatne informacije u ovom članku kada informacije postane dostupna.

Najčešća pitanja

Q1: Ima Microsoft stekli pristup Moje VM?

A1: Ključevi za šifriranje se koriste za Upravljanje identitetima i proširenja nisu dizajnirani za pristup Microsoft Zaposlenici. Imamo procese u mjesto za nadzor, prijave i spriječiti tu vrstu pristupa. Kao mjera opreza smo su pregledavanje sve zapisnike da biste bili sigurni da nema ključeva kupca inappropriately pristupiti. Za certifikate koje su spremljene u sef ključ koji se pozivaju VM ili VMSS uvođenja, Microsoftovi zaposlenici imaju pristup tajne.

Q2: Su sve oblak init uveden OSs i verzije utjecati?

A2: ne. Smo već viđeni hvatanju ključa problem pojaviti samo u identificirani operacijski sustavi. Ćemo imati nije vidio pojaviti u starijim verzijama Ubuntu. Ovo je jer one sustavi koriste različite mehanizam za postavljanje javne ključeve.

Q3: Učinite zahvaćeni oblak init pakete za distribucija Linux uključuju popravak?

A3: Radimo na dodavanju popravke packages zahvaćene verzije i ćemo ažurirati ovaj članak kada dovršiti taj rad.

Q4: Microsoft automatski će ažurirati sve pogođene VMs?

A4: ne. Microsoft će promijeniti sadržaj VMs ste već dodijeljena.

Q5: Naša pravila zaštite spriječiti me operacijski Linux VM sa suvišnim sadržaja u authorized_keys. Što učiniti o ovom danas?

A5: Problematični redak možete sigurno ukloniti iz datoteke authorized_keys. To neće utjecati na keypair SSH koje ste stvorili i kontrolu ili upravljani identitet. To možete učiniti ručno ili pokretanjem prilagođene skripte ili prilagođene naredbe preko sve zahvaćene tim.

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.