Разблокировка зашифрованного диска Linux для автономного восстановления
Область применения: ✔️ виртуальные машины Linux
В этой статье описывается, как разблокировать диск ОС с поддержкой Шифрование дисков Azure (ADE) для автономного восстановления.
Шифрование дисков Azure можно применить к виртуальным машинам Linux, поддерживаемым корпорацией Майкрософт. Ниже приведены некоторые основные требования для включения Шифрование дисков Azure на виртуальных машинах Linux:
- Azure Key Vault
- Командлеты Azure CLI или Windows PowerShell
- Device-mapper (DM)-Crypt
Симптомы
Если ADE включен на диске ОС, после попытки подключения диска на виртуальной машине восстановления могут появиться следующие сообщения об ошибках:
mount: wrong fs type, bad option, bad superblock on /dev/sda2, missing codepage or helper program, or other error
mount: неизвестный тип файловой системы "LVM2_member"
Подготовка
Прежде чем разблокировать зашифрованный диск ОС для автономного восстановления, выполните следующие задачи:
- Убедитесь, что ADE включен на диске.
- Определите, использует ли диск ОС версию ADE версии 0 (двойное сквозное шифрование) или ADE версии 1 (однопроходное шифрование).
- Определите, управляется ли диск ОС или неуправляем.
- Выберите метод для разблокировки зашифрованного диска.
Убедитесь, что ADE включен на диске
Этот шаг можно выполнить в портал Azure, PowerShell или интерфейсе командной строки Azure (Azure CLI).
Портал Azure
Просмотрите колонку обзора для неудачной виртуальной машины в портал Azure. Под диском запись шифрования дисков Azure будет отображаться как включено или не включено, как показано на следующем снимке экрана.
PowerShell
С помощью командлета Get-AzVmDiskEncryptionStatus
можно определить, шифруются ли ос или тома данных для виртуальной машины с помощью ADE. В следующем примере выходных данных указывается, что шифрование ADE включено в томе ОС:
Get-AzVmDiskEncryptionStatus -ResourceGroupName "ResourceGroupName" -VMName "VmName"
Дополнительные сведения о командлете Get-AzureRmDiskEncryptionStatus
см. в разделе Get-AzVMDiskEncryptionStatus (Az.Compute).
Azure CLI
С помощью az vm encryption show
команды можно проверить, включена ли ADE на дисках виртуальных машин:
az vm encryption show --name MyVM --resource-group MyResourceGroup --query "disks[].encryptionSettings[].enabled"
Дополнительные сведения о команде az vm encryption show
см. в статье az vm encryption show.
Примечание.
Если ADE не включен на диске, ознакомьтесь со следующей статьей, чтобы узнать, как подключить диск к виртуальной машине восстановления: устранить неполадки с виртуальной машиной Linux, подключив диск ОС к виртуальной машине восстановления.
Определите, используется ли диск ОС ADE версии 0 (двойное сквозное шифрование) или ADE версии 1 (однопроходное шифрование).
Вы можете определить версию ADE в портал Azure, открыв свойства виртуальной машины, а затем выбрав расширения, чтобы открыть колонку "Расширения". В колонке "Расширения" просмотрите номер версии AzureDiskEncryptionForLinux.
- Если номер версии равен
0.*
, диск использует двойное шифрование. - Если номер версии или
1.*
более поздняя версия, диск использует однопроходное шифрование.
Если диск использует ADE версии 0 (двойное шифрование), используйте метод 3 для разблокировки диска.
Определение управляемого или неуправляемого диска ОС
Если вы не знаете, управляется ли диск ОС или неуправляем, см. статью "Определение того, управляется ли диск ОС" или неуправляем.
Если диск ОС является неуправляемым, выполните действия, описанные в методе 3 , чтобы разблокировать диск.
Выберите метод для разблокировки зашифрованного диска
Выберите один из следующих методов, чтобы разблокировать зашифрованный диск:
- Если диск управляется и шифруется с помощью ADE версии 1, а инфраструктура и политика компании позволяют назначить общедоступный IP-адрес виртуальной машине восстановления, используйте метод 1. Разблокируйте зашифрованный диск автоматически с помощью команды az vm repair.
- Если диск управляется и шифруется с помощью ADE версии 1, но инфраструктура или политика компании не позволяют назначить общедоступный IP-адрес виртуальной машине восстановления, используйте метод 2. Разблокируйте зашифрованный диск файлом ключей в томе BEK. Другой причиной выбора этого метода является отсутствие разрешений на создание группы ресурсов в Azure.
- Если один из этих методов завершается ошибкой, или если диск неуправляем или зашифрован с помощью ADE версии 0 (двойное сквозное шифрование), выполните действия, описанные в методе 3 , чтобы разблокировать диск.
Метод 1. Автоматическое разблокирование зашифрованного диска с помощью команды az vm repair
Этот метод использует команды az vm repair , чтобы автоматически создать виртуальную машину восстановления, подключить диск ОС виртуальной машины Linux к этой виртуальной машине восстановления, а затем разблокировать диск, если он зашифрован. Этот метод требует использования общедоступного IP-адреса для виртуальной машины восстановления, и он разблокирует зашифрованный диск независимо от того, раскроется ли ключ ADE или упаковывается с помощью ключа шифрования ключей (KEK).
Чтобы восстановить виртуальную машину с помощью этого автоматизированного метода, выполните действия, описанные в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.
Если инфраструктура и политика компании не позволяют назначать общедоступный IP-адрес или если az vm repair
команда не разблокирует диск, перейдите к следующему методу.
Метод 2. Разблокировка зашифрованного диска по файлу ключа в томе BEK
Чтобы разблокировать и подключить зашифрованный диск вручную, выполните следующие действия.
Создайте новую виртуальную машину восстановления и подключите зашифрованный диск к этой виртуальной машине во время создания виртуальной машины.
При создании виртуальной машины восстановления необходимо подключить зашифрованный диск. Это связано с тем, что система обнаруживает, что подключенный диск зашифрован. Таким образом, он извлекает ключ ADE из хранилища ключей Azure, а затем создает новый том с именем BEK VOLUME для хранения файла ключа.
Определите файл заголовка в загрузочной секции зашифрованной ОС.
Разблокируйте зашифрованный диск с помощью файла ключа ADE и файла заголовка.
Подключите секцию: LVM, RAW или non-LVM.
Создание виртуальной машины восстановления
Создайте диск из моментального снимка. Для нового диска выберите то же расположение и зону доступности, что и виртуальная машина проблемы, которую требуется восстановить.
Создайте виртуальную машину, основанную на следующих рекомендациях:
- В Azure Marketplace выберите тот же образ для виртуальной машины восстановления, которая использовалась для неудающейся виртуальной машины. (Версия ОС должна быть той же.)
- Выберите размер, который выделяет не менее 8 ГБ памяти виртуальной машине.
- Назначьте эту новую виртуальную машину той же группе ресурсов, региону и параметрам доступности, которые вы использовали для нового диска, созданного на шаге 2.
На странице "Диски" мастера создания виртуальной машины подключите новый диск (только что созданный из моментального снимка) в качестве диска данных.
Внимание
Так как параметры шифрования обнаруживаются только во время создания виртуальной машины, убедитесь, что при создании виртуальной машины вы подключаете диск. Это позволяет автоматически добавлять том, содержащий файл ключа ADE.
Отключение подключенных секций на зашифрованном диске
После создания виртуальной машины восстановления SSH на виртуальную машину восстановления войдите в систему с помощью соответствующих учетных данных, а затем поднимите учетную запись в корневой каталог:
sudo -s
Вывод списка подключенных устройств с помощью команды lsblk . В выходных данных должно появиться несколько подключенных дисков. Эти диски включают активный диск ОС и зашифрованный диск. Они могут отображаться в любом порядке.
Определите зашифрованный диск с помощью следующих сведений:
- Диск будет иметь несколько секций
- Диск не будет перечислять корневой каталог ("/") как точку подключения для любой из его секций.
- Диск будет соответствовать размеру, который вы указали при создании из моментального снимка.
В следующем примере выходные данные указывают на то, что sdd является зашифрованным диском. Это единственный диск с несколькими секциями и не перечисляющий "/" в качестве точки подключения.
Отключите все секции на зашифрованном диске данных, подключенном в файловой системе. Например, в предыдущем примере необходимо отключить как "/boot/efi", так и "/boot".
umount /boot/efi umount /boot
Определение файла ключа ADE
Для разблокировки зашифрованного диска необходимо использовать файл ключа и файл заголовка. Файл ключа хранится в томе BEK, а файл заголовка находится в загрузочном разделе зашифрованного диска ОС.
Определите, какой раздел является томом BEK:
lsblk -fs | grep -i bek
В следующем примере выходных данных указывается, что sdb1 — это том BEK:
>sdb1 vfat BEK VOLUME 04A2-FE67
Если том BEK не существует, повторно создайте виртуальную машину восстановления, подключив зашифрованный диск. Если том BEK по-прежнему не присоединяется автоматически, попробуйте использовать метод 3 , чтобы получить том BEK.
Создайте каталог с именем "azure_bek_disk" в папке "/mnt":
mkdir /mnt/azure_bek_disk
Подключите том BEK в каталоге "/mnt/azure_bek_disk". Например, если sdb1 является томом BEK, введите следующую команду:
mount /dev/sdb1 /mnt/azure_bek_disk
Снова укажите доступные устройства:
lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT
Примечание. Вы увидите, что раздел, который вы определили, что том BEK теперь подключен в "/mnt/azure_bek_disk".
Просмотрите содержимое в каталоге "/mnt/azure_bek_disk/":
ls -l /mnt/azure_bek_disk
В выходных данных должны отображаться следующие файлы (файл ключа ADE — LinuxPassPhraseFileName):
>total 1 -rwxr-xr-x 1 root root 148 Aug 4 01:04 CRITICAL_DATA_WARNING_README.txt -r-xr-xr-x 1 root root 172 Aug 4 01:04 LinuxPassPhraseFileName
Если к зашифрованной виртуальной машине подключено несколько дисков LinuxPassPhraseFileName. Значение "LinuxPassPhraseFileName" будет перечислено в соответствии с количеством дисков в том же порядке, что и их логические номера единиц (LUN).
Определение файла заголовка
Загрузочный раздел зашифрованного диска содержит файл заголовка. Этот файл будет использоваться вместе с файлом ключа LinuxPassPhraseFileName для разблокировки зашифрованного диска.
Используйте следующую команду, чтобы отобразить выбранные атрибуты доступных дисков и секций:
lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT
На зашифрованном диске определите секцию ОС (корневую секцию). Это самая большая секция на зашифрованном диске. В предыдущем примере выходных данных раздел ОС — sda4. Этот раздел необходимо указать при выполнении команды разблокировки.
В корневом каталоге ("/") структуры файла создайте каталог, к которому необходимо подключить корневую секцию зашифрованного диска. Вы будете использовать этот каталог позже после разблокировки диска. Чтобы отличить его от активной секции ОС для виртуальной машины восстановления, присвойте ему имя "расследовать".
mkdir /{investigateboot,investigateroot}
На зашифрованном диске определите загрузочный раздел, содержащий файл заголовка. На зашифрованном диске загрузочный раздел является вторым по величине разделом, который не показывает значения в столбце LABEL или PARTLABEL. В предыдущем примере выходных данных загрузочный раздел зашифрованного диска — sda2.
Подключите загрузочный раздел, который вы определили на шаге 4, в каталог /investigateboot/. В следующем примере загрузочный раздел зашифрованного диска — sda2. Однако расположение в системе может отличаться.
mount /dev/sda2 /investigateboot/
Если подключение секции завершается сбоем и возвращает сообщение об ошибке "неправильный тип fs, неправильный параметр, плохой суперблок", повторите попытку с помощью
mount -o nouuid
команды, как показано в следующем примере:mount -o nouuid /dev/sda2 /investigateboot/
Список файлов, которые находятся в каталоге /расследуемого файла. Подкаталог "luks" содержит файл заголовка, который необходимо разблокировать диск.
Список файлов, которые находятся в каталоге /расследуемого или luks/. Файл заголовка называется osluksheader.
ls -l /investigateboot/luks
Использование файла ключа ADE и файла заголовка для разблокировки диска
cryptsetup luksOpen
Используйте команду, чтобы разблокировать корневую секцию на зашифрованном диске. Например, если путь к корневой секции, содержащей зашифрованную ОС, имеет значение /dev/sda4, и вы хотите назначить имя osencrypt разблокированной секции, выполните следующую команду:cryptsetup luksOpen --key-file /mnt/azure_bek_disk/LinuxPassPhraseFileName --header /investigateboot/luks/osluksheader /dev/sda4 osencrypt
Теперь, когда вы разблокировали диск, отключите загрузочный раздел зашифрованного диска из каталога /investigateboot/:
umount /investigateboot/
Примечание. Позже необходимо подключить эту секцию к другому каталогу.
Следующим шагом является подключение секции, которую вы только что разблокировали. Метод, используемый для подключения секции, зависит от платформы сопоставления устройств (LVM или non-LVM), используемой диском.
Вывод сведений об устройстве вместе с типом файловой системы:
lsblk -o NAME,FSTYPE
Вы увидите разблокированную секцию и имя, назначенное ему (в нашем примере это имя osencrypt):
- Сведения о секции LVM, например "LVM_member", см. в разделе "Подключение секцииLVM" RAW или non-LVM.
- Сведения о секции, отличной от LVM, см. в разделе "Подключение секции, отличной от LVM".
Подключите разблокированную секцию и введите среду chroot (только LVM)
Если диски используют платформу mapper устройств LVM, необходимо выполнить дополнительные действия, чтобы подключить диск и ввести среду chroot. Чтобы использовать средство chroot вместе с зашифрованным диском, разблокированную секцию ("osencrypt") и ее логические тома необходимо распознать как группу томов, которая называется rootvg. Однако по умолчанию секция ОС восстановления виртуальной машины и ее логические тома уже назначены группе томов с именем rootvg. Перед продолжением мы должны устранить этот конфликт.
pvs
Используйте команду для отображения свойств физических томов LVM. В следующем примере могут отображаться предупреждающие сообщения, указывающие, что разблокированный раздел ("/dev/mapper/osencrypt") и другое устройство использует повторяющиеся универсальные уникальные идентификаторы (UUID). Кроме того, вы можете увидеть две секции, назначенные rootvg.Примечание.
Необходимо назначить группе томов rootvg только разблокированную секцию (osencrypt), чтобы получить доступ к логическим томам через служебную программу chroot. Чтобы устранить эту проблему, вы временно импортируете секцию в другую группу томов и активируете эту группу томов. Затем переименуйте текущую группу томов rootvg. Только после ввода среды chroot вы переименовываете группу томов зашифрованного диска в качестве rootvg.
Назначение разблокированного раздела (пример)
Импортируйте только что разблокированную секцию в новую группу томов. В этом примере мы временно именуем новую группу томов "rescuemevg". Импортируйте только что разблокированную секцию в новую группу томов. В этом примере мы временно именуем новую группу томов "rescuemevg".
Активируйте новую группу томов:
vgimportclone -n rescuemevg /dev/mapper/osencrypt vgchange -a y rescuemevg
Переименуйте старую группу томов rootvg. В этом примере мы будем использовать имя oldvg.
vgrename rootvg oldvg
Выполните проверку
lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT
доступных устройств. Теперь вы увидите обе группы томов, перечисленные именами, назначенными им.Подключите логический том rescuemevg/rootlv к каталогу /investigateroot/ без использования повторяющихся идентификаторов UUID:
umount /investigateboot mount -o nouuid /dev/rescuemevg/rootlv /investigateroot/
Теперь корневая секция неудачной виртуальной машины разблокирована и подключена, и вы сможете получить доступ к корневой секции для устранения неполадок. Дополнительные сведения см. в разделе "Устранение неполадок с загрузкой виртуальной машины Linux из-за ошибок файловой системы".
Однако если вы хотите использовать служебную программу chroot для устранения неполадок, выполните следующие действия.
Подключите загрузочный раздел зашифрованного диска к каталогу /investigateroot/boot/ без использования повторяющихся идентификаторов UUID. (Помните, что загрузочный раздел зашифрованного диска является вторым по величине, который не назначен меткой секции.) В нашем текущем примере загрузочный раздел зашифрованного диска — sda2.
mount -o nouuid /dev/sda2 /investigateroot/boot
Подключите системную секцию EFI зашифрованного диска к каталогу /investigateroot/boot/efi. Эту секцию можно определить по метки. В нашем текущем примере системный раздел EFI — sda1.
mount /dev/sda1 /investigateroot/boot/efi
Подключите оставшиеся логические тома в группе томов зашифрованного диска к подкаталогам "/investigateroot/":
mount -o nouuid /dev/mapper/rescuemevg-varlv /investigateroot/var mount -o nouuid /dev/mapper/rescuemevg-homelv /investigateroot/home mount -o nouuid /dev/mapper/rescuemevg-usrlv /investigateroot/usr mount -o nouuid /dev/mapper/rescuemevg-tmplv /investigateroot/tmp mount -o nouuid /dev/mapper/rescuemevg-optlv /investigateroot/opt
Измените active directory на подключенную корневую секцию на зашифрованном диске:
cd /investigateroot
Введите следующие команды для подготовки среды chroot:
mount -t proc proc proc mount -t sysfs sys sys/ mount -o bind /dev dev/ mount -o bind /dev/pts dev/pts/ mount -o bind /run run/
Введите среду chroot:
chroot /investigateroot/
Переименуйте группу томов rescuemevg в rootvg, чтобы избежать конфликтов или возможных проблем с grub и initramfs. При повторном создании инициамов сохраните то же соглашение об именовании. Из-за изменений имени vg работа на виртуальной машине спасения. Он больше не будет полезен, если перезапустить его. Виртуальная машина спасения должна рассматриваться как временная виртуальная машина.
vgrename rescuemevg rootvg
Устранение неполадок в среде chroot. Например, можно считывать журналы или запускать скрипт. Дополнительные сведения см. в разделе "Выполнение исправлений" в среде chroot.
Подключите разблокированный диск и введите среду chroot (RAW/non-LVM)
В корневом каталоге ("/") структуры файла создайте каталог, в который необходимо подключить корневую секцию зашифрованного диска. Вы будете использовать этот каталог позже после разблокировки диска. Чтобы отличить его от активной секции ОС для виртуальной машины восстановления, присвойите ей имя "расследовать".
mkdir /{investigateboot,investigateroot}
Подключите только что разблокированную секцию ("osencrypt") к каталогу /расследователя/
mount /dev/mapper/osencrypt /investigateroot/
Если подключение секции завершается сбоем и возвращает сообщение об ошибке "неправильный тип fs, неправильный параметр, неправильный суперблок", повторите попытку с помощью команды подключения
-o nouuid
:mount -o nouuid /dev/mapper/osencrypt /investigateroot/
Попробуйте отобразить содержимое каталога /investigateroot/, чтобы убедиться, что подключенная секция теперь разблокирована:
ls /investigateroot/
Теперь корневая секция неудачной виртуальной машины разблокирована и подключена, вы можете получить доступ к корневой секции для устранения неполадок. Дополнительные сведения см. в разделе "Устранение неполадок с загрузкой виртуальной машины Linux из-за ошибок файловой системы".
Однако если вы хотите использовать программу chroot для устранения неполадок, перейдите к следующему шагу.
Используйте команду
lsblk -o NAME,SIZE,LABEL,PARTLABEL,MOUNTPOINT
для просмотра доступных устройств. Определите загрузочную секцию на зашифрованном диске как вторую по величине секцию, которая не назначена метки.Подключите загрузочный раздел на зашифрованном диске к каталогу "/расследуемая/загрузка/", как показано в следующем примере:
mount /dev/sdc2 /investigateroot/boot/
Измените active directory на подключенную корневую секцию на зашифрованном диске:
cd /investigateroot
Введите следующие команды для подготовки среды chroot:
mount -t proc proc proc mount -t sysfs sys sys/ mount -o bind /dev dev/ mount -o bind /dev/pts dev/pts/ mount -o bind /run run/
Введите среду chroot:
chroot /investigateroot/
Устранение неполадок в среде chroot. Журналы можно считывать или запускать скрипт. Дополнительные сведения см. в разделе "Выполнение исправлений" в среде chroot.
Метод 3. Повторное шифрование диска для извлечения файла ключа и разблокировка зашифрованного диска
Создайте виртуальную машину восстановления и подключите копию заблокированного диска к виртуальной машине восстановления:
- Сведения об управляемом диске см. в статье "Устранение неполадок виртуальной машины Linux путем подключения управляемого диска ОС к виртуальной машине восстановления".
- Для неуправляемого диска используйте Обозреватель службы хранилища, чтобы создать копию диска ОС затронутой виртуальной машины. Дополнительные сведения см. в статье "Подключение неуправляемого диска к виртуальной машине для автономного восстановления".
После подключения зашифрованного диска в качестве диска данных к виртуальной машине восстановления используйте key Vault и ключ key Encrypted (KEK), который использовался для исходной виртуальной машины для повторного шифрования этого диска данных. Этот процесс автоматически создает и подключает том BEK с помощью файла ключа BKE на виртуальной машине восстановления. Не следует использовать параметр EncryptFormatAll , так как расширение ADE может зашифровать загрузочный сектор на диске данных.
Если исходная виртуальная машина зашифрована оболочкой BEK, выполните следующую команду.
az vm encryption enable -g "resource group" --name "VMName" --disk-encryption-keyvault "keyvault" --key-encryption-key "kek" --volume-type "data"
Если исходная виртуальная машина зашифрована BEK, выполните следующую команду:
az vm encryption enable -g "resource group" --name "VMName" --disk-encryption-keyvault "keyvault" --volume-type "data"
Чтобы определить значения для диска-encryption-keyvault и key-encryption-key, выполните следующую команду:
az vm encryption show --name "OriginalVmName" --resource-group "ResourceGroupName"
В следующей таблице найдите значения в выходных данных. Если значение keyEncryptionKey пусто, виртуальная машина шифруется bek.
Параметр Значение в выходных данных Пример disk-encryption-keyvault diskEncryptionKey:id /subscriptions/deb73ff9-0000-0000-0000-000c7a96d37/resourceGroups/Thomas/providers/Microsoft.KeyVault/vaults/ContosoKeyvault ключ шифрования ключей keyEncryptionKey:KeyURI https://ContosoKeyvault.vault.azure.net/keys/mykey/00000000987145a3b79b0ed415fa0000
Выполните следующую команду, чтобы проверить, подключен ли новый диск:
lsblk -f
Если новый диск подключен, перейдите к разделу "Идентификация файла ключа ADE" в томе BEK, а затем выполните указанные действия, чтобы разблокировать диск.
Следующие шаги
Если у вас возникли проблемы с подключением к виртуальной машине, ознакомьтесь с разделом "Устранение неполадок подключений SSH к виртуальной машине Azure".
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.