Nadbytočné SSH verejných kľúčov do súboru povolené klávesy na Linux VM

Súhrn

Okrem umožňovať používateľom poskytnúť svoje vlastné SSH keypairs overovania, platformy Microsoft Azure závisí od SSH keypairs niektoré funkcie, ktoré boli pridané do virtual machine (VM) v čase zavádzania. Zistili sme, v niektorých prípadoch obmedzené môžu tieto platformy Azure certifikáty verejných kľúčov neočakávane pribudnú .ssh/authorized_keys súboru. Týchto prípadoch sa poskytuje iba situácia VM je poskytnutá pomocou technológie cloud inicializácie a používateľ vyberie ďalší Azure funkcie, ktoré využívajú certifikáty, ako sú spravované systémové služby.

Neočakávané správanie sa vyskytuje zmeny poskytovania logika konkrétnych operačných systémov. Ide o systémy používajú cloud inicializácie a neúmyselne, nainštalovať verejného kľúča z všetky certifikáty, ktoré sú dostupné na tejto ssh autorizovaných kľúče súborov pri vytváraní VM. 

Ďalšie informácie, prejdite na CVE-2019-0816.

Ďalšie informácie

Podrobnosti o prípade

Cloud inicializáciou logika uvedené v sekcii "Summary" aktuálne známy existovať Azure obrázky pre Ubuntu 18.04 okrem 7.4/7.5/7.6 Public Preview RHEL a CentOS 7,4 cloud inicializáciou obrázky. Pravdepodobne existujú aj vlastné obrázky, ktoré používajú tieto operačné systémy.    Sa zobrazí niektorý z týchto prvkov počas poskytovania jeden Linux obrázky, uvidíte ďalších, nečakané kľúče .ssh/authorized_keys súboru, napríklad niektorý z nasledujúcich:

  • Spravované identity

  • Rozšírenia chránené nastavenie

  • Nasadenie VM klávesmi kľúč Trezor VM

Identifikácia a sanáciu existujúcich VM

Identifikácia

Skontrolujte, či máte ďalšie kľúče, skontrolujte povolené klávesy (súbor vi .ssh/authorized_keys) zistiť, či boli pridané ďalšie kľúče, ktoré nemal obsahovať.

Je to manuálne odstrániť všetky ďalšie ssh verejné kľúče, ktoré boli pridané. To nemusí mať vplyv na funkcie, ktoré sú spolu s VM. Tiež neovplyvní vaše zadané SSH kľúčov pre overovanie.

Ak nepoznáte alebo nerozlišuje verejné klávesy v .ssh/authorized_keys zadaný súbor overovanie, postupujte nasledovne:

  1. Skontrolovať nasadenie šablón:

    1. SSH verejných kľúčov

    2. SSH kľúče v cloude inicializáciou konfigurácie

  2. Načítanie nasadené ssh kľúče v čase vytvorenia z vnútri VM, ak sudo/root prístup. Ak to chcete urobiť, postupujte nasledovne:

    1. Kontrola konfigurácie cloud inicializáciou schválil CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Hodnota CustomData a potom použiť base64 dekódovanie získať verejných kľúčov, ktoré sa: echo "<customData value>" | base64 -D

    2. Môžete tiež skontrolovať inštancie Meta Data Service (IMDS) zobrazíte ssh verejný kľúč, ktorý bol zadaný ssh verejný kľúč vlastnosť vytvoriť VM: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Náprava

Ak ste identifikovali ďalšie certifikáty, ktoré nemal v úmysle zaviesť VM, môžete odstrániť tieto vymazanie zodpovedajúci riadok v súboru authorized_keys.

Spustenie liečením pripojíte VM interaktívne alebo použiť vlastný skript rozšírenie alebo SpustiťPríkaz vo viacerých VM.

VM nasadený pomocou rozšírenia chránený nastavenia alebo spravované identity

Použite nasledujúci skript odstrániť verejných kľúčov certifikáty VM nasadzovania rozšírenia alebo spravovať totožnosti. Bude nie odstrániť kľúče, ktoré boli uvedené, ak ste nasadili VM alebo VM nasadzovania klávesmi Trezor kľúč.

Dôležité upozornenie

Odporúčame zálohovať súbor authorized_keys pred spustením tohto 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 

Po spustení skriptu, skontrolujte súbor ssh/authorized_keys tak známe verejný kľúč.

VM s kľúčom Trezor tajomstvo

Zistiť, či kľúč bol pridaný pri klávesmi Trezor kľúč, postupujte nasledovne:

  1. Názov Trezor kľúč certifikátu, ktorý je nasadený pomocou VM nasadenie kód Az CLI alebo ARM šablóny a spustiť tento Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlOdpoveď zobrazí názov certifikátu: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Stiahnuť certifikát: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Rozbaľte verejného kľúča: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Porovnajte výstup z predchádzajúceho kroku na zvyšných CERT ssh/authorized_keys súboru. vi .ssh/authorized_keys file

Riešenie

Obrázky Azure MarketPlace

Opravy použili cloud inicializáciou identifikované Azure obrázkov:

  • 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

Vlastné obrázky

Ak používate vlastné obrázky, poskytované prostredníctvom technológie cloud inicializáciou známe operačné systémy, musíte aktualizovať zdroj vlastný obrázok.

Ubuntu 18.04 obrázkov

Aktualizovať zdroj vlastný obrázok, je potrebné vykonať nasledujúce zmeny:

  • Upraviť tento súbor: /etc/cloud/cloud.cfg.d/90-Azure.cfg

  • Pridajte nasledujúci kód na koniec súboru.

Dôležité upozornenie

Kód musí pridať presne tak, ako je uvedené, vrátane medzier.

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

RHEL 7.4/7.5/7.6 a CentOS 7,6 obrázkov

Ak ste vytvorili RHEL/CentOS obrázkov pomocou týchto krokov (alebo podobnou metódou), musíte aktualizovať zdroj obrazu, z ktorej ste vytvorili VM. Ďalšie kroky, ktoré je potrebné pridať existujúci zdroj VM obraz konfigurácie sú:

Krok 1

Upraviť tento súbor:

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

Dôležité upozornenie

Kód musí pridať presne tak, ako je uvedené, vrátane medzier.

Na koniec súboru pridajte nasledujúce riadky:

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

Krok 2

Aktualizujte konfiguráciu agenta takto:

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

balíky cloud inicializáciou

Všetky balíky cloud inicializáciou zahrnúť opravu práve aktualizované. Spoločnosť Microsoft tento problém skúma a zverejní v tomto článku ďalšie informácie, keď budú k dispozícii.

Najčastejšie otázky

Otázka 1: Získal Microsoft prístup k mojej VM?

A1: Šifrovacie kľúče sa používajú na Spravovanie totožností a rozšírenia nie sú určené pre prístup zamestnancami spoločnosti Microsoft. Máme procesy sledovať, prihláste sa a zabrániť tento druh prístupu. Ako bezpečnostné opatrenie, sme preskúmanie všetky záznamy, uistite sa, že žiadne kľúče zákazníkom neprimerane odcudzené. Certifikáty, ktoré sú uložené v trezore kľúč ktorý odkazuje VM alebo VMSS nasadenia, zamestnancami spoločnosti Microsoft nemajú prístup k tajomstvo.

Q2: Sú cloud inicializáciou nasadiť OSs a verzie, ktoré sú ovplyvnené?

A2: nie. Už probléme cudzích kľúčov iba v zistené operačné systémy. Sme videli sa vyskytujú v starších verziách Ubuntu. Dôvodom je skutočnosť, že tieto systémy použiť iný mechanizmus na nastavenie verejných kľúčov.

3. Otázka: Príslušné cloud inicializáciou balíky pre Linux distribúcie zahŕňajú opraviť?

A3: Pracujeme na pridávanie opravy balíky pre príslušné verzie a aktualizujeme tento článok, po dokončení práce.

Otázka 4: Microsoft aktualizuje všetky príslušné VM?

A4: nie. Microsoft nezmení obsah VM, ktoré sa majú už poskytnutá.

Otázka 5: Naše politiky zabezpečenia zabrániť prevádzkové Linux VM s vedľajším obsah authorized_keys. Čo na tom dnes?

A5: Problémový riadok môžete bezpečne odstrániť zo súboru authorized_keys. Neovplyvní to SSH keypair, ktorý ste vytvorili a kontrolu alebo spravované identity. Môžete to manuálne alebo spustením skriptu alebo vlastné príkaz cez všetky príslušné fleet.

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×