Блог "Дети ОИТа"
/поиск

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 повреждён:

  1. Загрузитесь с Live USB.
  2. Откройте том: cryptsetup open /dev/sda1 cryptlvm
  3. Активируйте LVM: vgchange -ay
  4. Смонтируйте и переконфигурируйте загрузчик/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