Как настроить зашифрованный раздел SWAP на существующей системе Debian 12

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

В этом руководстве используется именно такая схема. Предполагается, что используется Debian 12 «bookworm», выделенный раздел подкачки и systemd в качестве системы инициализации. Команды намеренно составлены с запасом, поскольку ошибка в пути к блочному устройству может привести к перезаписи неправильного раздела. Сначала ознакомьтесь с ключевыми моментами, а затем замените идентификаторы устройств своими собственными, вместо того чтобы слепо копировать примеры значений.

В документации Debian по cryptsetup подробно описывается зашифрованный файл подкачки и рекомендуется деактивировать файл подкачки, добавить раздел в /etc/crypttabс помощью команды /dev/urandom, изменить /etc/fstabна отображаемое устройство, а затем повторно активировать файл подкачки. См. README Debian cryptsetup . В руководстве Debian 12 по crypttab(5) также описаны поля crypttab и параметры dm-crypt.

Стоит ли использовать обмен с шифрованием случайным ключом?

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

Не используйте именно эту конфигурацию, если вы используете гибернацию, приостановку с сохранением на диск, гибридный режим сна или приостановку с последующим переходом в гибернацию. Для возобновления работы требуется, чтобы при следующей загрузке был расшифрован тот же образ гибернации. Новый случайный ключ делает это невозможным. В Debian прямо указано, что замена случайного ключа не может использоваться в качестве устройства для возобновления работы. В документации systemd по hibernate-resume в Debian 12 также показано, что возобновление работы зависит от постоянного устройства для возобновления работы.

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

Ваш файл подкачки уже защищен шифрованием диска?

Прежде чем что-либо менять, проверьте. Если ваш логический том подкачки уже находится внутри контейнера, зашифрованного с помощью LUKS, добавление еще одного уровня dm-crypt может принести мало практической пользы, но при этом увеличить сложность.

swapon --show
lsblk -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PARTUUID

Посмотрите на устройство, показанное в файле, swapon --showи отследите его родительские элементы в файле lsblk. В обычной незашифрованной конфигурации /dev/sda3тип может отображаться напрямую swap. В зашифрованной установке LVM вместо этого может отображаться файл подкачки под crypto_LUKSродительским элементом.

Иллюстрация терминала Debian 12, показывающая вывод команд swapon, lsblk и blkid для существующего раздела подкачки и его PARTUUID.
Перед внесением каких-либо изменений определите активный раздел подкачки и идентификатор стабильного раздела. Приведенные здесь имена и идентификаторы устройств являются лишь примерами.

Это различие важно, поскольку данная статья посвящена преобразованию незашифрованного выделенного раздела подкачки . Если swapon --showсистема сообщает о файле подкачки, используйте процедуру, специфичную для этого файла. Если раздел подкачки уже находится в зашифрованном хранилище, сначала решите, действительно ли необходим второй уровень шифрования.

Что следует записать перед отключением файла подкачки?

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

Например:

sudo blkid /dev/sda3
ls -l /dev/disk/by-partuuid/

В результате вы можете увидеть значение, например:

PARTUUID="11111111-2222-3333-4444-555555555555"

В приведенных ниже примерах соответствующий устойчивый путь выглядит следующим образом:

/dev/disk/by-partuuid/11111111-2222-3333-4444-555555555555

Не стоит полагаться на /dev/sda3возможность изменения перечисления дисков. Также избегайте использования старого UUID файловой системы подкачки в качестве долговременного идентификатора источника: настройка зашифрованной подкачки воссоздает подпись подкачки на отображенном зашифрованном устройстве, поэтому старый UUID необработанной подкачки не является правильным постоянным идентификатором для базового раздела.

1. Как безопасно подготовить систему?

Установите cryptsetup, если он еще не установлен, затем сделайте резервную копию двух конфигурационных файлов, которые вы будете редактировать.

sudo apt update
sudo apt install cryptsetup
sudo cp -a /etc/crypttab /etc/crypttab.before-encrypted-swap 2>/dev/null || true
sudo cp -a /etc/fstab /etc/fstab.before-encrypted-swap

Если /etc/crypttabего еще нет, это не проблема; создайте его при редактировании конфигурации.

Далее убедитесь, что в системе достаточно свободной памяти на короткий период, пока файл подкачки отключен. Затем отключите только тот раздел подкачки, который вы преобразуете. Использование одного и того же устройства безопаснее, чем swapoff -aна машине с несколькими областями подкачки:

sudo swapoff /dev/sda3
swapon --show
Иллюстрация терминала Debian 12, демонстрирующая отключение файла подкачки и установку пакета cryptsetup.
Перед применением шифрования отключите целевой файл подкачки. В системах с несколькими файлами подкачки работайте только с нужным устройством, а не отключайте все без необходимости.

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

2. Что должно быть в файле /etc/crypttab?

Создайте или отредактируйте /etc/crypttabи добавьте одну запись для сопоставления зашифрованных файлов подкачки. Далее следует документация Debian по настройке cryptsetup:

cswap /dev/disk/by-partuuid/11111111-2222-3333-4444-555555555555 /dev/urandom plain,cipher=aes-xts-plain64,size=256,swap

Замените пример PARTUUID на значение из вашей системы.

Эти поля означают:

  • cswap— это имя маппера, создающего /dev/mapper/cswap.
  • Второе поле — это фактический базовый раздел свопа.
  • /dev/urandomПри каждом создании сопоставления генерируется новый случайный ключ.
  • plainВыбирает обычный dm-crypt вместо постоянного заголовка LUKS.
  • cipher=aes-xts-plain64,size=256Это позволяет явно указывать параметры plain-dm-crypt, вместо того чтобы зависеть от значений по умолчанию, которые могут изменяться.
  • swapСообщает интеграции cryptsetup, что это сопоставленное устройство является файлом подкачки и должно быть инициализировано соответствующим образом.
Иллюстрация работы GNU nano в Debian 12: редактирование файла /etc/crypttab с использованием сопоставления cswap, которое применяет стабильный путь PARTUUID и /dev/urandom.
В записи crypttab при каждой активации создается временное зашифрованное сопоставление с именем cswap, содержащее новый ключ из /dev/urandom.

В руководстве по crypttab в Debian предупреждается, что обычный dm-crypt, в отличие от LUKS, не хранит метаданные о шифре, хеше или размере ключа в заголовке. Именно поэтому явное указание размера шифра и ключа полезно. В руководстве также описаны, discardно отмечены последствия для безопасности; не следует добавлять это только потому, что в качестве устройства используется SSD, если вы не оценили этот компромисс.

3. Какие изменения вносятся в файл /etc/fstab?

Найдите старую незашифрованную строку подкачки в файле /etc/fstab. Она может использовать UUID, путь к устройству или другой постоянный идентификатор. Например:

UUID=OLD-SWAP-UUID none swap sw 0 0

Замените его на сопоставленное зашифрованное устройство:

/dev/mapper/cswap none swap sw 0 0

Не оставляйте обе записи активными. Если и необработанный раздел, и раздел подкачки /dev/mapper/cswapвключены в качестве раздела подкачки, вы сводите на нет цель шифрования раздела и рискуете запутать активацию при загрузке.

Иллюстрация GNU nano на Debian 12, показывающая файл /etc/fstab со старой записью о необработанном файле подкачки, отключенной и с /dev/mapper/cswap, настроенным как файл подкачки.
В файле fstab следует указывать на зашифрованное устройство сопоставления, а не на исходный необработанный раздел подкачки.

В руководстве Debian fstab(5) определен формат записи подкачки, а swapon(8) объясняет, как активируются записи, помеченные как подкачка.

4. Как активировать и проверить его перед перезагрузкой?

После сохранения обоих файлов запустите зашифрованное сопоставление, а затем включите запись подкачки. В документации Debian по cryptsetup используется следующий подход:

sudo cryptdisks_start cswap
sudo swapon -a

Теперь проверьте все три слоя:

swapon --show
sudo cryptsetup status cswap
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS

В корректном результате должно отображаться содержимое файла подкачки на этом разделе /dev/mapper/cswap, а не непосредственно на исходном разделе. cryptsetup status cswapДолжно отображаться сообщение об активности сопоставления.

Если cryptdisks_startв вашей установке отсутствует необходимый пакет, не импровизируйте деструктивные команды. Еще раз проверьте, cryptsetupустановлен ли пакет и корректен ли синтаксис crypttab. Вы также можете позволить обычному процессу загрузки Debian создать сопоставление после завершения настройки возобновления загрузки, описанной ниже. Debian 12 использует генераторы systemd для преобразования конфигурации crypttab и fstab в загрузочные модули.

5. Нужно ли отключить возобновление работы в режиме гибернации?

Да, если этот раздел был настроен как устройство возобновления работы системы. Случайный ключ не может расшифровать образ гибернации, записанный с использованием предыдущего ключа. Инструкции Debian по зашифрованной подкачке явно указывают администраторам отключать возобновление работы при преобразовании старого раздела подкачки для возобновления работы в раздел подкачки с шифрованием случайным ключом.

Проверьте текущую конфигурацию:

grep -R "^[[:space:]]*RESUME=" /etc/initramfs-tools/conf.d/ 2>/dev/null

Если речь идёт о только что преобразованном разделе подкачки, установите параметр "возобновить" в значение "нет":

echo "RESUME=none" | sudo tee /etc/initramfs-tools/conf.d/resume
sudo update-initramfs -u

Именно здесь update-initramfs -uэто имеет значение. Вам не нужно перестраивать initramfs только потому, что изменилась обычная запись в файле подкачки после загрузки; вам нужно обновить его при удалении старого целевого объекта возобновления гибернации, который initramfs может попытаться использовать.

Тест перезагрузки: что доказывает работоспособность настройки?

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

sudo reboot

После восстановления работы системы выполните следующие действия:

swapon --show
sudo cryptsetup status cswap
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS
cat /proc/swaps

Ключевые критерии успеха просты:

  • /dev/mapper/cswapактивен как своп.
  • Исходный резервный раздел не отображается напрямую как активный файл подкачки.
  • cryptsetup status cswapсообщает об активном отображении dm-crypt в исходном виде.
  • Машина загружается без запроса пароля для обмена; случайный ключ генерируется автоматически.

Вы также можете перезагрузить систему дважды и сравнить поведение сопоставления. Суть конструкции в том, что ключ шифрования является временным; содержимое файла подкачки предыдущей загрузки не восстанавливается после повторного создания сопоставления.

Что произойдет, если машина перейдет в аварийный режим?

Наиболее распространенные причины — неправильный путь к резервному устройству, опечатка в файле /etc/crypttabили /etc/fstabстрока, которая по-прежнему указывает на старый необработанный файл подкачки. Загрузитесь в режим восстановления или используйте среду восстановления, смонтируйте корневую файловую систему в режиме чтения-записи и при необходимости восстановите резервные копии.

Полезными проверками могут быть следующие:

sudo cryptsetup status cswap
systemctl status systemd-cryptsetup@cswap.service
systemctl status dev-mapper-cswap.swap
journalctl -b -u systemd-cryptsetup@cswap.service

Названия модулей могут экранироваться по-разному для необычных названий картографов, поэтому используйте этот способ, systemctl list-units '*cryptsetup*'если точное название сервиса не очевидно.

А что насчет утилизации SSD-накопителей?

Не стоит включать функцию discard по умолчанию только ради теоретической производительности SSD. В документации Debian по crypttab указано, что передача запросов discard через зашифрованное устройство имеет последствия для безопасности. В руководстве Debian по swapon также отмечается, что discard может улучшить производительность на некоторых SSD, но часто этого не происходит. Если вам это необходимо, сначала оцените свою модель хранения и модель угроз, а затем добавляйте эту функцию осознанно.

Сохранит ли зашифрованный файл подкачки свою полезность, если корневая файловая система не зашифрована?

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

Итоговый контрольный список

  • Убедитесь, что целевым объектом является выделенный незашифрованный раздел подкачки, а не файл подкачки и не защищен ли он уже зашифрованным родительским устройством.
  • Запишите стабильный путь к разделу, например /dev/disk/by-partuuid/..., .
  • Перед настройкой dm-crypt отключите необработанный файл подкачки.
  • Добавить запись plain-dm-crypt со случайным ключом в /etc/crypttab.
  • Укажите /etc/fstabтолько на /dev/mapper/cswap.
  • Активируйте сопоставление и проверьте его перед перезагрузкой.
  • Если старый файл подкачки был устройством возобновления работы, установите RESUME=noneи запустите его update-initramfs -u.
  • После перезагрузки убедитесь, что в качестве файла подкачки активен только зашифрованный маппер.

Для систем Debian 12, не использующих режим гибернации, такой подход позволяет сохранить конфигурацию небольшой и избежать хранения постоянного ключа подкачки. Ключевое решение заключается не в том, «какую команду шифрования следует запустить?», а в том, соответствует ли использование случайного ключа подкачки вашим требованиям к управлению питанием. После того, как это решено, остается лишь контролируемая миграция с необработанного раздела подкачки на сопоставление dm-crypt, которое безопасно воссоздается при каждой загрузке.

Оставить комментарий

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Узнайте, как восстановить потерянные разделы и файлы с помощью TestDisk и PhotoRec. Защитите исходный диск, проведите безопасное сканирование и сохраните восстановленные данные на другой диск.

Как сканировать QR-коды на настольном компьютере с Linux

Как сканировать QR-коды на настольном компьютере с Linux

Сканируйте QR-коды в Linux с помощью CoBang, используя веб-камеру или файл изображения. См. варианты установки, шаги настройки и решения проблем с доступом к камере Flatpak.

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Изменяйте настройки веб-камеры в Linux с помощью Cameractrls: настраивайте экспозицию, цвет, подавление мерцания и другие поддерживаемые параметры, а затем проверяйте совместимые видеорежимы.

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Установите PhpStorm на Linux с помощью JetBrains Toolbox или автономного архива tar.gz, а также через Snap и Arch AUR. Java уже включена в комплект.

Как создать резервную копию CD-ROM в формате ISO в Linux

Как создать резервную копию CD-ROM в формате ISO в Linux

Создайте образ CD-ROM ISO в Linux с помощью GNOME Disks или dd. Определите оптический привод, отслеживайте процесс копирования, проверяйте образ и узнавайте, когда поврежденный диск или аудиодиск требует использования другого инструмента.

Как вырезать изображение в Linux с помощью GIMP

Как вырезать изображение в Linux с помощью GIMP

Удаление фона фотографии в Linux с помощью GIMP: обведите контур объекта, удалите выделенный фон, сохранив прозрачность, и экспортируйте многоразовый PNG-файл.

Как установить Cisco Packet Tracer на Linux

Как установить Cisco Packet Tracer на Linux

Загрузите Cisco Packet Tracer 9.0.1 для Ubuntu 64-бит, установите DEB-пакет с помощью APT, примите лицензионное соглашение в Терминале и войдите в систему, чтобы начать лабораторную работу.

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно с официального сайта. Сравните пакеты для Windows, macOS и Linux, установите файлы данных и совершите свой первый полет.

Настольное приложение Google Tasks: как им пользоваться на компьютере

Настольное приложение Google Tasks: как им пользоваться на компьютере

Откройте Google Задачи в браузере, добавьте ярлык Chrome или запустите приложение, и управляйте задачами с указанием даты через Календарь и Gmail.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler сопоставляет MP3-клипы с клавишами клавиатуры и может зацикливать аудио. Узнайте, что делает эта старая бесплатная программа, на чем заканчиваются ее старые функции и что нужно проверить перед загрузкой.