Шифрование раздела с dm-crypt LUKS
Это краткое и практичное руководство по шифрованию раздела с помощью dm-crypt и LUKS. Подготовьте пустой раздел, перезапишите его случайными данными, создайте LUKS-контейнер через cryptsetup, смонтируйте файловую систему, работайте с данными и корректно закройте устройство. Внизу — чеклисты, риски и рекомендации по безопасности.
Введение
TrueCrypt больше не поддерживается, поэтому здесь показан современный и простой способ шифрования раздела с помощью dm-crypt и LUKS. dm-crypt предоставляет прозрачное шифрование блока устройства на уровне ядра и реализован через схему device mapper. Алгоритмы шифрования берутся из crypto API ядра Linux.
Коротко: это шифрование, реализованное в ядре, которое маппирует физический блоковый диск на виртуальное шифрованное устройство.
Требования
- Один пустой раздел или свободное место на диске. Если разделов нет, используйте parted, gparted или любой другой инструмент для изменения разметки и создания нового раздела.
- Права root для выполнения команд ниже.
Важно: убедитесь, что у вас нет нужных данных на выбранном разделе. Все данные будут уничтожены в процессе форматирования.
Подготовка раздела
В примере используется раздел /dev/sda3. Сначала перезапишем раздел случайными данными несколько раз, чтобы снизить шансы восстановления данных при судебной экспертизе. Для 20 ГБ раздела у меня ушло примерно 30 минут на три прохода.
shred --verbose --random-source=/dev/urandom --iterations=3 /dev/sda3Создание LUKS-контейнера
Создадим шифрованное устройство в режиме LUKS через cryptsetup. В примере используется алгоритм aes-xts-plain64 с размером ключа 512 бит и хешем sha512. Опция –iter-time увеличивает время KDF для защиты от перебора паролей.
cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3Команда выдаст предупреждение и попросит подтвердить действие, затем предложит ввести и подтвердить пароль. После успешного выполнения вы увидите сообщение об успешном завершении.
Открытие шифрованного устройства
Откроем созданный LUKS-контейнер и привяжем его к имени в device mapper. В примере имя устройства будет root.
cryptsetup open --type luks /dev/sda3 rootИмя root здесь выступает как метка для /dev/mapper/root и удобно использовать его в последующих командах.
Создание файловой системы и монтирование
Создайте файловую систему на смонтированном шифрованном устройстве и подключите её к точке монтирования.
mkfs.ext4 /dev/mapper/root
mount -t ext4 /dev/mapper/root /mntТеперь /mnt — это зашифрованное хранилище. Перенесите туда ваши файлы обычными командами копирования.
Завершение работы и очистка
После завершения работы отмонтируйте точку и закройте контейнер:
umount /mnt
cryptsetup close rootОчистите системные буферы, чтобы уменьшить шанс остатков данных в кэше:
sysctl --write vm.drop_caches=3Важно: всегда корректно отмонтируйте и закройте LUKS-устройство перед отключением носителя или перезагрузкой.
Шифрование файла-образа и запись на CD/DVD
Если нужно зашифровать не раздел, а файл-образ, создайте файл и заполните его случайными данными. Например, создадим 500 МБ файл, который затем используем как отдельную файловую систему в LUKS:
dd if=/dev/urandom of=encrypted.volume bs=1MB count=500Замените в начале предыдущих инструкций команду shred на создание файла через dd и применяйте остальные команды как есть, указывая путь к файлу вместо /dev/sda3. Не забудьте отмонтировать и закрыть encrypted.volume перед записью на диск.
Защита раздела /boot и полный диск
Если вы хотите полноценное шифрование всего диска, нужно особо позаботиться о разделе /boot. /boot не шифруется в большинстве стандартных установок, а значит злоумышленник может модифицировать загрузчик. В ссылках внизу подробно описаны способы шифрования /boot и настройки initramfs.
link 1, link 2, link 3, link 4, link 5, link 6, link 7
Альтернативные подходы и когда это не подходит
- VeraCrypt / продолжения TrueCrypt могут быть предпочтительны для кросс-платформенных задач и портативных контейнеров.
- Для мобильных систем с UEFI и Secure Boot потребуются дополнительные шаги при шифровании /boot.
- Если вы не контролируете аппарат (например, публичные машины), хранение ключей на том же устройстве снижает безопасность.
Мини-методология
- Подготовьте резервные копии нужных данных.
- Освободите или создайте раздел для шифрования.
- Перезапишите раздел случайными данными.
- Создайте LUKS-контейнер и задайте сильный пароль.
- Откройте контейнер, создайте файловую систему, смонтируйте и перенесите данные.
- После работы корректно отмонтируйте и закройте контейнер.
- Очистите кэши.
Роль-ориентированный чеклист
Для пользователя:
- Убедиться, что есть резервные копии.
- Записать пароль в надёжное место или использовать менеджер паролей.
- Всегда корректно отмонтировать и закрыть устройство.
Для системного администратора:
- Настроить периодический бэкап LUKS header или иметь резервный ключ.
- Рассмотреть использование ключевого файла на отдельном носителе.
- Проверить автоматический скрипт монтирования в initramfs для /boot.
Для аудитора:
- Проверить, что passphrase имеет достаточную сложность.
- Проверить отсутствие незашифрованных чувствительных данных в /tmp, swap, и логах.
Риски и смягчения
- Риск: потеря пароля => потеря доступа к данным. Смягчение: хранить резервный ключ или бэкап LUKS header.
- Риск: ключ рядом с диском (на той же машине). Смягчение: использовать внешний ключевой носитель или TPM/secure element.
- Риск: повреждение LUKS header. Смягчение: создать резервную копию заголовка с помощью cryptsetup luksHeaderBackup.
Критерии приёмки
- Устройство успешно открывается по паролю и монтируется.
- Данные доступны после монтирования и недоступны при попытке монтирования без пароля.
- После закрытия устройства диск не содержит доступных незашифрованных данных.
Советы по усилению безопасности
- Используйте длинный уникальный пароль или сочетание пароля и ключевого файла.
- Не храните ключи на том же физическом диске без дополнительной защиты.
- Зашифруйте swap и временные каталоги, если там могут оказаться секреты.
- Рассмотрите использование TPM или внешнего ключевого носителя для автоматической разблокировки в контролируемой среде.
Краткий глоссарий
- dm-crypt: подсистема ядра Linux для шифрования блочных устройств.
- LUKS: формат контейнера для хранения зашифрованных блочных устройств и метаданных.
- cryptsetup: утилита для создания и управления LUKS-контейнерами.
- device mapper: инфраструктура ядра для создания виртуальных блочных устройств.
Заключение
Это простой и проверенный способ обеспечить шифрование раздела на Linux с помощью dm-crypt и LUKS. Ключевые моменты — подготовка раздела, создание контейнера через cryptsetup, корректная работа с монтированием и обязательное закрытие контейнера. Дополнительные меры безопасности и резервные копии заголовка LUKS значительно снижают риски потери данных.
Важно: при записи образа на CD/DVD всегда убедитесь, что encrypted.volume корректно закрыт и отмонтирован перед прожигом.
Дополнительные материалы и подробные инструкции по шифрованию полного диска и раздела boot находятся в перечисленных ссылках выше.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента