2

У меня есть домашний сервер, работающий на HP Proliant Microserver Gen7 с 10 ГБ памяти ECC под управлением Debian 8 (Джесси). Прямо сейчас у меня есть один маленький системный диск (резервное копирование с использованием rsnapshot) и 2x 3 ТБ дисковых накопителей, настроенных как Raid 1 с использованием mdadm, сверху у меня есть группы LVM для различных целей, одна из них - дополнительно dm-crypt / luks, зашифрованная для держать личные данные.

Я планирую купить два дополнительных HD одинакового размера для пула хранения и, возможно, настроить сервер с нуля, определенно снова используя debian, но, вероятно, на этот раз в рамках виртуализации xenserver. Таким образом, пул хранения будет 4x 3 ТБ, при этом Raid1 оставит полезные 6 ТБ, а Raid5 (или raidz1) 9 ТБ.

Хотя сочетание mdadm / lvm / dm-crypt прекрасно работает, я считаю его невероятно сложным, особенно для планирования простой стратегии аварийного восстановления. Мне нужно исследовать для каждого из уровней, каков наилучший процесс резервного копирования и восстановления метаданных и т.д.

В идеальном мире я бы сделал все хранилище зашифрованным пулом raidz1, НО шифрование еще не попало в Zfs на Linux, и из моих исследований совершенно неясно, КОГДА оно может быть реализовано

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

Поэтому из файловых систем, которые я предпочел бы использовать, обе не поддерживают встроенную поддержку шифрования в Linux (пока). Ну, есть куча инструкций и руководств по использованию LVM с шифрованием LUKS в сочетании с ZFS или BtrFS. Есть подход использовать LVM поверх ZFS или ZFS поверх LVM - для меня это звучит как ужасный беспорядок.

Мне вообще не нравится концепция EncFS, так что это тоже не вариант.

Надеемся, что есть некоторые варианты, о которых я не слышал, поэтому мой вопрос здесь: что еще можно сделать, чтобы «легко (как в расширяемом и т.д., Например, в zfs, исправлении ошибок) управлять файловой системой на Linux для homeserver», которая может быть полностью или частично зашифрован?

ОБНОВЛЕНИЕ Декабрь 2017: ZFS на Linux с шифрованием скоро появится: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/

3 ответа3

1

если вы выберете установку ZFS, я бы предложил:

  • не используйте LVM, создавайте ZVOL на вершине пула

  • для ОС - раздел GPT для незашифрованного пула ZFS с зеркалом (или raidz)

  • для личных данных - используйте LUKS на GPT-разделе, затем создайте зеркало пула ZFS (или raidz)

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

поэтому предложенная схема - это GPT / LUKS / ZFS / data или ZVOL для VM

не забудьте создать раздел BIOS (размер 1M), если вы не используете загрузку UEFI, также не забудьте создать раздел для GRUB, например 150M

для тяжелых случайных вещей я предлагаю отключить предварительную выборку ZFS (echo 1> /sys /module /zfs /parameters /zfs_prefetch_disable)

1

Это совет для всех, кто хочет, чтобы некоторые данные были зашифрованы, всегда шифруйте 100% всех возможных хранилищ, подключенных к компьютеру, независимо от того, является ли это разделом Grub, системным разделом, домашним разделом, разделом данных, разделом подкачки и т.д. ВСЕГДА Зашифровать все.

Зачем? Потому что вы не контролируете, где данные сохраняются приложениями / системой.

Демонстрация безопасности событий:

  1. Загрузка нормальная
  2. Используйте приложение
  3. Откройте «личный» документ
  4. Сбой системы (программный или аппаратный)
  5. Следующая загрузка не работает
  6. Одно устройство заканчивает свою жизнь (больше не работает)

Вы не можете удалить то, что есть на таком устройстве (оно не работает), вы не можете прочитать его, так что там было сохранено? может быть, что-то «личное»? Вы даже не можете знать, что ни где.

Но кто-то другой (возможно, с несколькими миллионами денег в кармане) может его отремонтировать, так что вы не сможете положить это мусорное устройство в корзину, пока не подтвердите, что «личных» данных там нет ... но вы не сможете узнать, если не дадите устройство для компании, но опять же «личное» находится в опасности, может быть, они «копируют» его (плохой человек, работающий там и т. д.).

