Как создать случайным образом включенный, зашифрованный раздел подкачки, обратившись к нему “- uuid”, на Debian?

Я посмотрел бы на использование scponly, я подозреваю, что оно может использоваться для перенаправления портов, а не scp/sftp-only доступа. Это предназначается для ограничения пользователя во входе в систему или выполнении команд через ssh.

Другой фактор Вы, возможно, должны или хотите, использовать sshd в chroot'ed среде, вот некоторые инструкции относительно установки sftp использующий chroot. Необходимо смочь адаптировать их довольно легко.

Я надеюсь, что это помогает Вам найти свое решение.

8
задан 13 April 2017 в 15:22
6 ответов

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

Я также был бы осторожен, чтобы IIRC Debian и ArchLinux имеют разные форматы для / etc / crypttab (сумасшедший, я знаю, но я перешел с Ubuntu на Arch пару лет назад и в конце концов решил использовать прямой bash, а не вмешиваться в crypttabs).

0
ответ дан 2 December 2019 в 23:00

В моем / etc / crypttab у меня есть

# <target name>  <source device>        <key file>   <options>
swap             /dev/mapper/cswap      /dev/random  swap

Здесь / dev / mapper / cswap - это логический том, созданный LVM, который заботится о правильном назначении имен логических томов независимо от диска названия букв. Это также позволяет мне легко изменять размер раздела подкачки.

3
ответ дан 2 December 2019 в 23:00

Каждый раз, когда cryptsetup воссоздает зашифрованный раздел подкачки при загрузке раз он сгенерирует для него новый UUID! Дох!

В / etc / crypttab используйте / dev / disk / by-id вместо / dev / disk / by-UUID для ссылки на раздел подкачки. Например, ваша запись / etc / fstab для свопа может быть

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0

Тогда правильная соответствующая запись в / etc / crypttab будет примерно такой же, как

# <name> <device> <password> <options>
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
6
ответ дан 2 December 2019 в 23:00

запустите ecryptfs-setup-swap или вручную:

Эта конфигурация использует случайно сгенерированные ключи при загрузке и не поддерживает гибернацию на жестком диске! Вы должны отключить гибернацию с помощью соответствующей утилиты DE Power Management Utility и установить для нее значение «Завершение работы при критической ошибке», чтобы избежать потери данных!

Переключитесь на учетную запись администратора / root

su root или sudo для каждой команды

Disable Swap

] 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 по умолчанию 0 0

NEW

/ dev / mapper / cswap none swap pri = 1, по умолчанию 0 0

Crypto Setup

ls -lF / dev / disk / by-id

Пример: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3[12106 impressionvim / etc / crypttab

cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEKU3 / dev / swap-swap-part3 / dev-swap-swap-dev3 / dev-swap-swap / dev-swap 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

пример: Имя файла Тип Размер Используемый приоритет / dev / dm-0 раздел 8385532 0-1

0
ответ дан 2 December 2019 в 23:00

Чтобы выполнить замену зашифрованного файла в разделе LVM при использовании опции by-uuid невозможно... на этапе загрузки initramfs или на большинстве этапов загрузки systemd.

Вот почему...

Или перейдите к разделу «Шаги», чтобы начать работу с столь же безопасным зашифрованным пространством подкачки LVM, которое создается на этапе обычной загрузки (для systemd, Debian 10).

Предположения

Вы создали раздел LVM с именем lv_swap_encrypted, используя 100% пространства vg_swap VG следующим образом:

lvcreate -l 1000%VG -n lv_swap_encrypted vg_swap

таким образом, наша цель состоит в том, чтобы иметь следующую логическую схему:

/dev/sda3
                            LVM Physical Volume (PV)
/dev/mapper/dm-7
                            LVM Volume Group (VG)
/dev/vg_swap
                            LVM Logical Volume (LV)
/dev/vg_swap/lv_swap_encrypted
                            cryptsetup plain
/dev/mapper/swap_unencrypted           
                            swap space

Проблема

Взгляните на недавно созданный раздел 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 что ЛВМ и получить этот UUID, но тогда мы пропустим столь необходимый часть шифрования, которую мы хотели.

ВНИМАНИЕ: Вы выполнили mkswap? Затем сотрите его, выполнив:

dd if=/dev/urandom of=/dev/mapper/vg_swap-lv_swap_encrypted 

Выполнение dmsetup info /dev/dm-7 показывает другой формат UUID:

   LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

Я уже пробовал вариант UUID= с этим причудливым Значение LVM выше не будет работать в второе поле /etc/crypttab. Стоило мне перезагрузки здесь.

Примечание: X представляет собой VG UUID, а Y представляет собой LV UUID на языке 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 / диск / по-идентификатор / дм-UUID-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYY
  • / DEV / дм-UUID-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYY

Двадцать перезагружается в 2 уровня запуска позже, я узнал, что это будет никогда не будет возможным (во время загрузки initramfs) использовать mount by-uuid, потому что каждый раз, когда своппер записывает незашифрованные данные в первые пару блоков в зашифрованный раздел, какой бы UUID он ни имел до записи зашифрованных данных над ним теперь давно, давно нет.

Для обычного этапа после загрузки UUID можно использовать в cryptsetup/cryptdisks_*.

Давайте отойдем от физического и расширенного UUID раздела к взгляните на LVM UUID здесь: Управление LVM в значительной степени гарантирует, что каждый раздел LVM уникален.

ОПАСНО: Короче говоря, единственная опасность для вас заключается в повторном использовании того же раздела LVM для что-то еще, кроме обмена. Если да, то при следующей перезагрузке раздел снова преобразуется в пространство подкачки, и любой недавно установленные данные исчезли (просто радуйтесь, что это не старые и ценные данные).

SETUP

Такая схема перехода по имени LVM VG/LV будет невосприимчивой к потере данных. вызванные добавлением, удалением и переразметкой жесткого диска, будь то это своп или файловая система.

В этом /etc/crypttab примере:

swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/random none

обмен пространством подкачки с использованием рандомизированного ключа на основе памяти И с использованием пути VG/LV, этот подход возьмет ваш существующий раздел подкачки и преобразует его в зашифрованный Тед подкачки пространства.

В основном, следующие шаги будут

  • отключать спящий режим,
  • создавать раздел LVM для зашифрованной части пространства подкачки,
  • создавать новую запись в /etc/crypttab
  • get dm- crypt/LUKS для создания еще одного раздела, swap_unencrypted.
  • изменить запись подкачки в /etc/fstab
  • Создать пространство подкачки (mkswap)
  • Включить пространство подкачки ('swapon`)

все для повторного шифрования свопа пробел сейчас и после каждой перезагрузки.

Отключить гибернацию

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

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

Примечание:мы ХОТИМ установить для физического или расширенного раздела SWAP, чтобы обмануть генератор systemd initramfs и НЕ отключить часть SUSPEND/SLEEP.

В Debian вы можете выполнить:

systemctl mask hibernate.target hybrid-sleep.target
systemctl restart systemd-logind.service  # or reboot if using Gnome/gdm3 display manager

Хорошая новость заключается в том, что аппаратная приостановка или спящий режим по-прежнему будут работать.

Создание LVM

В этих шагах предполагается, что у вас есть физический или расширенный (а не LVM) раздел. для раздела подкачки уже.

Повторно введите раздел подкачки

Предположим, что /dev/sda — это имя диска. Предположим, что 3 — это номер раздела диска /dev/sda, на котором находится подкачка. на.

Выполните fdisk и используйте параметр t, чтобы переименовать Linux swap в Linux LVM введя 31 (или вы можете использовать L для перечисления всех опций после запятой t й.

# fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): t
Partition number (1-4, default 4): 3
Partition type (type L to list all types): 31

Changed type of partition 'Linux swap' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Syncing disks.

Создать физический том LVM

Создать физический том для LVM, выполнив:

pvcreate /dev/sda3

Создать группу томов LVM

Создать группу томов для LVM, выполнив:

vgcreate vg_swap /dev/sda3

Хорошая вещь в группе томов: что вы можете расширить свое пространство подкачки позже с другим физическим жестким диском.

Создать логический том LVM

Создать логический том для LVM, выполнив:

lvcreate -l 100%vg -n lv_swap_encrypted vg_swap

# Make the LVM create a special file under /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 или другой, в зависимости от схемы вашего раздела.

Теперь у нас есть путь к диску, логическому диску, но еще не зашифрованному диску. e со случайным ключом, указывающим на /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 ] Starting crypto disk...swap_unencrypted (running)...done.

Была создана новая символическая ссылка, выполните lsblk

# lsblk
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                             8:0    0   3.7T  0 disk  
├─sda1                          8:1    0     1M  0 part  
├─sda2                          8:2    0   381M  0 part  /boot
├─sda3                          8:3    0  15.3G  0 part  
│ └─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 part  
  ├─arca_v1-root              254:0    0 186.3G  0 lvm   /
...                            11:0    1  1024M  0 rom   

Вы можете посмотреть UUID для этого раздела LVM, но это бесполезно в данный момент.

Выполните lsblk -o имя,uuid,точка монтирования

# ~/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 is active.
  type:    PLAIN
  cipher:  aes-cbc-essiv:sha256
  keysize: 256 bits
  key location: dm-crypt
  device:  /dev/mapper/vg_swap-lv_swap_encrypted
  sector size:  512
  offset:  0 sectors
  size:    31997952 sectors
  mode:    read/write

Создать пространство подкачки

Создать пространство подкачки:

# mkswap /dev/mapper/swap_unencrypted 
Setting up swapspace version 1, size = 15.3 GiB (16382947328 bytes)
no label, 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, предоставленный блочным устройством LVM LV, это должен быть достаточным ответом на функционально защищенный зашифрованный место подкачки.

Вывод

UUID нельзя использовать для зашифрованного раздела подкачки из-за случайного характера зашифрованных данных, препятствующего идентификации такого раздела (своп, ext4, btfs).

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

Вы можете использовать /dev/disk/by-id.

Но LVM предлагает более чем достаточную защиту благодаря ВАШЕМУ уникальному соглашению об именах для каждого раздела VG и LV.

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

1
ответ дан 25 August 2020 в 17:19

Если вы используете таблицы разделов GPT , то, например, /dev/disk/by-partuuid/d1a59352-aa44-4748-85fc-4cf785702f99— это стабильное имя устройства, которое не изменится даже при изменении содержимого.

0
ответ дан 3 November 2021 в 18:56

Теги

Похожие вопросы