Разблокировка раздела LUKS с помощью ключевого файла на USB не работает.

Вопрос или проблема

Я частично следовал этому

Что на самом деле делает /lib/cryptsetup/scripts/passdev?

/etc/crypttab

2tb UUID=... /dev/disk/by-label/STICK:/logfile luks,nofail,keyscript=/lib/cryptsetup/scripts/passdev,tries=2

У меня подключена флешка, отформатированная в ext2, с меткой STICK и с logfile, содержащим фразу-пароль. Ранее я использовал “обычный” метод, читая фразу-пароль с первого диска, описываемого с помощью ввода с клавиатуры.

2tb UUID=.. /etc/luks-keys/2tb luks,nofail,tries=1

И да, я неоднократно выполнял sudo update-initramfs -u -k all && systemctl reboot, но это просто не работает.

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

Я нахожусь в системе UEFI с отключенной безопасной загрузкой, если это имеет значение. Я читал что-то о модуле на похожую тему. Нужно ли мне что-то особенное загружать?

Также где находится лог для этого?

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

Теперь я написал патч, который будет искать в корневом каталоге всех устройств файл ‘cryptkey.txt’ и пытаться расшифровать его с каждой строки в качестве ключа. Если это не удается: вернуться к вводу фразы-пароля.

Это означает, что ключ не может содержать \n, но это применимо и к любому введенному ключу. Хорошая новость в том, что вы можете использовать один и тот же USB-диск для хранения ключа для нескольких машин: вам не нужен отдельный USB-диск для каждой. Так что, если у вас есть USB-накопитель в вашем физическом брелке, вы можете использовать тот же накопитель для всех машин, которые вы загружаете, находясь в непосредственной близости.

Вы добавляете ключ, используя:

cryptsetup luksAddKey /dev/sda5

А затем поместите тот же ключ в виде строки в файл на USB/MMC-диске с именем ‘cryptkey.txt’. Патч находится здесь:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746806

Если драйверы USB, драйверы MMC или файловые системы отсутствуют в вашем initramfs, вам нужно добавить их, добавив в /etc/initramfs-tools/modules:

uhci_hcd
ehci_hcd
usb_storage
nls_utf8
nls_cp437
vfat
fat
sd_mod
mmc_block
tifm_sd
tifm_core
mmc_core
tifm_7xx1
sdhci
sdhci_pci

Когда все будет сделано, обновите initramfs:

update-initramfs -u

После использования установщика для создания зашифрованных устройств с помощью пароля в 16.04 и 18.04 вам нужно добавить следующее (это, похоже, связано с ошибкой):

Скрипт, который читает ключ при загрузке /etc/decryptkeydevice/decryptkeydevice.sh

Измените конфигурацию /etc/initramfs-tools/conf.d/cryptroot

Убедите initramfs использовать файл cryptroot /etc/initramfs-tools/hooks/decryptkeydevice.hook

и измените initramfs /etc/initramfs-tools/modules

https://github.com/Codeuctivity/UnlockLuksOnBootByToken объединяет шаги в initAutoUnlockOnBootConfig.sh – выполните как root:

sudo dd if=/dev/urandom of=/dev/sdb bs=512 seek=1 count=60 

sudo dd if=/dev/sdb bs=512 skip=1 count=4 > tempKeyFile.bin 

sudo cryptsetup luksAddKey /dev/sda5 tempKeyFile.bin 

# копировать конфигурацию
mkdir /etc/decryptkeydevice
# обновить идентификаторы устройств в этом файле
cp decryptkeydevice.sh /etc/decryptkeydevice/decryptkeydevice.sh
chmod +x /etc/decryptkeydevice/decryptkeydevice.sh

cp cryptroot /etc/initramfs-tools/conf.d/cryptroot
chmod +x /etc/initramfs-tools/conf.d/cryptroot

cp decryptkeydevice.hook /etc/initramfs-tools/hooks/decryptkeydevice.hook
chmod +x /etc/initramfs-tools/hooks/decryptkeydevice.hook

cat modules >> /etc/initramfs-tools/modules

update-initramfs -u

Ответ или решение

Проблема разблокировки LUKS-раздела с помощью ключевого файла на USB-накопителе

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

Понимание сценария

Ваш сценарий предполагает использование файла с паролем на USB, который считывается при загрузке для разблокировки LUKS-раздела. Вы указали, что ваш USB-накопитель отформатирован в ext2 и имеет метку STICK. Важно, что вы также используете /lib/cryptsetup/scripts/passdev, чтобы указать скрипту, как управлять ключами.

Конфигурация вашего файла /etc/crypttab выглядит следующим образом:

2tb UUID=... /dev/disk/by-label/STICK:/logfile luks,nofail,keyscript=/lib/cryptsetup/scripts/passdev,tries=2

Роль скрипта passdev

Скрипт /lib/cryptsetup/scripts/passdev предназначен для предоставления пароля или ключа для LUKS-разделов во время загрузки. Важно, что скрипт должен уметь успешно находить и извлекать файл с паролем, иначе разблокировка будет невозможна.

Возможные причины проблемы

  1. Проблемы с доступностью файловой системы: Если драйвера USB не загружены в initramfs, это может стать причиной, по которой скрипт не может получить доступ к вашему USB. Убедитесь, что в файле /etc/initramfs-tools/modules добавлены нужные модули для поддержки USB-накопителей:

    uhci_hcd
    ehci_hcd
    usb_storage
    vfat
    sd_mod

    После добавления модулей не забудьте обновить initramfs командой:

    sudo update-initramfs -u
  2. Неправильный путь к файлу: Убедитесь, что указанный путь к файлу с паролем (например, /logfile) корректен и доступен в момент загрузки.

  3. Ошибки в формате ключа: Убедитесь, что ваш ключ в файле "logfile" не содержит дополнительных символов или неправильно отформатированных строк. Обычно рекомендуется, чтобы каждая строка содержала один пароль, без символов перевода строки.

  4. Логи и отладка: Для понимания того, в чем именно дело, необходимо посмотреть логи. В стандартной конфигурации логирование происходящих ошибок можно найти в журнале загрузки, который можно проверить с помощью команды:

    journalctl -b

Путь к решению

Если вы все еще не можете решить проблему, попробуйте следующее:

  1. Проверьте настройки cryptsetup, следуя рекомендациям по документации.

  2. Рассмотрите возможность испытания другой файловой системы на USB-накопителе, чтобы исключить возможные проблемы с совместимостью, например FAT32.

  3. Проверьте, правильно ли настроены права доступа на файл с паролем.

  4. Попробуйте использовать другой скрипт для автоматической разблокировки, если ваш текущий метод не работает должным образом. Например, использование упомянутого скрипта decryptkeydevice.sh может оказаться полезным.

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

Заключение

Использование USB-накопителя для разблокировки LUKS-разделов может быть удобным и безопасным решением. Важно следить за конфигурацией системы, проверять наличие всех необходимых драйверов и модулей, а также правильность пути к файлу с паролем. Надеюсь, эти рекомендации помогут вам успешно наладить автоматическую разблокировку вашего LUKS-раздела.

Оцените материал
Добавить комментарий

Капча загружается...