Спросите вас: знаете ли вы каждую исходную строку всего кода, который вы используете (загрузочный код, системный код, код приложения и т.д.), Исходный код, который вы сами компилируете ... и никогда не использовали какой-либо «двоичный» код .. так что вы должны были скомпилировать карандашом и бумагой компилятор.

Иначе вы используете код, который вы не знаете, что он делает.

Примечание: если вам нужно использовать «личные» данные, никогда больше не подключайте этот компьютер к Интернету ... возможно, какая-то часть приложения, которое вы использовали, сохранила некоторые данные и в долгом будущем отправила их на интернет-серверы.

Экстремальный пример: вы используете приложение записи для чтения TXT-файла, у него есть скрытый код, чтобы сохранить его где-то скрытым ... затем после нескольких лет обновлений это приложение (или другое) имеет скрытый код для чтения этих скрытых сохраненных данных и отправил его на интернет-сервер или сторонний компьютер и т. д.

Случаи экстремальные? Я изучаю их трудным способом ... в моем Linux ввод трояна (внутри приложения, которое я хочу использовать), по-видимому, ничего не делает (не имеет sockect-соединения и т.д.), Но он записывал какие-то «записи» в диск и двойная запись ... примерно через две недели другой Тойан взял эту информацию и попытался отправить ее на IP-адрес ... боже, у меня был другой компьютер в середине моего интернет-соединения (да, конечно, я и я был полным параноиком, который спас меня), чтобы «обнаружить» эти соединения и «заблокировать» их ... не говоря уже о том, что я использую только «Linux», так как с Windows это невозможно контролировать. Такие трояны были без указания автора приложения, они были внедрены, когда приложение было сохранено в хранилище. Надеюсь, я понимаю, что предпочитаю не говорить, какое приложение с тех пор было «исправлено» ... кто знает, когда!

Вы думаете, что я думаю только о трояне, скрытых вещах и т.д., Совсем не помню, помните swap, временные файлы и т.д. ... некоторые приложения сохраняют документ, который вы используете / создаете, чтобы помочь вам не потерять то, что вы сделали где, черт возьми, те сохранить эти данные? Не обязательно на вашем зашифрованном разделе, может быть, на SWAP, во временной папке или вообще там, где хотел автор приложения, поэтому вы не всегда можете знать, где оно сохранено .... снова зашифруйте все.

О, да, grub.cfg может находиться внутри RAID0, LUKS over LUKS ... over LUKS и т.д. Вам нужен очень маленький раздел для Stage 1.5 или 2 из 8MiB или меньше в неформатированном (массовом дампе), чтобы позволить Grub2 загрузка ... поиск для раздела BIOS GRUB в Интернете.

Извините, я еще не пробовал ZFS и не уверен, могут ли файлы Grub (grub.cfg и т.д.) Находиться внутри ZFS ... но я проверял, что они более: Ext4, LVM, LUKS, LVM, LUKS ... и так далее. некоторые уровни ... над LUKS над реальным GPT (также в MBR) без раздела EFI и он загружается нормально ... требуется только для добавления расширений "crypto" и "lvm", при установке grub2 ... я предпочитаю печатать мой собственный grub.cfg, поэтому я никогда не использую ничего, кроме grub2-install, связанного с grub2 (опять же, я параноик).

Я всегда использую в качестве основного загрузчика свой собственный grub.cfg, который вызывает другие загрузчики, так что я позволяю системе управлять своим собственным загрузчиком, не касаясь основного, который я редактирую вручную с помощью текстового редактора.

Извините, я полный параноик.

Что ты должен думать? Если есть какое-либо «место», где незашифрованные данные могут быть записаны / прочитаны, любой вид «частных» данных является полным пропуском, иногда он может быть записан на этой незашифрованной части. Чтобы быть в безопасности, никогда не иметь никаких незашифрованных частей.

PD: Если вы используете раздел EFI, имейте в виду, что любой код может записывать в него, потому что он вообще не защищен и не является зашифрованным разделом FAT32.

PPD: Где можно хранить данные на FAT32? В любом месте, также на свободном пространстве. А в Ext4? Точно так же ... всегда шифровать все хранилище.

0

mdadm / lvm / dm-crypt - это, вероятно, ваша лучшая ставка - и это совсем не так сложно - вы просто обрабатываете каждый слой соответствующим образом - или, в зависимости от ваших потребностей, mdadm / dm-crypt / lvm (если вы хотите, чтобы все LV были поделиться одним устройством с 1 парольной фразой)

Вы правы, что не используете encfs - это небезопасно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .