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 обеспечивает баланс между безопасностью и удобством. Описанный подход воспроизводим в корпоративных образах и совместим с политиками централизованного управления ключами.