Полнодисковое шифрование LUKS: Руководство по настройке сервера Linux

15 мин чтения - 5 июня 2026 г.

hero section cover
Содержание
  • Руководство по серверу полного шифрования дисков LUKS
  • Почему LUKS2 и что нужно проверить в первую очередь
  • Схема разбиения диска
  • Настройка LUKS с LVM
  • Управление ключами и удаленная разблокировка
  • Укрепление безопасности и предотвращение блокировки
Поделиться

Полнодисковое шифрование 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 и полное шифрование диска. Настройте выделенный сервер, когда будете готовы к развертыванию.

background image
Ваш сервер сдерживает ваш рост?

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб. Готовы к модернизации?

Разблокируйте производительность прямо сейчас

Блог

События этой недели

Другие статьи
Linux Traffic Control (tc): практическое руководство

Linux Traffic Control (tc): практическое руководство

Контролируйте пропускную способность, устанавливайте приоритеты трафика, формируйте входящий и исходящий трафик в Linux с помощью tc. Рабочие конфигурации HTB, IFB, DSCP и fq_codel для реальных серверов.

12 мин чтения - 5 июня 2026 г.

Почему важно иметь мощный и не тарифицируемый VPS

7 мин чтения - 9 мая 2025 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание