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

Как зашифровать существующую систему Ubuntu 24.04

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

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

Таким образом, при каждой загрузке системы Ubuntu она запрашивает ввод пароля для разблокировки загрузочной записи (если /boot также зашифрован) и раздела диска, прежде чем пользователь сможет войти в систему.

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

Это руководство протестировано в Ubuntu 24.04 LTS с загрузчиком Grub по умолчанию. В настройку системы входят:

  • Безопасная загрузка: отключена. Не уверен, что это необходимо.
  • /boot/efi в отдельном разделе /dev/sda3.
  • все остальные системные файлы (включая /boot, /home, область подкачки) в одном разделе Ext4 /dev/sda4.

Это также должно работать, если вы разделили /boot, /home и swap. Но для файловой системы, отличной от Ext4, процесс сжатия может отличаться.

ПРИМЕЧАНИЕ. Процесс шифрования, описанный в этом руководстве, МОЖЕТ СЛОМАТЬ ВАШУ СИСТЕМУ!!! Не делайте этого на рабочей машине, если не знаете, как восстановить.

Шаг 1: Подготовка

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

1. Сначала загрузитесь и войдите в Ubuntu 24.04. Затем нажмите Ctrl+Alt+T, чтобы открыть окно терминала. Когда он откроется, выполните команду:

df -h

Команда поможет узнать корневой раздел /, куда установлен загрузчик, а также отдельные разделы для /boot и /home, если таковые имеются.

В моем случае (см. снимок экрана ниже) у меня есть только /dev/sda4 для root и /dev/sda3 для загрузчика /boot/efi. Для SSD NVMe имена устройств будут иметь вид /dev/nvmeXnYpX (например, /dev/nvme0n1p3).

Вам необходимо записать их выполненными или запомнить (включая отдельные /home /boot, если они существуют) для дальнейшего использования.

2. Затем установите необходимый пакет cryptsetup, выполнив команду:

sudo apt install cryptsetup

Также проверьте, включен ли SELinux, выполнив в терминале следующую команду:

sudo apt install policycoreutils && sestatus

Шаг 2. Загрузите на компьютер другую ОС Linux (или LiveUSB).

Чтобы зашифровать Ubuntu, вам необходимо сначала отключить файловую систему. Это означает, что вам необходимо загрузить компьютер с другой ОС Linux для выполнения процесса шифрования.

Если на вашем компьютере установлена система Linux с двойной загрузкой, просто перезагрузитесь в нее. Если НЕТ, создайте загрузочный USB-установщик, например, Ubuntu, Mint, Debian, а затем загрузите работающую систему с USB.

Шаг 3. Зашифруйте вашу систему Ubuntu

После загрузки работающей системы закройте мастер установки, чтобы перейти на рабочий стол.

Затем определите корневой раздел Ubuntu 24.04, /boot/efi (и отдельный /home /boot, если он существует), либо запустив Диски GNOME (доступно в Linux, Ubuntu и других Linux с GNOME), либо путем монтирования и проверки в файловом менеджере.

В моем случае это «/dev/sda4» (root) и «/dev/sda3» (/boot/efi). Замените их на свои во всех командах ниже!

1. Уменьшите размер, чтобы освободить место для заголовка LUKS.

При монтировании вручную отключите все разделы диска. Затем откройте терминал (Ctrl+Alt+T) и выполните команду:

sudo e2fsck -f /dev/sda4

Эта команда заставляет проверить файловую систему Ubuntu, что необходимо, прежде чем ее можно будет сжать. Замените /dev/sda4 на свой корень Ubuntu.

Затем уменьшите файловую систему Ubuntu, чтобы осталось место для заголовка LUKS:

sudo resize2fs /dev/sda4 91G

Замените /dev/sda4 и 91G (в моем случае немного меньше 92G) в соответствии с тем, что вы получили в «Шаге 1: Подготовка».

2. Зашифруйте раздел Ubuntu.

Как только у вас будет достаточно свободного места (минимум 32 МБ) для заголовка LUKS, выполните приведенную ниже команду, чтобы зашифровать корневую файловую систему Ubuntu:

