Поиск по сайту:

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


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

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

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

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

Предпосылки:

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

Но прежде чем приступить к процессу, давайте кратко представим себе плюсы и минусы Шифрование диска.

Плюсы и минусы шифрования диска

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

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

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

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

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

Шаг 1. Загрузите ISO-образ Ubuntu 22.04.

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

Шаг 2. Создайте загрузочный USB-накопитель Ubuntu

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

Чтобы записать файл ISO, откройте balenaEtcher, выберите параметр «Прошить из файла», а затем выберите недавно загруженный файл Ubuntu 22.04 ISO.

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

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

Шаг 3. Запустите установку Ubuntu с помощью USB-накопителя

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

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

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

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

sudo -i

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

bash

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

lsblk

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

Присвойте имена переменных целевому устройству (для жестких дисков и твердотельных накопителей SATA)

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

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

export DEV="/dev/sda"
Назначьте имена переменных целевому устройству (только для твердотельных накопителей Nvme)

Если вы используете Nvme, схема именования вашего целевого устройства будет такой: /dev/nvme$ {CONTROLLER}n$ {NAMESPACE}p$ {PARTITION} поэтому, если есть только один раздел, он, скорее всего, будет иметь такое же имя, как и данная команда:

export DEV="/dev/nvme0n1"

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

export DM="${DEV##*/}"

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

export DEVP="${DEV}$( if [[ "$DEV" =~ "nvme" ]]; then echo "p"; fi )"
export DM="${DM}$( if [[ "$DM" =~ "nvme" ]]; then echo "p"; fi )"

Шаг 4. Создайте новый раздел GPT

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

sgdisk --print $DEV

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

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

sgdisk --zap-all $DEV

Шаг 5. Создайте новый раздел для установки.

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

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

sgdisk --new=1:0:+768M $DEV
sgdisk --new=2:0:+2M $DEV
sgdisk --new=3:0:+128M $DEV
sgdisk --new=5:0:0 $DEV
sgdisk --typecode=1:8301 --typecode=2:ef02 --typecode=3:ef00 --typecode=5:8301 $DEV

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

sgdisk --change-name=1:/boot --change-name=2:GRUB --change-name=3:EFI-SP --change-name=5:rootfs $DEV
sgdisk --hybrid 1:2:3 $DEV

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

sgdisk --print $DEV

Шаг 6. Шифрование загрузочного раздела и раздела ОС

Только для жестких дисков и твердотельных накопителей SATA

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

cryptsetup luksFormat --type=luks1 ${DEV}1

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

cryptsetup luksFormat --type=luks1 ${DEV}5

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

cryptsetup open ${DEV}1 LUKS_BOOT
cryptsetup open ${DEV}5 ${DM}5_crypt
Только для твердотельных накопителей Nvme

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

cryptsetup luksFormat --type=luks1 ${DEVP}1
cryptsetup luksFormat --type=luks1 ${DEVP}5

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

cryptsetup open ${DEVP}1 LUKS_BOOT
cryptsetup open ${DEVP}5 ${DM}5_crypt

Шаг 7: Форматирование разделов

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

mkfs.ext4 -L boot /dev/mapper/LUKS_BOOT

Форматирование раздела EFI-SP (только для жестких дисков и твердотельных накопителей SATA)

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

mkfs.vfat -F 16 -n EFI-SP ${DEV}3
Форматирование раздела EFI-SP (только для твердотельных накопителей Nvme)

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

mkfs.vfat -F 16 -n EFI-SP ${DEVP}3

Шаг 8. Создайте группы логических томов

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

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

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

pvcreate /dev/mapper/${DM}5_crypt
vgcreate ubuntu--vg /dev/mapper/${DM}5_crypt
lvcreate -L 4G -n swap_1 ubuntu--vg
lvcreate -l 80%FREE -n root ubuntu--vg

Шаг 9: Запустите установщик Ubuntu

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

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

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

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

Выберите LUKS_BOOT и нажмите кнопку «Изменить».

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

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

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

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

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

Шаг 10. Включите шифрование в GRUB

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

while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg

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

Шаг 11. Настройка Ubuntu после установки

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

Создать Chroot-окружение

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

mount /dev/mapper/ubuntu----vg-root /target
for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done 
chroot /target
mount -a

Установите пакет Cryptsetup-initramfs

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

apt install -y cryptsetup-initramfs
Добавьте ключевые файлы и вспомогательные сценарии

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

echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook 
echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf 
Создайте файл ключа и добавьте его в LUKS.

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

mkdir /etc/luks
dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=512 count=1
chmod u=rx,go-rwx /etc/luks
chmod u=r,go-rwx /etc/luks/boot_os.keyfile
Добавление ключей в boot_os.file и Crypttab (только для жестких дисков и твердотельных накопителей SATA)

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

cryptsetup luksAddKey ${DEV}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEV}5 /etc/luks/boot_os.keyfile 

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

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEV}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEV}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
Добавление ключей в boot_os.file и Crypttab (только для твердотельных накопителей Nvme)

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

cryptsetup luksAddKey ${DEVP}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEVP}5 /etc/luks/boot_os.keyfile 

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

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEVP}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEVP}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
Обновить файлы Initialramfs

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

update-initramfs -u -k all

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

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