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

Получить VPS arrow_forward

Как включить полное шифрование диска на сервере?

calendar_month 17 марта 2025 schedule 10 мин. чтения visibility 916 просмотров
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.