LUKS и LVM: полное руководство по шифрованию дисков в Linux
Пошаговое руководство по настройке полного шифрования дисков в Linux с использованием LUKS и LVM. От теории до восстановления после сбоя.
LUKS и LVM: полное руководство по шифрованию дисков в Linux
Шифрование дисков — фундаментальная практика безопасности для серверов и рабочих станций. В экосистеме Linux стандартом де-факто является связка LUKS (Linux Unified Key Setup) для управления ключами и LVM (Logical Volume Manager) для гибкого управления томами. Эта статья представляет собой пошаговое руководство по настройке, эксплуатации и восстановлению зашифрованных систем.
Теоретическая база
Что такое LUKS
LUKS — это спецификация и реализация, которая размещает заголовок (header) в начале блочного устройства. Заголовок содержит информацию о слотах ключей, используемом шифре и соли. Преимущество LUKS — переносимость: зашифрованный диск можно подключить к любой Linux-системе с поддержкой cryptsetup.
Что такое LVM
LVM абстрагирует физические диски в логические тома. Это позволяет динамически изменять размеры разделов, создавать снапшоты и объединять несколько дисков в один том (LVM поверх LUKS — рекомендуемая схема).
Практическая реализация: LVM on LUKS
Рассмотрим сценарий: у нас есть диск /dev/sda, мы хотим создать зашифрованный физический том, поверх него группу томов LVM, а затем логические тома для /, /home и swap.
Шаг 1: Подготовка диска
Очищаем диск и создаём раздел.
# Затираем начало диска (опционально, для безопасности)
dd if=/dev/zero of=/dev/sda bs=1M count=10
# Создаём раздел (можно использовать fdisk, parted, cfdisk)
fdisk /dev/sda
# n -> p -> 1 -> enter -> enter -> w
Шаг 2: Инициализация LUKS
Форматируем раздел с использованием стойкого шифра. AES-XTS с 512-битным ключом — стандарт.
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 --hash sha512 /dev/sda1
Система запросит подтверждение (YES заглавными) и пароль.
Шаг 3: Открытие контейнера
cryptsetup open /dev/sda1 cryptlvm
Теперь устройство доступно как /dev/mapper/cryptlvm.
Шаг 4: Настройка LVM
pvcreate /dev/mapper/cryptlvm
vgcreate vg_system /dev/mapper/cryptlvm
# Создаём логические тома
lvcreate -L 30G -n root vg_system
lvcreate -L 8G -n swap vg_system
lvcreate -l 100%FREE -n home vg_system
Шаг 5: Файловые системы и монтирование
mkfs.ext4 /dev/mapper/vg_system-root
mkfs.ext4 /dev/mapper/vg_system-home
mkswap /dev/mapper/vg_system-swap
mount /dev/mapper/vg_system-root /mnt
mkdir /mnt/home
mount /dev/mapper/vg_system-home /mnt/home
swapon /dev/mapper/vg_system-swap
Шаг 6: Обновление initramfs
Чтобы система могла расшифровать диск при загрузке, необходимо настроить dracut или update-initramfs.
Для dracut (RHEL, Fedora, CentOS):
dracut -f -v
Убедитесь, что в /etc/dracut.conf.d/ есть add_dracutmodules+=" crypt lvm ".
Для update-initramfs (Debian, Ubuntu):
update-initramfs -u -k all
Шаг 7: Настройка crypttab и fstab
В /etc/crypttab добавляем:
cryptlvm UUID=ваш-uuid-none luks,discard
UUID можно узнать через blkid /dev/sda1.
В /etc/fstab:
/dev/mapper/vg_system-root / ext4 defaults 0 1
/dev/mapper/vg_system-home /home ext4 defaults 0 2
/dev/mapper/vg_system-swap none swap defaults 0 0
Восстановление и экстренное открытие
Сброс пароля (добавление нового ключа)
Если вы забыли пароль, но есть доступ к системе:
cryptsetup luksAddKey /dev/sda1
Удаление утерянного ключа
cryptsetup luksRemoveKey /dev/sda1
Восстановление после сбоя
Если initramfs повреждён:
- Загрузитесь с Live USB.
- Откройте том:
cryptsetup open /dev/sda1 cryptlvm - Активируйте LVM:
vgchange -ay - Смонтируйте и переконфигурируйте загрузчик/initramfs.
Безопасность и лучшие практики
- Используйте LUKS2: он поддерживает более современные алгоритмы и PBKDF2/Argon2.
- Отделяйте /boot: раздел
/bootдолжен быть незашифрованным, чтобы загрузчик мог прочитать ядро. - Регулярно обновляйте хэши ключей:
cryptsetup luksConvertKey --pbkdf-force-iterations 500000 /dev/sda1. - Резервная копия заголовка:
cryptsetup luksHeaderBackup /dev/sda1 --header-backup-file /root/luks-header-backup.img. Храните её отдельно от диска.
Заключение
Связка LUKS + LVM обеспечивает баланс между безопасностью и удобством администрирования. Правильная настройка initramfs — критический этап, без которого система не загрузится. Следуя этому руководству, вы получите надёжно защищённую инфраструктуру, готовую к эксплуатации в production.
Рубрика: Администрирование Linux
Хештеги: #LUKS #LVM #шифрование #Linux #безопасность #администрирование #cryptsetup #fde