Как сделать резервную копию и восстановить заголовок LUKS в Linux

Как сделать резервную копию и восстановить заголовок LUKS в Linux

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

Зачем создавать резервные копии и восстанавливать заголовок LUKS в Linux?

LUKS — это стандартный метод для системы на базе Linux для защиты данных и дисков, особенно на мобильных устройствах, таких как ноутбук с Linux. Однако LUKS также создает дополнительные проблемы, такие как:

Неправильная конфигурация LUKS файлов /etc/fstab or /etc/crypttab предотвратит загрузку вашего ноутбука на базе Linux. Эти файлы содержат подсказки по расшифровке при загрузке системы. Файл / etc / crypttab содержит описательную информацию о зашифрованных файловых системах, которая читается только программами LUKS. Системный администратор Linux должен создать и поддерживать этот файл соответствующим образом.

Убедитесь, что/etc/fstab и /etc/crypttab верны и записи совпадают в соответствии с вашей настройкой, используя команду:
cat /etc/fstab /etc/crypttab

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

Работа с дисками или томами, зашифрованными LUKS

Давайте посмотрим, как создать резервную копию заголовка LUKS и восстановить ее, если в дальнейшем возникнет необходимость. Чтобы вывести список зашифрованных дисков или томов, введите:
$ sudo dmsetup ls --target crypt

[sudo] password for vivek: 
md1_crypt	(253, 0)

Запустите команду lsblk :
$ lsblk
$ lsblk /dev/md1


Итак, /dev/md1 это программное устройство Linux RAID1, зашифрованное как md1_crypt. Кроме того, LVM используется для создания корневых разделов и разделов подкачки. Другими словами, мой корень и своп полностью зашифрованы и защищены с помощью RAID1.  Затем укажите свои /etc/fstab and /etc/etc/crypttab и убедитесь, что они правильно сопоставлены: ваша установка может быть простой без RAID1 или LVM. Следовательно, вам необходимо узнать точную информацию.:

$ cat /etc/fstab
$ cat /etc/etc/crypttab

Чтобы восстановить данные из зашифрованных файлов / томов, сделайте резервную копию следующих файлов

  • /etc/fstab файл
  • /etc/crypttab файл
  • Заголовок LUKS

Шаг 1 — дублирование заголовка LUKS

Запустите команду, чтобы узнать информацию о зашифрованных дисках или томе
$ sudo cryptsetup luksDump /dev/DEVICE
$ sudo cryptsetup luksDump /dev/sdb2
$ sudo cryptsetup luksDump /dev/md1

LUKS header information
Version:       	2
Epoch:         	3
Metadata area: 	16384 [bytes]
Keyslots area: 	16744448 [bytes]
UUID:          	b5f93bb5-ba76-41fe-a996-ab5b69947f61
Label:         	(no label)
Subsystem:     	(no subsystem)
Flags:       	(no flags)
 
Data segments:
  0: crypt
	offset: 16777216 [bytes]
	length: (whole device)
	cipher: aes-xts-plain64
	sector: 512 [bytes]
 
Keyslots:
  0: luks2
	Key:        512 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 512 bits
	PBKDF:      argon2i
	Time cost:  4
	Memory:     673681
	Threads:    4
	Salt:       1e 68 17 ca 2c c5 b5 fa 2b 8b 59 6a 73 ca 1c 20 
	            f7 99 06 63 4e fa 49 3d 12 71 ac 6a bb 41 ec 58 
	AF stripes: 4000
	AF hash:    sha256
	Area offset:32768 [bytes]
	Area length:258048 [bytes]
	Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
	Hash:       sha256
	Iterations: 145635
	Salt:       95 2c 81 91 8c 1e ad 69 4d 51 18 13 4c 36 c0 25 
	            c5 5c 9d 16 c3 0f 3f 79 fa 84 ad 4b 65 49 17 ec 
	Digest:     79 8a 05 d0 31 ba 7a ec fe f2 b1 da 3f d8 17 e1 
	            eb f8 2c b1 a7 7e ed 26 59 9e 7a 02 b3 95 0c 03

Шаг 2 — Резервное копирование заголовка LUKS

Сделайте резервную копию заголовка LUKS для использования в будущем:
$ sudo cryptsetup luksHeaderBackup /dev/DEVICE \
--header-backup-file /path/to/backupfile
$ sudo cryptsetup luksHeaderBackup /dev/sdb2 \
--header-backup-file /nas/vivek/laptop.dell.m6700.luks.bin
$ sudo cryptsetup luksHeaderBackup /dev/md1 \
--header-backup-file /root/laptop.thinkpad.luks.bin

Покажите информацию о файле резервной копии с именем /root/laptop.thinkpad.luks.bin, выполните следующую команду файла /stat команда /cryptsetup команда::
$ sudo file /root/laptop.thinkpad.luks.bin
$ sudo stat /root/laptop.thinkpad.luks.bin
$ sudo cryptsetup luksDump /root/laptop.thinkpad.luks.bin

 

Убедитесь, что вы храните файл laptop.thinkpad.luks.bin надежно в автономном режиме. Я использую NAS-сервер и USB-накопитель. Убедитесь, что вы храните файл резервной копии с именем /root/laptop.thinkpad.luks.bin в надежном автономном режиме. Я использую домашний NAS-сервер и USB-накопитель. Этот файл должен оставаться вне устройства; в противном случае вы не сможете его восстановить.

Шаг 3 — Восстановление заголовка LUKS при необходимости

Теперь допустим, что случилось нечто ужасное. Все, что вам нужно сделать, это загрузить свою систему / ноутбук с загрузочного диска и восстановить старый заголовок LUKS из файла резервной копии laptop.thinkpad.luks.bin следующим образом:
# cryptsetup luksHeaderRestore /dev/DEVICE --header-backup-file /path/to/backup_header_file
## Assuming that you mounted /nas/ using NFS ##
# cryptsetup luksHeaderRestore /dev/md1 --header-backup-file /nas/vivek/laptop.thinkpad.luks.bin

WARNING!
========
Device /dev/md1 already contains LUKS2 header. Replacing header will destroy existing keyslots.

Are you sure? (Type uppercase yes): YES

Шаг 4 — Проверьте это

Выполните следующую команду, чтобы открыть зашифрованный диск и смонтировать его (необходимо указать старый пароль): Перезагрузите систему Linux

# cryptsetup luksOpen /dev/DEVICE name
# cryptsetup luksOpen /dev/md1 test
# mkdir /test
# mount /dev/mapper/test_root /test
# df -H
# mount

# reboot

Вывод

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