Intereting Posts
xsel </ tmp / xselection не работает в скрипте Найти записи, представленные до сегодняшнего дня Как установить переменную среды в сервисе systemd команда ps не дает вывод в домашнем каталоге Использование разности, aka overlay, aka union, файловая система с возможностью фиксации Добавить несколько строк, заданных как verbatim bash, после согласованной строки в файле? fsck.vfat не удалось исправить USB Как я могу рекурсивно искать каталоги для шаблона и просто распечатывать имена файлов и номера строк смена каталога происходит очень медленно Неизвестные записи в файле журнала cali Linux wtmp файл hardlink / softlink в один файл Ссылка на предыдущий вывод команды / содержимое экрана терминала в текущей командной строке Дефрагментация дискового ввода-вывода с одновременной записью в тот же файл Как установить LC_ALL = en_GB.UTF-8 в Raspbian? запускать несколько экземпляров MySQL CentOS7

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

У меня была настройка, в которой мое съемное устройство содержало один раздел с зашифрованными данными и ничего больше на нем, чтобы отличить его от случайных данных. На физически отдельном устройстве у меня была пара скриптов, которые открывали / закрывали устройство, используя ключ GPG-encrypted:


open.sh

#!/bin/bash # The crypt UUID is hard-coded. That way it will not try to decrypt the wrong # device. cryptuuid='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # The UUID of the decrypted device is hard-coded. This is currently how the # script knows what to mount after decrypting. deviceuuid='yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' # The encrypted key bits are fed to cryptsetup with specific parameters to # decrypt the crypt. gpg2 --decrypt <<- END | sudo cryptsetup --offset 0 --cipher aes-xts-plain64 --key-size 256 --hash sha256 --key-file - open --type plain "/dev/disk/by-partuuid/$cryptuuid" Secrets -----BEGIN PGP MESSAGE----- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzz -----END PGP MESSAGE----- END # A small delay is necessary to give time for the decrypted device to show up. sleep 1 # Mount the decrypted device as if the user did it using the GUI. gvfs-mount -d $(readlink -f $(blkid -U "$deviceuuid")) 

close.sh

 #!/bin/bash # The UUID of the decrypted device is hard-coded. This is currently how the # script knows what unmount. deviceuuid='yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' # Find all processes using the decrypted device and issue a “friendly” kill # signal. sudo lsof -t $(findmnt -rn -S UUID="$deviceuuid" -o TARGET) | while read process; do kill -HUP $process; done # Try to unmount the decrypted device and then close it with cryptsetup. findmnt # identifies the path which the device is mounted. lsblk finds the decrypted # device (minus “/dev/” from the UUID). dmsetup finds the decrypted device name # given the block device name from before. gvfs-mount -u $(findmnt -rn -S UUID="$deviceuuid" -o TARGET) && sudo cryptsetup close $(sudo dmsetup info --columns --noheadings --options Name --select BlkDevName=$(lsblk --raw --noheadings --output KNAME,UUID | awk '{if ($2=="'"$deviceuuid"'") { print $1}}')) 

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

В попытке приблизиться к этой цели я взглянул на Диспетчер логических томов (LVM) для его возможностей JBOD. Идея состояла в том, чтобы иметь раздел LUKS, который будет отображаться в файловом менеджере, но также держать заголовок LUKS от зашифрованных данных, оставляя зашифрованные данные неотличимыми от случайных данных.

Для этого я использовал 2 тома:

  1. Файл header.img (ровно 2 139 648 байт)
  2. Физическое устройство / dev / sdx

Иллюстрация установки

header.img содержит раздел GPT, в котором размещается LVM PV, достаточно большой, чтобы содержать весь заголовок LUKS. / dev / sdx содержит раздел GPT, на котором размещается PVV LVM, содержащая зашифрованные данные.

Они создаются с использованием следующих шагов:

  1. fallocate -l 2139648 header.img создает изображение для хранения первого PV.
  2. Я монтирую изображение и создаю в нем фрагмент GPT размером 4,112 секторов (GUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) для PV.
  3. sudo pvcreate --labelsector 0 --metadatatype 2 --pvmetadatacopies 1 --metadatasize 32768b --dataalignment 512b /dev/disk/by-partuuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx создает физический том заголовка.
  4. Для устройства (например, / dev / sdx ), где я хочу хранить зашифрованные данные, я определяю нужный раздел, который мне нужен, и добавьте еще один сектор в начале для заголовка LVM. Если накопитель SSD предварительно сформирован с началом раздела в секторе 65536, удалите этот раздел и создайте его в секторе 65535. Таким образом, файловая система будет по-прежнему оптимально выровняться.
  5. sudo pvcreate --labelsector 0 --pvmetadatacopies 0 --metadatasize 0b --dataalignment 512b '/dev/disk/by-partuuid/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' создает физический том только с заголовком LVM, но без метаданных ,
  6. vgcreate --metadatacopies unmanaged --physicalextentsize 512b Secrets '/dev/disk/by-partuuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' '/dev/disk/by-partuuid/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' создает группу томов поверх обоих этих физических томов.
  7. lvcreate --contiguous n --extents 100%FREE Secrets --name Crypt создает единый логический том, который занимает все свободное пространство в группе томов.
  8. Теперь я столкнулся с проблемой, что, если бы я написал какие-либо данные в логический том, наибольший физический том всегда был бы написан первым. Это плохо, потому что я хочу, чтобы заголовок LUKS записывался на меньший из двух физических томов. Я исправлю это, экспортировав данные группы томов в текстовый файл, где я могу изменить порядок физических томов: vgcfgbackup -f metadata.txt Secrets .
  9. Редактирование полученного текстового файла является простым. В разделе segment1 должно быть segment1 два сегмента: segment1 и segment2 . Вам нужно будет отредактировать значения start_extent и extent_count под каждым из них. segment1 должен иметь start_extent = 0 и extent_count = 4040 . А segment2 должен иметь start_extent = 4040 и extent_count равный extent_count большего физического объема, который вы можете найти в разделе physical_volumes . Возможно, вам придется обменивать pv0 и pv1 , но дважды проверьте определения томов, чтобы убедиться, что они нормальные.
  10. vgcfgrestore -f metadata.txt Secrets будут применять ваши изменения к группе томов.
  11. cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --align-payload 1 luksFormat /dev/Secrets/Crypt создает зашифрованный том LUKS.
  12. Откройте новый зашифрованный том и сделайте то, что нужно сделать.
  13. Извлечь: отключить любую файловую систему на зашифрованном томе, закрыть ее и запустить vgchange -an Secrets . Затем вы можете отсоединить и / или извлечь физические тома.

Когда вставляется / dev / sdx, а header.img монтируется с помощью Disk Utility, на панели запуска появляется значок, который при нажатии вызывает подсказки для пароля для разблокировки тома; терминал не нужен ни на одном из шагов, кроме случайного случая, когда логический том не регистрируется. Затем запуск vgscan --mknodes и udevadm trigger видимому, udevadm trigger икоту.

Проблема в том, что при размонтировании тома я также должен использовать терминал для деактивации группы томов LVM (VG), прежде чем я удалю устройство цикла и вытащу зашифрованное хранилище. Физическое удаление носителя данных, похоже, не приводит к тому, что группа томов исчезнет, ​​и устройства с петлями не будут демонтированы.

Я был бы доволен решением проблемы удаления устройства, но я думаю, что я слишком усложняю ситуацию, создавая и поддерживая такую ​​настройку.

Существует ли в любом дистрибутиве Linux простое в использовании многофакторное полное шифрование диска сегодня?