bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Як увімкнути повне шифрування диска на сервері?

calendar_month March 17, 2025 schedule 10 хв. читання visibility 859 переглядів
person
Valebyte Team
Як увімкнути повне шифрування диска на сервері?
summarize

TL;DR

  • ["Використовуйте зв'язку LUKS і dm-crypt як стандарт для реалізації FDE на Linux-серверах.", 'Завжди робіть бекап даних перед налаштуванням шифрування, щоб уникнути їх безповоротної втрати.', 'FDE допомагає відповідати вимогам безпеки стандартів GDPR, HIPAA і PCI DSS.', 'Шифрування захищає дані при фізичній крадіжці диску або його неправильній утилізації.', 'FDE шифрує весь накопичувач цілком, включаючи операційну систему, додатки і файли користувача.']

Як увімкнути повне шифрування диска на сервері?

Повне шифрування диска (Full Disk Encryption, FDE) на сервері – це не просто "хороша практика", а фундаментальний елемент стратегії безпеки, який захищає ваші дані від несанкціонованого доступу на фізичному рівні. На відміну від шифрування окремих файлів або папок, FDE гарантує, що всі дані на обраному диску, включно з операційною системою, програмами та файлами користувача, зберігаються в зашифрованому вигляді. Це критично важливо в сценаріях, де існує ризик фізичного доступу до сервера або його накопичувачів, наприклад, при крадіжці диска, утилізації обладнання або навіть при несанкціонованому доступі до стійки в дата-центрі. У цій статті ми, команда Valebyte, детально розберемо, як реалізувати FDE на Linux-сервері, зосереджуючись на перевіреному інструменті LUKS (Linux Unified Key Setup) у зв'язці з dm-crypt, і розглянемо як шифрування додаткових розділів, так і складніші кейси з кореневим розділом.

Перш ніж зануритися в технічні деталі, дозвольте нам підкреслити: робота з шифруванням дисків — це процес, який вимагає уважності та ретельної підготовки. Завжди робіть резервні копії даних перед початком будь-яких операцій з дисками! Це золоте правило, яке дозволить уникнути втрати інформації в разі непередбачених обставин.

Навіщо взагалі повне шифрування диска на сервері?

Server rack with encrypted data streams and padlock icons, symbolizing full disk encryption and data security.

У світі, де витоки даних стають все більш частими та дорогими, FDE виступає потужним бар'єром. Ось кілька ключових причин, чому кожен системний адміністратор повинен розглянути його застосування:

  • Захист від фізичного доступу: Якщо зловмисник отримає фізичний доступ до вашого сервера або жорсткого диска (наприклад, при вилученні диска зі стійки, перехопленні під час транспортування або навіть при утилізації), без ключа шифрування дані будуть марним набором байтів.
  • Відповідність нормативам: Багато стандартів безпеки та конфіденційності (GDPR, HIPAA, PCI DSS та інші) вимагають захисту даних у стані спокою (data at rest). FDE часто є найбільш повним і простим способом відповідати цим вимогам.
  • Захист конфіденційності: Для VPS-провайдерів, таких як Valebyte, або для власних серверів, що зберігають чутливу інформацію клієнтів, FDE забезпечує додатковий рівень довіри та безпеки.
  • Зниження ризиків при утилізації: Коли приходить час виводити диски з експлуатації, FDE значно спрощує процес безпечного видалення даних, оскільки для їх знищення достатньо "забути" ключ шифрування.

Планування та Підготовка: Необхідний фундамент

Перш ніж ми почнемо вводити команди, давайте переконаємося, що у нас є все необхідне і ми розуміємо потенційні ризики.

Бекапи та план відновлення

Повторимося: створіть повні резервні копії всіх критично важливих даних! Якщо ви шифруєте диск, на якому вже є дані, або кореневий розділ, це абсолютно обов'язково. Перевірте, що ваші бекапи працездатні і ви зможете відновити систему, якщо щось піде не так.

Вибір диска та сценарій шифрування

Існує два основних сценарії FDE:

  1. Шифрування додаткового розділу або диска з даними: Це найбільш простий і безпечний спосіб почати. Ви створюєте новий зашифрований контейнер на вільному розділі або новому диску, монтуєте його і використовуєте для зберігання конфіденційних даних. Операційна система при цьому залишається на незашифрованому розділі. Цей сценарій ми і розглянемо як основний в нашому покроковому керівництві.
  2. Шифрування кореневого розділу (де встановлена ОС): Це більш складний сценарій, який вимагає модифікації завантажувача і initramfs. При кожному запуску сервера вам буде потрібно вводити пароль для розблокування кореневого розділу. Для віддалених серверів це означає необхідність використання KVM/IPMI або налаштування віддаленого розблокування (наприклад, через Dropbear SSH в initramfs), що виходить за рамки даної статті, але ми згадаємо його важливість.

Для цілей цього керівництва ми будемо працювати з новим, невикористовуваним розділом або диском, який ми хочемо зашифрувати. Припустимо, це /dev/sdb1 або /dev/nvme0n1p1.

Необхідні інструменти: cryptsetup

Основним інструментом для роботи з LUKS на Linux є утиліта cryptsetup. Вона входить до складу більшості дистрибутивів.

Для Debian/Ubuntu:

sudo apt update
sudo apt install cryptsetup

Для CentOS/RHEL/Fedora:

Потрібен надійний сервер для шифрування даних?

Захистіть свої дані за допомогою повного шифрування диска. Оберіть VPS-хостинг, ідеально підходить для ваших потреб безпеки. — from €4.49/mo.

Обрати VPS →
sudo dnf install cryptsetup-luks # или yum install cryptsetup-luks
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Покрокова інструкція: Шифрування додаткового розділу з даними

Дотримуйтесь цих кроків, щоб зашифрувати новий розділ або диск.

Крок 1: Ідентифікація диска та підготовка

Перш ніж що-небудь робити, переконайтеся, що ви працюєте з правильним диском/розділом. Неправильний вибір може призвести до незворотної втрати даних.

lsblk -f # Показать информацию о блочных устройствах и их файловых системах
sudo fdisk -l # Показать все разделы

Припустимо, ми вирішили зашифрувати /dev/sdb1. Якщо розділ ще не створений, вам потрібно використовувати fdisk, parted або gparted для його створення.

Важливо: переконайтеся, що на вибраному розділі немає важливих даних, оскільки наступний крок повністю знищить їх.

Крок 2: Ініціалізація LUKS-контейнера

Тепер ми перетворимо розділ в LUKS-контейнер. Це незворотний процес, який затре всі дані на розділі і створить LUKS-заголовок.

sudo cryptsetup luksFormat /dev/sdb1

Вам буде запропоновано підтвердити дію (введіть YES великими літерами) і двічі ввести парольну фразу. Виберіть надійну, складну парольну фразу. Це ваш ключ до даних!

Рекомендації по luksFormat:

  • Алгоритм шифрування: За замовчуванням luksFormat вибирає розумні параметри (AES-256 в режимі XTS). Якщо ви хочете вказати свої, використовуйте опції:
    sudo cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sdb1
    --type luks2 рекомендується для нових контейнерів, так як він пропонує поліпшення в порівнянні з LUKS1.
  • Заповнення випадковими даними: Для максимальної безпеки рекомендується спочатку повністю затерти диск випадковими даними, щоб приховати метадані і уникнути аналізу шаблонів:
    sudo shred -v -n 1 /dev/sdb1 # 1 прохід затирання, більш надійно - кілька проходів або dd
    # Или более быстрое заполнение нулями, если нет паранойи:
    # sudo dd if=/dev/zero of=/dev/sdb1 bs=4M status=progress
    sudo cryptsetup luksFormat /dev/sdb1
    Це може зайняти дуже багато часу для великих дисків.

Крок 3: Відкриття зашифрованого тома

Після ініціалізації LUKS-контейнера його потрібно "відкрити", щоб отримати доступ до внутрішнього незашифрованого блочного пристрою.

sudo cryptsetup luksOpen /dev/sdb1 data_encrypted

Тут data_encrypted — це довільне ім'я, яке буде використовуватися для відображення відкритого тома в /dev/mapper/. Вам буде запропоновано ввести парольну фразу, яку ви задали на попередньому кроці. Після успішного відкриття ви побачите новий блочний пристрій: /dev/mapper/data_encrypted.

Крок 4: Створення файлової системи

Тепер, коли у нас є доступ до незашифрованого блочного пристрою, ми можемо створити на ньому файлову систему.

sudo mkfs.ext4 /dev/mapper/data_encrypted

Ви можете вибрати будь-яку іншу файлову систему, наприклад xfs, якщо це більше відповідає вашим потребам.

Крок 5: Монтування зашифрованого тома

Створимо точку монтування і примонтуємо наш новий зашифрований том.

sudo mkdir /mnt/data_secure
sudo mount /dev/mapper/data_encrypted /mnt/data_secure

Тепер ви можете використовувати /mnt/data_secure як звичайний каталог для зберігання даних. Перевірте:

df -h /mnt/data_secure

Після перезавантаження або розмонтування том знову буде зашифрований.

Крок 6: Автоматичне відкриття та монтування при завантаженні (з застереженнями)

Для сервера вкрай незручно щоразу вручну відкривати LUKS-том. Linux надає механізми для автоматизації цього процесу.

Автоматичне відкриття за допомогою /etc/crypttab

Файл /etc/crypttab використовується для автоматичного відкриття LUKS-томів на етапі завантаження системи. Це відбувається до того, як /etc/fstab намагається монтувати файлові системи. Кожен рядок в crypttab описує один том.

Синтаксис:

<name> <device> <password_file|none> <options>
  • <name>: Ім'я, яке буде використовуватися в /dev/mapper/ (наприклад, data_encrypted).
  • <device>: Шлях до LUKS-контейнера (наприклад, /dev/sdb1). Рекомендується використовувати UUID диска для надійності! Щоб отримати UUID: sudo blkid /dev/sdb1. Шукайте UUID="xxxx-xxxx".
  • <password_file|none>:
    • none: Система буде запитувати пароль при завантаженні. Підходить для кореневого розділу або якщо ви готові вводити пароль вручну.
    • /path/to/keyfile: Шлях до файлу-ключа. Це зручно для автоматичного розблокування, але файл-ключ повинен бути надійно захищений (права 0400, зберігатися на окремому, можливо, більш захищеному розділі або навіть на USB-носії).
  • <options>: Додаткові опції. Наприклад, luks для явного зазначення LUKS.

Приклад з keyfile:

  1. Створіть keyfile. Він може бути згенерований випадковими даними. Рекомендований розмір: 64 байти або більше.
    sudo dd if=/dev/urandom of=/root/.keyfile_data bs=64 count=1 # или bs=4096 count=1 для более длинного ключа
    sudo chmod 0400 /root/.keyfile_data # Очень важно! Только root может читать.
  2. Додайте keyfile в один з вільних слотів LUKS-контейнера:
    sudo cryptsetup luksAddKey /dev/sdb1 /root/.keyfile_data
    Вам потрібно буде ввести існуючу парольну фразу для підтвердження.
  3. Відредагуйте /etc/crypttab:
    sudo nano /etc/crypttab
    Додайте рядок, використовуючи UUID вашого LUKS-контейнера (не розділу!).
    # Пример:
    # data_encrypted UUID=ваш_UUID_LUKS_контейнера /root/.keyfile_data luks,discard
    data_encrypted UUID=12345678-abcd-efgh-ijkl-1234567890ab /root/.keyfile_data luks,discard
    Опція discard включає підтримку TRIM/UNMAP для SSD, що може поліпшити продуктивність, але також може трохи знизити конфіденційність (дозволяючи ОС повідомити SSD, які блоки не використовуються).

Автоматичне монтування за допомогою /etc/fstab

Тепер, коли crypttab подбає про відкриття тома, ми можемо додати його в /etc/fstab для автоматичного монтування.

sudo nano /etc/fstab

Додайте наступний рядок, використовуючи шлях до відкритого LUKS-тому:

/dev/mapper/data_encrypted /mnt/data_secure ext4 defaults,nofail 0 2
  • /dev/mapper/data_encrypted: Шлях до відкритого LUKS-тому.
  • /mnt/data_secure: Точка монтування.
  • ext4: Тип файлової системи.
  • defaults,nofail: Опції монтування. nofail дуже важливий для некритичних розділів, щоб система завантажилася, навіть якщо том не вдалося відкрити або змонтувати (наприклад, якщо keyfile відсутній).
  • 0 2: Параметри dump і pass.

Крок 7: Оновлення initramfs і перевірка

Після зміни /etc/crypttab необхідно оновити initramfs, щоб система знала про зміни на ранній стадії завантаження.

sudo update-initramfs -u -k all # Для Debian/Ubuntu
# sudo dracut -f # Для CentOS/RHEL/Fedora

Тепер, якщо все налаштовано правильно, після перезавантаження ваш зашифрований том повинен бути автоматично відкритий і змонтований.

sudo reboot

Після перезавантаження перевірте статус:

lsblk -f
df -h /mnt/data_secure
sudo cryptsetup status data_encrypted

Якщо все в порядку, ви побачите, що /dev/mapper/data_encrypted примонтований, і cryptsetup status покаже, що том відкритий.

Просунуті аспекти та кращі практики

Шифрування кореневого розділу (ОС)

