Какую простую в управлении файловую систему выбрать в Linux для homeserver?
У меня есть домашний сервер, работающий на 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 ответа
Это совет для всех, кто хочет зашифровать некоторые данные, всегда шифровать 100% всего возможного хранилища, подключенного к компьютеру, независимо от того, является ли это разделом Grub, системным разделом, домашним разделом, разделом данных, разделом подкачки и т. Д. ВСЕГДА Зашифровать все.
Зачем? Потому что вы не контролируете, где данные сохраняются приложениями / системой.
Демонстрация безопасности событий:
- Загрузка нормальная
- Используйте приложение
- Откройте "личный" документ
- Сбой системы (программный или аппаратный)
- Следующая загрузка не работает
- Одно устройство заканчивает свою жизнь (больше не работает)
Вы не можете удалить то, что есть на таком устройстве (оно не работает), вы не можете прочитать его, так что там было сохранено? может быть, что-то "личное"? Вы даже не можете знать, что ни где.
Но кто-то другой (возможно, с несколькими миллионами денег в кармане) может его отремонтировать, так что вы не сможете положить это мусорное устройство в корзину, пока не подтвердите, что "личных" данных там нет... но вы не сможете знать, пока не дадите устройство для компании, но опять же "личное" находится в опасности, может быть, они "копируют" его (плохой человек, работающий там и т. д.).
Спросите вас: знаете ли вы каждую исходную строку всего кода, который вы используете (загрузочный код, системный код, код приложений и т. Д.), Исходный код, который вы сами компилируете... и никогда не использовали какой-либо "двоичный" код.. так что вы должны были скомпилировать карандашом и бумагой компилятор.
Еще вы используете код, который вы не знаете, что он делает.
Примечание: если вам нужно использовать "личные" данные, никогда больше не подключайте этот компьютер к Интернету... возможно, какая-то часть приложения, которое вы использовали, сохранила некоторые данные и в долгом будущем отправила их на интернет-серверы.
Экстремальный пример: вы используете приложение записи для чтения 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? Точно так же... всегда шифровать все хранилище.
mdadm / lvm / dm-crypt - это, вероятно, ваша лучшая ставка - и она совсем не сложная - вы просто обрабатываете каждый слой соответствующим образом - или, в зависимости от ваших потребностей, mdadm /dm-crypt/lvm (если вы хотите, чтобы все LV были поделиться одним устройством с 1 парольной фразой)
Вы правы, что не используете encfs - это небезопасно.
Если вы выберете установку 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)