LINUX.ORG.RU

Приходится вводить пароль на dm-crypt несколько раз, надо сделать один раз.

 , ,


0

1

Добрый вечер! У меня такая проблема с проприетарными драйверами nvidia в связке с dm-crypt: Черный экран в tty1-6 на проприетарных nvidia

Проблема эта известная: https://bugs.launchpad.net/ubuntu/ source/plymouth/ bug/1386005

Но решать ее вряд ли собираются, а мне ОЧЕНЬ нужны проприетарные драйвера, т.к. на свободных у меня каждый день намертво виснет экран, приходится юзать REISUB.

Я могу изменить строку граба GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash» на GRUB_CMDLINE_LINUX_DEFAULT=«quiet nosplash» тогда красивый графический режим ввода на крипт будет заменен командной строкой, но при этом мне почему-то придется вводить пароль не один раз, как это было до редактирования граба, а столько, сколько у меня зашифрованных разделов, что просто чудовищно.

Есть ли способ как-то это подправить? Конечно, при этом хотелось бы никак не навредить секьюрности.

NAME            MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sdb               8:16   0 238,5G  0 disk  
├─sdb4            8:20   0  94,5G  0 part  
├─sdb2            8:18   0   900M  0 part  
├─sdb10           8:26   0  86,2G  0 part  
│ └─sdb10_crypt 253:1    0  86,2G  0 crypt /home
├─sdb9            8:25   0  35,3G  0 part  
│ └─sdb9_crypt  253:0    0  35,3G  0 crypt /
├─sdb7            8:23   0    20G  0 part  
├─sdb5            8:21   0   455M  0 part  
├─sdb3            8:19   0   128M  0 part  
├─sdb1            8:17   0   100M  0 part  /boot/efi
├─sdb8            8:24   0   488M  0 part  /boot
└─sdb6            8:22   0   450M  0 part  
sr0              11:0    1  1024M  0 rom   
sda               8:0    0   1,4T  0 disk  
├─sda2            8:2    0 698,6G  0 part  /mnt/data1
├─sda3            8:3    0 698,6G  0 part  
│ └─sda3_crypt  253:2    0 698,6G  0 crypt /mnt/data2
└─sda1            8:1    0   128M  0 part


Последнее исправление: cetjs2 (всего исправлений: 1)

Вариант, который я использовал когда-то сам: на диске только 2 раздела - EFI и криптоконтейнер. Внутри криптоконтейнера LVM, в котором уже все разделы (swap, root, home и т. д.). Очень удобно.

Правда, у тебя два диска. Это всё усложняет. Теоретически можно слить 2 диска в 1 с помощью LVM (или программного RAID), затем впилить туда криптоконтейнер, а внутри ещё один LVM. Но это выглядит как-то костыльно, да и при выходе из строя одного диска будет потеряна информация и со второго.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Ага, два диска и они еще разные(ssd и hdd)

FliXis
() автор топика

я бы на твоём месте избавился от кучи криптоконтейнеров, оставив только один. Тебе нужно решить, где ты хочешь хранить свои зашифрованные файлы, на SSD или HDD, создать там криптоконтейнер и все данные переместить туда (симлинки и mount --bind в помощь)

Не вижу смысла шифровать корень.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 2)

Распакуй Initramfs и разберись как работают скрипты в нём, почему в одном случае пароль запрашивается один раз, а в другом больше.

Поправь скрипт, запакуй Initramfs.

kostik87 ★★★★★
()

Я могу изменить строку граба GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash» на GRUB_CMDLINE_LINUX_DEFAULT=«quiet nosplash» тогда красивый графический режим ввода на крипт будет заменен командной строкой, но при этом мне почему-то придется вводить пароль не один раз, как это было до редактирования граба, а столько, сколько у меня зашифрованных разделов, что просто чудовищно.

Чёт подозрительно. Пароль для каждого контейнера всегда запрашивается отдельно, даже если он на все контейнеры одинаковый. Ты уверен, что splash/nosplash единственное изменение, которое ты сделал?

Один вариант уже предложили ( шифрованный том LVM, в нём сколько нужно LV ). Другой - один контейнер шифровать ключом и хранить на нём файлы для расшифровки других контейнеров. Т.е. на большинстве контейнере расшифровка будет не по паролю, а по ключевому файлу

router ★★★★★
()
Ответ на: комментарий от FliXis

Загрузись со splash, когда у тебя один запрос пароля. Нажми клавишу escape и смотри как происходит загрузка, можешь записать на видео, затем загрузись без splash`а, смотри как происходит загрузка, можешь записать на видео.

Сохрани так же вывод dmesg в первом и втором случае.

Сравни в чём отличие.

Далее смотри сценарии инициализации, в Initramfs и стартовые сценарии в системе.

Ты ищешь готовое решение, но если его нет даже в официальной тех. поддержке, то здесь ты его вряд ли найдёшь ибо не так уж много народа использует шифрование, тем более двух дисков сразу, тем более на Ubuntu (Mint).

Удачи.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от KivApple

У меня аналогично. Два диска.

cat /etc/crypttab

luks-12345 UUID=12345 none 
luks-67890 UUID=67890 /etc/mykeyfile luks,discard,nofail

References: https://www.finnie.org/2009/07/26/keyfile-based-luks-encryption-in-debian/ https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Cre...

Пароль вводится только один, для первого диска, на нем корень. Оттуда достается файл ключа и все ок.

Рекомендую в fstab для разделов на втором диске поставить опцию nofail

Deleted
()
Ответ на: комментарий от router

Либо GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash» на GRUB_CMDLINE_LINUX_DEFAULT=«quiet nosplash» , либо GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash» на GRUB_CMDLINE_LINUX_DEFAULT=«»

Но ничего кроме этого не делал. Первый вариант не очень подходит, а второй вполне ничего, осталось узнать насколько это сложно непосредственно в самой реализации.

FliXis
() автор топика
Ответ на: комментарий от kostik87

Благодарю за описание процесса! Сперва попробую метод от KivApple, если не получится вдруг, то может поковыряю Initramfs по Вашей методике, но звучит не очень просто конечно.

FliXis
() автор топика
Ответ на: комментарий от watashinoshi

Не могу согласится с пунктом про драйвер.

FliXis
() автор топика
Ответ на: комментарий от FliXis

На виртуалке с двумя шифрованными разделами(/,/home) попробовал:

Было так:

sda5_crypt UUID=4e4ef9e1-66af-4d3a-b8dc-5aa913149240 none luks,discard sda6_crypt UUID=4e0b6a65-d664-4117-bc06-9a93c77088f7 none luks,discard

Стало так:

sda5_crypt UUID=4e4ef9e1-66af-4d3a-b8dc-5aa913149240 main luks,initramfs,discard,keyscript=decrypt_keyctl sda6_crypt UUID=4e0b6a65-d664-4117-bc06-9a93c77088f7 main luks,initramfs,discard,keyscript=decrypt_keyctl

Все равно два раза вводить пароль на крипт, но lvm там не конечно, как и на основной машине.

FliXis
() автор топика
Ответ на: комментарий от Deleted

Огромная благодарность за помощь! Все получилось!

FliXis
() автор топика
Ответ на: комментарий от Deleted

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

FliXis
() автор топика
Ответ на: комментарий от FliXis

в лукс есть возможность добавить несколько разных парольных фраз и или ключей к одному разделу, это как раз то что обычно нужно

Deleted
()

Создаёшь файлы-ключи (можно /dev/urandom), добавляешь их в соответствующие sda3_crypt, sdb10_crypt. В /etc/crypttab для данных luks добавляешь параметр «путь до соответствующего файл-ключа на luks в /».

anonymous
()
Ответ на: комментарий от Deleted

Пока все делал возник вопрос такой:

host ~ # cryptsetup luksAddKey /dev/sda3 /etc/keys/sda3_data2_key
Enter any passphrase:

Зачем ему any(!) пароль? Ведь я создал ключи через /dev/random. Я тупо ввел старый свой пароль от крипта, прокатило, но не очень понятен этот момент.

FliXis
() автор топика

Даже гайд на будущее себе запилил:

Отрубить Плимут: в /etc/default/grub строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
изменить на
GRUB_CMDLINE_LINUX_DEFAULT=""
затем
sudo update-grub

Смотрим свои разделы:

lsblk
Нужен супер-юзер, все, что далее от него:
sudo -s
Смотрим битность ключей:
cryptsetup luksDump /dev/sda3
cryptsetup luksDump /dev/sdb10

Предварительно создаем папку keys в /etc Создаем ключи в 512(В данном случае) бит(64*8=512) через /dev/random

dd if=/dev/random of=/etc/keys/sda3_data2_key bs=1 count=64
dd if=/dev/random of=/etc/keys/sdb10_home_key bs=1 count=64
Назначим права:
chown root:root /etc/keys/sdb10_home_key; chmod 400 /etc/keys/sdb10_home_key
chown root:root /etc/keys/sda3_data2_key; chmod 400 /etc/keys/sda3_data2_key
Добавим эти дополнительные ключи в luks разделы:
cryptsetup luksAddKey /dev/sda3 /etc/keys/sda3_data2_key
cryptsetup luksAddKey /dev/sdb10 /etc/keys/sdb10_home_key
Проверим, что они действительно добавились в новый слот(Key Slot 1, отсчет начинается от Key Slot 0):
cryptsetup luksDump /dev/sda3
cryptsetup luksDump /dev/sdb10

Необходимо выстроить строки по порядку загрузки в /etc/crypttab, сперва /root, затем /home, и потом уже доп-разделы. Для доп-разделов прописать nofail, и для всех разделов кроме /root прописать путь к ключам /etc/keys/***

sdb9_crypt UUID=dc14a none luks,discard
sdb10_crypt UUID=f43c6 /etc/keys/sdb10_home_key luks,discard
sda3_crypt UUID=62558 /etc/keys/sda3_data2_key luks,discard,nofail

Проверяем работоспособность после перезагрузки: reboot

Создаем бэкапы хидеров люкса:

sudo -s
cryptsetup luksHeaderBackup /dev/sdb9 --header-backup-file /mnt/data2/Other/LUKS/sdb9_root-header.backup
cryptsetup luksHeaderBackup /dev/sdb10 --header-backup-file /mnt/data2/Other/LUKS/sdb10_home-header.backup
cryptsetup luksHeaderBackup /dev/sda3 --header-backup-file /mnt/data2/Other/LUKS/sda3_data2-header.backup

ВНИМАНИЕ!!!! Если нужно восстановить хидеры:

sudo -s
cryptsetup luksHeaderRestore /dev/sdb9 --header-backup-file /mnt/data2/Other/LUKS/Header/sdb9_root-header.backup
cryptsetup luksHeaderRestore /dev/sdb10 --header-backup-file /mnt/data2/Other/LUKS/Header/sdb10_home-header.backup
cryptsetup luksHeaderRestore /dev/sda3 --header-backup-file /mnt/data2/Other/LUKS/Header/sda3_data2-header.backup

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

FliXis
() автор топика
Ответ на: комментарий от Deleted

Не очень понял.

Вот же вторым параметром идет месторасположение ключа:

cryptsetup luksAddKey /dev/sda3 /etc/keys/sda3_data2_key
Или имеется ввиду просто сам параметр --keyfile? Т.е. -
cryptsetup luksAddKey /dev/sda3 /etc/keys/sda3_data2_key --keyfile
Но оно это не глотает. Как-то иначе надо?

Можно чутка подробнее, если не затруднит.

FliXis
() автор топика
Ответ на: комментарий от Deleted

Все, я кажется догнал, там имеется ввиду ввести не any пароль, а любой пароль из существующих в слотах. Сбило слово any. Благодарю!

FliXis
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.