Полнодисковое шифрование LUKS: Руководство по настройке сервера Linux
15 мин чтения - 5 июня 2026 г.

Полнодисковое шифрование LUKS для серверов Linux, охватывающее настройку LUKS2, расположение LVM, управление ключами, удаленное разблокирование с помощью Tang и TPM, а также укрепление.
Руководство по серверу полного шифрования дисков LUKS
LUKS (Linux Unified Key Setup) шифрует весь блочный устройство Linux, так что его содержимое невозможно прочитать без мастер-ключа. Украденный диск, выведенное из эксплуатации шасси, забытый резервный диск: ничто из этого не раскроет ваши данные, если LUKS настроен правильно. В этой статье рассказывается, как развернуть полное шифрование диска LUKS на сервере, включая схему LVM, управление ключами, удаленную разблокировку и режимы сбоев, которые лишают пользователей доступа к собственным данным.
В качестве эталонной реализации здесь используется LUKS2 с LVM внутри зашифрованного контейнера на сервере Linux с AES-NI в процессоре. Такая комбинация справляется с любой современной нагрузкой, демонстрирует высокую производительность и соответствует требованиям к хранению данных в состоянии покоя, установленным в стандартах HIPAA, PCI-DSS, GDPR и SOC 2.
Почему LUKS2 и что нужно проверить в первую очередь
LUKS осуществляет шифрование на уровне блочного устройства с помощью dm-crypt, при этом мастер-ключ хранится в ключевых слотах внутри заголовка LUKS. Это разделение имеет значение: вы можете менять пароли или добавлять новые ключи без повторного шифрования диска.
LUKS2 — это текущий вариант по умолчанию. Он поддерживает до 32 ячеек ключей, метаданные в формате JSON, перешифрование в режиме реального времени и аутентифицированное шифрование через флаг --integrity . LUKS1 поддерживает 8 ячеек для ключей и подходит для старых систем, но новые установки следует начинать с LUKS2.
На современном оборудовании потери производительности при использовании AES-NI обычно составляют менее 5%. Проверьте перед началом:
grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmarkЕсли grep не возвращает ничего, значит, ваш процессор не поддерживает AES-NI, и шифрование будет ограничено производительностью процессора при интенсивных операциях ввода-вывода. cryptsetup benchmark показывает пропускную способность для каждого алгоритма шифрования, чтобы вы могли выбрать самый быстрый из тех, что поддерживает ваше оборудование. Также убедитесь, что cryptsetup установлен и что доступен модуль ядра dm-crypt доступен модуль ядра. И то, и другое по умолчанию поставляется в Ubuntu, Debian, RHEL и Arch.
Схема разбиения диска
Два раздела остаются незашифрованными: системный раздел EFI (512 МБ, FAT32) и /boot (от 1 до 2 ГБ, ext4 или xfs). GRUB должен прочитать оба раздела, прежде чем он сможет запросить парольную фразу. Все остальное находится внутри контейнера LUKS.
Рекомендуемая схема — LVM внутри LUKS: один контейнер LUKS, содержащий группу томов LVM с логическими томами для корневого раздела, подкачки и любых разделов данных. Это позволяет сохранить зашифрованными метаданные LVM и изменять размер томов или создавать их моментальные снимки, не затрагивая уровень LUKS. LUKS-on-LVM тоже работает, но при этом раскрывает структуру группы томов.
| Раздел | Размер | Файловая система | Зашифрован |
|---|---|---|---|
| Система EFI | От 512 МБ до 1 ГБ | FAT32 | Нет |
/boot | От 1 до 2 ГБ | ext4 / xfs | Нет |
| Контейнер LUKS | Оставшееся место | LUKS2 | Да |
| LVM root | от 20 до 100 ГБ+ | ext4 / xfs | Да (внутри LUKS) |
| LVM swap | Равный объему ОЗУ | swap | Да (внутри LUKS) |
ext4 — безопасный вариант по умолчанию для корневого тома. xfs лучше обрабатывает большие файлы и параллельную запись, что важно для медиа-, ML- и баз данных-серверов. Для SSD и NVMe добавьте опцию discard опцию в /etc/crypttab , чтобы включить TRIM. TRIM показывает, какие секторы используются, что является небольшой утечкой информации. Для большинства рабочих нагрузок это оправдывается преимуществом выравнивания износа. Если ваша модель угроз включает криминалистический анализ устройства, оставьте эту опцию выключенной.
Настройка LUKS с LVM
Определите целевой диск с помощью lsblk и удалите все существующие метаданные:
wipefs -a /dev/sdXПри желании перезапишите его случайными данными, чтобы зашифрованные блоки не отличались от пустого пространства:
dd if=/dev/urandom of=/dev/sdX bs=1M status=progressИнициализируйте контейнер LUKS2. Используйте --sector-size 4096 для NVMe и современных SSD с физическими секторами 4K:
cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdataСразу же создайте резервную копию заголовка, прежде чем записывать какие-либо данные на диск:
cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.imgСоздайте LVM поверх разблокированного контейнера, затем отформатируйте логические тома:
pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swapДобавьте запись в /etc/crypttab используя UUID, а не /dev/sdX, который может меняться при перезагрузке. Получите его с помощью blkid /dev/sdX:
cryptdata UUID=<your-uuid> none luks,discardЗатем смонтируйте с помощью /etc/fstab:
/dev/vg_secure/lv_root / xfs defaults,noatime 0 1Пересоздайте initramfs, чтобы модули шифрования загружались при запуске:
# Debian/Ubuntu
update-initramfs -u -k all
# RHEL/Fedora
dracut -f --regenerate-allПерезагрузитесь, введите парольную фразу и подтвердите настройку с помощью cryptsetup status cryptdata и lsblk -f. Последнее должно показать crypto_LUKS в качестве FSTYPE на зашифрованном разделе.
Управление ключами и удаленная разблокировка
LUKS2 поддерживает 32 слота для ключей. С самого начала используйте как минимум три: пароль администратора, ключ восстановления, хранящийся в автономном режиме (распечатанный и запертый в надежном месте или на зашифрованном USB-накопителе в сейфе), и файл ключей для автоматической разблокировки вторичных томов данных. Ограничьтесь 95 печатными символами ASCII, так как не-ASCII символы вызывают проблемы с раскладкой клавиатуры в командной строке загрузки, устранение которых вызывает раздражение. Меняйте пароль администратора всякий раз, когда кто-то из имеющих доступ покидает команду.
Просмотрите активные слоты с помощью cryptsetup luksDump /dev/sdX, добавьте ключ с помощью cryptsetup luksAddKey, а отменить — с помощью cryptsetup luksKillSlot. Защищайте все файлы ключей с помощью строгих прав доступа:
chmod 0400 /etc/luks/keyfile.binДля серверов без монитора в удаленных дата-центрах запрос пароля представляет проблему. Три способа решить эту проблему:
| Метод | Лучше всего подходит для | Компромисс |
|---|---|---|
| Dropbear в initramfs | Ручная разблокировка через SSH | Все равно требуется вмешательство человека при перезагрузке |
| Clevis + Tang (NBDE) | Автоматическая разблокировка в доверенной сети | Сервер должен подключиться к серверу Tang для загрузки |
| TPM2 через systemd-cryptenroll | Автоматизация, привязанная к аппаратному обеспечению | Обновления прошивки могут изменить значения PCR и заблокировать доступ |
Dropbear запускает миниатюрный SSH-сервер в initramfs. Вы подключаетесь по SSH после загрузки и вводите парольную фразу вручную. Clevis с Tang использует сетевое шифрование диска: сервер разблокирует себя, если может связаться с сервером Tang в доверенной сети. Tang не хранит ваш ключ, а предоставляет одну половину обмена McCallum-Relyea. Используйте несколько серверов Tang с sss PIN-кодом, чтобы разблокировка работала, даже если один из них находится в автономном режиме. Привязка TPM 2.0 через systemd-cryptenroll привязывает ключ к PCR 7 (состояние безопасной загрузки), поэтому сервер разблокируется только в том случае, если прошивка и загрузчик не были подделаны. Всегда держите ключевой слот с парольной фразой в качестве резервного варианта при использовании TPM, поскольку обновления прошивки изменяют значения PCR.
Укрепление безопасности и предотвращение блокировки
Используйте пароли длиной не менее 20 символов. Включите аутентифицированное шифрование с --integrity в luksFormat , если ваша модель угроз включает не только конфиденциальность, но и подделку данных. Это влечет за собой затраты на усиление записи, поэтому сначала проведите тестирование.
Не клонируйте контейнер LUKS на другие машины. Ключ тома копируется вместе с ним, поэтому изменение парольной фразы на одном хосте не защитит другой. Переформатируйте каждый диск по отдельности.
Для безопасного вывода из эксплуатации cryptsetup erase /dev/sdX за считанные миллисекунды стирает все ячейки ключей, делая диск невозможным для восстановления без физического уничтожения. Уже одно это является весомым аргументом в пользу шифрования всего по умолчанию.
Распространенные режимы сбоев:
| Симптом | Вероятная причина | Устранение |
|---|---|---|
| Зависание при загрузке на этапе ввода пароля | Несоответствие раскладки клавиатуры | Измените раскладку или используйте ключ восстановления |
| «Устройство не является допустимым устройством LUKS» | Неверный путь к устройству | Проверьте lsblk разделение на разделы или весь диск |
| Клавиатура не реагирует при загрузке | Порядок запуска хуков Initramfs | Разместить keyboard перед encrypt в mkinitcpio.conf |
| GRUB пропускает запрос пароля | GRUB_ENABLE_CRYPTODISK не установлено | Установить GRUB_ENABLE_CRYPTODISK=y в /etc/default/grub, переустановите GRUB |
| «Не удалось найти корневое устройство» | Отсутствует lvm2 или encrypt хуки | Добавьте хуки и запустите mkinitcpio -P |
Наиболее серьезным режимом сбоя является повреждение заголовка. Если заголовок LUKS утерян или поврежден, данные будут утрачены. Восстановления не существует, за исключением восстановления из резервной копии заголовка. Храните копию на отдельном носителе, в идеале в двух местах, и ни в коем случае не на самом зашифрованном диске. Для некритичных вторичных томов добавьте nofail к /etc/crypttab чтобы сбой монтирования не привел к зависанию загрузки.
Выделенные серверы FDC поставляются с оборудованием, которое изначально поддерживает AES-NI и полное шифрование диска. Настройте выделенный сервер, когда будете готовы к развертыванию.

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб. Готовы к модернизации?
Разблокируйте производительность прямо сейчас
Linux Traffic Control (tc): практическое руководство
Контролируйте пропускную способность, устанавливайте приоритеты трафика, формируйте входящий и исходящий трафик в Linux с помощью tc. Рабочие конфигурации HTB, IFB, DSCP и fq_codel для реальных серверов.
12 мин чтения - 5 июня 2026 г.
Почему важно иметь мощный и не тарифицируемый VPS
7 мин чтения - 9 мая 2025 г.

У вас есть вопросы или вам нужно индивидуальное решение?
Гибкие варианты
Глобальный охват
Мгновенное развертывание
Гибкие варианты
Глобальный охват
Мгновенное развертывание