Есть ли способ зашифровать диск без его форматирования?

Будьте осторожны с такими предположениями относительно Linux. Linux был оптимизирован для создания впечатления скорости в отношении файловых систем вместо оптимизации реальной скорости.

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

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

3
27.08.2018, 03:53
2 ответа

Из часто задаваемых вопросов LUKShttps://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#2-setup

2.5 Can I encrypt an already existing, non-empty partition to use LUKS?

There is no converter, and it is not really needed. The way to do
this is to make a backup of the device in question, securely wipe the device (as LUKS device initialization does not clear away old data),
do a luksFormat, optionally overwrite the encrypted device, create a
new filesystem and restore your backup on the now encrypted device.
Also refer to sections "Security Aspects" and "Backup and Data
Recovery".

For backup, plain GNU tar works well and backs up anything likely to be in a filesystem.*

Однако вы можете изучитьhttps://johndoe31415.github.io/luksipc/usage.html#plain-to-luks-conversion"Преобразование простого в LUKS", которое может удовлетворить ваши требования. Отказ от ответственности :Я никогда не пробовал это, я не знаю, работает ли это, и, похоже, проект не обновлялся с 2015 года.

8
27.01.2020, 21:21

Да, есть способ. Утилита LUKS cryptsetupсодержит команду reencrypt , которую вы также можете использовать для шифрования существующего незашифрованного корневого раздела, то есть без разрушения существующей файловой системы.

Тем не менее, перед выполнением такого преобразования вы все равно должны сделать резервную копию своих данных. Конечно, всегда следует выполнять резервное копирование по регулярному расписанию из-за возможного сбоя оборудования и т. д. Таким образом, это своего рода избыточный совет.

Для переключения существующей корневой файловой системы с незашифрованной на зашифрованную требуется несколько шагов:

  1. резервная копия
  2. убедитесь, что установлен пакет cryptsetup
  3. убедитесь, что в вашей корневой файловой системе есть свободное место (не менее 100 МБ на всякий случай)
  4. укажите раздел, на котором расположен ваш корневой раздел :, например. с df /,найдите UUID файловой системы с помощью blkidи сохраните его где-нибудь
  5. загрузитесь в аварийную систему, где вы сможете размонтировать корневую файловую систему (, например. загрузитесь с USB-накопителя, который содержит -, скажем-Grml)
  6. найдите корневой раздел (, например. с blkidи найдите UUID)
  7. если это ext4 выполнить проверку файловой системы:e2fsck -f /dev/sdXY
  8. уменьшить файловую систему, чтобы освободить место для заголовка LUKS, например. если это файловая система ext4 :resize2fs /dev/sdXY $smallersizeinGiB_G(, вам нужно уменьшить ее как минимум на 32 МБ)
  9. зашифровать:cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
  10. открыть:cryptsetup open /dev/sdXY root
  11. максимально увеличить файловую систему:resize2fs /dev/mapper/root
  12. установить его на -сказать-/mnt/root
  13. смонтировать загрузочную файловую систему на /mnt/rootи связать -смонтировать псевдо файловые системы /dev, /sys, /procв /mnt/root.
  14. chroot в вашу систему с помощью:chroot /mnt/root /bin/bash
  15. обновить параметры ядра в /etc/default/grubили другом эквивалентном месте, например. когда ваш дистрибутив использует dracut (, что, скорее всего, ), вам нужно добавитьrd.luks.uuid=$UUID_OF_LUKS_DEVICE(cf. blkid, обратите внимание, что этот UUID отличается от корневой файловой системы ), если у вас установлен selinux, вы должны добавить enforcing=0(, а затем удалить его )из-за всех правок
  16. если в вашем дистрибутиве включен selinux, настройте перемаркировку:touch /mnt/root/.autorelabel
  17. регенерировать конфигурацию grub:grub2-mkconfig -o /boot/.../grub...cfg
  18. повторно сгенерировать initramfs (, чтобы убедиться, что включена поддержка cryptsetup):dracut -f /boot/initramfs....img kernelversion
  19. выйти из chroot
  20. размонтировать все
  21. cryptsetup close root
  22. перезагрузка

Как видите, шагов много, т. е. есть некоторый потенциал для внесения ошибок. Таким образом, возможно, было бы проще просто переустановить и восстановить резервную копию (, например. конфигурационные файлы и $HOME).

Кроме того, по моему опыту на 2020 год, cryptsetup reencryptработает относительно медленно, поэтому может быть быстрее просто cryptsetup luksFormatустройство и восстановление резервной копии.

Если у вас есть файловая система XFS, вы не можете просто сжать ее,потому что XFS не поддерживает это с 2020 года. Таким образом, вам нужно fstransformего, прежде чем вы сможете сжать его. С преобразованной файловой системой у вас есть еще один uuid, о котором нужно позаботиться. Это означает либо изменить UUID новой файловой системы на UUID старой. Или обновите UUID файловой системы в /mnt/root/etc/fstab.

С дистрибутивом на основе dracut вам не нужно создавать /etc/crypttab, другой дистрибутив может потребовать его (также перед обновлением initramfs, потому что его может потребоваться включить туда ).

11
03.05.2020, 20:50

Теги

Похожие вопросы