LUKS и LVM: полное руководство по настройке шифрования дисков в Linux
LUKS и LVM: полное руководство по настройке шифрования дисков в Linux
Введение
Шифрование дисков — критически важный компонент безопасности любой современной инфраструктуры. В экосистеме Linux стандартом де-факто для шифрования блочных устройств является LUKS (Linux Unified Key Setup), который часто используется в связке с менеджером логических томов LVM (Logical Volume Manager). Эта связка обеспечивает гибкость управления разделами и надёжную защиту данных.
Теоретическая база
Что такое LUKS
LUKS — это стандарт, который определяет заголовок и структуру зашифрованного раздела. Он хранит информацию о ключах в специальном заголовке (header) в начале устройства. Это позволяет:
- Иметь несколько парольных фраз (key slots) для одного раздела.
- Легко менять пароли без перешифрования всего диска.
- Обеспечивать совместимость между различными дистрибутивами Linux.
Что такое LVM
LVM — это слой абстракции над физическими дисками. Он позволяет создавать логические тома, которые не привязаны к физическим границам разделов. Преимущества:
- Динамическое изменение размера томов.
- Снапшоты (снимки состояния).
- Объединение нескольких дисков в один том (LVM striping).
Практическая реализация
Шаг 1: Подготовка диска
Предположим, у нас есть новый диск /dev/sdb.
# Очистка старых метаданных (опционально, но рекомендуется)
wipefs -a /dev/sdb
# Создание физического тома LVM
pvcreate /dev/sdb
Шаг 2: Создание LUKS-контейнера
Создадим зашифрованный раздел на всём диске.
# Инициализация LUKS. Выбираем надёжный алгоритм (aes-xts-plain64 с 512-битным ключом)
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sdb
# Открытие контейнера
cryptsetup open /dev/sdb crypt_data
Теперь устройство доступно как /dev/mapper/crypt_data.
Шаг 3: Настройка LVM поверх LUKS
# Создание группы томов
vgcreate vg_secure /dev/mapper/crypt_data
# Создание логических томов
lvcreate -L 20G -n root vg_secure
lvcreate -L 4G -n swap vg_secure
lvcreate -l 100%FREE -n home vg_secure
Шаг 4: Создание файловых систем и монтирование
mkfs.ext4 /dev/vg_secure/root
mkfs.ext4 /dev/vg_secure/home
mkswap /dev/vg_secure/swap
# Монтирование для установки ОС или переноса данных
mount /dev/vg_secure/root /mnt
mkdir /mnt/home
mount /dev/vg_secure/home /mnt/home
swapon /dev/vg_secure/swap
Автоматизация: /etc/crypttab и /etc/fstab
Чтобы система запрашивала пароль при загрузке и автоматически монтировала тома, необходимо настроить конфигурационные файлы.
/etc/crypttab
crypt_data UUID=ваш-uuid-диска none luks
Параметр none указывает, что ключ будет запрошен у пользователя.
/etc/fstab
/dev/mapper/vg_secure-root / ext4 defaults 0 1
/dev/mapper/vg_secure-home /home ext4 defaults 0 2
/dev/mapper/vg_secure-swap none swap sw 0 0
Восстановление и аварийные сценарии
Смена парольной фразы
# Добавить новый слот
cryptsetup luksAddKey /dev/sdb
# Удалить старый слот (нужно знать его индекс, обычно 0)
cryptsetup luksRemoveKey /dev/sdb
Резервное копирование заголовка LUKS
Это критически важно. Если заголовок повредится, данные будут потеряны безвозвратно.
cryptsetup luksHeaderBackup /dev/sdb --header-backup-file /root/luks_header_backup.img
Храните этот файл на отдельном носителе.
Заключение
Комбинация LUKS и LVM предоставляет мощный, гибкий и безопасный инструмент для управления данными в Linux. Несмотря на кажущуюся сложность, следование данному алгоритму позволяет развернуть защищённую среду даже начинающему системному администратору. Главное — всегда иметь резервную копию заголовка LUKS и помнить, что при потере пароля и бэкапа заголовка данные восстановить невозможно.
Дополнительный раздел: интеграция с TPM 2.0
Для автоматизации разблокировки при загрузке без ввода пароля можно использовать модуль TPM 2.0. Это особенно актуально для серверов.
- Установите необходимые пакеты:
clevisиclevis-luks. - Привяжите зашифрованный том к TPM:
clevis bind luks -d /dev/sdb tpm2 '{"hash":"sha256","key":"rsa","pcr_ids":"7"}' - Обновите
dracutдля включения модулей при загрузке:dracut -f
Теперь при загрузке система автоматически извлечет ключ из TPM, если измерения PCR не изменились.