Шифрование ВМ на уровне ОС ВМ (vTPM + Full Disk Encryption)

Платформа виртуализации поддерживает vTPM-устройства. vTPM — это виртуальное исполнение TPM-криптопроцессоров.

TPM-криптопроцессоры выполняют функции генераторов случайных чисел и отвечают за безопасное хранение ключей.

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

Для полного шифрования дисков пользователь может воспользоваться возможностями шифрования самих гостевых ОС с помощью специализированных утилит BitLocker или LUKS. Однако, после этого появится необходимость ввода парольной фразы для расшифровки дисков при каждом включении или перезагрузке ОС. В таком случае для более удобного администрирования можно воспользоваться связкой vTPM с BitLocker для ОС Windows или LUKS для ОС Unix.

vTPM будет осуществлять безопасное хранение ключей. Гостевая ОС будет загружаться автоматически и разблокировать диски с помощью ключей в vTPM.

../../_images/sch__os-encryption.png

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

Требования для реализации шифрования

Требования, предъявляемые к ВМ:

  • EFI firmware

  • vTPM

  • Secure Boot

  • Во время настройки шифрования ВМ должна быть выключенной

Поддерживаемые гостевые ОС

  • Linux

  • Windows Server 2008 и позднее

  • Windows 7 и позднее

Наличие прав

Убедитесь, что выделены права Cryptographic operations.Encrypt new. Это позволит шифровать ВМ или диски при создании.

Создание новой ВМ с шифрованием

Шифрование ВМ требует наличия виртуального устройства vTPM и UEFI, для этого существует каталог темплейтов, в котором находятся ОС с уже настроенными необходимыми параметрами. В случае отсутствия ОС в представленных темплейтах, ВМ устанавливается по стандартной процедуре (без включения ВМ), после чего необходимо обратиться в техническую поддержку для добавления vTPM и UEFI.

Далее в настройках политики HDD необходимо оставить политику без шифрования дисков, при этом общая политика Storage Policy выбирается с шифрованием.

../../_images/s__edit-vm.png

Windows Server

Провести стандартную установку ОС. Далее убедится, что функция BitLocker включена в Services, при необходимости установить пакет BitLocker через добавление ролей и функций:

../../_images/s__windows-server-features.png

Включить BitLocker через панель управления. Панель управления BitLocker находится по адресу: Control Panel → All Control Panel Items → BitLocker Drive Ecnryption.

Для проверки статуса также можно использовать команду manage-bde -status в cmd.

Для Linux

В ходе выполнения стандартной процедуры установки ОС в управлении разделами (Partition) жестких дисков выбрать вариант Guided - use entire disk and set up encrypted LVM.

Далее следовать инструкциям диалогового окна.

Можно также выбрать автоматическую дешифрацию при загрузке ОС. Для этого потребуется фреймворк clevis.

# apt install clevis-tpm2 clevis-luks clevis-dracut

Восстановите образ iniramfs с модулями clevis, чтобы расшифровать корневую файловую систему во время ранней загрузки. Это нужно сделать один раз:

# dracut -f /boot/initrd.img-$(uname -r)

Протестируйте модуль шифрования TPM. В следующем примере слова «Hello World!» шифруются и записываются в test.txt.

# echo Hello World! | clevis encrypt tpm2 '{}' > test.txt
# cat test.txt eyJhbGciOiJkaXIiLCJjbGV2aXMiOnsicGluIjoidHBtMiIsInRwbTIiOnsiaGFzaCI6InNoYTI ...
# cat test.txt | clevis decrypt tpm2
Hello World!

Привяжите главный ключ, сгенерированный TPM, к LUKS. Для этого существует специальный набор регистров конфигурации платформы (PCR), который называется PCR7.

Еще раз проверьте информацию настройки шифруемого раздела и выполните связку.

# cryptsetup luksDump /dev/sda3
# clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"7"}'
Enter existing LUKS password: ******

Еще раз проверьте настройки шифрования. Проверьте, записан ли новый ключ на том LUKS:

# cryptsetup luksDump /dev/sda3

В разделе Tokens появится clevis Key Slot.

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

# reboot

Ubuntu 18.04

Внимание

Для поддержки устройства TPM2 необходим clevis версии 12 и старше. Однако в репозитории для Ubuntu 18.04 можно скачать только версию 8, хотя clevis 12 поддерживается Ubuntu 18.04. Подробнее про пакеты. Необходмые пакеты содержатся в репозитории Ubuntu 20.04 (версия 12 является последней поддерживаемой для Ubuntu 18.04).

Для того чтобы установить clevis, добавьте следующие репозитории в /etc/apt/sources.list:

deb http://cz.archive.ubuntu.com/ubuntu focal main universe

deb http://cz.archive.ubuntu.com/ubuntu focal-updates main universe

Установите пакеты clevis:

# apt install clevis-tpm2 clevis-luks clevis-initramfs

Убедитесь, что установлены пакеты 12-1ubuntu2.3. Необходимо использовать исправленную версию, так как версия 12-1ubuntu2 включает ошибки.

../../_images/s__check-version.png

Выполните привязку шифрованного диска к устройству tpm2:

# clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"7"}'
Enter existing LUKS password: ******

В случае возникновения ошибки, связанной с тем, что TPM-устройство находится в DA lockout mode:

../../_images/s__tpm-error.png

Выполните очистку TPM устройства

#tpm2_clear

и заново инициализируйте initramfs

# update-initramfs -u -k 'all'

Перезагрузите гостевую ОС и проверьте, что команды были выполнены без ошибок.

Внимание

При перезагрузке появится предложение о вводе парольной фразы. Через секунду она заполнится, и загрузка продолжится.

# reboot

Удалите раннее добавленные focal репозитории из /etc/apt/sources.list.

Ubuntu 20.04

Установите пакеты clevis:

# apt install clevis-tpm2 clevis-luks clevis-initramfs

Выполните привязку шифрованного диска с устройством tpm2:

# clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"7"}'
Enter existing LUKS password: ******

Заново инициализируйте initramfs:

# update-initramfs -u -k 'all'

Перезагрузите гостевую ОС и проверьте, что команды были выполнены без ошибок.

Внимание

При перезагрузке появится предложение о вводе парольной фразы. Через секунду она заполнится, и загрузка продолжится.

# reboot

Шифрование кастомной ВМ

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

Внимание

После настройки конфигураций устройств ВМ нельзя инициализировать ОС (включать ВМ).

Шифрование ВМ требует наличия виртуального устройства vTPM и UEFI. Обратитесь в техническую поддержку, чтобы добавить vTPM и UEFI для вашей виртуальной машины.

После добавления необходимых виртуальных устройств измените конфигурацию ВМ в части общей политики Storage Policy и политику непосредственно HDD. Оставьте политику без шифрования дисков, при этом общая политика Storage Policy выберите с шифрованием.

Способы шифрования могут отличаться для разных дистрибутивов ОС. Некоторые установщики предлагают использовать шифрование при разметке диска, другие — требуют дополнительные утилиты, например, LUKS в связке clevis.

Смена парольной фразы в шифрованной ВМ из каталога (Linux)

Парольная фраза в шифрованной ВМ по умолчанию — ChangeMe. Чтобы ее изменить:

  1. Файл /etc/crypttab содержит информацию о зашифрованных файловых системах LUKS, просмотрите его с помощью команды cat:

    sudo cat /etc/crypttab
    
    sda3_crypt UUID=42e50ed0-5055-45f5-b1fc-0f54669e6d1f none luks,discard>
    

    Шифрованным диском является sda3_crypt. В вашей системе вы можете увидеть другое имя.

  2. Получите информацию о вашем зашифрованном диске /dev/sda3:

    sudo cryptsetup luksDump /dev/sda3
    

    В выводе вы получите информацию о LUKS заголовке диска или раздела, в том числе key slot.

  3. Проверьте правильность установленной парольной фразы ChangeMe:

    sudo cryptsetup --verbose open --test-passphrase /dev/sda3
    

    Key slot должен соответствовать key slot из предыдущего шага.

  4. Смените парольную фразу ChangeMe:

    sudo cryptsetup luksChangeKey /dev/sda3 -S 0
    
  5. Проверьте применение новой парольной фразы:

    sudo cryptsetup --verbose open --test-passphrase /dev/sda3
    

Расширение дискового пространства (Linux)

Для добавления нового диска в шифрованное пространство используйте утилиту LVM.

  1. Проверьте информацию, выводимую командой # df -h.

  2. Проверьте информацию по текущей группе томов. Обратите внимание на количество подключенных физических томов и размер.

    # vgdisplay < Volume-Group-Name>
    
  3. Расширьте группу томов, подключив новый диск:

    # vgextend < Volume-Group-Name> /dev/new-disk
    Volume group "vg" successfully extended
    
  4. Проверьте еще раз информацию о группе томов. Дисковое пространство и количество физических томов будет увеличено.

    # vgdisplay < Volume-Group-Name>
    
  5. Проверьте информацию логического тома. В логическом томе дисковое пространство еще не будет расширено.

    # lvdisplay < Logical-Volume-Name>
    
  6. Для расширения дискового пространства выполните команду:

    # lvextend < Volume-Group-Name/Logical-Volume-Name> -l +100%FREE -r
    
  7. Проверьте дисковый размер командой # df -h.

Запустили Evolution free tier
для Dev & Test
Получить