остановите crypttab, спрашивая пароль для подкачки

10

Я выпустил свежую систему 11.04, когда она была выпущена, и настроил полное шифрование диска с помощью LUKS. Сначала он спросил у меня пароль для моих трех зашифрованных разделов:

/
/home
swap

Трижды вводить парольную фразу было неприятно, поэтому я попытался установить / home и заменить дешифрование из файла ключа, хранящегося в /. Я создал ключевой файл и включил его на двух разделах. Мой crypttab теперь выглядит так:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Это прекрасно работает для / home, который монтируется автоматически без запроса пароля. Но cryptsetup по-прежнему запрашивает пароль для пространства подкачки. Я даже пытался добавить noauto в пространство подкачки, чтобы он вообще не настраивался - как только система загрузится, я могу включить ее без ключевой фразы, поэтому я решил просто добавить поздний сценарий инициализации, чтобы сделать это, но даже с noauto cryptsetup все еще просит пароль.

Спасибо!

штифтик
источник
4
По этой причине рекомендуется использовать LVM + LUKS в случае нескольких разделов. Crypsetup может использоваться выше или ниже уровня LVM (выше -> файловая система, ниже -> диск). Преимущество использования cryptsetup ниже LVM состоит в том, что вам нужен только один зашифрованный раздел (один LVM).
Лекенштейн

Ответы:

10

У меня был тот же вопрос, вот как я это сделал на Ubuntu 12.04.1 и 12.10,

- перед началом убедитесь, что у вас есть резервная копия, а также вы можете загрузить вашу систему с помощью Ubuntu CD или USB; как если бы вы допустили ошибку, ваша система может больше не загружаться или вы можете потерять данные. я предполагаю, что у вас есть зашифрованная система Ubuntu с LUKS, внутри LUKS у вас есть 3 раздела: SYSTEM-BOOT (не зашифрованный), SYSTEM-SWAP (зашифрованный) и SYSTEM-OS (зашифрованный) -

вам нужно настроить UUIDs, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS в соответствии с вариантом, используемым в вашей системе, пожалуйста, смотрите ссылку ниже моего решения для получения дополнительной информации

Получить UUID:

blkid

Подготовить>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

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

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

расскажите системе о разделе подкачки, отредактируйте crypttab>

nano /etc/crypttab

знак равно убедитесь, что две строки совпадают

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

расскажите системе о разделе подкачки, отредактируйте fstab>

nano /etc/fstab

знак равно убедитесь, что у вас есть эта строка

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

рассказать системе о разделе подкачки, отредактировать резюме>

nano /etc/initramfs-tools/conf.d/resume

знак равно убедитесь, что у вас есть эта строка

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

обновить initramfs в загрузочном разделе>

update-initramfs -u -k all

Ссылка

Ответ, вдохновленный настройкой зашифрованной системы Debian (заархивированная ссылка):

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

Раздел подкачки может быть зашифрован двумя способами:

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

Если вы хотите использовать suspend-to-disk, вы не можете использовать первый подход, поскольку он перезапишет ваш объем памяти, хранящийся в разделе подкачки. Кроме того, вы не можете использовать файл ключа, как и другие разделы, так как корневая файловая система не монтируется (и не должна) быть подключена к моменту запуска процесса возобновления и должна прочитать дешифрованный раздел подкачки.

Я решил это, сказав cryptsetup вычислить парольную фразу раздела подкачки из ключа дешифрования тома, содержащего корневую файловую систему; пакет cryptsetup реализует это с /lib/cryptsetup/scripts/decrypt_derived. Таким образом, чтобы настроить раздел подкачки, я делаю следующее, предполагая hda2, что раздел содержит зашифрованный раздел и корневая файловая система находится в hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Чтобы сообщить системе об этом разделе подкачки, нам нужно добавить его в /etc/crypttabи /etc/fstab; убедитесь, что эти файлы содержат строки, подобные следующим:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Благодаря этому, как только вы сконфигурируете систему для приостановки на диск, раздел подкачки будет автоматически настроен рядом с корневой файловой системой очень рано во время последовательности загрузки. Чтобы выяснить, какой раздел подкачки сделать доступным в этот момент, cryptsetup проверяет следующее: asfasfafs - строка, подобная RESUME=/dev/mapper/hda2_cryptin /etc/initramfs-tools/conf.d/resume - настройка устройства возобновления в /etc/uswsusp.conf(см. uswsusp.conf(5)) - запись в /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptв командной строке ядра

Вы можете проверить, /usr/share/initramfs-tools/hooks/cryptrootесли вы хотите узнать больше об этом.

принц
источник
Добро пожаловать в Спросите Ubuntu! Было бы +1, если бы не просто скопировать / вставить, не заботясь о форматировании (что я только что сделал). Мне нравится подход «он может быть воссоздан при каждой загрузке с использованием случайной парольной фразы».
gertvdijk
добавил команды, которые я фактически использовал к ответу, я собираюсь протестировать его также на 12.10, позже обновлю ответ
Prince
Ладно. Я предположил, что вы скопировали / вставили его полностью. Пожалуйста, измените его, чтобы было ясно, какие изменения вы внесли в него, чтобы он работал. Было бы полезно, спасибо!
gertvdijk
не пробуйте это на 12.10, так как я столкнулся с ошибкой, препятствующей загрузке, я получаю сообщение «cryptsetup lvm is not available», отчеты об ошибках поиска в Google. нужно углубиться в это, но нет времени, дадим вам знать позже.
Принц
обновил ответ, моя система 12.10 теперь полностью работоспособна и запрашивает только один пароль, я не обновлял-initramfs -u -k все в конце, что создало проблему, о которой я упоминал в предыдущем комментарии. @gertcdijk отформатировал все, надеюсь, ты счастлив теперь
принц
4

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

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

Если вы не против потерять возможность выхода из спящего режима, вы можете отключить это поведение, отредактировав /etc/initramfs-tools/conf.d/resumeи закомментировав строку, начинающуюся с RESUME=. После внесения изменений запустите, update-initramfs -uчтобы обновить initramfsизображение.

Джеймс Хенстридж
источник
Ах, спасибо! Я не уверен, что хочу пожертвовать спячкой. Я не пользуюсь им часто, но когда батарея изнашивается, не замечая этого, это пригодится. Знаете ли вы, есть ли способ, чтобы cryptsetup использовал один и тот же пароль для /?
Брэд
Я не знаю, как это сделать. И прежде чем вы спросите, не пытайтесь поместить копию вашего ключевого файла в initramfs. Хотя это избавило бы от приглашения парольной фразы, оно также сделало бы его доступным любому, кто имеет физический доступ к диску.
Джеймс Хенстридж