Повне шифрування диска 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Від 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 з фізичними секторами розміром 4 КБ:

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 (стан Secure Boot), тому сервер розблоковується лише тоді, коли прошивка та завантажувач не були змінені. Завжди зберігайте слот для пароля як запасний варіант при використанні 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: практичний посібник

Керування трафіком у Linux: практичний посібник

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

12 хв читання - 5 червня 2026 р.

Чому важливо мати потужний і нелімітований VPS

7 хв читання - 9 травня 2025 р.

Більше статей
background image

Маєте запитання або потребуєте індивідуального рішення?

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання