Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Шифрование всего диска с использованием ZFS через установщик Proxmox Используйте этот подход, если хотите сохранить все данные в зашифрованном виде. Не забудьте, что в этом случае вы потеряете данные на диске, который вы собираетесь использовать для уст

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Шифрование всего диска с использованием ZFS через установщик Proxmox Используйте этот подход, если хотите сохранить все данные в зашифрованном виде. Не забудьте, что в этом случае вы потеряете данные на диске, который вы собираетесь использовать для уст, Proxmox Виртуальная Среда
     
    LunaXQ
    Guest
    #1
    0
    16.05.2023 12:43:00
    Привет! Я тут посмотрел свежий релиз Proxmox и обратил внимание на возможность установки с ZFS – это отличная новость. Хотелось бы узнать, есть ли способ подстроить параметры установщика Proxmox при выборе установки с ZFS, чтобы можно было передать опции для использования шифрования дисков ZFS? Я знаю, что можно установить Debian, используя руководства на openzfs, а затем вручную установить Proxmox поверх этого, но интересно, есть ли способ сделать это с помощью установщика Proxmox?
     
     
     
    fabian
    Guest
    #2
    0
    16.05.2023 14:44:00
    Нет – смотри https://bugzilla.proxmox.com/show_bug.cgi?id=2714
     
     
     
    Dunuin
    Guest
    #3
    0
    16.05.2023 14:55:00
    Можно преобразовать вашу нешифрованную установку PVE в полностью системно зашифрованную. Подробнее здесь: сообщение в теме 'Шифрование Proxmox VE (лучшие методы)' https://forum.proxmox.com/threads/encrypting-proxmox-ve-best-methods.88191/post-387731. Но есть некоторые ограничения. Например, кластеризация здесь не особо нужна, поскольку нельзя использовать ZFS репликацию и нельзя переносить гостевые системы между узлами или кластерами.
     
     
     
    LunaXQ
    Guest
    #4
    0
    17.05.2023 15:19:00
    Спасибо за информацию, в моем конкретном случае кластеризация и миграции не станут большой проблемой. Я нашел эту инструкцию и последовал ей после чистой установки proxmox v7.4 и выбора raid-z3 во время установки. https://gist.github.com/yvesh/ae77a68414484c8c79da03c4a4f6fd55 Единственное, что я сделал по-другому, — это загрузился в Ubuntu Live Session и установил пакет zfsutils-linux, чтобы внести изменения в файловую систему, но в остальном инструкции сработали идеально. Теперь proxmox просит пароль при загрузке для дешифровки rpool, который я могу ввести через IPMI по отдельной сети управления. Это именно то, что я искал, огромное спасибо за вашу помощь в этом вопросе.
     
     
     
    Dunuin
    Guest
    #5
    0
    17.05.2023 16:17:00
    Можно также настроить dropbear-initramfs. С его помощью можно разблокировать rpool по SSH. Я предпочитаю это, потому что webKVM моего BMC не позволяет вставлять пароль из моего менеджера паролей.
     
     
     
    LunaXQ
    Guest
    #6
    0
    17.05.2023 17:00:00
    Слышал про dropbear, будет интересно попробовать, потому что вводить пароли — это просто мучение, да и мой BMC IPMI не дает мне вставить пароль. Этот сервер пока просто тестовый, так что там стоит не очень сложный пароль, и он будет стёрт перед развертыванием.
     
     
     
    Dunuin
    Guest
    #7
    0
    17.05.2023 17:13:00
    Я также написал, как объединить dropbear-initramfs + скрипт expect, чтобы автоматизировать разблокировку нескольких серверов из CLI/скрипта: https://forum.proxmox.com/threads/a...rypted-pve-server-over-lan.125067/post-546466, конечно, это полезно только если этот expect скрипт хранится на зашифрованном хранилище, которое вы уже разблокировали.
     
     
     
    LunaXQ
    Guest
    #8
    0
    18.05.2023 00:18:00
    После того, как я немного покопался, выяснилось, что недостаток моего метода, описанного выше, в том, что зашифрован только корневой раздел установки Proxmox. Данные ВМ всё ещё не зашифрованы, и, следовательно, не защищены в состоянии покоя. При выполнении следующей команды я получаю такой вывод:

    ```
    root@proxmox:~# zfs get encryption
    NAME                      PROPERTY    VALUE        SOURCE
    rpool                     encryption  off          default
    rpool/ROOT                encryption  aes-256-gcm  -
    rpool/ROOT/pve-1          encryption  aes-256-gcm  -
    rpool/ROOT/pve-1@copy     encryption  aes-256-gcm  -
    rpool/data                encryption  off          default
    rpool/data/vm-100-disk-0  encryption  off          default
    rpool/data/vm-101-disk-0  encryption  off          default
    rpool/data/vm-102-disk-0  encryption  off          default
    ```

    Я пытался изменить оригинальные команды, упомянутые в ссылке на GitHub, но столкнулся с проблемами. Ранее я устанавливал Ubuntu и Debian с зашифрованными корневыми разделами ZFS и также заметил, что нет bpool для раздела загрузки, так что, вероятно, Proxmox вручную поддерживает раздел загрузки на всех дисках при обновлении ядра, вместо того чтобы полагаться на ZFS.

    Какие недостатки в использовании инструкций, предоставленных здесь (https://openzfs.github.io/openzfs-docs/Getting Started/Debian/Debian Bullseye Root on ZFS.html), а затем ручной установкой Proxmox поверх Debian? Сейчас переустанавливаю сервер, чтобы попробовать этот подход и посмотреть, какие результаты получу, и обновлю этот пост.
     
     
     
    Dunuin
    Guest
    #9
    0
    18.05.2023 00:28:00
    Это несложно. Обычно я делаю так:
    1.) Устанавливаю PVE, используя ZFS.
    2.) Загружаю ZFS-совместимую Live Linux (я использую ISO PVE для этого, вхожу в режим установки в debug mode и запускаю "exit", чтобы попасть в shell).
    3.) Затем я шифрую мой набор данных "pve-1" (это корневая файловая система, которая также содержит хранилище "local") и набор данных "data" (используется хранилищем "local-zfs") с помощью:
    Импортировать пул ZFS: zpool import -f rpool
    Создать снимок rpool/ROOT: zfs snapshot -r rpool/ROOT@copy
    Создать копию не зашифрованного rpool/ROOT и всех его дочерних элементов: zfs send -R rpool/ROOT@copy | zfs recv rpool/copyroot
    Удалить незашифрованный rpool/ROOT: zfs destroy -r rpool/ROOT
    Создать новый зашифрованный rpool/ROOT: zfs create -o encryption=aes-256-gcm -o keyformat=passphrase rpool/ROOT
    Скопировать и зашифровать незашифрованный rpool/copyroot/pve-1: zfs send -R rpool/copyroot/pve-1@copy | zfs recv -o encryption=on rpool/ROOT/pve-1
    Удалить копию: zfs destroy -r rpool/copyroot
    Удалить снимки: zfs destroy rpool/ROOT/pve-1@copy
    Данные должны быть пусты, поэтому можно удалить и их: zfs destroy rpool/data
    Если это не новая установка PVE, возможно, вам захочется сначала сделать снимок и скопировать его, как это сделано выше с набором данных "ROOT", чтобы не потерять данные на нём.
    Создать новый зашифрованный rpool/data: zfs create -o encryption=aes-256-gcm -o keyformat=passphrase rpool/data
    Экспортировать пул: zpool export rpool
    Перезагрузиться.

    Да, PVE использует proxmox-boot-tool для синхронизации загрузчика. Он находится на разделе 2, а ZFS — на разделе 3.
     
     
     
    LunaXQ
    Guest
    #10
    0
    18.05.2023 01:19:00
    Кажется, я раньше застрял на rpool/data, оказалось, проще было его удалить и пересоздать. Но теперь я не уверен, что не накосячил ещё где-то. Судя по всему, Proxmox не разблокирует rpool/data при вводе пароля при загрузке, только rpool/ROOT. При создании ВМ в графическом интерфейсе Proxmox вылетает такая ошибка: Код: ОШИБКА ЗАДАЧИ: не удалось создать ВМ 100 - ошибка ZFS: не удается создать 'rpool/data/vm-100-disk-0': ключ шифрования root не загружен или не предоставлен.
     
     
     
    Dunuin
    Guest
    #11
    0
    18.05.2023 02:25:00
    Нужно разблокировать оба пула, вводя пароль дважды. Как, например, при выполнении команды `zfs load-key -a`. Или зашифруй свой rpool/data с помощью файла ключа вместо парольной фразы, а затем создай systemd-сервис для разблокировки всех наборов данных, зашифрованных файлом ключа, и храни этот файл ключа где-нибудь на зашифрованном rpool/ROOT/pve-1. Вот как я это делаю:

    Несколько полезных команд, которые я обычно использую:

    *   Включи `relatime`:
       ```bash
       zfs set relatime=on rpool
       ```
    *   Включи `autotrim`:
       ```bash
       zpool set autotrim=on rpool
       ```
    *   Установи квоту, чтобы пул никогда не заполнялся случайно (здесь 100 ГБ, но выбирай что-то вроде 90% от твоего доступного объема):
       ```bash
       zfs set quota=100G rpool
       ```
    *   Создай новый зашифрованный набор данных на rpool:
       *   Создай скрытую папку для ключей:
           ```bash
           mkdir /root/.keys
           chown root:root /root/.keys
           chmod 740 /root/.keys
           ```
       *   Создай файл ключа:
           ```bash
           openssl rand -hex -out /root/.keys/rpool_vault.key 32
           chown -R root:root /root/.keys/rpool_vault.key
           chmod -R 740 /root/.keys/rpool_vault.key
           ```
           **ВАЖНО: СОХРАНИ КОПИЮ ФАЙЛА КЛЮЧА!!!**
       *   Создай зашифрованный набор данных:
           ```bash
           zfs create -o encryption=aes-256-gcm -o keyformat=hex -o keylocation=file:///root/.keys/rpool_vault.key rpool/vault
           ```
    *   Создай новый набор данных для ISO/сниппетов/шаблонов:
       ```bash
       zfs create -o compression=zstd rpool/vault/data
       ```
    *   Добавь новый хранилище типа ZFSpool для ISO/сниппетов/шаблонов:
       ```bash
       pvesm add dir data --is_mountpoint 1 --path /rpool/vault/data --content vztmpl,snippets,iso --shared 0
       ```
    *   Создай новый набор данных для виртуальных машин:
       ```bash
       zfs create rpool/vault/VM8K
       ```
    *   Добавь новый хранилище типа ZFSpool для виртуальных машин:
       ```bash
       pvesm add zfspool VM8K --blocksize 8K --content images --pool rpool/vault/VM8K --sparse 1 --mountpoint /rpool/vault/VM8K
       ```
    *   Создай новый набор данных для контейнеров LXC:
       ```bash
       zfs create -o recordsize=128K rpool/vault/LXC128K
       ```
    *   Добавь новый хранилище типа ZFSpool для контейнеров LXC:
       ```bash
       pvesm add zfspool LXC128K --blocksize 8K --content rootdir --pool rpool/vault/LXC128K --sparse 1 --mountpoint /rpool/vault/LXC128K
       ```

    Создай сервис для автоматической разблокировки зашифрованных ZFS-пулов с помощью файла ключа после загрузки.

    *   Создай сервис:
       ```bash
       nano /etc/systemd/system/zfs-load-key.service
       ```
       Добавь следующее:

       ```ini
       [Unit]
       Description=Load encryption keys
       DefaultDependencies=no
       After=zfs-import.target
       Before=zfs-mount.service

       [Service]
       Type=oneshot
       RemainAfterExit=yes
       ExecStart=/usr/bin/zfs load-key -a
       StandardInput=tty-force

       [Install]
       WantedBy=zfs-mount.service
       ```

    *   Включи сервис:
       ```bash
       systemctl enable zfs-load-key.service
       ```

    Настрой разблокировку ZFS-корневого раздела через SSH.

    *   Установи пакеты:
       ```bash
       apt update && apt install dropbear-initramfs busybox
       ```
    *   Добавь публичный ключ в dropbear:
       ```bash
       nano /etc/dropbear-initramfs/authorized_keys
       ```
       Вставь свой публичный ключ в этой строке.
    *   Отредактируй конфигурацию initramfs-dropbear:
       ```bash
       nano /etc/dropbear-initramfs/config
       ```
       Измени `#DROPBEAR_OPTIONS=` на `DROPBEAR_OPTIONS="-p 10022 -j -k -c zfsunlock"`
    *   Перестрой initramfs:
       ```bash
       update-initramfs -u
       ```

    Коревой раздел можно будет разблокировать по SSH на IP 192.168.43.22 порту 10022, войдя в систему как root с помощью файла приватного ключа.
     
     
     
    LunaXQ
    Guest
    #12
    0
    18.05.2023 13:04:00
    Твоё решение сработало идеально! Запрашивает пароль дважды при загрузке, но, честно говоря, мне так даже удобнее. Создал .service файл и включил его — всё заработало как часы. Команда quota тоже очень полезная, я работаю на SSD, и хотелось бы оставлять определённый процент свободного места на диске. У меня `zfs get relatime` показал, что relatime уже установлен в значение on. Ещё не пробовал это с dropbear. Для ISO я собираюсь использовать дополнительный SSD диск, зашифрованный LUKS, который будет разблокироваться при загрузке с помощью файла ключей, хранящегося на корневой файловой системе. Мне не так страшно потерять все данные на этом диске, потому что его легко заменить, но я хочу, чтобы диск был зашифрован, чтобы ISO-образы нельзя было изменить, если кто-то подключит диск к другому компьютеру. Спасибо тебе огромное за всю твою помощь, было очень легко всё настроить, намного проще, чем устанавливать зашифрованный Debian с ручной установкой Proxmox сверху.
     
     
     
    jAston
    Guest
    #13
    0
    26.08.2023 20:33:00
    Спасибо за инструкции! Я выполнил шифрование набора данных pve-1 (корневая файловая система) и также для rpool/data. Затем я настроил разблокировку zfs root через SSH/dropbear, и это тоже работает.

    1.) Я не понимаю, зачем мне делать "zfs create -o encryption=aes-256-gcm -o keyformat=passphrase rpool/data" и почему я не получаю запрос на ввод другого ключа позже при загрузке pve, помимо запроса ключа для разблокировки root при загрузке. Это потому, что я указал одно и то же значение ключа для тестирования?

    2.) Почему я получаю предупреждение и ошибку при выполнении update-initramfs -u?
    Код: root@pve:~# update-initramfs -u
    update-initramfs: Generating /boot/initrd.img-6.2.16-3-pve
    cryptsetup: ERROR: Couldn't resolve device rpool/ROOT/pve-1
    cryptsetup: WARNING: Couldn't determine root device
    Running hook script 'zz-proxmox-boot'..
    Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
    Copying and configuring kernels on /dev/disk/by-uuid/XXXX-XXXX
           Copying kernel and creating boot-entry for 6.2.16-3-pve
    Copying and configuring kernels on /dev/disk/by-uuid/XXXX-XXXX
           Copying kernel and creating boot-entry for 6.2.16-3-pve
     
     
     
    LunaXQ
    Guest
    #14
    0
    26.08.2023 21:06:00
    Я пока не пробовал это с dropbear, так что не уверен, поможет ли это тебе с первой проблемой. Когда я настраивал зашифрованный rpool/data, мне пришлось создать следующий systemd сервис, прежде чем Proxmox предложил мне разблокировать rpool/data. Создай файл /etc/systemd/system/zfs-load-key.service и добавь следующее:

    ```
    [Unit]
    Description=Load encryption keys
    DefaultDependencies=no
    After=zfs-import.target
    Before=zfs-mount.service

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/zfs load-key -a
    StandardInput=tty-force

    [Install]
    WantedBy=zfs-mount.service
    ```

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

    ```
    systemctl enable zfs-load-key
    ```

    Теперь тебя должно попросить разблокировать rpool/data во время загрузки. Для меня это пока работает нормально для целей тестирования, но дай знать, если это сработает с dropbear в твоей конфигурации. Надеюсь, это поможет.
     
     
     
    jAston
    Guest
    #15
    0
    27.08.2023 00:12:00
    Решил использовать новые зашифрованные наборы данных с папкой скрытого ключа и zfs-load-key.service. Это приводит к одному запросу пароля при загрузке PVE (root fs), после чего новые наборы данных монтируются. В завершение, следуя инструкциям "configure ZFS root unlocking through SSH", все это работает безупречно с вводом ключа по SSH. Правда, пути немного изменились в последней версии Dropbear, так что инструкцию выше придётся интерпретировать по ситуации. Попробую найти время, чтобы задокументировать все шаги — от установки PVE до настройки Dropbear — в ближайшие дни, чтобы получилось одно цельное руководство по этому подходу.
     
     
     
    LunaXQ
    Guest
    #16
    0
    27.08.2023 00:26:00
    Рад, что у тебя все заработало. Документация была бы отличной, потому что я хотел бы узнать больше о Dropbear и о том, как ты все настроил. Я тоже думал о том, чтобы положить ключ для датасета rpool/data на корневой пул, чтобы не приходилось вводить два пароля, но в моем случае я не хотел бы иметь ключи для дешифровки дисков на файловой системе где-либо – иначе это было бы отличное решение.
     
     
     
    Dunuin
    Guest
    #17
    0
    27.08.2023 00:36:00
    Потому что корневая файловая система ("pve-1" dataset) зашифрована с помощью passphrase, который ты вводишь в SSH/консоли при загрузке ноды. Эта корневая файловая система затем будет расшифрована. На этой расшифрованной корневой файловой системе хранится keyfile, необходимый для разблокировки "data" dataset. Сервис systemd будет пытаться разблокировать все зашифрованные dataset при загрузке. Если passphrase отсутствует, он попросит тебя ввести его. Если дан keyfile, он не будет спрашивать и просто загрузит ключ из этого файла. Без ввода passphrase для корневой файловой системы сам keyfile тоже будет зашифрован, поэтому и "data", и "pve-1" будут зашифрованы. Я выбрал такой подход, чтобы тебе не приходилось вводить два passphrase при загрузке сервера. Это нормально и можешь не обращать внимания. Документация ZFS говорит тебе делать это на случай, если ты не хочешь видеть эти предупреждения, но тогда разблокировка LUKS через dropbear работать не будет: Да, но только при использовании passphrase для "data". При использовании keyfile он просто загрузит ключ из этого файла без необходимости ввода passphrase. Пока ты хранишь keyfile в зашифрованном месте (например, на зашифрованной корневой файловой системе), использование keyfile для "data" вполне приемлемо.
     
     
     
    travismadson
    Guest
    #18
    0
    08.10.2023 04:52:00
    Привет @Dunuin! Я новичок и пытаюсь по твоим стопам построить систему PVE с ZFS FDE, но очень сложно собрать информацию из разных обсуждений, на разных сайтах… Ты упоминал в одном из постов, что пишешь подробное руководство. Ты уже выложил его где-нибудь или оно еще в разработке?
     
     
     
    Dunuin
    Guest
    #19
    0
    08.10.2023 15:31:00
    Этот туториал получился очень длинным (ну страниц сорок, потому что я много объяснил про ZFS). Потом я забросил его, потому что появились другие дела, а пока я переустановил свои PVE-сервера и сделал шифрование немного по-другому, так что кое-что нужно будет обновить. Мне все еще нужно найти время отредактировать существующие главы туториала и написать последние несколько отсутствующих глав. Были еще и некоторые проблемы, для которых никто не нашел хорошего решения, но я все равно считаю, что они важны. Например, выглядит так, будто нет опции для зеркалирования swap без аппаратного RAID, и я бы очень хотел осветить тему зашифрованного зеркалированного swap-раздела.
     
     
     
    travismadson
    Guest
    #20
    0
    20.02.2024 03:41:00
    Я следил за твоими постами и настроил свой зашифрованный zpool и dropbear. С нетерпением жду твоего подробного руководства! Возникла проблема при добавлении второго zpool с зашифрованным набором данных: графический интерфейс распознает второй набор данных, но не может создать диски VM на нём. ОШИБКА ЗАДАЧИ: не удалось создать VM 103 - zfs error: невозможно создать 'rpool_sn640/data/vm-103-disk-0': ключ корня шифрования не загружен или не предоставлен. Зашифрованный набор данных на втором пуле использует тот же файл ключа, что и первый пул. История для второго пула:
    Code: История для 'rpool_sn640':
    2024-01-27.13:26:01 zpool create rpool_sn640 nvme0n1
    2024-01-27.13:32:50 zfs set compression=lz4 rpool_sn640
    2024-01-27.13:34:08 zfs create -o encryption=aes-256-gcm -o keyformat=hex -o keylocation=file:///root/.keys/rpool_data.key rpool_sn640/data
    2024-01-27.13:34:50 zfs set relatime=on rpool_sn640
    2024-01-27.13:35:06 zpool set autotrim=on rpool_sn640
    2024-01-27.13:39:38 zfs set quota=6.2T rpool_sn640
    2024-01-27.13:40:48 zfs set quota=6.3T rpool_sn640
    2024-01-27.13:55:48 zpool import -c /etc/zfs/zpool.cache -aN
    2024-01-27.13:55:48 zfs load-key -a
    2024-01-28.13:28:16 zpool import -c /etc/zfs/zpool.cache -aN
    2024-01-28.13:28:16 zfs load-key -a
    2024-02-15.03:25:44 zpool import -d /dev/disk/by-id/ -o cachefile=none rpool_sn640
    2024-02-15.09:41:23 zpool import -d /dev/disk/by-id/ -o cachefile=none rpool_sn640
    2024-02-15.12:51:59 zpool import -d /dev/disk/by-id/ -o cachefile=none rpool_sn640
    2024-02-15.13:00:21 zpool import -d /dev/disk/by-id/ -o cachefile=none rpool_sn640
    Какие есть идеи, как это исправить?
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры