Дамп мастер-ключа LUKS

Сброс забытого LUKS ключа — установка нового ключа

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

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

В сценарии «я забыл мой LUKS пароль» вы можете сделать следующие два шага:

  • Выделить текущий ключ шифрования из LUKS раздела.
  • Создать новый LUKS ключ используя предварительно выделенный ключ.

В этом примере смонтирован раздел /home1, являющийся зашифрованным LUKS разделом, однако неизвестен пароль для него.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             127G   44G   76G  37% /
/dev/mapper/home1      93G  188M   88G   1% /home1

Имя тома находится в первой колонке вывода команды «df -h» после «/dev/mapper/», в этом примере имя тома «home1».

Следующая команда покажет листинг всех ключей шифрования всех разделов которые смонтированы в системе:

# dmsetup table --showkeys 
home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096

Поле после «aes-cbc-essiv:sha256» — зашифрованный пароль. Получим зашифрованный LUKS ключ и сохраним в файл:

# vi existinglukskey.txt
607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c

Итак, теперь сконвертируем полученный ключ из текстового файла в двоичный файл. Для этого воспользуемся командой «xxd»:

# xxd -r -p existinglukskey.txt existinglukskey.bin

В этом примере:

  • -r опция для обратного преобразования. Это будет конвертировать hexdump в binary.
  • -p опция для обработки postscript. Здесь мне трудно адекватно перевести руководство man (output in postscript continuous hexdump style. Also known as plain hexdump style).
  • existinglukskey.txt входной файл.
  • existinglukskey.bin выходной файл. Он будет содержать существующий зашифрованный LUKS пароль в двоичном файле.

И, наконец, добавим новый LUKS ключ используя выделенный в двоичный файл существующий ключ:

# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin)
Enter new passphrase for key slot: 
Verify passphrase:

В этом примере:

  • —master-key-file Определяет двоичный файл. Не используйте входной existinglukskey.txt файл. Используйте выходной existinglukskey.bin файл.
  • Как видно, команда «cryptsetup luksAddKey» не задаёт вопрос о существующем LUKS пароле, так как он берётся из двоичного файла.
  • Когда появляется приглашение командной строки «Enter new passphrase for key slot:», введите новый LUKS пароль. И, в этот раз, не забывайте его.

Дамп LUKS MasterKey

Вы также можете сделать дамп MasterKey и хранить его в безопасном месте. Помните, что используя MasterKey дамп кто угодно может иметь доступ к вашему LUKS разделу.

# cryptsetup luksDump --dump-master-key /dev/sdb1
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
LUKS header information for /dev/sdb1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Payload offset: 4096
UUID:           146d639a-757c-4bcb-aee6-8fe815345104
MK bits:        256
MK dump:        60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e 
                aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c

Итак, используя вышеописанные методы, необходимо для дальнейших действий сделать следующее:

  • Определить устройство(а) с зашифрованным LUKS разделом.
  • Определить, какие слоты свободны для записи ключа(ей).
  • При необходимости — добавить новый ключ (резервный).

Вот другой способ:

If you need to obtain the master key have A drive decrypted and run the following as root

dmsetup table --showkeys

copy the key and put it into a text file then run

xxd -r -p masterKey.txt masterKey.bin

you would use masterKey.bin in your cryptsetup command as the master key file

Provided you have the master key and are root

cryptsetup —master-key-file pathToMasterKey luksOpen /dev/sdX bHDD
mount /dev/mapper/bHDD /mnt/bHDD

Запись опубликована в рубрике Общее. Добавьте в закладки постоянную ссылку.