sudo cryptsetup reencrypt --encrypt --type luks2 --hash sha256 --pbkdf pbkdf2 --reduce-device-size 32M /dev/sda4

Кроме того, замените /dev/sda4 на корневой раздел Ubuntu, и вот описание параметров команды:

  • --type luks2 — необязательно для Ubuntu 24.04, поскольку используется по умолчанию. Для старых Ubuntu и других Linux с GRUB старше версии 2.06 luks2 НЕ поддерживается. GRUB 2.06 имеет начальную поддержку, но с ограничениями. Поэтому для старого Grub вместо этого используйте --type luks1.
  • --hash sha256 — укажите, какую хэш-функцию использовать, также необязательно, поскольку sha256 является значением по умолчанию.
  • --pbkdf pbkdf2обязательно, поскольку загрузчик Grub пока НЕ поддерживает режим Argon2id по умолчанию, но только pbkdf2.

После запуска команды введите YES в вывод терминала, чтобы подтвердить операцию. Затем введите пароль и еще раз подтвердите (без визуальной обратной связи, просто введите его в уме), пароль будет использоваться для разблокировки вашей системы Ubuntu во время загрузки.

ПРИМЕЧАНИЕ. Эта команда может занять несколько минут! Для ноутбука подключите блок питания и отключите приостановку в случае сбоя!

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

sudo cryptsetup luksAddKey --type luks2 --hash sha256 --pbkdf pbkdf2 /dev/sda4

(НЕ проверялось) Если вы отделили файловый раздел /home и хотите его зашифровать, повторите последние команды, чтобы сжать его, чтобы освободить место, и зашифруйте с помощью команды cryptsetup reencrypt. .

Шаг 3. Настройте загрузчик Grub и сообщите Ubuntu, чтобы он разблокировался при загрузке.

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

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

1. Разблокировать корневую файловую систему

Сначала выполните команду ниже, чтобы разблокировать (/dev/sda4 теперь является зашифрованным контейнером, а не корневым разделом):

sudo cryptsetup open /dev/sda4 sda4_crypt

Эта команда запросит у вас пароль (вы установили на последнем шаге) для разблокировки, а затем сопоставит корневую файловую систему с /dev/mapper/sda4_crypt. Измените sda4_crypt на любое имя по вашему желанию, хотя вам также необходимо заменить его во всех командах ниже.

Затем измените его размер, чтобы увеличить его (вы уменьшили его на последнем шаге):

sudo resize2fs /dev/mapper/sda4_crypt

В команде замените sda4_crypt согласно последней команде.

2. Подключите файловую систему и выполните Chroot.

Затем смонтируйте корневую файловую систему, которая в моем случае сопоставлена с /dev/mapper/sda4_crypt, выполнив команду:

sudo mount /dev/mapper/sda4_crypt /mnt

Если есть отдельный раздел /boot (например, /dev/sdaX), то смонтируйте его с помощью:

sudo mount /dev/sdaX /mnt/boot

И смонтируйте /boot/efi (в моем случае /dev/sda3) в соответствующий каталог:

sudo mount /dev/sda3 /mnt/boot/efi

Кроме того, псевдофайловые системы с привязкой-монтированием:

sudo mount --rbind /proc /mnt/proc
sudo mount --rbind /sys /mnt/sys
sudo mount --rbint /dev /mnt/dev

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

sudo chroot /mnt /bin/bash

После этой команды вы обнаружите, что приглашение терминала изменилось на «root@ubuntu:/#».

3. Настройте Grub и Crypttab

Корневой UUID НЕ меняется после шифрования корневого (и/или /home) системного раздела, но изменяется имя устройства. В моем случае корень больше НЕ /dev/sda4, теперь это /dev/mapper/sda4_crypt.

Если вы когда-либо редактировали /etc/fstab, чтобы использовать имя устройства (например, /dev/sdaX, /dev/nvme0nXpY) вместо UUID для монтирования системных разделов при загрузке, вам необходимо изменить их соответствующим образом. Если НЕТ, просто пропустите и оставьте этот файл без изменений.

В этой среде chroot выполните команду ниже, чтобы отредактировать файл конфигурации grub:

nano /etc/default/grub

Затем вам нужно добавить новую строку GRUB_ENABLE_CRYPTODISK=y, чтобы указать Grub разблокировать /boot при каждой загрузке (не требуется, если он смонтирован в отдельном незашифрованном разделе). , затем нажмите Ctrl+S для сохранения и Ctrl+X для выхода.

Если в вашей Ubuntu включен SELinux (обычно он отключен по умолчанию), добавьте параметр ядра enforcing=0 в качестве значения GRUB_CMDLINE_DEFAULT, чтобы указать ему работать в разрешительном режиме, иначе ваш Ubuntu может отказаться загружаться. Затем вы можете удалить параметр ядра после первой загрузки зашифрованной системы Ubuntu.

Затем отредактируйте /etc/crypttab с помощью команды ниже:

nano /etc/crypttab

Затем добавьте строку ниже, чтобы указать, что нужно разблокировать зашифрованный контейнер (указанный UUD) и сопоставить его с /dev/mapper/sda4_crypt при каждой загрузке.

sda4_crypt UUID=xxxxx-xxx-xxx-xxx-xxxx none luks,retries=3

Вот UUID «/dev/sda4». Запустите команду udevadm info -q all -n /dev/sda4 |grep by-uuid в другом окне терминала (Ctrl+Alt+T), чтобы узнать, пока bkid выведет данные. неправильный.

Если также зашифрован отдельный раздел /home, добавьте в файл новую строку:

sdaX_crypt UUID=xxxxx-xxx-xxx-xxx-xxxx none luks,retries=3

В этой строке замените UUID в соответствии с выводом команды udevadm info -q all -n /dev/sdaX |grep by-uuid в другом терминале. Однако вам необходимо заменить /dev/sdaX в соответствии с тем, где вы находитесь /home.

4. Применить изменения

Кроме того, в среде chroot переустановите загрузчик grub с помощью команды:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI/ubuntu --recheck

Здесь параметры команды сообщают:

  • --target=x86_64-efi — установить GRUB для платформы amd64 (Intel/AMD). Значением также может быть arm-efi, arm64-efi и т. д., в зависимости от архитектуры вашего процессора.
  • --efi-directory=/boot/efi — укажите раздел EFI, он смонтирован в /boot/efi на последнем шаге.
  • --boot-directory=/boot/efi/EFI/ubuntu — в Ubuntu по умолчанию для каталога загрузки установлено значение /boot. Однако в моем случае он зашифрован. Итак, используйте этот вместо этого.
  • --recheck сообщает об удалении существующей карты устройств.

Наконец, обновите конфигурацию grub с помощью команды:

grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg

ПРИМЕЧАНИЕ. Команда update-grub здесь больше не работает, поскольку она автоматически генерирует /boot/grub/grub.cfg. В то время как опция --boot-directory= в последней команде предписывала установить файл конфигурации в /boot/efi/EFI/ubuntu, который не зашифрован.

Кроме того, вам необходимо запустить команду ниже, чтобы восстановить образы initramfs.

update-initramfs -c -k all

Размонтировать и перезагрузить

Когда все будет сделано хорошо, выйдите из среды chroot, выполнив команду:

exit

Затем размонтируйте с помощью следующих команд. Для монтирования --rbind вам необходимо повторно запустить команду монтирования с опцией --make-slave, чтобы разрешить рекурсивное изменение типа всех монтирований. Или он откажется размонтироваться и скажет, что занят.

sudo umount /mnt/boot/efi
sudo mount --make-slave /mnt/proc
sudo umount -R /mnt/proc
sudo mount --make-slave /mnt/sys
sudo umount -R /mnt/sys
sudo mount --make-slave /mnt/dev
sudo umount -R /mnt/dev

И закройте (заблокируйте) зашифрованный раздел:

sudo cryptsetup close sda4_crypt

Наконец, выключите компьютер, выполнив команду:

shutdown -P now

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

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

Статьи по данной тематике