Шифруем внешний накопитель посредством LUKS

В данном HOWTO мы рассмотрим как можно легко и просто создать зашифрованный посредством LUKS накопитель для хранения важных данных.

Введение

Для начала нам потребуется установить в систему cryptsetup, а также опционально утилиты работы с разделами дисков — parted (консольный) или gparted (графический).

Откроем терминал и запустим установку (на примере Fedora):

sudo dnf install cryptsetup parted

Все остальные необходимые библиотеки и модули будут установлены автоматически по зависимостям.

Подготавливаем диск

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

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

Файловую систему создаваемого раздела указываем как raw (без форматирования).

Приступаем к шифрованию диска

Снова откроем терминал и запустим следующую команду:

sudo cryptsetup --verify-passphrase luksFormat /dev/sdc1 -c aes-xts-plain64 -s 256 -h sha512

Описание параметров команды:

  • —verify-passphrase — требование дважды ввести пароль для исключения ошибки ввода;
  • /dev/sdc1 — раздел диска, который мы будем шифровать;
  • -c aes-xts-plain64 — алгоритм шифрования (в нашем примере это AES в режиме сцепления блоков шифротекста XTS);
  • -s 256 — стойкость шифра (256 бит);
  • -h sha512 — алгоритм хеширования (SHA-512).

Утилита cryptsetup сначала предупредит об уничтожении всех данных на шифруемом разделе и потребует ввести на клавиатуре YES (в верхнем регистре) для подтверждения, а затем пароль и его подтверждение.

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

Через пару минут на накопителе будет создан зашифрованный раздел.

Создаём ФС внутри раздела

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

Подключим зашифрованный раздел:

sudo cryptsetup luksOpen /dev/sdc1 storage

Описание параметров:

  • /dev/sdc1 — зашифрованный раздел диска;
  • storage — внутреннее название, которое должно состоять только из латинских букв и цифр без пробелов.

Создаём файловую систему ext4 внутри зашифрованного раздела:

sudo mkfs -t ext4 -m 1 -L storage /dev/mapper/storage

Описание параметров:

  • -t ext4 — файловая система (ext4);
  • -m 1 — изменяем зарезервированный объём свободного места на разделе для суперпользователя (с 5% до 1%);
  • -L storage — задаём метку тома аналогично внутреннему названию (storage);
  • /dev/mapper/storage — смонтированный зашифрованный раздел, где storage — указанное при подключении внутреннее название.

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

sudo cryptsetup luksClose /dev/mapper/storage

Здесь /dev/mapper/storage — смонтированный зашифрованный раздел.

Заключение

Итак, мы успешно выполнили то, что хотели, создав крипто-раздел на накопителе. При подключении его современные DE вроде KDE 5 или Gnome 3 самостоятельно предложат вам ввести пароль для монтирования. В противном случае всегда можно смонтировать через терминал стандартным способом.

Внимание! При первом монтировании начнётся достаточно длительный процесс завершения создания на разделе файловой системы ext4 при помощи механизма ext4lazyinit. На HDD с ФС размером в 500 ГБ это нанимает около 5 минут. Необходимо обязательно дождаться завершения процесса.

3 commentary to post

  1. Добавьте пункт как ПРАВА раздать на получившийся контейнер, т.к изготовитель root и соответственно токмо он и может в него писать…

    1. Так и должно быть если вы создаёте VM в пространстве системы (владелец root, группа libvirt).

      Если используется пространство пользователя, то владельцем будет уже его аккаунт.

Обсуждение закрыто.