Как зашифровать системный диск убунту
Перейти к содержимому

Как зашифровать системный диск убунту

  • автор:

Установка системы с шифрованием всего диска

Данная статья рассказывает, как создать надёжно зашифрованное хранилище данных на жестком диске компьютера и при этом не сломать спящий и ждущий режимы. Особенно актуально это для владельцев ноутбуков, т. к. в отличие от стационарных компьютеров шанс кражи/утери ноутбука выше и возникает обоснованное желание хранить информацию в зашифрованном виде. Однако, предлагаемая по-умолчанию опция шифрования домашней папки при помощи ecryptfs во-первых не шифрует корневой раздел системы 1) , а во-вторых ecryptfs шифрует раздел swap с применением случайно сгенерированного ключа, таким образом, перестает работать такая нужная в ноутбуках опция как спящий режим 2) 3) .

Предлагается же создать один большой зашифрованный раздел размером с весь диск компьютера 4) , поверх которого развернуть виртуальную группу LVM, в которой создать обычные (не шифрованные с точки зрения ОС) разделы /, /home и swap. При этом, пользователю придётся вводить пароль при каждом включении компьютера (даже при выходе из спящего режима), однако, за счёт смещения шифрования на более низкий уровень, ОС «не заметит» этого и все функции будут работать.

Установка

Итак, для установки нам потребуется диск альтернативной установки системы, который можно скачать тут. Ищите образ с alternate в названии.

Загрузите систему с alternate — диска, выберите язык и приступите к установке:

Загрузите систему с alternate — диска, выберите язык и приступите у установке.

Выберите ручной режим разметки диска:

Выберите ручной режим разметки диска.

Если у вас новый диск или, если вы хотите очистить на нем таблицу разделов, выберите строку с названием диска:

Если у вас новый диск.

и создайте на нем новую таблицу разделов:

. создайте на нем новую таблицу разделов

После этого, создайте на диске раздел /boot, выбрав указателем свободное место на диске:

создайте раздел

создайте раздел

Укажите небольшой объем, от 300 МБ до 1ГБ, т.к. для /boot этого будет вполне достаточно:

от 300 до 1000 МБ лучше сделать раздел первичным и расположить в начале диска

В списке «использовать как» укажите /boot, не забудьте сделать раздел загрузочным:

не забудьте сделать его загрузочным

Далее, не размечая оставшееся место, переходим в пункт «Настроить шифрование для томов»:

переходим в пункт "Настроить шифрование для томов"

Соглашаемся записать изменения:

соглашаемся на запись изменений

Выбираем «Create encrypted volumes»:

Выбираем "Create encrypted volumes"

Далее выбираем (при помощи кнопки Space ) свободное место на диске и жмём «Продолжить»:

выбираем свободное место

Если у вас нет паранойи, можете просто нажать «Настройка раздела закончена», если есть — установите параметр «Стереть данные» в «Да»:

Снова соглашаемся на запись изменений на диск:

Соглашаемся на запись изменений

Далее выбираем «Finish»:

Выбираем "Finish"

Далее установщик попросит вас ввести парольную фразу, которой он «закроет» диск:

введите пароль

После этого подтвердите пароль:

подтвердите пароль

Если вы используете слишком простой пароль 5) , установщик попросит подтверждения:

используйте сильный пароль

После создания шифрованного тома, нужно настроить LVM:

теперь настраиваем LVM

Снова соглашаемся на запись изменений:

ну да, опять

Создаем группу томов:

создаем группу томов

даем ей имя

И указываем в качестве устройств для группы только что созданный шифрованный диск:

тот, что crypt

После этого создаем логические тома:

создаем логические тома

Пример для swap:

для swap для swap

Аналогично создаем диски для root и home, выделяя им желаемый объем. Если у вас большой диск — можете оставить некоторый его объем свободным, позднее вы сможете добавить его к любому логическому тому 6) .

После этого выбирайте «Закончить»:

Закончить

Теперь нужно назначить файловые системы и точки монтирования для созданных дисков:

Выбирайте разделы, находящиеся в блоках, начинающихся на LVM, они названы, согласно именам, данным им вами при создании логических томов, например, в данном случае, это LV home, LV swap и LV root. Стоит заметить, что раздел root 7) не нужно делать загрузочным, т.к. роль загрузочного у нас выполняет отдельный раздел /boot.

По окончании, выбирайте «Закончить разметку и записать изменения на диск»:

