В инструкции описан процесс создания зашифрованного с помощью ключа раздела на сервере Linux с использованием стандарта LUKS.
Что это такое?
LUKS является стандартом для шифрования жесткого диска Linux. Расшифровать данные на диске можно только имея доступ к секретному ключу и паролю.
Преимущество LUKS:
- совместимость через стандартизацию;
- защита от атак с низкой энтропией;
- возможность аннулирования секретной фразы;
- распространяется бесплатно.
Выбор диска для шифрования
С помощью команды fdisk необходимо посмотреть какие диски существуют на сервере и доступны для шифрования:
В нашем примере мы будем использовать устройство /dev/sdb.
Примечание: добавление диска и создание разделов в Linux.
Важно: выбранный для шифрования диск должен быть отмонтирован с помощью команды umount, иначе есть вероятность повредить операционную систему. Диск будет отформатирован, а данные стерты.
Разметка диска
Запустите утилиту parted, указав в качестве аргумента имя диска:
parted <имя_диска>
Например:
Таблица разделов должна быть размечена как GPT:
Перед вами появится предупреждение о том, что данные будут стерты, введите Yes:
Создайте один основной раздел с номером 1, занимающий весь диск:
Выйдите из утилиты parted:
Создание ключа
Теперь необходимо создать 2048-битный ключ, указав его расположение:
Например:
Измените права файла, разрешив только чтение владельцу:
Например:
Создание и инициализация LUKS-раздела
Как правило утилита для шифрования дисков по-умолчанию уже установлена на Linux. Если она отсутствует, то установить можно с помощью любого пакетного менеджера, например apt-get:
При попытке доступа к вашему диску третьими лицами им необходимо иметь ключ для расшифрования данных на диске. Не сообщайте никому путь до ключа.
Создайте LUKS-раздел с использованием созданного ключа:
cryptsetup luksFormat <имя_диска><номер_раздела> <файл_ключа>
Примечание: в нашей статье рассмотрен пример с использованием ключа, также возможно использование ключевой фразы.
Например:
Появится предупреждение об уничтожении данных, большими буквами введите YES:
Свяжите ключ с разделом, что позже позволит его авторизовать раздел и скрыть подсказку пароля:
cryptsetup luksAddKey <имя_диска><номер_раздела> <файл_ключа> --key-file=<файл_ключа>
Например:
Прежде чем начать использовать LUKS-раздел, его необходимо правильно отобразить и отформатировать. Для этого сначала используется опция luksOpen, которая создает устройство ввода-вывода, позволяющее взаимодействовать с разделом:
cryptsetup luksOpen <имя_диска><номер_раздела> <устройство-ВВ> --key-file=<файл_ключа>
Например:
Устройство ввода-вывода LUKS теперь доступно в /dev/mapper/secret.
Далее укажите размер раздела LUKS:
Например:
При использовании опции resize без дополнительных переменных будет занят максимальный размер базового раздела.
Создайте файловую систему, например ext4:
mkfs.ext4 /dev/mapper/<устройство-ВВ>
Пример:
Проверить состояние устройства можно с помощью следующей команды:
Например:
Чтобы посмотреть информацию заголовка LUKS используйте опцию luksDump:
cryptsetup luksDump <имя_диска><номер_раздела>
Пример:
Монтирование LUKS-раздела
Создайте удобную для вас точку монтирования и установите права:
Примонтируйте устройство LUKS:
Например:
Чтобы проверить, что диск примонтирован корректно, выполните следующую команду:
Автоматическое монтирование
Использование автоматического монтирования шифрованного раздела не рекомендуется, т.к. при загрузке системы данные будут расшифрованы автоматически.
Иногда бывает полезно автоматизировать использование ключа. Для начала узнайте UUID для зашифрованного раздела:
Найдите UUID соответствующий диску. В нашем случае это dc8dbc18-adb0-4258-bac8-73860ec12d50.
Выполните экспорт переменной:
Пример:
export UUID="dc8dbc18-adb0-4258-bac8-73860ec12d50"
Добавьте ссылку на ключ в файл /etc/crypttab:
Например:
Наконец, создайте запись в файле /etc/fstab для автоматического монтирования:
Пример:
Выполните монтирование: