зупинити crypttab з проханням пароля для swap


10

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

/
/home
swap

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

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 до простору swap, щоб він взагалі не був налаштований - як тільки система завантажиться, я можу ввімкнути її без парольної фрази, тому я подумав, що просто додам пізній сценарій init, який потрібно зробити це, але навіть з неаутовим 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 (зашифрований) -

Вам потрібно відрегулювати UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS для варіації, використовуваної у вашій системі, будь ласка, дивіться посилання нижче мого рішення для отримання додаткової інформації

Отримати UUID:

blkid

Підготуватися>

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

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

/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

повідомте системі про розділ swap, відредагуйте 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

повідомте системі про розділ swap, відредагуйте fstab>

nano /etc/fstab

=? переконайтеся, що у вас є цей рядок

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

повідомте системі про розділ swap, відредагуйте резюме>

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

=? переконайтеся, що у вас є цей рядок

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

оновити initramfs на завантажувальному розділі>

update-initramfs -u -k all

Довідково

Відповідь, натхненна налаштуванням зашифрованої системи Debian (заархівоване посилання):

Якщо ви використовуєте зашифровану систему Debian, ви, ймовірно, повинні відповідати деяким вимогам безпеки. Якщо це так, ви також повинні використовувати зашифрований розділ swap.

Розділ swap можна зашифрувати двома способами:

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

Якщо ви хочете скористатися призупиненням на диск, ви не можете використовувати перший підхід, оскільки він замінить слід пам’яті, що зберігається в розділі swap. Крім того, ви не можете використовувати файл ключів, як і інші розділи, оскільки коренева файлова система не (і не повинна) монтуватися до моменту запуску процесу відновлення та потребує читання розшифрованого розділу swap.

Я вирішив це, кажучи cryptsetup обчислити парольну фразу розділу swap із ключа дешифрування тома, що містить кореневу файлову систему; пакет cryptsetup реалізує це за допомогою /lib/cryptsetup/scripts/decrypt_derived. Таким чином, щоб налаштувати розділ swap, я виконую наступне, припускаючи hda2, що розділ містить зашифрований swap і коренева файлова система знаходиться в 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

Щоб повідомити системі про цей розділ swap, нам потрібно додати його до /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

З цим на місці, як тільки ви налаштуєте систему для призупинення на диск, розділ swap автоматично буде встановлений поряд із кореневою файловою системою дуже рано під час завантаження. Щоб визначити, який розділ підкачки зробити доступним у цій точці, 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чи хочете ви дізнатися більше про це.


Ласкаво просимо в Ask Ubuntu! Був би +1, якби не просто скопіювати / вставити, не піклуючись про форматування (що я щойно зробив). Мені подобається, що "це можна відтворити на кожному завантаженні, використовуючи випадкову парольну фразу" тут.
gertvdijk

додав команди, які я насправді використовував у відповіді, я збираюся перевірити її також 12.10, відповідь оновіть пізніше
Принц

Добре. Я припускав, що ви скопіювали / вставили його повністю. Змініть його, щоб було зрозуміло, які зміни ви внесли до нього, щоб змусити його працювати. Буде корисно, дякую!
gertvdijk

не спробуйте його 12.10, коли я зіткнувся з помилкою, яка запобігає завантаженню, я отримую "cryptsetup lvm недоступний", повідомляє про помилку пошуку в Google пошуку. Вам потрібно придивитись до цього глибше, але не маючи часу, повідомте про це пізніше.
Принц

оновив відповідь, моя система 12.10 тепер повністю функціонує і запитує лише один пароль, я не оновив-initramfs -u -k все наприкінці, що створило проблему, про яку я згадував у попередньому коментарі. @gertcdijk сформулював усе, сподіваюсь, ур щасливий зараз
принц

4

Це, ймовірно, вказує на те, що підрозділ swap доступний під час initramfsчастини завантажувального процесу. На даний момент коренева файлова система ще не змонтована, тому будь-які збережені там файли конфігурації не будуть видимими.

У той час як простір підкачки встановлюється після кореневої файлової системи, є причина initramfsініціалізації доступу до місця обміну: коли ви перебуваєте в сплячому режимі свого комп'ютера, вміст пам'яті та стан системи записуються на обмін. Щоб відновити сплячку, необхідно перевірити, чи міститься в просторі обміну зображення гібернації, яке вимагало б фразу.

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


Ах, дякую! Я не впевнений, що хочу пожертвувати сплячкою. Я не використовую його часто, але коли акумулятор зношується, не помічаючи, це стане в нагоді. Чи знаєте ви, чи існує спосіб повторного використання cryptsetup того ж пароля для /?
Бред

Я не знаю, як це зробити. І перш ніж запитати, не намагайтеся вставити копію вашого файлу ключів у initramfs. Хоча це позбавиться від запиту про фразу, він також зробить його доступним для всіх, хто має фізичний доступ до диска.
Джеймс Генстридж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.