Закончить.

И снова соглашаемся с записью изменений на диск (заодно можно ещё раз проверить все ли вы правильно разметили):

Проверяем и жмём "Да"

Далее продолжайте установку системы как обычно. Когда установщик спросит вас, зашифровать ли домашний каталог — откажитесь, ведь ваш диск уже зашифрован.

После завершения установки и перезагрузки система предложит вам ввести пароль для разблокировки шифрованного диска. Введите пароль и нажмите Enter .

Изменение пароля

Работа с live-cd

Загрузитесь с live-cd 8) , выберите «Попробовать Ubuntu» и дождитесь полной загрузки системы. После этого, настройте подключение к интернету. Затем откройте терминал и выполните:

После успешной установки, переходите к этапу «Смена пароля».

Смена пароля

Описание

При установке диск шифруется при помощи связки LUKS и dm-crypt. LUKS использует в качестве идентификаторов доступа key slots, которые в данном случае выступают в виде пароля, однако могут быть и ключом. Всего доступно 8 слотов. По умолчанию (при создании шифрованного диска) используется слот 0.

Если вам нужно использовать компьютер совместно с другим человеком — вы можете создать для него отдельный пароль разблокировки диска.

Для операций со слотами — сначала нужно определиться с диском, на котором установлено шифрование. Выполните в терминале команду

Вывод будет примерно следующим:

Она даст вам список разделов на диске. Нужно найти тот раздел, на котором присутствует зашифрованный раздел. В данном случае это sda5.

Теперь можно просмотреть состояние слотов на этом разделе:

Видим, что слот 0 содержит пароль, а слоты 1-7 имеют статус DISABLED.

Устанавливаем новый ключ

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

Если теперь посмотреть слоты, то станет видно, что статус ENABLED стоит теперь уже у двух слотов:

Теперь можно удалить старый пароль, находящийся в слоте 0:

И видим, что слот 0 стал DISABLED.

Заключение

Вот и все. Информация на диске надёжно защищена. Однако, не стоит забывать, что существует большое количество различных угроз, и ваши данные все еще могут быть доступны злоумышленнику, в то время, пока компьютер включён, все диски «открыты». И конечно же, в случае кражи, шифрование спасет ваши данные от злоумышленника, но не вернет их вам, так что не забывайте делать резервные копии.

Как зашифровать весь диск при установке Ubuntu 22.04

Дистрибутивы Linux проделали большую работу, чтобы получить дополнительную защиту, внедрив полное шифрование диска и став лидером рынка.

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

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

Это пошаговое руководство расскажет вам, как включить полное шифрование диска в Ubuntu 22.04, и для этой цели мы собираемся использовать LVM (управление логическими томами) и LUKS (для целей шифрования).

  • Загрузочный USB-накопитель.
  • Подключение к Интернету с достаточной пропускной способностью для загрузки больших файлов.
  • Материнская плата с поддержкой UEFI.

Но прежде чем перейти к процессу, давайте вкратце расскажем о плюсах и минусах шифрования диска.

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

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

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

Шифрование всего диска в Ubuntu 22.04

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

Посетите официальную страницу загрузки Ubuntu и выберите версию Ubuntu 22.04 LTS, которая автоматически начнет загрузку.

Чтобы записать ISO-образ Ubuntu на USB-накопитель, мы собираемся использовать Balena Etcher, который автоматически определит ОС, которую вы используете в данный момент. После того, как вы закончите установку Balena Etcher, установите его в своей системе.

Чтобы записать файл ISO, откройте balenaEtcher, выберите опцию «Flash from file» и выберите недавно загруженный файл ISO Ubuntu 22.04.

Далее выбираем диск, на который мы хотим прошить файл ISO. Выберите параметр «Выбрать цель», и в нем будут перечислены все подключенные диски в вашей системе. Из доступных вариантов выберите USB-накопитель или DVD-диск.

После того, как мы успешно прошили наш USB-накопитель, пришло время загрузиться с USB-накопителя. Чтобы загрузиться с USB, перезагрузите систему и используйте F10, F2, F12, F1 или DEL во время загрузки системы. Оттуда вы должны выбрать свой USB в качестве загрузочного диска.

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

ПРИМЕЧАНИЕ. Некоторые команды отличаются для пользователей Nvme SSD, поэтому, пожалуйста, прочитайте инструкцию перед применением команды, поскольку мы разделили их, когда это необходимо.

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

