Вариант использования
У меня есть машина сервера Ubuntu, перенесенная в VM (vmdk файл), который содержит веб-приложение. Я хочу отправить этот VM кому-то и препятствовать тому, чтобы он получил доступ к внутренней файловой системе VM - я не хочу позволять ему извлечь файловую систему машины из vmdk файла.
Пользователь может только запустить машину или выключить ее (когда машина запускается - она загружает серверные службы приложения автоматически).
Решения?
Я, хотя об использовании шифрования жесткого диска (Полное шифрование диска с помощью LUKS или других решений как VeraCrypt), но мое основное беспокойство то, как это будет использоваться в серверной среде.
Я не хочу позволять пользователю для ввода любых ключей расшифровки или чего-то как этот - я видел, что существуют решения для дешифрования файловой системы автоматически в запуске как здесь и здесь и кажется, что я должен сохранить ключи расшифровки в vm.
Существует ли способ дешифровать машину, возможно, используя вход в систему удаленного пользователя? (Я менее заинтересован от более сложных вопросов как атаки по сторонним каналам или Горячий VM, Клонирующийся). Или какое-либо другое решение, которое может встретить вариант использования?
Обновление
После того, как @vidarlo отвечают, что я решил пойти с решением FDE, поняв компромисс.
Ниже инструкций по конфигурации я использовал (Предположите, что начальная загрузка / находится на/dev/sda1, незашифрованный раздел и зашифрованный находятся на/dev/sdaX разделе).
Создайте новый случайный пароль и сохраните его в базе ключей удач:
sudo dd if=/dev/urandom of=/boot/keyfile bs=1024 count=4
sudo chmod 0400 /boot/keyfile
sudo cryptsetup luksAddKey /dev/sdaX /boot/keyfile
Получите UUID/dev/sda1 раздела путем выполнения:
sudo ls -l /dev/disk/by-uuid/
Обновите /etc/crypttab
файл с этим содержанием:
sdaX_crypt UUID=<UUID_OF_SDAX> /dev/disk/by-uuid/<UUID_OF_SDA1>:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
Обновите initramfs
sudo update-initramfs -u
Перезагрузка
sudo reboot
Можно настроить решение с незашифрованным /boot
, и файл ключей LUKS:
sudo cryptsetup luksAddKey /dev/sdx1 /boot/random_data_keyfile1
Изменить /etc/crypttab
подходить:
sda5_crypt UUID=DEVICE_UUID /dev/disk/by-uuid/devicewithkey:/random_data_keyfile1 luks,keyscript=/lib/cryptsetup/scripts/passdev
Это не является надежным. Любой удаленно квалифицированный взломщик найдет незашифрованный /boot
, и файл ключей. Можно затенить его, чтобы мешать, но в конечном счете проблема неразрешима.
Вы хотите, чтобы человек смог выполнить виртуальную машину, все же не могущую получить доступ к нему. Выполнение требует доступа. Худший случай? Приостановите VM и исследуйте память VM. Любой, который управляет гипервизором, имеет полный контроль над VM, почти независимо от того, что Вы делаете.