Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Аннотация

Кроме возможности предоставить свои собственные пары ключей SSH для проверки подлинности пользователей, платформе Microsoft Azure использует пары ключей SSH для включения некоторых возможностей, которые добавляются во время развертывания виртуальной машины (VM). Недавно мы обнаружили, что в некоторых случаях только открытые ключи из этих сертификатов платформы Azure может быть неожиданно добавлен файл .ssh/authorized_keys. Эти сценарии распространяются только ситуация была предоставлена виртуальной Машины с помощью init облака и пользователь выбирает дополнительные возможности Azure, основанные на сертификатах, такие как удостоверения службы, управляемые системой.

Это непредвиденное поведение возникает из-за изменения в логике подготовки от конкретной операционной системы. Это системы, которые используют облака init и случайно, установить открытый ключ из всех сертификатов, доступных для виртуальной Машины в файл ssh авторизованных ключей во время создания виртуальной Машины. 

Для получения дополнительных сведений перейдите к CVE-2019-0816.

Дополнительная информация

Подробности сценария

Логика инициализации облака, описанное в разделе «Аннотация» известно в настоящее время существует в Azure изображений для Ubuntu 18.04 Public Preview RHEL 7.4/7.5/7.6 и CentOS 7.4 облака инициализации изображения. Он также может существовать в пользовательские изображения с помощью этих операционных систем.    Если во время подготовки одно из изображений Linux включен один из перечисленных ниже возможностей может появиться дополнительные и непредвиденные ключей в файле .ssh/authorized_keys, например следующие:

  • Управляемое удостоверение

  • Расширения с помощью защищенных параметров

  • Развертывание виртуальной Машины с помощью ключа хранилища ключей на виртуальной машине

Выявления и устранения существующих виртуальных машин

Определение

Чтобы проверить, имеются ли дополнительные ключи, просмотрите файл авторизованных ключей (vi файл .ssh/authorized_keys) для определения, были ли добавлены дополнительных ключей, которые не планируется включить.

Это безопасно вручную удалить любые дополнительные ssh открытых ключей, были добавлены. Это будет не влияет на возможности, которые развертываются вместе с виртуальной Машины. Кроме того он не повлияет на указанной пары ключей SSH для проверки подлинности.

Если не знаете или не может отличить какие открытых ключей в файле .ssh/authorized_keys, указанный для проверки подлинности, выполните следующие действия.

  1. Просмотрите шаблоны развертывания:

    1. SSH открытых ключей

    2. SSH ключи в конфигурации init облака

  2. Получение развернутого ssh клавиш во время создания из внутри виртуального компьютера, при наличии доступа sudo/root. Чтобы сделать это, выполните следующие действия.

    1. Проверьте конфигурацию init облака, переданное CustomData: sudo cat /var/lib/waagent/ovf-env.xml | grep "<ns1:CustomData>"Используйте значение CustomData и затем декодировать base64 используется для получения открытых ключей, которые можно развернуть: echo "<customData value>" | base64 -D

    2. Кроме того, проверьте обновления данных метаданных экземпляра (IMDS) для просмотра ssh открытый ключ, который был передан в ssh открытого ключа свойства создания виртуальной Машины: curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/publicKeys?api-version=2018-04-02&format=json"

Исправлять

Если определены дополнительные сертификаты, которые вы не собираетесь развернуть виртуальный компьютер, можно удалить их, удалив соответствующую строку в файле authorized_keys.

Выполнение обновлений с помощью подключения к виртуальной Машине в интерактивном режиме или использовать расширение пользовательского сценария или ВыполнитьКоманду через несколько виртуальных машин.

Виртуальные машины, развернутые с помощью расширений, которые защищенные параметры или управляемое удостоверение

Используйте следующий сценарий для удаления из которых виртуальной Машины было развернуто с расширениями или управляемого удостоверения сертификатов открытых ключей. Это будет не удалить ключи, которые были указаны при развертывании виртуальной Машины или развертывания виртуальной Машины с ключом хранилища ключей.

Внимание!

Корпорация Майкрософт рекомендует создать резервную копию файла authorized_keys перед запуском этого сценария.

 

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

После выполнения сценария, проверьте файл ssh/authorized_keys убедитесь, что имеются только известные открытые ключи.

Виртуальные машины, развернутые с ключом Vault секреты

Чтобы определить ли ключ был добавлен при развертывании с помощью ключа хранилище ключей, выполните следующие действия.

  1. Получить имя хранилища ключей сертификата, который развертывается с помощью виртуальной Машины, просмотрите код развертывания Az CLI или ARM шаблонов или запустить этот Az CLI: az vm show --resource-group <resourceGroupName> --name <vmName> | grep certificateUrlОтвет будет отображать имя сертификата: "certificateUrl": "https://<keyVaultname>.vault.azure.net/secrets/<certName>/xxxxxxxxxxxxx"

  2. Загрузите сертификат: az keyvault certificate download --vault-name <keyVaultName> --name <certName> --encoding PEM --file public.pem

  3. Извлеките открытый ключ: openssl x509 -in public.pm -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

  4. Сравните выходные данные из предыдущего шага в остальные сертификаты в файле ssh/authorized_keys. vi .ssh/authorized_keys file

Решение

Azure MarketPlace изображений

Исправления были применены к облако init в указанных Azure изображений:

  • 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

Пользовательские изображения

Если вы используете пользовательские изображения, которые подготовлены, облака инициализации для известных операционных систем, необходимо обновить исходный образ.

Ubuntu 18.04 изображений

Для обновления исходного образа, необходимо внести следующие изменения:

  • Измените следующий файл: /etc/Cloud/Cloud.cfg.d/90-Azure.cfg

  • Добавьте следующий код в конец файла.

Внимание!

Код должен быть добавлен в точности так, как показано, включая пробелы.

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

RHEL 7.4/7.5/7.6 и изображения CentOS 7.6

Если вы ранее создали RHEL/CentOS изображений, выполнив следующие действия (или аналогичный метод), необходимо обновить исходное изображение, из которого создан виртуальных компьютеров. Ниже перечислены дополнительные действия, которые требуется добавить к существующей конфигурации изображения исходной виртуальной Машины.

Шаг 1

Измените следующий файл:

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

Внимание!

Код должен быть добавлен в точности так, как показано, включая пробелы.

Добавьте следующие строки в конец файла:

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

Шаг 2

Обновление конфигурации агента следующим образом:

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

пакеты init облака

Все облака init пакетов, содержащих исправления находятся в процессе обновления. Корпорация Майкрософт работает над устранением этой проблемы и опубликует дополнительную информацию в этой статье, когда информация станет доступной.

Типичные вопросы

Вопрос 1: Майкрософт получил доступ к моей виртуальной Машины?

A1: Ключи шифрования, используемые для управления удостоверениями и расширения, не предназначены для доступа сотрудниками корпорации Майкрософт. У нас есть процессы в месте для контроля, журнал и запретить этот тип доступа. В качестве предосторожности просматриваете все журналы, чтобы обеспечить клиентов ключи были неправильно. Для сертификатов, которые хранятся в хранилище ключей, на которые ссылаются при развертывании виртуальной Машины или VMSS сотрудники корпорации Майкрософт не имеют доступа к секретной информации.

Q2: Являются все облака инициализации развертывания ОС и затронутые версии?

A2: Нет. Мы видели лишние ключевые проблемы возникают только в определенных операционных системах. Мы не видели он встречается в старых версиях Ubuntu. Это потому, что эти системы используют другие механизмы для установки открытых ключей.

Q3: Уязвимой облака инициализации пакеты для дистрибутивов Linux включают исправления?

A3: Мы работаем над добавления исправлений в пакеты для уязвимых версий и эта статья будет обновлена после завершения этой работы.

4-м квартале: Microsoft автоматически обновит все затронутые виртуальных машин?

A4: Нет. Корпорация Майкрософт не изменяется содержимое виртуальных машин, которые уже подготовлены.

Вопрос 5: Нашей политики безопасности помешать работе Linux VM с Лишнее содержимое в authorized_keys. Что можно сделать об этом сегодня?

A5: Можно безопасно удалить строкой, вызвавшей ошибку из файла authorized_keys. Это не влияет на пару ключей SSH, созданный и управления или управляемое удостоверение. Это можно сделать вручную или с помощью пользовательского сценария или пользовательские команды через все затронутые флота.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×