Як вже згадувалося, шифрування кореневого розділу — це окрема, більш складна задача. Вона зазвичай виконується на етапі установки ОС, коли інсталятор пропонує опцію FDE. Якщо ви хочете зашифрувати вже працюючий кореневий розділ, це можливо, але вкрай ризиковано і вимагає глибокого розуміння процесу міграції, роботи з LVM і відновлення. Для віддалених серверів без KVM, розблокування кореневого розділу без пароля при кожному запуску вимагає налаштування SSH-доступу в initramfs (Dropbear SSH), що додає складності в конфігурацію і потенційні ризики безпеки, якщо не зробити це правильно.

Порада від Valebyte: Якщо ви не впевнені, почніть з шифрування окремих розділів з даними. Це вже значно підвищить безпеку ваших конфіденційних даних без надмірного ускладнення процесу завантаження ОС.

Управління ключами та парольними фразами

  • Надійні паролі: Використовуйте довгі, складні парольні фрази. Не зберігайте їх поруч з сервером або в незахищеному вигляді.
  • Keyfiles: Файли-ключі зручні для автоматичного розблокування, але їх безпека критична.
    • Зберігайте keyfiles на окремому, захищеному розділі або навіть на USB-носії, який підключається тільки для завантаження.
    • Встановіть суворі права доступу (chmod 0400).
    • Розгляньте можливість використання keyfile, зашифрованого іншим ключем (наприклад, на YubiKey або іншому апаратному модулі безпеки), якщо це можливо.
  • Кілька ключів: LUKS підтримує до 8 слотів для ключів/паролів. Це дозволяє мати кілька парольних фраз або keyfiles для одного тома, що корисно для резервного доступу або для ротації ключів.
    sudo cryptsetup luksAddKey /dev/sdb1 # Добавить новый пароль
    sudo cryptsetup luksAddKey /dev/sdb1 /path/to/another/keyfile # Добавить новый keyfile
    sudo cryptsetup luksRemoveKey /dev/sdb1 # Удалить ключ по слоту или паролю
    Будьте обережні при видаленні ключів: завжди переконайтеся, що у вас є хоча б один робочий ключ, перш ніж видаляти інші.

Безпека заголовка LUKS

Заголовок LUKS містить метадані про шифрування і слотах для ключів. Його пошкодження означає втрату доступу до всіх даних. Резервне копіювання заголовка — це обов'язкова процедура.

sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /root/sdb1_luks_header_backup.img

Зберігайте цей файл в безпечному місці, окремо від сервера (наприклад, на зашифрованому USB-накопичувачі або в хмарному сховищі з додатковим шифруванням). У разі пошкодження заголовка ви зможете відновити доступ за допомогою:

sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file /root/sdb1_luks_header_backup.img

Продуктивність

Шифрування і дешифрування даних на льоту вимагає обчислювальних ресурсів. Сучасні процесори з інструкціями AES-NI (Advanced Encryption Standard New Instructions) значно мінімізують цей накладний витрата. На більшості сучасних серверів і VPS-інстансах Valebyte ви навряд чи помітите значне зниження продуктивності для звичайних робочих навантажень. Однак для високонавантажених операцій введення-виведення або систем з дуже слабкими процесорами варто провести тести продуктивності.

sudo cryptsetup benchmark

Ця команда покаже продуктивність різних алгоритмів шифрування на вашій системі.

Опція discard (TRIM)

Як згадувалося, опція discard в /etc/crypttab дозволяє передавати команди TRIM/UNMAP на базовий SSD-накопичувач. Це може поліпшити продуктивність SSD і продовжити термін його служби. Однак, це також може потенційно розкрити, які блоки даних використовуються, а які ні, що може бути розцінено як невелике зниження конфіденційності. Для більшості сценаріїв на сервері discard є прийнятним компромісом між продуктивністю і безпекою.

Висновки

Повне шифрування диска — це потужний інструмент для захисту даних на ваших серверах. Використовуючи LUKS і dm-crypt, ви отримуєте надійне і гнучке рішення, яке легко інтегрується в Linux-системи. Ми розглянули процес шифрування додаткового розділу з даними, що є відмінною відправною точкою для підвищення безпеки. Пам'ятайте про важливість бекапів, надійних парольних фраз і правильного управління ключами.

У Valebyte ми завжди прагнемо надати нашим клієнтам не тільки високопродуктивні VPS і сервери, але і знання, необхідні для їх безпечної експлуатації. Впровадження FDE — це один з кроків на шляху до створення по-справжньому захищеної інфраструктури. Сподіваємося, цей посібник допоможе вам впевнено впровадити повне шифрування на ваших серверах!

Підвищте безпеку з виділеним сервером

Для максимальної продуктивності та безпеки даних розгляньте наші виділені сервери. Ідеально підходить для повного контролю та шифрування.

Знайти сервер →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.