Разное

Автоматическое монтирование LUKS шифрованного внешнего диска через x-systemd.automount, fstab и crypttab в Linux

11.10.2023

Для начала определим вводные и техзадание.
Пользователь много путешествует и боится за сохранность своих данных. Установлена Ubuntu 22.04 на уже зашифрованный диск. Этот этап рекомендуется, т.к. автомонтирование требует наличие ключа дешифрования, который надо где-то хранить. Есть внешний usb диск, который требуется зашифровать и подключать / отключать его простым вытаскиванием из usb разъёма, без всяких манипулаций с mount / umount / cryptsetup open команд. Т.е. работа, как с обычной флешкой. Необходимо, чтобы флешка монтировалась в /opt/usb.

Итак, начнём.
1) Создалим LUKS ключ, котороый будет у нас лежать в профиле пользователя root для декодирования .

sudo dd if=/dev/urandom of=/root/lukskey bs=1024 count=4

Делаем ключ только на чтение для пользователя root

sudo chmod 0400 /root/lukskey

Находим наш внешний USB диск через команду lsblk (у нас это sdb, у Вас это может быть любое другое имя). ОСТОРОЖНО! Данные с флешки будут удалены!

Очищаем флешку, форматируя её через cryptsetup задав пароль.

sudo cryptsetup luksFormat /dev/sdb
WARNING!
========
This will overwrite data on /dev/sdb irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase:

Добавим наш ключ разблокировки на зашифрованный диск:

sudo cryptsetup luksAddKey /dev/sdb /root/lukskey

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

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

cryptsetup open /dev/sdb usb

После этого, в /dev/mapper полжен появиться наш диск usb

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

sudo mkfs.ext4 /dev/mapper/usb

После создания ФС, основная работа сделана. Займёмся автозакгрузкой.

Через blkid, вытащим UUID наших дисков:

sudo blkid | egrep 'sdb|mapper/usb'

В файл /etc/crypttab прописываем строку с UUID нашей флешки (берём sdb из вывода blkid с TYPE=»crypto_LUKS»):

usb		UUID=7c100e2f-aa9e-4464-bd5b-1f945f336c3b	/root/lukskey	luks,noauto,nofail,x-systemd.device-timeout=5

В файл /etc/fstab прописываем строку монтирования нашего диска с UUID расшифрованного /dev/mapper/usb :

UUID=66eb5175-4522-4620-bdaf-9fd100fec80a /opt/usb ext4 noauto,lazytime,x-systemd.automount,x-systemd.idle-timeout=5min,nofail,x-systemd.device-timeout=20 0 2

Проверяем, что FSTAB мы не испортили:

sudo mount -a

На этом можно пробовать ребутиться и проверять как всё работает.
Успехов! 🙂

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

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