Создание зашифрованного LUKS-раздела на Linux
Операционные системы семейства Linux предоставляют функцию шифрования жестких дисков через специальные утилиты. Рассмотрим одну из них под названием LUKS. В качестве примера используется Ubuntu Server 18.04.
Предварительная подготовка
Утилиту LUKS используют в качестве стандарта для защиты дисков в Linux-системах. Ее преимущества:
- Она бесплатна.
- Совместима с 99% операционных систем Linux/Unix.
- Позволяет сбросить пароль или кодовую фразу в случае утери либо компрометации.
Прежде чем шифровать диск, необходимо определиться с выбором. Запустим в терминале следующую утилиту:
Она отобразит информацию о свободных томах, а также о разделах, которые доступны для защиты:
Скриншот №1. Перечень свободных логических дисков.
Выберем один из списка и перейдем к редактированию. В качестве примера будем использовать раздел /dev/sdb.
Запустим программу parted, указав выбранный том:
Администратору будет доступен функционал утилиты через терминал.
Важно! Чтобы получить подробную информацию об утилите parted, введите ключ help.
Получив доступ к parted, разметим выбранный раздел соответствующим образом. Отредактируем под GPT:
Программа отобразит предупреждение о том, что вся информация будет удалена во время выполнения операции. Вводим «Yes»:
Скриншот №2. Удаление данных с тома.
После окончания операции создадим новый том как основной:
Его метка будет отображаться как «1». По окончании выходим из программы через команду quit.
Генерация ключа
Создадим ключ шифрования, используя команду DD:
, где /root/secret.key — имя генерируемого ключа. Пользователь указывает его самостоятельно.
Теперь отредактируем права доступа к файлу:
Присвоим ему функцию на чтение «без редактирования».
Шифрование раздела
Следующий этап — шифрование данных. По умолчанию LUKS интегрирована в большинство дистрибутивов. Если утилита недоступна, установим её, используя стандартные средства установки. Для примера с Ubuntu Server:
После установки создадим шифрованный том с использованием сгенерированного ключа:
Программа выдаст предупреждающее сообщение о том, что информация будет удалена после форматирования. Вводим «Yes»:
Скриншот №3. Стирание диска.
Теперь свяжем сгенерированный ключ с томом /dev/sdb1. Это позволит в дальнейшем пропускать процедуру авторизации при каждом обращении к разделу, а также скроет подсказки к паролю от других пользователей:
После выполнения операции перейдем к конфигурированию. Сначала создадим промежуточный вариант подключения к шифрованному объекту. Для этого воспользуемся функцией LuksOpen:
По окончании устройство будет доступно по пути /dev/mapper/secret.
Следующим шагом указываем размер тома, который требуется зашифровать:
В нашем примере имя тома — secret. Если для опции resize не указываются дополнительные флаги, она занимает весь раздел. Смонтируем точку доступа для файловой структуры ext4 с именем тома secret:
Для проверки правильности выполненных действий вводим:
Монтирование тома
Раздел зашифрован — смонтируем его для операционной системы. Указываем точку входа для тома secret, а потом задаем права на доступ:
sudo chmod 755 /secret
Через команду mount подключим раздел к ОС:
После этого проверим выполнение операции:
Чтобы постоянно не подключить LUKS-раздел к операционной системе, активируем автомонтирование тома.
Важно! Использование автоматического режима монтирования также автоматически расшифровывает том в момент его подключения к ОС.
Определим идентификатор защищенного диска:
Он обозначается термином UUID. Поскольку наименование сложное для запоминания, выгрузим его имя в отдельный файл:
Важно! После знака «=» идет идентификатор, который используется в примере.
Создадим ссылку на сгенерированный ранее ключ secret.key:
Последний шаг — добавляем соответствующие строки в файл монтирования разделов fstab:
Указав в терминале команду sudo mount –a, зашифрованный раздел автоматически будет подключаться при старте операционной системы.