Гид по технологиям

Шифрование диска в (X)Ubuntu Feisty с dm-crypt и LUKS

6 min read Безопасность Обновлено 23 Sep 2025
Шифрование диска в XUbuntu Feisty с dm-crypt и LUKS
Шифрование диска в XUbuntu Feisty с dm-crypt и LUKS

Введение

Мотивация

Защита данных на компьютере — важная часть общей безопасности: как личной, так и корпоративной. Шифрование диска предотвращает доступ к данным при краже устройства или несанкционированном доступе к физическому накопителю. В этом руководстве показан процесс создания зашифрованного контейнера на уровне блочного устройства с использованием dm-crypt и LUKS в (X)Ubuntu Feisty.

Источники и ссылки, использованные при подготовке руководства:

Важное предупреждение

Данный процесс уничтожит все данные на указанном устройстве. Тщательно проверьте, какой диск вы выбираете. Не используйте инструкции для шифрования системного диска, где установлена ваша рабочая система, если вы не понимаете риски и не сделали резервные копии. Цель — шифровать дополнительный диск или раздел для хранения данных.

Юридические замечания

Существует несколько подходов к шифрованию. Некоторые инструменты, такие как VeraCrypt (ранее TrueCrypt), предлагают механизмы «правдоподобного отрицания» с несколькими уровнями паролей и скрытыми томами. В ряде юрисдикций законодательство и практика могут по-разному трактовать обязанность раскрывать пароль. В Европе, в странах, подписавших Европейскую конвенцию о правах человека, право хранить молчание действует по-разному в гражданских и уголовных делах. Это руководство фокусируется на технической стороне: настройке dm-crypt + LUKS, а не на юридических аспектах. При сомнениях консультируйтесь с юристом в вашей юрисдикции.

Что такое dm-crypt и LUKS (определение в одну строку)

  • dm-crypt — механизм ядра Linux для шифрования блочных устройств.
  • LUKS (Linux Unified Key Setup) — формат контейнера и набор утилит для управления ключами и метаданными для dm-crypt.

Предварительные замечания по терминологии

  • HARDDISK — в тексте заменяйте реальным устройством, например /dev/sdb или /dev/hdb.
  • DEVICENAME — произвольное имя, которое будет использоваться в /dev/mapper (например mydata).

Уровни готовности и случаи использования

  • Подходит для: шифрования дополнительных дисков для данных, резервных хранилищ, переносных HDD/SSD.
  • Не подходит для: автоматического шифрования корневого раздела без подготовки и бэкапа, если вы не уверены в восстановлении загрузчика и initramfs.

II. Установка необходимых пакетов

Этот пример использует Xubuntu Feisty, но большая часть инструкций применима к другим Debian-подобным дистрибутивам.

Установите необходимые пакеты:

sudo aptitude install cryptsetup hashalot

cryptsetup — основная утилита для управления LUKS и dm-crypt. hashalot используется для оценки паролей и генерации случайных строк (опционально).

Важно: используйте актуальные репозитории и проверяйте доступность пакетов в вашем релизе.

III. Подготовка диска (заполнение случайными данными)

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

Пример с использованием dd (заполнит весь указанный блок устройства):

sudo dd if=/dev/urandom of=/dev/HARDDISK bs=1M status=progress

Где HARDDISK замените на реальное устройство (например /dev/sdb).

Примечание: Операция займёт значительное время в зависимости от размера и скорости диска. Пример из исходного материала:

hyper@xubi:/dev$ sudo dd if=/dev/urandom of=/dev/hda
dd: writing to `/dev/hda': No space left on device
312581809+0 records in
312581808+0 records out
160041885696 bytes (160 GB) copied, 90679.8 seconds, 1.8 MB/s

Здесь 160041885696 байт (~160 ГБ) записаны. В реальной работе используйте блок размером bs=1M или больше, чтобы ускорить процесс.

Важно: если вы хотите оставить структуру разделов, создайте раздел и применяйте запись к разделу (например /dev/sdb1), а не ко всему диску.

IV. Загрузка модулей ядра

Для работы dm-crypt могут потребоваться модули ядра. Загрузите их временно:

sudo modprobe aes
sudo modprobe dm-crypt
sudo modprobe dm_mod

Чтобы эти модули загружались автоматически при старте системы, добавьте их в /etc/modules:

sudo nano /etc/modules

Добавьте в конец файла строки (если их нет):

aes
dm-crypt
dm_mod

Сохраните изменения и выйдите. fuse и lp могут присутствовать по умолчанию — не удаляйте их, если они нужны вашей системе.

V. Создание крипто-контейнера LUKS

Теперь можно инициализировать LUKS-заголовок и создать зашифрованный контейнер на выбранном устройстве/разделе:

sudo cryptsetup luksFormat /dev/HARDDISK

cryptsetup запросит подтверждение и пароль. Выберите надежный пароль или используйте ключевой файл (файл с случайными данными). Документы по политике паролей:

  • Рекомендуется минимум 12+ символов с сочетанием букв, цифр и специальных символов.
  • Для большего удобства и безопасности используйте менеджер паролей или аппаратный токен.

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

VI. Открытие/маппирование шифрованного контейнера

Откройте контейнер и задайте ему логическое имя в /dev/mapper:

sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME

После выполнения устройство будет доступно как /dev/mapper/DEVICENAME.

Совет: придерживайтесь кратких и понятных имён (например data01, secure1).

VII. Форматирование шифрованного устройства

Отформатируйте маппированное устройство в файловую систему по вашему выбору. Пример с ext3 (как в исходном руководстве):

sudo mkfs.ext3 /dev/mapper/DEVICENAME

Вы можете выбрать ext4, xfs или другую файловую систему в зависимости от требований. Для новых систем ext4 обычно предпочтительнее, но ext3 остаётся надёжным вариантом для совместимости.

VIII. Монтирование шифрованного раздела

Создайте точку монтирования и подключите файловую систему:

sudo mkdir /media/DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME

Если вы ранее уже монтировали и хотите подключить заново после перезагрузки или после ручного открытия LUKS-контейнера, выполните только:

sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME

IX. Авто-монтаж при загрузке

Чтобы система запрашивала пароль для монтирования при загрузке, добавьте запись в /etc/crypttab и /etc/fstab.

В /etc/crypttab:

DEVICENAME  /dev/HARDDISK   none    luks,check=ext2,retry=5

Объяснение: retry=5 — попыток ввода пароля при загрузке. Параметр check=ext2 используется для проверки файловой системы перед монтированием (название не означает формат ext2 — это проверка доступности). Подберите параметры под вашу систему.

В /etc/fstab добавьте строку для монтирования mapper-устройства:

# CryptoDevices
/dev/mapper/DEVICENAME  /media/DEVICENAME   auto    defaults    0   0

При загрузке система предложит ввести пароль для DEVICENAME до монтирования. Если пароль введён неверно после retry раз, загрузка продолжится без монтирования данного тома.

Важно: если вы используете шифрование системного корня, потребуется корректная настройка initramfs и загрузчика. Это выходит за рамки этого документа.

X. Добавление и удаление ключей

LUKS поддерживает несколько ключей (ключевых слотов). Это удобно для резервных паролей, ключевых файлов и изменения пароля без переразметки.

Добавить ключ (второй пароль или файл):

sudo cryptsetup luksAddKey /dev/HARDDISK

Удалить ключ (потребуется ввести существующий ключ для подтверждения):

sudo cryptsetup luksDelKey /dev/HARDDISK

Проверьте количество занятных слотов командой:

sudo cryptsetup luksDump /dev/HARDDISK

Это покажет метаданные LUKS, в том числе информацию о слотовых ключах.

XI. Правильное размонтирование и закрытие контейнера

Просто отмонтирование точки монтирования не означает, что доступ к расшифрованному устройству закрыт. Если устройство остаётся смаппированным в /dev/mapper, оно всё ещё доступно при наличии прав. Чтобы правильно закрыть:

sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME

Пример простого скрипта ~/umount.sh:

#!/bin/bash
sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME

Сделайте файл исполняемым:

sudo chmod a+x ~/umount.sh

Для удобства можно создать ярлык в среде рабочего стола.

Ярлык для скрипта размонтирования в Xfce

Картинка: Ярлык запуска скрипта для корректного размонтирования и закрытия LUKS-контейнера в окружении Xfce.

XII. Рекомендации по безопасности и эксплуатационные советы

  • Резервные копии: всегда имейте резервные копии важной информации на независимом носителе.
  • Хранение ключей: ключевые файлы не храните на том же зашифрованном носителе. Рассмотрите съемный USB с ключом или аппаратный токен.
  • Обновления: поддерживайте систему и cryptsetup в актуальном состоянии.
  • Пароли: используйте менеджер паролей для генерации и хранения сильных паролей.
  • Метаданные: LUKS хранит заголовок с метаданными; резервное копирование LUKS-заголовка может помочь восстановить доступ при повреждении.

Создать резервную копию LUKS-заголовка:

sudo cryptsetup luksHeaderBackup /dev/HARDDISK --header-backup-file ~/luks-header-backup.img

Восстановление заголовка (с осторожностью — перезапишет текущий заголовок):

sudo cryptsetup luksHeaderRestore /dev/HARDDISK --header-backup-file ~/luks-header-backup.img

Важно: храните резервную копию заголовка в безопасном месте (вне целевого накопителя).

Альтернативные подходы и когда этот метод не подходит

  • VeraCrypt/TrueCrypt: предоставляет возможности скрытых томов и другой функционал правдоподобного отрицания. Если вам нужны скрытые тома — рассмотрите VeraCrypt.
  • Полное шифрование корня: для шифрования системного диска потребуется настройка initramfs и загрузчика GRUB — это более сложная задача.
  • Аппаратное шифрование: некоторые диски поддерживают встроенное шифрование (SED). Это удобнее, но зависит от доверия к реализации производителя.

Когда этот метод не даёт защиты:

  • Аттаки на работающую систему: если система запущена и том смонтирован, злоумышленник с доступом к ОС и правами root сможет получить доступ к данным.
  • Утечка ключей: если пароль или ключевой файл скомпрометированы, шифрование бесполезно.

Ментальные модели и эвристики при принятии решения

  • Модель «защиты по слоям»: шифрование — часть многоуровневой стратегии безопасности: бэкапы, контроль доступа, обновления и физическая безопасность.
  • Принцип наименьших привилегий: ограничьте количество пользователей с правами монтирования/доступа к шифрованным томам.
  • Эвристика управления ключами: если потеря ключа означает потерю доступа к данным, вводите политики резервного копирования ключей.

Контрольный список перед началом (SOP)

  1. Сделать резервные копии всех важных данных на другом устройстве.
  2. Выбрать правильное устройство (подтвердить с помощью lsblk, fdisk -l или blkid).
  3. Убедиться, что устройство не содержит нужных данных (dd уничтожит всё).
  4. Обновить систему и установить cryptsetup.
  5. Продумать схему хранения ключей и резервной копии LUKS-заголовка.
  6. Проверить способ восстановления (тестовое открытие контейнера и монтирование).

Резюме по операциям (short playbook)

  • Установка: aptitude install cryptsetup
  • Заполнение случайными данными: dd if=/dev/urandom of=/dev/HARDDISK
  • Создание LUKS: cryptsetup luksFormat /dev/HARDDISK
  • Открытие: cryptsetup luksOpen /dev/HARDDISK DEVICENAME
  • Форматирование: mkfs.ext3 /dev/mapper/DEVICENAME
  • Монтирование: mount /dev/mapper/DEVICENAME /media/DEVICENAME
  • Размонтирование и закрытие: umount /media/DEVICENAME && cryptsetup luksClose DEVICENAME

Decision flowchart (Mermaid)

flowchart TD
  A[Начало: есть диск для шифрования?] --> B{Сохранены ли данные с диска?}
  B -- Нет --> C[Сделать резервную копию]
  C --> D[Выбрать /dev/HARDDISK]
  B -- Да --> D
  D --> E[Установить cryptsetup]
  E --> F[Опционально: заполнить /dev/HARDDISK случайными данными]
  F --> G[cryptsetup luksFormat /dev/HARDDISK]
  G --> H[cryptsetup luksOpen /dev/HARDDISK DEVICENAME]
  H --> I[mkfs.ext3 /dev/mapper/DEVICENAME]
  I --> J[mount /dev/mapper/DEVICENAME /media/DEVICENAME]
  J --> K[Добавить записи в /etc/crypttab и /etc/fstab 'если нужно']
  K --> L[Готово]

Роли и обязанности (кто что делает)

  • Пользователь: выбирает устройство, генерирует пароль/ключ, монтирует и использует данные.
  • Сисадмин: устанавливает пакеты, настраивает автозагрузку, создает политики резервного копирования заголовков и ключей.
  • Офицер безопасности: определяет политику хранения ключей, требования к паролям и процессы восстановления.

Критерии приёмки

  • Устройство /dev/mapper/DEVICENAME открывается после ввода пароля.
  • Файловая система монтируется в указанной точке и доступна для чтения/записи.
  • После закрытия LUKS-контейнера /dev/mapper/DEVICENAME больше не присутствует.
  • Резервная копия LUKS-заголовка сохранена в безопасном месте.

Мини-глоссарий (одна строка)

  • LUKS: формат и набор утилит для управления шифрованием блочных устройств в Linux.
  • dm-crypt: модуль ядра для шифрования блочных устройств через device-mapper.
  • /dev/mapper: виртуальные устройства, созданные device-mapper.

Матрица рисков и смягчение

  • Потеря пароля: риск — критический; смягчение — хранение резервного ключа отдельно.
  • Повреждение заголовка LUKS: риск — высокий; смягчение — регулярное резервное копирование заголовка.
  • Утечка ключа: риск — критический; смягчение — контролируемый доступ, аппаратные токены.

Примечания по конфиденциальности и локальному регулированию

  • Шифрование защищает конфиденциальность данных при физическом доступе, но не защищает от юридических требований о раскрытии, действующих в вашей юрисдикции. Для правовой оценки обращайтесь к юристу.
  • Для организаций разработайте политику хранения ключей и доступа в соответствии с требованиями соответствующей отрасли и регулятора.

Когда проверка не проходит — возможные ошибки и отладка

  • Ошибка при luksFormat: убедитесь, что устройство не смонтировано и у вас есть права root.
  • При открытии cryptsetup выдает “No key available”: попробуйте другой пароль или используйте luksDump для диагностики.
  • Проблемы с автозапуском: проверьте корректность обоих файлов /etc/crypttab и /etc/fstab, а также логи загрузки (journalctl, dmesg).

Итог и рекомендации

Этот гид даёт практическую инструкцию по созданию зашифрованного блока с помощью dm-crypt и LUKS в (X)Ubuntu Feisty. Шифрование — мощный инструмент защиты данных, но требует дисциплины: резервное копирование ключей и заголовков, использование надежных паролей и управление доступом. Для шифрования системных корневых разделов потребуется отдельная подготовка и тестирование.

Важно: всегда тестируйте процедуру восстановления до того, как будете полагаться на неё для критичных данных.


Короткая памятка:

  • Перед началом сделайте бэкап
  • Выбирайте устройство аккуратно
  • Сохраняйте LUKS-заголовок отдельно
  • Храните ключи в безопасном месте
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Steam не открывается — руководство по исправлению
Техподдержка

Steam не открывается — руководство по исправлению

Изменить размер и место файла подкачки в Windows
Windows

Изменить размер и место файла подкачки в Windows

Восстановление удалённых писем на Mac — 7 способов
Mac

Восстановление удалённых писем на Mac — 7 способов

Шифрование диска в XUbuntu Feisty с dm-crypt и LUKS
Безопасность

Шифрование диска в XUbuntu Feisty с dm-crypt и LUKS

Как просмотреть и удалить историю поиска YouTube
Приватность

Как просмотреть и удалить историю поиска YouTube

Двусторонний поиск в Excel с INDEX и XMATCH
Excel

Двусторонний поиск в Excel с INDEX и XMATCH