Нажмите «Действия», расположенные в левом верхнем углу, и введите поиск «Терминал». Нажмите Enter в первом результате, и он откроет для нас Терминал. Затем переключитесь на пользователя root, так как все команды, которые мы собираемся использовать, потребуют прав администратора.

Поскольку следующие команды будут сильно зависеть от BASH, давайте переключимся с нашей оболочки по умолчанию на BASH с помощью следующей команды:

Затем определите цель установки, нам необходимо перечислить все подключенные устройства хранения с помощью следующей команды:

Вы можете легко определить целевой раздел по размеру, и в большинстве случаев он будет называться sda и vda. В моем случае это sda размером 20GB.

Этот раздел применим только для вас, если вы используете HDD для твердотельных накопителей SATA. Поэтому, если у вас есть твердотельный накопитель Nvme, выделение имен переменных объясняется на следующем шаге.

Поскольку мое целевое устройство называется sda, мне необходимо использовать следующую команду:

Если вы используете Nvme, схема именования вашего целевого устройства будет выглядеть так: /dev/nvme&#36 n&#36 p&#36 , поэтому, если есть только один раздел, вероятно, имеют похожее имя на данную команду:

Теперь давайте настроим переменную для сопоставителя зашифрованных устройств с помощью следующей команды:

Каждому устройству Nvme потребуется ‘p’ в суффиксе, поэтому используйте данные команды для добавления суффикса:

Чтобы создать новую таблицу разделов GPT, мы собираемся использовать утилиту sgdidk со следующей командой:

Теперь мы можем безопасно удалить все доступные данные, но если вы устанавливаете эту систему вместе с существующими разделами, избегайте этого шага.

Для форматирования данных используйте следующую команду:

Мы собираемся выделить 2 МБ раздела для образа ядра GRUB в режиме BIOS, 768 МБ загрузочного раздела и 128 МБ для файловой системы EFI, а оставшееся пространство будет выделено пользователю, где вы сможете хранить нужные данные.

Используйте данные команды одну за другой, чтобы разбить диск:

Чтобы изменить имя раздела, используйте данные команды:

Чтобы вывести список недавно созданных разделов, используйте следующую команду:

Давайте начнем наш процесс шифрования с шифрования загрузочного раздела. Вы должны ввести YES всеми заглавными буквами, когда он запрашивает ваше разрешение.

Теперь давайте зашифруем раздел ОС с помощью следующей команды:

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

Этот шаг применим только в том случае, если ваша система оснащена твердотельным накопителем Nvme. Используйте следующие команды для шифрования загрузочного раздела и раздела ОС:

Теперь давайте разблокируем зашифрованные разделы, поскольку это необходимо для дальнейшей обработки при установке.

Это один из самых ответственных шагов, так как если его не сделать, установщик отключит возможность записи файловой системы. Используйте следующую команду, чтобы начать форматирование:

Если ваша система оснащена жестким диском и твердотельным накопителем SATA, используйте следующую команду, чтобы отформатировать его в FAT16:

Поэтому, если в вашей системе используется твердотельный накопитель Nvme, вы можете легко отформатировать 3-й раздел с помощью следующей команды:

LVM — одна из тех функций, которыми я восхищаюсь больше всего. Даже если вы не используете функции LVM, их включение не повредит вашей системе, и в будущем, если вам понадобятся какие-либо функции, предоставляемые LVM, вы сможете использовать их без каких-либо проблем.

Здесь мы собираемся выделить 4 ГБ для раздела подкачки, который будет использовать дисковое пространство, когда в системе закончится память. Мы также выделяем 80% свободного места для root, чтобы пользователь мог максимально использовать свое дисковое пространство.

Конечно, вы можете изменить его в соответствии с вашими вариантами использования и даже изменить его в будущем. Используйте данные команды одну за другой, и ваша система будет готова к LVM в кратчайшие сроки:

Пришло время запустить установщик Ubuntu. Просто сверните установщик, и вы найдете его на главном экране.

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

В разделе типа установки выберите параметр «Что-то еще», который поможет нам управлять разделами, которые мы только что создали вручную.

Здесь вы найдете несколько разделов с одинаковым именем. Вы можете легко определить оригинал, так как установщик укажет размер. Теперь начнем с LUKS_BOOT.

Выберите LUKS_BOOT и нажмите кнопку изменения.

