Управление шифрованными разделами LUKS
В LUKS для одного зашифрованного раздела используются восемь слотов, в каждом из которых может храниться отдельный пароль (ключ). Любой из восьми ключей может быть использован для расшифровки раздела. Любой пароль может быть изменён или удалён необратимо.
Для управления шифрованными разделами можно воспользоваться командой cryptsetup. Ниже приведены примеры использования данной команды.
Просмотреть текущее состояние всех слотов:
# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: DISABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
где /dev/sdb1 — шифрованный раздел.
# cryptsetup isLuks -v /dev/sdb1
Команда выполнена успешно.
Выяснить какой раздел является шифруемым можно, получив uuid зашифрованного раздела:
# cat /etc/crypttab
luks-7853363d-e7e2-1a42-b5b9-0af119e19920 UUID=7853363d-e7e2-1a42-b5b9-0af119e19920 none luks
и подставив его в следующую команду:
# ls -l /dev/disk/by-uuid/7853363d-e7e2-1a42-b5b9-0af119e19920
lrwxrwxrwx 1 root root 10 фев 17 12:54 /dev/disk/by-uuid/7853363d-e7e2-1a42-b5b9-0af119e19920 -> ../../sdb1
Также можно воспользоваться командой lsblk:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 18G 0 disk
├─sda1 8:1 0 1023M 0 part [SWAP]
└─sda2 8:2 0 17G 0 part /
sdb 8:16 0 18G 0 disk
└─sdb1 8:17 0 18G 0 part
└─luks-7853363d-e7e2-1a42-b5b9-0af119e19920 253:0 0 18G 0 crypt /home
sr0 11:0 1 1024M 0 rom
Добавить новый пароль на зашифрованный раздел (требуется предоставить уже имеющийся пароль интерактивно или посредством опции --key-file):
# cryptsetup luksAddKey /dev/sdb1
Введите любую существующую парольную фразу:
Введите новую парольную фразу для слота ключа:
Парольная фраза повторно:
Пароль будет назначен в первый свободный слот:
# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Можно указать номер определенного слота с помощью опции --key-slot, например:
# cryptsetup luksAddKey /dev/sdb1 --key-slot 5
Заменить один из паролей на другой (старый пароль нужно ввести интерактивно или задать опцией --key-file):
# cryptsetup luksChangeKey /dev/sdb1
Введите изменяемую парольную фразу:
Введите новую парольную фразу:
Парольная фраза повторно:
Если задан номер слота (опцией --key-slot), нужно ввести старый пароль именно для заданного слота, и замена пароля произойдёт тоже в этом слоте. Если номер слота не задан и есть свободный слот, то сначала новый пароль будет записан в свободный слот, а потом будет затёрт слот, содержащий старый пароль. Если свободных слотов не окажется, то новый пароль будет записан прямо в слот, ранее содержащий старый пароль.
Удалить заданный пароль (затирает слот):
# cryptsetup luksRemoveKey /dev/sdb1
Введите удаляемую парольную фразу:
Сброс забытого пароля на зашифрованный раздел:
- Получить зашифрованные пароли всех разделов:
# dmsetup table --showkey luks-7853363d-e7e2-1a42-b5b9-0af119e19920: 0 37730304 crypt aes-cbc-essiv:sha256 b15c22e8d60a37bcd27fb438637a8221fbec66c83be46d33a8331a4002cf3144 0 8:17 4096
- Часть поля после «aes-cbc-essiv:sha256» является зашифрованным паролем.
- Сохранить зашифрованный пароль в текстовый файл:
# echo "b15c22e8d60a37bcd27fb438637a8221fbec66c83be46d33a8331a4002cf3144" > lukskey.txt
- Преобразовать существующий пароль из текстового файла в двоичный файл:
# xxd -r -p lukskey.txt lukskey.bin luks-7853363d-e7e2-1a42-b5b9-0af119e19920: 0 37730304 crypt aes-cbc-essiv:sha256 b15c22e8d60a37bcd27fb438637a8221fbec66c83be46d33a8331a4002cf3144 0 8:17 4096
- Добавить новый пароль, используя существующий пароль, извлеченный в бинарный файл:
# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat lukskey.bin) Введите новую парольную фразу для слота ключа: Парольная фраза повторно: