Как избежать запроса пароля зашифрованного загрузочного раздела в LVM-arch linux

2138
Vipin

Я использую LVM с Arch Linux. Пожалуйста, найдите структуру диска ниже.

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk  |-sda1 8:1 0 512M 0 part  | `-cryptboot 254:3 0 510M 0 crypt  | `-vgboot-boot 254:4 0 508M 0 lvm /boot `-sda2 8:2 0 49.5G 0 part  `-cryptlvm 254:0 0 49.5G 0 crypt  |-vgos-swap 254:1 0 4G 0 lvm [SWAP] `-vgos-root 254:2 0 45.5G 0 lvm / sr0 11:0 1 560M 0 rom  

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

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

0

1 ответ на вопрос

0
gronostaj

Вы получаете запрос двойного пароля, потому что ваш /bootраздел зашифрован. Во-первых, GRUB запрашивает пароль, потому что он должен загрузить ядро ​​из зашифрованного /boot. Затем ядро ​​снова запрашивает пароль для расшифровки /.

Есть два подхода к этой проблеме:

  1. Не используйте в зашифрованном виде /boot. GRUB не будет спрашивать пароль. Это позволит любому поработать с файлами ядра и initramfs . Например, можно заменить ядро ​​вредоносным, которое получает доступ к вашему зашифрованному файлу /после ввода пароля.

  2. Создайте ключ дешифрования и добавьте его в свободный слот LUKS /, затем вставьте этот ключ в initramfs. Это позволит ядру получить доступ /без пароля.

Настройка для # 2 довольно сложна, поэтому я перейду к первому подходу. Я набираю это из головы, без каких-либо испытаний. Сделайте резервные копии и действуйте осторожно. Я не несу ответственности за потерю данных и другие проблемы, вызванные этим процессом.

Вам понадобится загрузочный носитель Linux с cryptsetupи resize2fs. Я бы порекомендовал использовать флешку Ubuntu. Вы также можете заменить последний на partclone. Вам также понадобится около 500 МБ свободного дискового пространства для хранения промежуточного дешифрованного /bootобраза.

Загрузитесь с вашего носителя Linux. Получите доступ к LVM (честно говоря, я никогда не имел дело с этим, поэтому я не знаю, нужны ли какие-либо дополнительные шаги - есть вероятность, что Ubuntu справится с этим автоматически). Откройте зашифрованное /boot:

cryptsetup open /dev/<boot> cryptboot 

Создайте образ незашифрованной загрузки: (чтобы увидеть использование прогресса pvвместо cat)

cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img 

Закрыть /boot:

sync cryptsetup close cryptboot 

Записать незашифрованный /bootраздел и настроить размер файловой системы:

cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot> resize2fs /dev/<boot> 

Получить UUID /boot(принять к сведению):

blkid /dev/<boot> 

Откройте и смонтируйте /, обновите fstab:

cryptsetup open /dev/<root> cryptroot mkdir -p /mnt/root mount /dev/mapper/cryptroot /mnt/root cd /mnt/root vi etc/fstab 

Отрегулируйте линию, которая монтируется, /bootчтобы использовать новый UUID вместо /dev/mapper/...записи. Возможно, вам также придется удалить /bootстроку из etc/crypttab.

Обновите initramfs (этот может сломаться в Ubuntu, если ваша основная ОС - Arch ... Я не уверен, так что будьте осторожны):

cd /mnt/root mount -t sysfs sysfs sys mount -t tmpfs tmp tmp mount -t proc proc proc mount --bind /dev dev mount /dev/<boot> boot mount --bind /boot/efi boot/efi chroot update-initramfs -u -k all exit 

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

Убери за собой:

umount boot/efi boot dev proc tmp sys cd .. umount root cryptsetup close cryptroot 
Спасибо за ответ и очень полезную информацию. Но я не хочу, чтобы моя загрузка вышла из зашифрованного раздела Vipin 5 лет назад 0
Тогда вы должны пойти с # 2. [Вот руководство] (https://web.archive.org/web/20160101193137/http://missinglink.xyz/security/tutorial-debianubuntu-full-disk-encryption-luks-fde-inclusion-encrypted-boot/ улучшенные-полный диск-шифрования адд-Luks-файл_ключа-initrdinitramfs /). gronostaj 5 лет назад 0
Спасибо за ссылку. Только одно уточнение. Когда мы emed файл ключа в initramfs. Этот ключевой файл помогает нам разблокировать корневую файловую систему. Но / boot зашифрован, но мы должны каждый раз вводить пароль. Нет способа встроить его в файл ключа? Vipin 5 лет назад 0
Вы можете добавить один и тот же ключ к `/` и `/ boot`. Вам нужно будет ввести пароль только один раз, чтобы GRUB мог загрузить ядро ​​и initramfs из `/ boot`. Затем ядро ​​будет использовать файл ключей, чтобы открыть `/`, и снова тот же файл ключей, чтобы открыть и смонтировать `/ boot`. Заголовок LUKS может содержать до 8 ключей / паролей, поэтому открытие с паролем (для GRUB) и с ключом (для ядра) не является эксклюзивным. gronostaj 5 лет назад 0
Благодарю. Ключевой файл будет добавлен в initramfs, если вы правильно понимаете. Но как узнать, в каком разделе мы должны использовать этот ключевой файл. Vipin 5 лет назад 0
Смотрите `/ etc / crypttab`, шаг 6 в статье, на которую я ссылался выше. Linux использует его, чтобы решить, какие разделы нужно открыть перед монтированием файловых систем в соответствии с `/ etc / fstab`. Он также используется при создании initramfs, но обычно записи, которые используют файлы ключей, игнорируются, потому что файлы ключей хранятся в файловой системе, которая в данный момент недоступна. Смысл этой статьи заключается в том, чтобы встроить ключевой файл в initramfs, чтобы он был доступен во время загрузки до монтирования файловых систем. gronostaj 5 лет назад 0
Хорошо, я прочитал это. Подскажите, пожалуйста, что это утверждение в шаге 2 делает cryptsetup luksAddKey / dev / sda2 /root/autounlock.key --key-slot 1. Это как путь автоматической блокировки, который он установит в слот, просто скопирует хэш пароля. Vipin 5 лет назад 0
Позвольте нам [продолжить это обсуждение в чате] (https://chat.stackexchange.com/rooms/77788/discussion-between-gronostaj-and-vipin). gronostaj 5 лет назад 0