Proxmox. Шифрование несистемных дисков с данными: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
Строка 311: Строка 311:
      /dev/sdc: UUID="afeb41b5-a8ad-463d-9718-86e858be7e6a" TYPE="crypto_LUKS"
      /dev/sdc: UUID="afeb41b5-a8ad-463d-9718-86e858be7e6a" TYPE="crypto_LUKS"
      ...
      ...
Добавляем UUID нового диска '''data02''' в скрипт
Добавляем строку с UUID нового диска '''data02''' в скрипт для автомонтирования через удаленное подключения SSH при загрузке системы


<code>nano /etc/initramfs-tools/hooks/crypt_unlock.sh</code>
<code>nano /etc/initramfs-tools/hooks/crypt_unlock.sh</code>

Версия 20:45, 26 апреля 2022


Ссылки

https://tactical-documentation.github.io/post/proxmoxve6-zfs-luks-systemdboot-dropbear/

Настройка

Общая настройка

Добавляем репозитории

echo "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> ~/.bashrc

sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

rm /etc/apt/sources.list.d/pve-enterprise.list

echo 'deb http://download.proxmox.com/debian/pve buster pve-no-subscription' > pve-community.list

Устанавливаем CRYPTSETUP

apt update

apt install cryptsetup

Шифруем физический диск /dev/sdb

cryptsetup luksFormat /dev/sdb

Аттачим шифрованный раздел в /dev/mapper/data01

cryptsetup luksOpen /dev/sdb data01

Проверяем

lsblk

...
sdb                               8:16   0  1.8T  0 disk
L-data01                        253:5    0  1.8T  0 crypt
...

Далее варианты форматирования разделов

Вариант 1. LVM-Thin для хранения ВМ в формате RAW

Для раздела хранения ВМ и контейнеров в формате RAW с возможностью создания снэпшотов подойдут LVM-Thin и ZFS (В данном разделе мануала - LVM-Thin)

Создаем PV data01

lvm pvcreate /dev/mapper/data01

Создаем VG data01

lvm vgcreate data01 /dev/mapper/data01

Создаем раздел LVM-Thin data01_pve01 на 100% области VG data01

lvcreate -l 100%FREE -T data01/data01_pve01

Проверяем

lsblk

...
sdb                               8:16   0  1.8T  0 disk
L-data01                        253:5    0  1.8T  0 crypt
  +-data01-data01_pve01_tmeta   253:6    0  120M  0 lvm
  ¦ L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
  ¦   +-data01-data01_pve01     253:9    0  1.8T  0 lvm
  ¦   L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
  L-data01-data01_pve01_tdata   253:7    0  1.8T  0 lvm
    L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
      +-data01-data01_pve01     253:9    0  1.8T  0 lvm
      L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
...

В веб-интерфейсе Proxmox подключаем Storage типа LVM-Thin

- Datacenter - Storage - Add - LVM-Thin

ID: data01_pve01

VG: data01

Thin pool: data01_pve01

Перезапускаем Proxmox

Видим пустой sdb

lsblk

...
sdb                  8:16   0  1.8T  0 disk
...

Подключаем шифрованный диск используя пароль

cryptsetup luksOpen /dev/sdb data01

Видим разделы LVM

lsblk

...
sdb                               8:16   0  1.8T  0 disk
L-data01                        253:5    0  1.8T  0 crypt
  +-data01-data01_pve01_tmeta   253:6    0  120M  0 lvm
  ¦ L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
  ¦   +-data01-data01_pve01     253:9    0  1.8T  0 lvm
  ¦   L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
  L-data01-data01_pve01_tdata   253:7    0  1.8T  0 lvm
    L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
      +-data01-data01_pve01     253:9    0  1.8T  0 lvm
      L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
...

blkid

    ...
    /dev/sdb: UUID="afeb41b5-a8ad-463d-9718-86e858be7e6a" TYPE="crypto_LUKS"
    ...

nano /etc/crypttab

...
data01 UUID=afeb41b5-a8ad-463d-9718-86e858be7e6a none luks,discard

reboot

Во время загрузки вводим пароль шифрования для data01

Проверяем

lsblk

Вариант 2. Для раздела хранения ВМ и контейнеров в формате QCOW2 и VMDK LVM, с ручным форматированием и ручным монтированием в директорию

Для раздела хранения ВМ и контейнеров в формате QCOW2 и VMDK с возможностью создания снэпшотов подойдёт LVM с ручным монтированием в директорию после подключения шифрованного раздела

Создаем PV data01

lvm pvcreate /dev/mapper/data01

Создаем VG data01

lvm vgcreate data01 /dev/mapper/data01

Создаем раздел LVM data01_pve01 на 100% области VG data01

lvcreate -l 100%FREE --name data01_pve01 data01

Форматируем раздел в XFS

mkfs.xfs /dev/mapper/data01-data01_pve01

Создаем директорию для монтирования раздела

mkdir /mnt/pve/data01_pve01

Монтируем раздел

mount /dev/mapper/data01-data01_pve01 /mnt/pve/data01_pve01/

Создаем Directory в веб-интерфейсе Proxmox

- Datacenter - Storage - Add - Directory

ID: data01_pve01

Directory: /mnt/pve/data01_pve01 // откуда брать диск для Directory

Content: Disk image, Container // также можно выбрать хранение ISO и CT-Templates

Получаем локальное хранилище data01_pve01 в Datacenter - Storage

Перезагружаем Proxmox

reboot

Подключаем шифрованный диск и монтируем раздел LVM в директорию

cryptsetup luksOpen /dev/sdb data01

mount /dev/mapper/data01-data01_pve01 /mnt/pve/data01_pve01/

Проверяем

lsblk

...
sdb                               8:16   0  1.8T  0 disk
L-data01                        253:5    0  1.8T  0 crypt
  +-data01-data01_pve01_tmeta   253:6    0  120M  0 lvm
  ¦ L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
  ¦   +-data01-data01_pve01     253:9    0  1.8T  0 lvm
  ¦   L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
  L-data01-data01_pve01_tdata   253:7    0  1.8T  0 lvm
    L-data01-data01_pve01-tpool 253:8    0  1.8T  0 lvm
      +-data01-data01_pve01     253:9    0  1.8T  0 lvm
      L-data01-vm--100--disk--0 253:10   0   80G  0 lvm
...

df -h

...
/dev/mapper/data02-data02_pve01  458G  920M  434G   1% /mnt/pve/data02_pve01
...

Готово

Можно создавать ВМ и хранить ISO и шаблоны на этом разделе

Вариант 3. 2 раздела на одном физическом шифрованном диске

  - LVM (МОНТИРУЕМ В ДИРЕКТОРИЮ И ИСПОЛЬЗУЕМ КАК ХРАНИЛИЩЕ ДЛЯ ISO, И ВМ С ФАЙЛОВЫМИ ДИСКАМИ)   - LVM-Thin (ИСПОЛЬЗУЕМ КАК ХРАНИЛИЩЕ ДЛЯ ВМ С ДИСКАМИ RAW НА РАЗДЕЛЕ, СОБСТВЕННО, LVM-Thin)

Создаем PV data01

lvm pvcreate /dev/mapper/data01

Создаем VG data01

lvm vgcreate data01 /dev/mapper/data01

Создаем ПЕРВЫЙ РАЗДЕЛ LVM data01-lvm_pve01 на 30% области VG data01

lvcreate -l 30%FREE --name data01-lvm_pve01 data01

Создаем ВТОРОЙ РАЗДЕЛ LVM-Thin используя 100% от оставшегося места

lvcreate -l 100%FREE -T data02/data01-lvmthin_pve01

Форматируем первый раздел

mkfs.ext4 /dev/data01/data01-lvm_pve01

Создаем директорию для монтирования первого раздела

mkdir /mnt/pve/data02-lvm_pve01

Монтируем первый раздел

mount /dev/mapper/data01-data01--lvm_pve01 /mnt/pve/data01-lvm_pve01/

Создаем Directory в веб-интерфейсе Proxmox

- Datacenter - Storage - Add - Directory

ID: data01-lvm_pve01

Directory: /mnt/pve/data01-lvm_pve01 // откуда брать диск для Directory

Content: Disk image, Container // также можно выбрать хранение ISO и CT-Templates

Получаем локальное хранилище data01-lvm_pve01 в Datacenter - Storage

Переходим ко второму разделу

В веб-интерфейсе Proxmox подключаем Storage типа LVM-Thin

- Datacenter - Storage - Add - LVM-Thin

ID: data01-lvmthin_pve01

VG: data01

Thin pool: data01-lvmthin_pve01

Получаем 2 хранилища

Здесь храним iso и ВМ с файловыми дисками

df -h

...
/dev/mapper/data02-data01--lvm_pve01  137G   61M  130G   1% /mnt/pve/data01-lvmthin_pve01
...

Здесь храним ВМ c RAW дисками в виде разделов LVM-Thin

lvs

...
  data01-lvmthin_pve01                 data01 twi-a-tz-- <325.86g                            0.00   10.42
...

reboot

Подключаем физический шифрованный диск,

Монтируем первый раздел в директорию, второй раздел монтировать не надо, он подтянется сам в веб-интерфейсе

cryptsetup luksOpen /dev/sdb data01

mount /dev/mapper/data01-data01--lvmthin_pve01 /mnt/pve/data01-lvmthin_pve01/

Вариант 4. ZFS

cryptsetup luksFormat /dev/sdc

cryptsetup luksOpen /dev/sdc data02

zpool create -m /mnt/data02 data02 /dev/mapper/data02

blkid

    ...
    /dev/sdc: UUID="afeb41b5-a8ad-463d-9718-86e858be7e6a" TYPE="crypto_LUKS"
    ...

nano /etc/crypttab

...
data02 UUID=afeb41b5-a8ad-463d-9718-86e858be7e6a none luks,discard

Проверяем

lsblk

Подключаем

- Datacenter - Stotage - Add - ZFS

   ID: data02_pve01

   ZFS Pool: data02

   Content: Disk image, Container

Автомонтирование при загрузке

Если предварительно было настроено автоподключение шифрованных разделов при загрузке ОС

Смотрим UUID нового диска

blkid

    ...
    /dev/sdc: UUID="afeb41b5-a8ad-463d-9718-86e858be7e6a" TYPE="crypto_LUKS"
    ...

Добавляем строку с UUID нового диска data02 в скрипт для автомонтирования через удаленное подключения SSH при загрузке системы

nano /etc/initramfs-tools/hooks/crypt_unlock.sh

...
if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
cat > "${DESTDIR}/bin/unlock" << EOF

#!/bin/sh

# custom non-system disk decrypt
/sbin/cryptsetup luksOpen /dev/afeb41b5-a8ad-463d-9718-86e858be7e6a data01
/sbin/cryptsetup luksOpen /dev/<UUID> data02
...

Обновляем настройки iniramfs

update-initramfs -u

reboot

Во время загрузки вводим пароль шифрования для data02