Теперь выберите файловую систему журналирования Ext4 в первом варианте. Включите параметр Форматировать раздел и в точке монтирования выберите /boot.

Точно так же выберите ubuntu–vg-root и нажмите кнопку изменения. Здесь выберите файловую систему журналирования Ext4 в первом варианте. Включите параметр «Форматировать раздел» и в последнем выберите параметр «/».

Теперь выберите ubuntu–vg-swap_1 и нажмите кнопку параметров. Выберите опцию области подкачки и все.

Завершите изменения и выберите свое текущее местоположение.

После создания пользователя не нажимайте кнопку «Установить сейчас», так как мы собираемся применить некоторые команды сразу после создания нового пользователя. Создайте пользователя с надежным паролем.

Сразу после того, как вы создали пользователя, откройте свой терминал и используйте данные команды, так как мы собираемся включить шифрование в GRUB перед началом установки:

После завершения установки нажмите «Продолжить тестирование», поскольку мы собираемся внести некоторые изменения, которые по-прежнему требуют от нас использования загрузочного диска.

В этом разделе мы собираемся смонтировать диски, установить необходимые пакеты и внести некоторые необходимые изменения, чтобы шифрование заработало. Итак, откройте свой терминал и выполните указанные шаги:

Chroot используется для доступа к разделам, на которые мы только что установили Ubuntu. Используйте приведенные команды, одна из которых включает в себя монтирование диска и создание chroot-окружения.

Пакет Cryptsetup будет отвечать за разблокировку зашифрованных файлов во время загрузки, и мы можем легко установить его с помощью данной команды:

Файл ключа будет использоваться для перекрестной проверки кода доступа для расшифровки и сохраняется в /boot/, который также является зашифрованным разделом. Используйте данную команду, чтобы продолжить:

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

Предполагается, что это один из последних шагов, поскольку мы довольно близки к успешному шифрованию нашей системы. Используйте следующую команду, чтобы добавить ключи в файл boot_os.key.

Чтобы добавить ключи в crypttab, используйте следующую команду:

Если вы используете Nvme SSD, вы можете использовать следующую команду для добавления ключей в boot_os.file:

Точно так же, чтобы добавить ключи в crypttab, используйте следующую команду:

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

Теперь перезагрузите систему, и вы получите приглашение с парольной фразой GRUB для загрузки вашей системы.

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

Как зашифровать диск с установленной Ubuntu 16.04?

Возникла у меня такая мысль — перенести с декстопа ubuntu на нетбук и зашифровать диск во избежании.
С переносом и запуском системы проблем не возникло — работает.
Но вот с шифрованием я немного растерялся. Нашел пару статей, но то ли я не до конца понимаю процесс, то ли это не совсем то что мне нужно.
Статьи:
Мечта параноика или Еще раз о шифровании
Шифрование дисков в Linux
Там описан примерно такой процесс:

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

  • Вопрос задан более трёх лет назад
  • 6777 просмотров
  • Facebook
  • Вконтакте
  • Twitter

Внимание: данная инструкция актуальна для Ubuntu 17.04 x64 на UEFI системе.
Внимание №2: если это покажется вам слишком сложным, вы всегда можете переустановить систему, выбрав опцию шифрованной инсталляции в установщике Ubuntu, хотя конфигурация там будет менее «чистой» чем здесь.
Внимание №3: настоятельно рекомендую сначала поставить аналогичную систему в виртуальной машине и провести все нужные операции там, и только убедившись что всё получилось делать что-то с живой системой.
Внимание №4: всегда имейте под рукой загрузочную флэшку с Ubuntu на всякий случай, с её помощью можно творить чудеса:)

У меня всё зашифровано кроме загрузочной флэшки, где grub2, несколько модулей и конфиг что указывает как найти диск что нужно расшифровать.
Не форматируя можно перенести, имея рядом второй диск, иначе я бы сказал что нет, имея второй диск и файловую систему btrfs можно вообще прямо из рабочей системы всё переносить туда/сюда.

В общем и целом я делал так (с BTRFS, ибо намного проще, так же предполагается что у вас UEFI, иначе всё ещё сложнее):
1) sudo cryptsetup -s 512 luksFormat /dev/nvme0n1 — это для nvme SSD, заменяете на свой диск
2) Открываете криптоконтейнер, создаете файловую систему, дальше либо монтируете и переносите файлы, либо просто добавляете к существующей файловой системе этот новый раздел и удаляете старый (команды не привожу, читайте https://wiki.archlinux.org/index.php/Dm-crypt/Encr. , там много примеров, и https://btrfs.wiki.kernel.org/index.php/Main_Page, там тоже всё с примерами есть)
3) Правите /etc/crypttab (создаете если нет), мой пример вот:
и /etc/fstab примерно так:

4) Поскольку указать просто файл с ключем для автоматического открытия luks контейнера нельзя ибо он не попадет в образ initramfs и нужно будет вводить пароль дважды (раз в grub для начала загрузки и раз после начала загрузки чтобы разблокировать корневую файловую систему), то нужно писать shell скрипт ( /etc/cryptroot/system.64.sh в примере выше), который выведет этот ключ. Для этого генерируем сырые данные для ключа, превращаем данные в base64 чтобы легко было работать с ним в shell скрипте и создаем shell скрипт, потом корректируем права:

5) Добавляем этот ключ в слот luks контейнера
6) Помещаем на загрузочную флэшку (gpt таблица, FAT32 раздел с esp флагом) в EFI/ubuntu grubx64.efi, (должен уже там быть), создаем папку x86_64-efi для модулей, ложим туда модули, которые необходимы для открытия luks контейнера (взять их можно в /boot/grub/x86_64-efi ):

7) Конфигурируем grub (копирование модулей и ручное конфигурирование является следствием бага https://bugs.launchpad.net/ubuntu/+source/grub2/+b. ). Во-первых добавляем GRUB_ENABLE_CRYPTODISK=y в /etc/default/grub (где-то сразу после GRUB_CMDLINE_LINUX ), создаем/правим /boot/efi/EFI/ubuntu/grub со следующим содержимым:

Тут E495-1F0C это ваш ESP раздел на флэшке, 739967f19770470aa0318d8b8bcdb350 это ваш криптоконтейнер, а 5170aca4-061a-4c6c-ab00-bd7fc8ae6030 это корневая файловая система. Данный конфиг использует скопированные ранее модули, пытается открыть luks контейнер и взять оттуда основной конфиг grub для отображения меню и последующей загрузки. Я бы посоветовал сделать копию конфига рядом на всякий случай, если Ubuntu решит перезаписать его нерабочей версией сверху.
8) Делаем chroot в корневую систему из пункта 2) и обновляем grub sudo dpkg-reconfigure grub-efi-amd64 (убедитесь что созданный нами конфиг не был затерт), initramfs sudo update-initramfs -u -k all

Если я ничего не забыл по ходу написания, то после этого можно будет загрузиться в полностью зашифрованную систему. На флэшке будет несколько файлов суммарным размером в 255КиБ, перед отображением меню grub у вас система спросит пароль от luks контейнера, без которого кроме нескольких не конфиденциальных файлов на флэшке всё полностью зашифровано.

Full_Disk_Encryption_Howto_2019

Further support may be available from the official Ubuntu support community IRC channel #ubuntu on Libera (irc.libera.chat or https://web.libera.chat/).
Encryption PadlockThis page is an up-to-date guide (last revised August 2022) to comprehensive LUKS encryption, including GRUB, covering 18.04 LTS and later releases.

It is focused on modifying the Ubuntu Desktop installer process in the minimum possible way to allow it to install with an encrypted /boot/ and root file-system. It requires 36 commands be performed in a terminal, all of which are shown in this guide and most can be copy and pasted.
It is also a useful overview on the manual steps required for storage-at-rest encryption.

It is intended to replace the current (hopelessly out-of-date and inadequate) FullDiskEncryptionHowto page.

Almost Full Disk Encryption (FDE)

I’m (Tj) being deliberately pedantic in calling this almost Full Disk Encryption since the entire disk is never encrypted. What is encrypted are the operating system partition and the boot-loader second-stage file-system which includes the Linux kernel and initial RAM disk.

However, this is much better than the Ubuntu installer Encrypt Disk option which only supports encrypting the operating system partition but leaves the boot-loader second stage file-system unencrypted and therefore vulnerable to tampering of the GRUB configuration, Linux kernel or more likely, the initial RAM file-system (initrd.img).

In both cases the first-stage GRUB boot-loader files are not (and cannot) be encrypted or protected through cryptographic signatures in BIOS boot mode.

It is possible, in UEFI Secure Boot mode, to have every stage cryptographically signed, in which case any tampering can be detected and boot aborted. Unfortunately, Canonical (who control the building of the packaged signed GRUB UEFI boot-loader) did not include the encryption modules in their signed GRUB EFI images until the release of 19.04 Disco. See bug #1565950.

  1. Prerequisites
  2. Boot the Installer
    1. Boot Modes
      1. Selecting UEFI boot mode
      2. Detecting UEFI boot mode
      1. GRUB (UEFI mode)
      2. Syslinux (BIOS mode)
      3. Welcome Options
      1. Identify Installation Target Device
      2. Partitioning
      3. LUKS Encrypt
      4. LUKS unlock
      5. Format File-systems
      6. LVM (Logical Volume Management)
      1. Manual Partitioning
      2. Enable Encrypted GRUB

      Prerequisites

      Boot the Installer

      1. GRUB (GRand Unified Bootloader)
      2. Syslinux
      1. ISO-9660 El-Torito (the CD/DVD optical media boot mechanism — uses Syslinux)
      2. GPT + EFI-SP (GUID Partition Table and EFI System Partition — uses GRUB)
      3. MBR + EFI-SP (Master Boot Record and EFI System Partition — uses GRUB)
      4. GPT + PC (GUID Partition Table and BIOS boot — uses Syslinux)
      5. MBR + PC (Master Boot Record and BIOS boot — uses Syslinux)

      Boot Modes

      PCs have two boot modes: BIOS (Basic Input Output System) and UEFI (Unified Extensible Firmware Interface). BIOS was installed in IBM PCs and compatibles from the 1980s. UEFI mode has become prevalent since Microsoft introduced it in Windows 7 and later began requiring it on new PCs to meet the Windows Logo License Agreement requirements. Most PCs since 2010 have UEFI.

      Apple Macintosh/iMac devices have their own EFI (Extensible Firmware Interface) which is almost, but not quite, the same as UEFI but do not have a BIOS equivalent. This guide doesn’t (currently) address installation on Apple devices.

      BIOS is also known as Legacy or CSM (Compatibility Support Module) when part of UEFI.

      If the target system is BIOS-only you can disregard the rest of this section.

      Selecting UEFI boot mode

      In order to support UEFI Secure Boot, or to install alongside another operating system that uses UEFI boot mode (e.g. Windows 10), the system motherboard’s firmware boot-manager has to be told to start the Ubuntu installer in UEFI mode.

      Unfortunately there is no consistency between different PC manufacturers on how motherboard firmware boot-managers should indicate boot-mode so we, as users, have to figure it out from what clues we can see when the PC’s boot menu is displayed and lists boot devices.

      Let’s assume we’re using a USB Flash device. The boot menu may list that device twice (once for UEFI mode, and again for BIOS/CSM/Legacy mode). It may make it explicit that one is «UEFI» and the other not, or it may use some hard-to-spot code such as a single letter abbreviation (e.g. «U» vs «B»).

      If we want to guarantee UEFI mode and avoid BIOS/CSM/Legacy mode then by entering firmware Setup at power-on we should be able to find an option to disable CSM/Legacy mode.

      After doing that we can be sure the installer will boot in UEFI mode.

      There is a quick way to confirm the installer has started in UEFI mode — it will be using GRUB, so see the following section First Boot Screen > GRUB (UEFI mode) for what it will look like.

      Detecting UEFI boot mode

      Once Linux has started it is possible to check. The presence of the efivarfs file-system means the system booted in UEFI mode:

      First Boot Screen

      The options displayed will look different depending on which boot-loader is used.

      GRUB (UEFI mode)

      Choose Try Ubuntu without installing from the GRUB boot-loader menu: GRUB Boot-loader main menu

      Syslinux (BIOS mode)

      The display will briefly pause for selection of the input language: Syslins Language chooser

      If you interrupt at this stage to choose a language Syslinux will display a menu where you can make various advanced changes to the boot options. At this point you should choose the Try Ubuntu without installing menu option. Syslinux advanced menu

      Welcome Options

      If the boot hasn’t been interrupted to choose a language the Welcome dialog with start-up options will be displayed. Choose Try Ubuntu.

      Welcome dialog

      Live Desktop

      Once the Live Desktop environment has started we need to use a Terminal shell command-line to issue a series of commands to pre-prepare the target device before executing the Installer itself.

      On Ubuntu (Gnome) press the Show Applications button at lower-left corner

      Show Applications

      In the subsequent text search field type «Term» until just the Terminal icon is shown (on Kubuntu search for «Konsole«)

      Choose Terminal

      Press the icon to launch Terminal.

      Start Terminal

      Instead of these steps you can just press Ctrl+Alt+T hot-key combination.

      Pre-Prepare Encrypted Partitions

      You might find maximising the Terminal window is helpful for working with the command-line.

      As much as is possible these manual steps will keep to the same installation layout and naming as the installer uses.

      For these commands you’ll need elevated privileges so switch to root user (the $ prefix indicates a regular user and # indicates root user):

      A couple of later commands rely on Bourne-Again Ash Shell (BASH) specific functionally so always switch from the default shell to bash:

      If at any time you wish to check which shell is in use do:

      You will something like one of these:

      Identify Installation Target Device

      Here the installation target device is sda but yours may vary so examine the SIZE to ensure you choose the correct target. (in this example target is a 9GiB virtual machine disk image file).

      We’ll set an environment variable we can re-use in all future commands. Doing this will allow you to copy and paste these instructions directly into your terminal (note: do not copy and paste the «#» prefix). In this example I’m installing to /dev/sda:

      On systems with NVME storage devices the naming scheme is /dev/nvme$n$p$ so if there is only one device it is likely it would require:

      Finally we’ll set an environment variable for the encrypted device-mapper naming that omits the leading path «/dev/» part:

      And we have to cope with NVME devices needing a ‘p’ for partition suffix:

      Partitioning

      We’ll now create a disk label and add four partitions. We’ll be creating a GPT (GUID Partition Table) so it is compatible with both UEFI and BIOS mode installations. We’ll also create partitions for both modes in addition to the partitions for the encrypted /boot/ and / (root) file-systems.

      We’ll be using the sgdisk tool. To understand its options please read man 8 sgdisk

      First check for any existing partitions on the device and if some are found consider if you wish to keep them or not. If you wish to keep them DO NOT USE sgdisk —zap-all command detailed next. Instead, consider if you need to free up disk space by shrinking or deleting individual existing partitions.

      If you do need to manipulate the existing partitions use the Show Applications menu to search for GPartEd which is the graphical user interface partitioning tool (see the GPartEd manual for how to use it) Gparted Partitioner

      If it is safe to delete everything on this device you should wipe out the existing partitioning metadata — DO NOT DO THIS if you are installing alongside existing partitions!

      Now we’ll create the partitions. A small bios_boot (2MB) partition for BIOS-mode GRUB’s core image, an 128MB EFI System Partition, a 768MB /boot/ and a final partition for the remaining space for the operating system.

      Syntax: --new=<partition_number>:<start>:<end> where start and end can be relative values and when zero (0) adopt the lowest or highest possible value respectively.

      Partition 4 is not created. The reason is the Ubuntu Installer would only create partitions 1 and 5. Here we create those and in addition the two boot-loader alternatives.

      LUKS Encrypt

      The default LUKS (Linux Unified Key Setup) format (version) used by the cryptsetup tool has changed since the release of 18.04 Bionic. 18.04 used version 1 («luks1«) but more recent Ubuntu releases default to version 2 («luks2«). GRUB only supports opening version 1 so we have to explicitly set luks1 in the commands we use or else GRUB will not be able to install to, or unlock, the encrypted device.

      Note: as of October 2021 and Ubuntu 21.10 GRUB still does not yet support installing to luks2 containers. It can read luks2 (although with several strict limitations, and subject to some bugs decoding UUIDs) but grub-install via grub-probe cannot recognise a luks2 device and therefore cannot correctly install into luks2 containers.

      In summary, the LUKS container for /boot/ must currently use LUKS version 1 whereas the container for the operating system’s root file-system can use the default LUKS version 2.

      For more information see the man-pages for 18.04 Bionic or 18.10 Cosmic onwards.

      First the /boot/ partition:

      Now the operating system partition:

      LUKS unlock

      Now open the encrypted devices:

      After the Ubuntu installation is finished we will be adding key-files to both of these devices so that you’ll only have to type the pass-phrase once for GRUB and thereafter the operating system will use embedded key-files to unlock without user intervention.

      Format File-systems

      IMPORTANT this step must be done otherwise the Installer’s partitioner will disable the ability to write a file-system to this device without it having a partition table (Man-page for mkfs.ext4):

      Format the EFI-SP as FAT16 (Man-page for mkfs.vfat):

      LVM (Logical Volume Management)

      We’ll now create the operating system LVM Volume Group (VG) and a Logical Volume (LV) for the root file-system.

      LVM has a wonderful facility of being able to increase the size of an LV whilst it is active. To provide for this we will only allocate 80% of the free space in the VG to the LV initially. Later, if you need space for other file-systems, or snapshots, the installed system will be ready and able to support those requirements without struggling to free up space.

      I am also creating a 4GiB LV device for swap which, as well as being used to provide additional memory pages when free RAM space is low, is used to store a hibernation image of memory so the system can be completely powered off and can resume all applications where they left off. The size of the swap space to support hibernation should be equal to the amount of RAM the PC has now or is is expected to have in the future.

      Note: Since the 22.04 release of codename Jammy (April 2022) the naming of the VG by the installer has changed; hyphens have been removed and the name format changed. The format is now vg$ where $ might be e.g: "ubuntu" or "kubuntu"). In order to make the commands listed here-after work precisely we now add an extra step to put the VG name into a variable and use that in subsequent instructions. ToDo: I will go back over previous installers for 18.04 and 20.04 to ensure this all still works.

      Install Ubuntu

      Now minimise the Terminal window and start the Installer:

      Start the Installer

      Choose the installation language and keyboard and then the software installation choices:

      Software Choices

      In the Installation Type options choose Something Else:

      Installation Type

      Manual Partitioning

      The manual partitioner will start:

      Manual Partitioner

      Select the root file-system device for formatting (e.g: /dev/mapper/ubuntu--vg-root), press the Change button, choose Use As Ext4. and Mount point /:

      Root file-system selection

      Select the swap device (e.g: /dev/mapper/ubuntu--vg-swap_1), press the Change button, choose Use as swap area:

      Swap device selection

      Select the Boot file-system device for formatting (/dev/mapper/LUKS_BOOT), press the Change button. choose Use as Ext4. and Mount point /boot:

      /boot file-system selection

      Select the boot-loader device (/dev/sda in my example). Boot-loader device should always be a raw disk not a partition or device-mapper node:

      Boot-loader device selection

      Press the Install Now button to write the changes to the disk and press the Continue button:

      Write changes to disk

      The installation process will continue in the background whilst you fill in the Where Are You? and Who Are You? forms:

      Who Are You?

      Enable Encrypted GRUB

      As soon as you have completed those forms switch to the Terminal to configure GRUB. These commands wait until the installer has created the GRUB directories and then adds a drop-in file telling GRUB to use an encrypted file-system. The command will not return to the shell prompt until the target directory has been created by the installer. In most cases that will have been done before this command is executed so it should instantly return:

      This has to be done before the installer reaches the Install Bootloader stage at the end of the installation process.

      Copying Files

      If installation is successful choose the Continue Testing option:

      Continue Testing

      Post-Installation Steps

      Return to the Terminal and create a change-root environment to work in the newly installed OS (Man-pages for mount chroot):

      Within the chroot install and configure the cryptsetup-initramfs package. This may already be installed. Note: this package is not available in 18.04 Bionic because the files are included in the main cryptsetup package.

      This allows the encrypted volumes to be automatically unlocked at boot-time. The key-file and supporting scripts are added to the /boot/initrd.img-$VERSION files.

      This is safe because these files are themselves stored in the encrypted /boot/ which is unlocked by the GRUB boot-loader (which asks you to type the pass-phrase) which then loads the kernel and initrd.img into RAM before handing execution over to the kernel. (Man-page for initramfs.conf):

      Create a randomised key-file of 4096 bits (512 bytes), secure it, and add it to the LUKS volumes (Man-pages for dd chmod):

      Add the keys to the crypttab (Man-pages for crypttab blkid):

      Finally update the initialramfs files to add the cryptsetup unlocking scripts and the key-file:

      If everything has gone well the system is now ready to reboot.

      ReBoot

      Reboot the system, not forgetting to remove the installation media (otherwise it'll boot again!). Settings and Power dialog

      Shutdown dialog

      You should get a GRUB pass-phrase prompt:

      GRUB Passphrase prompt

      Full_Disk_Encryption_Howto_2019 (последним исправлял пользователь tj 2022-08-12 18:54:03)

      The material on this wiki is available under a free license, see Copyright / License for details
      You can contribute to this wiki, see Wiki Guide for details

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *