- tocdepth
2
Шифрование ВМ на уровне ОС ВМ (vTPM + Full Disk Encryption)
Платформа виртуализации поддерживает vTPM-устройства. vTPM — это виртуальное исполнение TPM-криптопроцессоров.
TPM-криптопроцессоры выполняют функции генераторов случайных чисел и отвечают за безопасное хранение ключей.
В случае с vTPM обеспечение безопасного хранения ключей осуществляется за счет того, что гипервизор записывает эти ключи в файл nvram виртуальной машины, который зашифрован с использованием шифрования виртуальной машины.
Для полного шифрования дисков пользователь может воспользоваться возможностями шифрования самих гостевых ОС с помощью специализированных утилит BitLocker или LUKS. Однако, после этого появится необходимость ввода парольной фразы для расшифровки дисков при каждом включении или перезагрузке ОС. В таком случае для более удобного администрирования можно воспользоваться связкой vTPM с BitLocker для ОС Windows или LUKS для ОС Unix.
vTPM будет осуществлять безопасное хранение ключей. Гостевая ОС будет загружаться автоматически и разблокировать диски с помощью ключей в vTPM.
В случае потребности шифрования дисков ВМ на уровне гостевой ОС ВМ можно организовать шифрование конфигурационных файлов ВМ без шифрования дисков средствами виртуальной платформы с целью исключения двойного шифрования.
Требования для реализации шифрования
Требования, предъявляемые к ВМ:
EFI firmware
vTPM
Secure Boot
Во время настройки шифрования ВМ должна быть выключенной
Поддерживаемые гостевые ОС
Linux
Windows Server 2008 и позднее
Windows 7 и позднее
Наличие прав
Убедитесь, что выделены права Cryptographic operations.Encrypt new. Это позволит шифровать ВМ или диски при создании.
Создание новой ВМ с шифрованием
Шифрование ВМ требует наличия виртуального устройства vTPM и UEFI, для этого существует каталог темплейтов, в котором находятся ОС с уже настроенными необходимыми параметрами. В случае отсутствия ОС в представленных темплейтах, ВМ устанавливается по стандартной процедуре (без включения ВМ), после чего необходимо обратиться в техническую поддержку для добавления vTPM и UEFI.
Далее в настройках политики HDD необходимо оставить политику без шифрования дисков, при этом общая политика Storage Policy выбирается с шифрованием.
Windows Server
Провести стандартную установку ОС. Далее убедится, что функция BitLocker включена в Services, при необходимости установить пакет BitLocker через добавление ролей и функций:
Включить BitLocker через панель управления. Панель управления BitLocker находится по адресу:
.Для проверки статуса также можно использовать команду 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 включает ошибки.
Выполните привязку шифрованного диска к устройству tpm2:
# clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"7"}'
Enter existing LUKS password: ******
В случае возникновения ошибки, связанной с тем, что TPM-устройство находится в DA lockout mode:
Выполните очистку 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. Чтобы ее изменить:
Файл /etc/crypttab содержит информацию о зашифрованных файловых системах LUKS, просмотрите его с помощью команды cat:
sudo cat /etc/crypttab sda3_crypt UUID=42e50ed0-5055-45f5-b1fc-0f54669e6d1f none luks,discard>
Шифрованным диском является sda3_crypt. В вашей системе вы можете увидеть другое имя.
Получите информацию о вашем зашифрованном диске /dev/sda3:
sudo cryptsetup luksDump /dev/sda3
В выводе вы получите информацию о LUKS заголовке диска или раздела, в том числе key slot.
Проверьте правильность установленной парольной фразы ChangeMe:
sudo cryptsetup --verbose open --test-passphrase /dev/sda3
Key slot должен соответствовать key slot из предыдущего шага.
Смените парольную фразу ChangeMe:
sudo cryptsetup luksChangeKey /dev/sda3 -S 0
Проверьте применение новой парольной фразы:
sudo cryptsetup --verbose open --test-passphrase /dev/sda3
Расширение дискового пространства (Linux)
Для добавления нового диска в шифрованное пространство используйте утилиту LVM.
Проверьте информацию, выводимую командой # df -h.
Проверьте информацию по текущей группе томов. Обратите внимание на количество подключенных физических томов и размер.
# vgdisplay < Volume-Group-Name>
Расширьте группу томов, подключив новый диск:
# vgextend < Volume-Group-Name> /dev/new-disk Volume group "vg" successfully extended
Проверьте еще раз информацию о группе томов. Дисковое пространство и количество физических томов будет увеличено.
# vgdisplay < Volume-Group-Name>
Проверьте информацию логического тома. В логическом томе дисковое пространство еще не будет расширено.
# lvdisplay < Logical-Volume-Name>
Для расширения дискового пространства выполните команду:
# lvextend < Volume-Group-Name/Logical-Volume-Name> -l +100%FREE -r
Проверьте дисковый размер командой # df -h.
для Dev & Test