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

LUKS на практике: настройка полнодискового шифрования в Linux с интеграцией в systemd и PAM

Практическое руководство по развёртыванию LUKS2 с systemd-cryptsetup и интеграцией в PAM для полнодискового шифрования в Linux.

LUKS на практике: настройка полнодискового шифрования в Linux с интеграцией в systemd и PAM

Введение

Полнодисковое шифрование (Full Disk Encryption, FDE) — базовый элемент защиты данных на ноутбуках и серверах. В Linux де-факто стандартом является LUKS (Linux Unified Key Setup). В данном руководстве рассматривается развёртывание LUKS на новом диске с интеграцией в systemd и PAM для бесшовной разблокировки при загрузке и входе пользователя.

Архитектура решения

  • Шифрование: LUKS2 на разделе /dev/sda2 (data), /boot на /dev/sda1 (без шифрования).
  • Управление ключами: первичный ключ — passphrase; дополнительный — ключевой файл в initramfs; интеграция с PAM для разблокировки по логину пользователя.
  • Инициализация: dracut/systemd с поддержкой systemd-cryptsetup.

Пошаговая реализация

1) Подготовка диска

parted /dev/sda --script mklabel gpt
parted /dev/sda --script mkpart primary 1MiB 1GiB  # /boot
parted /dev/sda --script mkpart primary 1GiB 100%  # data
mkfs.vfat -F32 /dev/sda1

2) Создание LUKS2

cryptsetup luksFormat --type luks2 /dev/sda2
# Открытие для форматирования
cryptsetup open /dev/sda2 cryptroot
mkfs.xfs /dev/mapper/cryptroot

3) Установка и fstab/crypttab

mount /dev/mapper/cryptroot /mnt
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot
# ... установка системы ...
# /etc/crypttab
cryptroot UUID=$(blkid -s UUID -o value /dev/sda2) none luks,discard
# /etc/fstab
/dev/mapper/cryptroot / xfs defaults 0 0
UUID=$(blkid -s UUID -o value /dev/sda1) /boot vfat umask=0077 0 1

4) Initramfs и systemd-cryptsetup

# Убедиться, что crypttab учтён в initramfs
dracut -f --regenerate-all
# Проверить цель в systemd
systemctl list-unit-files | grep cryptsetup

5) Интеграция с PAM

# pam_mount или pam_systemd для разблокировки по логину
# Пример для pam_mount:
apt install libpam-mount
# /etc/security/pam_mount.conf.xml — добавить том с /dev/mapper/cryptroot

Безопасность и эксплуатация

  • Регулярно обновляйте initramfs после изменений crypttab/ядра.
  • Храните резервный ключевой файл в защищённом хранилище (Vault/YubiKey).
  • Включите автоочистку ключей из памяти (kernel parameter: page_poison=on slub_debug=P).

Диагностика

journalctl -b | grep -i crypt
dmesg | grep -i crypt
cryptsetup status cryptroot
lsblk -f

Заключение

LUKS2 в связке с systemd-cryptsetup и PAM обеспечивает баланс между безопасностью и удобством. Описанный подход воспроизводим в корпоративных образах и совместим с политиками централизованного управления ключами.