- Вопрос или проблема
- Предположения
- Проблема
- Доступность ссылок на устройства
- Ссылки на устройства LVM
- НАСТРОЙКА
- Отключить гибернацию
- Создать LVM
- Переименовать раздел подкачки
- Создать физический объем LVM
- Создать группу томов LVM
- Создать логический том LVM
- Зашифрованный раздел подкачки
- Создать пространство подкачки
- Активировать пространство подкачки
- Заключение
- Переключитесь на учетную запись администратора/root
- Отключить подкачку
- Найдите существующий раздел подкачки
- Перезапишите старую подкачку
- Настройка FSTAB
- Настройка Crypto
- Активная зашифрованная подкачка
- Проверьте операции зашифрованной подкачки
- Ответ или решение
- Предварительные требования
- Шаги по созданию зашифрованного раздела подкачки
- 1. Создание физического и логического тома
- 2. Настройка /etc/crypttab
- 3. Настройка /etc/fstab
- 4. Создание зашифрованного раздела подкачки
- Проверка состояния
- Заключение
Вопрос или проблема
Разумно, если на вашей системе GNU/Linux реализовано шифрование блочных устройств, зашифровать и раздел подкачки, так как любые расшифрованные данные могут быть записаны в открытом виде в раздел подкачки в любое время.
Смотря на страницу man для “crypttab” в дебian, я вижу пример создания раздела подкачки с случайным ключом при загрузке, так что ключ устанавливается случайным образом по ходу загрузки и известен только самой системе:
# Зашифрованное устройство подкачки
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap
В этом примере устройство подкачки ссылается на стандартный путь устройства, т.е. /dev/sda6
Абсолютные пути устройств могут изменяться и переопределяться при загрузке, если, скажем, подключен USB-накопитель, например. Пользователь будет очень недоволен, если /dev/sda6
окажется другим разделом, чем ожидалось, и впоследствии будет перезаписан произвольными данными подкачки!!
Таким образом, решение, по-видимому, состоит в том, чтобы: использовать UUID вместо пути устройства (так как UUID не должен меняться), заменив /dev/sda6
на /dev/disk/by-uuid/<uuid устройства /dev/sda6>
НО … вот в чем проблема:
Каждый раз, когда cryptsetup воссоздает зашифрованный раздел подкачки при загрузке, он генерирует для него новый UUID! Упс!
Поэтому нам нужно как-то сохранить UUID этой зашифрованной файловой системы. Я думаю, что cryptsetup может сделать это с помощью своего переключателя --offset
, который позволяет сохранить заголовок LUKS и, таким образом, UUID.
Я нашел этот URL:
https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions
Кто-нибудь знает, как реализовать описанное решение для Arch Linux на Debian OS?
Скрипты инициализации, упомянутые в документе, похоже, отсутствуют в Debian OS
Спасибо!
ИЗМЕНЕНИЕ
Можно использовать ecryptfs для достижения тех же целей (зашифрованное пространство подкачки) с помощью команды:
ecryptfs-setup-swap
Без проблем, которые связаны с шифрованием блочных устройств.
Посмотрите это сообщение на AskUbuntu
Каждый раз, когда cryptsetup воссоздает зашифрованный раздел подкачки при загрузке, он генерирует для него новый UUID! Упс!
В /etc/crypttab используйте /dev/disk/by-id вместо /dev/disk/by-UUID, чтобы сослаться на ваш раздел подкачки. Например, ваша запись в /etc/fstab для подкачки может быть
#<файловая система> <точка монтирования> <тип> <опции> <дамп> <передача>
/dev/mapper/cswap none swap sw 0 0
Тогда соответствующая запись в /etc/crypttab будет чем-то вроде
# <имя> <устройство> <пароль> <опции>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256
Обратите внимание, что устройство выше ссылается на /dev/disk/by-id, что вы можете определить для вашего диска, набрав следующее в командной строке:
ls -lF /dev/disk/by-id
В моем /etc/crypttab у меня есть
# <целевая имя> <исходное устройство> <файл ключа> <опции>
swap /dev/mapper/cswap /dev/random swap
Здесь /dev/mapper/cswap – логический том, созданный с помощью LVM, который заботится о правильном назначении имен логических томов независимо от имен букв диска. Он также позволяет мне легко изменять размер моего раздела подкачки.
Чтобы использовать раздел подкачки на зашифрованном файле через LVM с опцией by-uuid
, это невозможно … на стадии загрузки initramfs
или на большинстве стадий загрузки systemd
.
Вот почему…
Или переходите к разделу “Шаги”, чтобы начать создание столь же безопасного зашифрованного пространства подкачки LVM, которое создается в нормальном режиме загрузки (для systemd, Debian 10).
Предположения
Вы создали раздел LVM с именем lv_swap_encrypted
, используя 100% пространства VG vg_swap
, как указано:
lvcreate -l 1000%VG -n lv_swap_encrypted vg_swap
так что наша цель состоит в том, чтобы получить следующую логическую диаграмму:
/dev/sda3
LVM Физический Объём (PV)
/dev/mapper/dm-7
LVM Группа Томов (VG)
/dev/vg_swap
LVM Логический Том (LV)
/dev/vg_swap/lv_swap_encrypted
cryptsetup plain
/dev/mapper/swap_unencrypted
пространство подкачки
Проблема
Взгляните на новый созданный раздел LVM с именем vg_swap-lv_swap_encrypted
, предназначенный только для использования с подкачкой (или зашифрованной подкачкой):
# ./lsblk-uuid
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
└─arca_v1-spare
...
Обратите внимание, что для этого раздела vg_swap-lv_swap_encrypted
нет UUID?
Вы МОГЛИ бы выполнить mkswap vg_swap-lv_swap_encrypted
на этом LVM и получить этот UUID, но тогда мы пропустим крайне необходимую часть шифрования, которую мы хотели.
ПРЕДУПРЕЖДЕНИЕ: О, вы выполнили mkswap
? Тогда очистите его, выполнив:
dd if=/dev/urandom of=/dev/mapper/vg_swap-lv_swap_encrypted
Выполнение dmsetup info /dev/dm-7
показывает другой формат UUID:
LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Я уже пробовал опцию UUID=
с тем причудливым значением LVM выше, и оно не сработает во 2-м поле /etc/crypttab
. Это стоило мне перезагрузки.
Примечание: X представляет UUID VG и Y – UUID LV в терминологии LVM.
Доступность ссылок на устройства
Во время стадии загрузки initramfs не так много символических ссылок доступно для использования на стадии загрузки. Мы исследуем, какие пути устройств доступны для зашифрованной подкачки.
Нет необходимости выполнять update-initramfs
или другую реконструкцию initfs здесь.
Ссылки на устройства LVM
В каталоге /dev
LVM создает несколько символических ссылок для каждого раздела LV (логического тома), который lvcreate
(или systemd-lvm2
во время загрузки) активирует.
Во время стадии загрузки initramfs активация LVM создает следующие блочные и символические файлы:
/dev/dm-X
/dev/mapper/vg_swap-lv_swap_encrypted
/dev/vg_swap/lv_swap_encrypted
Во время нормальной стадии загрузки ядра ОС заботится о остальных следующих ссылках. Нет необходимости исследовать, кем или где, так как наше внимание сосредоточено на доступности ссылок для зашифрованного раздела подкачки В ТЕЧЕНИЕ стадии загрузки initramfs
.
/dev/block/254:X
/dev/254:X
/dev/vg_swap-lv_swap_encrypted
/dev/lv_swap_encrypted
/dev/dm-name-vg_swap-lv_swap_encrypted
/dev/disk/by-id/dm-uuid-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
/dev/dm-uuid-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Двадцать перезагрузок на уровне 2 позже, я узнал, что никогда не будет возможно (в течение стадии загрузки initramfs
) использовать монтирование by-uuid
, потому что каждый раз, когда сваппер записывает нешифрованные данные в первые пару блоков зашифрованного раздела, любой UUID, который у него был до того, как его зашифрованные данные написали его, теперь давно потерян.
Для нормальной пост-загрузочной стадии UUID может использоваться в cryptsetup
/cryptdisks_*
.
Давайте отступим от физических и расширенных UUID разделов, чтобы взглянуть на UUID LVM здесь: управление LVM в значительной степени гарантирует, что каждый раздел LVM уникален.
ОПАСНОСТЬ: Вкратце, единственная опасность для вас заключается в повторном использовании этого же раздела LVM для чего-то еще, кроме подкачки. В противном случае, при следующей перезагрузке, этот раздел снова будет преобразован в пространство подкачки, и любые вновь установленные данные будут потеряны (просто порадуйтесь, что это не старые и ценные данные).
НАСТРОЙКА
Эта схема использования имени LVM VG/LV была бы неуязвима к потере данных, вызванной добавлением, удалением и перераспределением жесткого диска, будь то подкачка или файловая система.
В этом примере /etc/crypttab
:
swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/random none
Пространство подкачки с использованием рандомизированного ключа на основе памяти И с использованием пути VG/LV, этот подход возьмет ваш существующий раздел подкачки и преобразует его в зашифрованное пространство подкачки.
По существу, следующие шаги
- отключить гибернацию,
- создать раздел LVM для зашифрованной части пространства подкачки,
- сделать новую запись в
/etc/crypttab
- заставить dm-crypt/LUKS создать ещё один раздел, swap_unencrypted.
- изменить запись о подкачке в
/etc/fstab
- Создать пространство подкачки (
mkswap
) - Включить пространство подкачки (‘swapon`)
все это для того, чтобы повторно зашифровать пространство подкачки сейчас и после каждой перезагрузки.
Отключить гибернацию
Чтобы использовать рандомизированный ключ, вы должны понимать, что функция гибернации больше не поддерживается.
Вы также должны отключить гибернацию перед тем, как продвигаться дальше. Гибернация использует пространство подкачки, и рандомизированные ключи делают предыдущую гибернацию довольно неудобной.
Примечание: мы ХОТИМ установить физический или расширенный раздел на SWAP, чтобы обмануть этот системный генератор initramfs
и не отключать часть SUSPEND/SLEEP.
В Debian вы можете выполнить:
systemctl mask hibernate.target hybrid-sleep.target
systemctl restart systemd-logind.service # или перезагрузите, если используете менеджер дисплея Gnome/gdm3
Хорошая новость в том, что аппаратный режим ожидания или сна все равно будет работать.
Создать LVM
Эти шаги предполагают, что у вас уже есть физический или расширенный (а не LVM) раздел для раздела подкачки.
Переименовать раздел подкачки
Предположим, что /dev/sda
– это имя диска.
Предположим, что 3
– это номер раздела диска /dev/sda
, на котором находится подкачка.
Выполните fdisk
и используйте опцию t
, чтобы переименовать Linux swap
в Linux LVM
, введя 31
(или вы можете использовать L
, чтобы перечислить все опции после этой команды t
).
# fdisk /dev/sda
Добро пожаловать в fdisk (util-linux 2.33.1).
Изменения останутся в памяти только до тех пор, пока вы не решите записать их.
Будьте осторожны при использовании команды записи.
Команда (m для помощи): t
Номер раздела (1-4, по умолчанию 4): 3
Тип раздела (введите L, чтобы перечислить все типы): 31
Изменен тип раздела 'Linux swap' на 'Linux LVM'.
Команда (m для помощи): w
Таблица разделов была изменена.
Синхронизируйте диски.
Создать физический объем LVM
Создайте физический объем для LVM, выполнив:
pvcreate /dev/sda3
Создать группу томов LVM
Создайте группу томов для LVM, выполнив:
vgcreate vg_swap /dev/sda3
Приятная особенность группы томов заключается в том, что вы можете расширить пространство подкачки позже с помощью другого физического жесткого диска.
Создать логический том LVM
Создайте логический том для LVM, выполнив:
lvcreate -l 100%vg -n lv_swap_encrypted vg_swap
# Заставить LVM создать специальный файл в /dev/vg_swap/lv_swap_encrypted
lvchange -a y vg_swap
Теперь у нас есть доступный блочный файл /dev/dm-7
.
Вы обнаружите, что:
/etc/mapper/vg_swap-lv_swap_encrypted
/etc/vg_swap/lv_swap_encrypted
все указывает на тот же /dev/dm-7
.
Я буду настаивать на использовании /etc/mapper/vg_swap-lv_swap_encrypted
, потому что это
согласованное место, которое большинство из нас может ожидать.
Мало кто знает, чтобы искать это имя группы томов LVM здесь, как /dev/vg_swap
. Некоторые другие (как большинство BOFH), кто создаёт труднодоступные /etc/mapper_other
(имя VG mapper
), чтобы усложнить поиск.
Мы не будем использовать /dev/dm-7
, потому что это может быть dm-19
или другое, в зависимости от вашей схемы разбиения.
Теперь у нас есть путь к диску, логическому диску, но ещё не зашифрованному диску с произвольным ключом, указывающим на /dev/mapper/vg_swap-lv_swap_encrypted
.
Зашифрованный раздел подкачки
Добавьте или измените следующую запись в /etc/crypttab
:
swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/urandom swap,cipher=
aes-cbc-essiv:sha256,size=256
Затем активируйте шифрование и создайте еще одно устройство dm под блочным устройством /dev/mapper
:
Выберите одну из двух команд ниже:
# cryptsetup open /dev/mapper/vg_swap-lv_swap_encrypted \
swap_unencrypted
или
# cryptdisks_start swap_unencrypted
[ ok ] Запуск крипто-диска...swap_unencrypted (работает)...готово.
Была создана новая символическая ссылка, выполните lsblk
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.7T 0 диск
├─sda1 8:1 0 1M 0 часть
├─sda2 8:2 0 381M 0 часть /boot
├─sda3 8:3 0 15.3G 0 часть
│ └─vg_swap-lv_swap_encrypted 254:7 0 15.3G 0 lvm
│ └─swap_unencrypted 254:8 0 15.3G 0 crypt [SWAP]
└─sda4 8:4 0 3.6T 0 часть
├─arca_v1-root 254:0 0 186.3G 0 lvm /
... 11:0 1 1024M 0 rom
Вы могли бы взглянуть на UUID этого раздела LVM, но это бесполезно на данный момент.
Выполните lsblk -o name,uuid,mountpoint
# ~/bin/lsblk -o name,uuid,mountpoint
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
│ └─swap_unencrypted
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
...
Новосозданное блочное устройство /dev/mapper/swap_unencrypted
теперь существует.
Детали по /dev/mapper/swap_unencrypted:
# cryptsetup status swap_unencrypted
/dev/mapper/swap_unencrypted активен.
тип: PLAIN
шифр: aes-cbc-essiv:sha256
размер ключа: 256 бит
местоположение ключа: dm-crypt
устройство: /dev/mapper/vg_swap-lv_swap_encrypted
размер сектора: 512
смещение: 0 секторов
размер: 31997952 секторов
режим: чтение/запись
Создать пространство подкачки
Создайте пространство подкачки:
# mkswap /dev/mapper/swap_unencrypted
Настройка пространства подкачки версии 1, размер = 15.3 GiB (16382947328 байт)
нет метки, UUID=8cd89984-9892-4d62-a9ba-ecfb6476379c
Теперь обратите внимание на созданный UUID для swap_unencrypted
? Это всегда будет отличаться для каждой перезагрузки.
# ~/bin/lsblk-uuid
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
│ └─swap_unencrypted 8cd89984-9892-4d62-a9ba-ecfb6476379c [SWAP]
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
...
Активировать пространство подкачки
В /etc/fstab
, измените или добавьте строку с записью подкачки:
/etc/mapper/swap_unencrypted none swap sw 0 0
Затем выполните:
# swapon /dev/mapper/swap_unencrypted
Пространство подкачки теперь зашифровано с использованием случайного ключа.
Поскольку dm-crypt использует UUID, предоставляемый блочным устройством LV LVM, это должно быть достаточным ответом для функционально защищенного зашифрованного пространства подкачки.
Заключение
UUID не может быть использован для зашифрованного раздела подкачки из-за стохастической природы зашифрованных данных, которые предотвращают идентификацию такого раздела (подкачка, ext4, btfs).
UUID не может быть использован для нешифрованного раздела подкачки, предоставленного cryptsetup
, потому что наша цель – обновлять пространство подкачки на каждой перезагрузке.
Вы можете использовать /dev/disk/by-id
.
Но LVM предлагает более чем достаточную защиту благодаря вашей уникальной системе именования для каждого из разделов VG и LV.
Указанная выше схема предоставляет уникальный зашифрованный локатор пространства подкачки, который будет перепутан, но невосстанавливаемым после каждой перезагрузки (или в редком случае, при повторном монтировании LVM).
Попробуйте реализовать остальную часть решения, игнорируя файл инициализации. Похоже, что этот кусок инициализационного скрипта только для вашей безопасности. Либо Debian не защищает вас таким образом, либо выдаст вам сообщение об ошибке, когда вы попытаетесь загрузиться с ним, которое, надеюсь, приведет вас к правильному месту.
Я также буду осторожен, если мне не изменяет память, Debian и ArchLinux имеют разные форматы для /etc/crypttab (безумие, я знаю, но я перешел с Ubuntu на Arch пару лет назад и в конечном итоге решил использовать банальный bash, а не мудрить с crypttabs).
выполните ecryptfs-setup-swap или вручную:
Эта конфигурация использует случайно сгенерированные ключи при загрузке и не поддержит гибернацию на жесткий диск! Вы должны отключить гибернацию через вашу соответствующую утилиту управления питанием DE и установить его на завершение при критическом уровне, чтобы избежать потери данных!
Переключитесь на учетную запись администратора/root
su root или sudo для каждой команды
Отключить подкачку
swapoff -a
Найдите существующий раздел подкачки
lsblk
пример:
sda3 8:3 0 8G 0 часть [SWAP]
Перезапишите старую подкачку
dd if=/dev/zero bs=1024000 of=/dev/sda<#>
пример:
dd if=/dev/zero bs=1024000 of=/dev/sda3
Настройка FSTAB
vim /etc/fstab
Замените старое устройство SWAP на имя маппера crypttab: /dev/mapper/cswap
СТАРОЕ
UUID=d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc swap swap defaults 0 0
НОВОЕ
/dev/mapper/cswap none swap pri=1,defaults 0 0
Настройка Crypto
ls -lF /dev/disk/by-id
Пример:
ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
vim /etc/crypttab
cswap /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256
Активная зашифрованная подкачка
Перезагрузите компьютер
Проверьте операции зашифрованной подкачки
dmsetup -C info
Пример:
cswap 253 0 L–w 2 1 0 CRYPT-PLAIN-cswap
lsblk
Пример
├─sda3 8:3 0 8G 0 часть
│ └─cswap 253:0 0 8G 0 crypt [SWAP]
cat /proc/swaps
пример:
Filename Type Size Used Priority
/dev/dm-0 partition 8385532 0 -1
Если вы используете GPT таблицы разделов, то, например, /dev/disk/by-partuuid/d1a59352-aa44-4748-85fc-4cf785702f99
является стабильным именем устройства, которое не изменится, даже когда содержимое изменится.
Не Debian, а Fedora 36
Подтверждение, что идея @Brian Minton использовать UUID раздела, содержащегося в GUID Partition Table, может быть эффективно использована для решения этой конкретной проблемы. Конечно, вам нужна структура диска, использующая GUID Partition Table, а не старомодная MS-DOS таблица разделов
Например, я хочу иметь изменчивый, но зашифрованный раздел подкачки на /dev/sda3
, и мы можем найти UUID GUID Partition, посмотрев в /dev/disk/by-partuuid/
(или вызвав blkid /dev/sda3
)
# ls -l /dev/disk/by-partuuid/
total 0
lrwxrwxrwx. 1 root root 10 Jun 22 09:54 1bcc8619-ab8d-4709-b1a6-dcb6ac8bdd1b -> ../../sda3
И затем мы просто должны добавить соответствующие строки в /etc/cryptsetup
и /etc/fstab
как показано (оранжевым) на диаграмме ниже.
После загрузки мы находим следующее в журнале systemd
с journalctl
:
systemd-makefs[693]: Настройка пространства подкачки версии 1, размер = 2 GiB (2147479552 байта)
systemd-makefs[693]: LABEL=cryptoswap, UUID=5d930dd4-4799-4f7a-928e-b2da1c5b9508
systemd-makefs[691]: /dev/mapper/cryptoswap успешно отформатирован как подкачка (метка "cryptoswap", uuid 5d930dd4-4799-4f7a-928e-b2da1c5b9508)
systemd[1]: Завершена настройка [email protected] - Настройка шифрования для cryptoswap.
systemd[1]: Достигнута цель [email protected] - Подготовка блочного устройства для /dev/mapper/cryptoswap.
В Arch wiki это частично обсуждается, но некоторые детали упускаются, которые я заполню здесь. В основном вам нужно сделать небольшую файловую систему в начале раздела с меткой и UUID, которые вы хотите, затем используйте параметр смещения в crypttab, чтобы сделать так, чтобы cryptfs начиналась после файловой системы.
Скажем, вы используете 4-й первичный раздел на NVME (вместо этого может быть раздел LVM, но это именно то, что я только что сделал)
Сначала создайте файловую систему с меткой и UUID, который я хочу (поскольку я создаю файловую систему – обычно вы позволите создать случайный UUID). Я создаю файловую систему размером 512K байт на 8 ГБ разделе, потому что мне не нужно больше места для UUID и метки. Размер интерпретируется иначе, если вы укажете размер блока или опустите суффикс, так что прочитайте страницу man перед добавлением дополнительных аргументов. 🙂
sudo mkfs.ext2 -L cryptswap -U b84f0e58-b1b5-4aaf-b717-4c893af2e1c1 /dev/nvme0n1p4 512K
Строка из crypttab выглядит так. Важная часть здесь – это offset=1024, что кажется двойным. Если вы посмотрите на вывод fdisk -l
, вы увидите, что диск использует 512-байтные сектора. Так что, чтобы сместить на 512K байт, вам нужно пройти 1024 сектора. Файловые системы полны наследия; не беспокойтесь слишком сильно, почему. Остальные аргументы – обычные “что угодно, что вы хотите сделать” вещи.
cryptswap UUID=b84f0e58-b1b5-4aaf-b717-4c893af2e1c1 /dev/urandom swap,plain,offset=1024,cipher=aes-xts-plain64,size=512
Запустите диск с помощью удобного обертки cryptdisks_start:
sauer@host:~$ sudo cryptdisks_start cryptswap
* Запуск крипто-диска...
* cryptswap (запускается)...
* cryptswap (запущен)...
[ OK ]
Проверьте, что устройство теперь работает. Обратите внимание, что устройство dm-2; это будет иметь значение позже.
sauer@host:~$ ls -l /dev/mapper/cryptswap
lrwxrwxrwx 1 root root 7 Oct 13 16:01 /dev/mapper/cryptswap -> ../dm-2
Затем просто создайте и активируйте новое устройство
sauer@host:~$ sudo mkswap /dev/mapper/cryptswap
mkswap: /dev/mapper/cryptswap: предупреждение: стирание старой подписи подкачки.
Настройка пространства подкачки версии 1, размер = 8 GiB (8589406208 байт)
нет метки, UUID=c00afcb1-de7b-4b19-9890-da3562ce88e5
sauer@host:~$ sudo swapon -a
sauer@host:~$ sudo swapon -s
Имя файла Тип Размер Использовано Приоритет
/dev/dm-2 раздел 8388092 0 -2
“Фактическое” крипто-устройство – это dm-2, поэтому оно отображается в выводе swapon таким образом, а не с uuid или меткой. Итак, если я сейчас проверю disk-by-uuid, есть две записи – одна для заполнительной файловой системы с постоянным UUID и одна для зашифрованной, смещенной файловой системы подкачки с UUID, который будет воссоздан каждый раз, когда файловая система будет воссоздана.
sauer@host:~$ ls -l /dev/disk/by-uuid/ | grep -e p4 -e dm-2
lrwxrwxrwx 1 root root 15 Oct 13 15:58 b84f0e58-b1b5-4aaf-b717-4c893af2e1c1 -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 10 Oct 13 16:01 c00afcb1-de7b-4b19-9890-da3562ce88e5 -> ../../dm-2
Редактировать: после перезагрузки, теперь у меня это. Обратите внимание, что заполнительная файловая система (nvme0n1p4) по-прежнему эффективно устанавливает тот же UUID для раздела, но зашифрованный раздел подкачки (dm-2) имеет новый UUID, так как он был воссоздан. 🙂
sauer@host:~$ ls -l /dev/disk/by-uuid/ | grep -e p4 -e dm-2
lrwxrwxrwx 1 root root 10 Oct 13 16:39 80e3b280-4256-47ea-a0ab-99b77241fab5 -> ../../dm-2
lrwxrwxrwx 1 root root 15 Oct 13 16:39 b84f0e58-b1b5-4aaf-b717-4c893af2e1c1 -> ../../nvme0n1p4
Ответ или решение
Создание зашифрованного раздела подкачки (swap) с случайным ключом в Debian – это важный шаг для повышения безопасности вашей системы. Этот процесс включает в себя использование LUKS (Linux Unified Key Setup) для шифрования раздела и гарантирует, что данные в памяти не могут быть просмотрены при случайном доступе к разделу подкачки. В этом руководстве вы узнаете, как правильно настроить шифрованный раздел подкачки, ссылаясь на него по UUID.
Предварительные требования
-
Установить необходимые утилиты: Убедитесь, что у вас установлены
cryptsetup
иlvm2
. Вы можете это сделать с помощью команды:sudo apt update sudo apt install cryptsetup lvm2
-
Отключить режим гибернации: Поскольку шифрование раздела подкачки с использованием случайных ключей не поддерживает режим гибернации, необходимо отключить эту функцию:
systemctl mask hibernate.target hybrid-sleep.target
Шаги по созданию зашифрованного раздела подкачки
1. Создание физического и логического тома
Предположим, что у вас уже есть разметка диска и пространство для создания раздела подкачки. Следующие команды создадут физический и логический тома:
# Создаем физический том
sudo pvcreate /dev/sda3 # Предположим, что /dev/sda3 - это ваш раздел для подкачки
# Создаем группу томов (VG)
sudo vgcreate vg_swap /dev/sda3
# Создаем логический том (LV)
sudo lvcreate -l 100%FREE -n lv_swap_encrypted vg_swap
2. Настройка /etc/crypttab
Добавьте строку в файл /etc/crypttab
. Это сообщает системе, как открывать зашифрованный раздел подкачки при загрузке:
swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256
3. Настройка /etc/fstab
Теперь настройте файл /etc/fstab
, чтобы использовать новую зону подкачки:
/dev/mapper/swap_unencrypted none swap sw 0 0
4. Создание зашифрованного раздела подкачки
После настройки файлов crypttab
и fstab
, активируйте зашифрованный раздел:
# Откройте зашифрованный раздел
sudo cryptsetup open /dev/mapper/vg_swap-lv_swap_encrypted swap_unencrypted
# Создайте пространство подкачки
sudo mkswap /dev/mapper/swap_unencrypted
# Активируйте раздел подкачки
sudo swapon --all
Проверка состояния
После завершения всех шагов проверьте, что зашифрованный раздел подкачки работает корректно:
swapon --show
Вы должны увидеть что-то вроде этого:
NAME TYPE SIZE USED PRIO
/dev/mapper/swap_unencrypted partition 15GiB 0 -1
Заключение
Следуя приведенным шагам, вы успешно настроили зашифрованный раздел подкачки на своем Debian сервере или рабочей станции с использованием случайных ключей. Это значительно повысят уровень безопасности вашей системы, предотвратив несанкционированный доступ к данным, которые могут временно храниться в разделе подкачки.
Помните, что данные в зашифрованном разделе подкачки будут недоступны для восстановления, поэтому, если вам нужна возможность гибернации, это может потребовать другой подход, например использование ecryptfs
.