Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Podsumowanie

Oprócz możliwości przedstawienia ich własnych keypairs SSH dla uwierzytelniania użytkowników, platformy Microsoft Azure opiera się na keypairs SSH, aby włączyć niektóre funkcje, które są dodawane do maszyny wirtualnej (VM) w czasie wdrażania. Niedawno Odkryto, że w niektórych scenariuszach ograniczone klucze publiczne z tych świadectw na platformie Windows Azure może być nieoczekiwanie dodane do pliku .ssh/authorized_keys. Te scenariusze są w zakresie tylko do sytuacji, w której maszyny Wirtualnej jest przygotowana przy użyciu cloud-init i użytkownik wybiera dodatkowe funkcje Azure, które są oparte na certyfikatach, takich jak tożsamość usługi kontrolowany przez system.

Nieoczekiwane zachowanie występuje z powodu zmiany w logice zastrzegania konkretnych systemów operacyjnych. Są to systemy używający cloud-init i że przypadkowo zainstalować klucz publiczny ze wszystkich certyfikatów, które są dostępne dla maszyny Wirtualnej do pliku ssh autoryzowanego klawisze podczas tworzenia maszyny Wirtualnej. 

Aby dowiedzieć się więcej, przejdź do CVE-2019-0816.

Więcej informacji

Szczegóły scenariusza

Logika cloud-init, wymieniony w sekcji "Podsumowanie" jest aktualnie znana pojawiać Azure obrazów na Ubuntu 18.04 oprócz 7.4/7.5/7.6 publicznych RHEL podglądu i CentOS 7.4 cloud-init obrazów. Mogą również istnieć w niestandardowych obrazów z następującymi systemami operacyjnymi.    Włączenie jednego z następujących funkcji podczas zastrzegania jeden z obrazów systemu Linux, może zostać wyświetlony dodatkowe, nieoczekiwane klucze w pliku .ssh/authorized_keys, takie jak następujące:

  • Tożsamości zarządzanych

  • Rozszerzenia chronionych ustawień

  • Wdrażanie maszyny Wirtualnej z kluczami magazyn kluczy w maszynie Wirtualnej

Identyfikacja i korekta istniejących maszyn wirtualnych

Identyfikowanie

Aby sprawdzić, czy masz dodatkowych kluczy, przejrzyj plik autoryzowanego klawisze (plik .ssh/authorized_keys vi) do określenia, czy zostały dodane wszelkie dodatkowe klawisze, które nie mają zostać dołączone.

To bezpieczne, aby ręcznie usunąć wszelkie dodatkowe ssh publicznego klawiszy, których mogły zostać dodane. Spowoduje to nie ma wpływu na funkcje, które są wdrożone razem z maszyny Wirtualnej. Ponadto nie wpłynie z określonym SSH parę kluczy dla uwierzytelniania.

Jeśli nie wiadomo, lub nie może rozróżnić które kluczy publicznych w pliku .ssh/authorized_keys określony dla uwierzytelniania, wykonaj następujące kroki:

  1. Przejrzyj szablony wdrażania:

    1. SSH kluczy publicznych

    2. SSH klucze w konfiguracji cloud-init

  2. Pobierz rozmieszczonych ssh klucze w czasie tworzenia od wewnątrz maszyny Wirtualnej, jeśli użytkownik ma dostęp sudo/root. Aby to zrobić, wykonaj następujące kroki:

    1. Sprawdź konfigurację cloud-init, który został przekazany w CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Należy użyć wartości CustomData i następnie dekodowania base64 użycia uzyskanie kluczy publicznych, które wdrażane: echo "<customData value>" | base64 -D

    2. Alternatywnie, sprawdź usługi danych Meta (IMDS) instancji, aby zobaczyć ssh klucz publiczny, który został przekazany w ssh publiczny klucz właściwość tworzenia maszyny Wirtualnej: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Korygowanie

Po zidentyfikowaniu dodatkowych certyfikatów, które nie zamierza wdrożyć do maszyny Wirtualnej, można usunąć te przez wymazywanie w odpowiednim wierszu z pliku authorized_keys.

Uruchom działań naprawczych przez połączenie z maszyną wirtualną interaktywnie, lub użyj rozszerzenie skryptu niestandardowego lub UruchomPolecenie (RunCommand) przez wiele maszyn wirtualnych.

Maszyny wirtualne wdrożony przy użyciu rozszerzeń, które mają być chronione ustawienia lub tożsamości zarządzanych

Aby usunąć klucze publiczne z certyfikatów, w których maszyny Wirtualnej został wdrożony z rozszerzeniami lub zarządzane tożsamości, należy użyć następującego skryptu. Spowoduje to nie Usuń klucze, które zostały określone podczas wdrażania maszyny Wirtualnej lub maszyny Wirtualnej został wdrożony za pomocą klawiszy magazyn kluczy.

Ważne

Firma Microsoft zaleca, Utwórz kopię zapasową pliku authorized_keys przed uruchomieniem tego skryptu.

 

#!/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 uruchomieniu skryptu, sprawdź plik ssh/authorized_keys, aby upewnić się, że tylko znany klucze publiczne są obecne.

Wdrażane za pomocą klucza Vault tajemnice maszyn wirtualnych

Aby określić, czy klucz został dodany po wdrożeniu z klucza magazynu kluczy, wykonaj następujące kroki:

  1. Pobierz nazwę certyfikatu magazyn kluczy, który zostanie wdrożony przy użyciu maszyny Wirtualnej, przeglądu wdrażania kodu Az CLI lub szablony ARM lub uruchomienie tego CLI Az: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlOdpowiedź pojawi się nazwa certyfikatu: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

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

  3. Wyodrębnianie klucza publicznego: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Porównaj dane wyjściowe z poprzedniego kroku do pozostałych certyfikatów w pliku ssh/authorized_keys. vi .ssh/authorized_keys file

Rozwiązanie

Obrazy Azure MarketPlace

Poprawki zostały zastosowane do cloud-init w zidentyfikowanych Azure obrazów:

  • 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

Niestandardowe obrazy

Jeśli używasz niestandardowych obrazów, które są udostępniane przez cloud-init dla znanych systemów operacyjnych, trzeba będzie zaktualizować niestandardowego obrazu źródłowego.

Obrazy Ubuntu 18.04

Aby zaktualizować niestandardowego obrazu źródłowego, należy wprowadzić następujące zmiany:

  • Edytuj następujący plik: /etc/cloud/cloud.cfg.d/90-Azure.cfg

  • Dodaj następujący kod do końca pliku.

Ważne

Kod należy dodać dokładnie tak, jak pokazano, łącznie ze spacjami.

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

RHEL 7.4/7.5/7.6 i CentOS 7,6 obrazów

Jeśli wcześniej utworzono obrazów RHEL/CentOS, wykonując powyższe czynności (lub podobnej metody), należy zaktualizować obrazu źródłowego, z którego utworzono VMs. Poniżej przedstawiono dodatkowe kroki, które są wymagane, aby dodać do istniejącej konfiguracji obrazu źródłowego maszyny Wirtualnej:

Krok 1

Edytuj następujący plik:

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

Ważne

Kod należy dodać dokładnie tak, jak pokazano, łącznie ze spacjami.

Dodaj poniższe wiersze na końcu pliku:

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

Krok 2

Aktualizacja konfiguracji agenta w następujący sposób:

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

cloud-init pakietów

Wszystkie pakiety cloud-init, które obejmują poprawki są w trakcie aktualizacji. Firma Microsoft bada ten problem i wprowadzi więcej informacji w niniejszym artykule gdy będą one dostępne.

Często zadawane pytania

Q1: Microsoft uzyskała dostęp do mojego VM?

A1: Klucze szyfrowania są używane do zarządzania tożsamościami i rozszerzenie nie są przeznaczone dla dostępu przez pracowników firmy Microsoft. Mamy procesy mające na celu monitorowanie, zaloguj się i zapobiec tego rodzaju dostępu. Ze względów bezpieczeństwa przeglądania wszystkich dzienników, aby upewnić się, bez kluczy klienta był niewłaściwy. Dla certyfikatów, które są przechowywane w magazynie kluczy odniesieniami w wdrażania maszyn wirtualnych lub VMSS pracownicy firmy Microsoft nie masz dostępu do tajemnic.

Q2: Czy wszystkie OSs cloud-init wdrożone i wersji, których dotyczy problem?

A2: Nie. Widzieliśmy ten problem kluczy obcych występują tylko w określonych systemach operacyjnych. Nie widzieliśmy to występuje w starszych wersjach Ubuntu. Jest to spowodowane tych systemów jest używany inny mechanizm zestaw kluczy publicznych.

Q3: Pakiety dotkniętych cloud-init dla dystrybucji systemu Linux zawierają poprawki?

A3: Pracujemy nad dodaniem poprawki do pakietów dla zagrożonych wersjach i ten artykuł zostanie zaktualizowany po zakończeniu tej pracy.

P4: Microsoft automatycznie zaktualizuje wszelkie VMs usterce?

A4: Nie. Microsoft nie zmieni zawartość maszyn wirtualnych, które mają już przydzielona.

P5: Nasze zasady zabezpieczeń uniemożliwiać mi pracy maszyny Wirtualnej Linux z zawartością obcych w authorized_keys. Co można zrobić to dziś?

A5: Można bezpiecznie usunąć wiersz powodujący problemy z pliku authorized_keys. Nie wpłynie to na, kluczy SSH, który został utworzony i kontroli lub tożsamości zarządzanych. Można to zrobić ręcznie lub przez uruchomienie skryptu niestandardowego lub polecenia niestandardowe we wszelkich jej podlegającym.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×