Немножко оффтопика, опишу для гугля как я у себя делал систему.

Дано: новенький рабочий компьютер с 4 HDD и 1 SSD.
Надо всё зашифровать по максимуму (/, swap) и поиметь максимально быструю при этом дисковую систему, утилизируя SSD и 4 шпинделя.

В основу кладём уже используемую мной ранее схему - разделы с редкой записью - /boot, /, /usr (разделы по отдельности или вместе) кладём на ssd, из дисков (сырых, безраздельно) делаем raid10, на котором размещаем LVM, из которого нарезаем /var, /home, swap, и далее по потребностям. Потребности можно кстати оставить вообще пока невыделенными, и потом увеличить любой требуемый раздел. При выходе из строя HDD просто вынимаем его, вставляем новый, и никак не размечая, запускаем ребилд.

Но при такой схеме используется только маленькая часть самого маленького SSD, много ли там на /usr надо. Так что попробуем еще и bcache. Большую часть SSD пускаем на кеширование, и кешировать будем весь md0, который у нас raid10 на 4 сырых дисках. Да, с точки зрения надёжности наверное стоит пустить на кеширование отдельное зеркальце из пары отдельных SSD, но у меня тут не Ынтерпрайз, а скромная рабочая станция :)

Хорошо, но куда же тут прилепить шифрование?
А шифровать мы будем посерединке между bcache и LVM.
Т.е., с одной стороны, у нас уже сразу целиком зашифрованный PV, дальше можно по-раздельно уже не париться. С другой стороны, сам b-кеш на SSD тоже скидывается зашифрованный, на радость моей паранойе.

Ну и корень с /usr, которые остались на SSD вне LVM. Их же тоже надо зашифровать. Ну, это простенько - ни рейдов, ни кешей, ни LVM, обычный простой раздельчик. Только вот беда - теперь при старте системы пароль спрашивается два раза - на / и на LVM. Внутренний полузадушенный перфекционист негодуэ. Выход из этой ситуации - для расшифровки брать ключ не с клавиатуры, а из некоего файла или устройства. Недушенный перфекционист прикрутил бы смарт-карту с двухфакторной авторизацией, но мой такого не осилил. Поэтому ключ мы храним просто где-то в файле, который на этом же диске, и является в свою очередь криптоконтейнером. Который мы открываем паролем, вводимым с клавиатуры при старте системы. Но всего один раз! Сколько бы мы потом разделов не нашифровали себе.

Ладно, извращаться, так по крупному. Всё в этой схеме хорошо, но этот компьютер я постоянно использую и удалённо, из дома. Что, если он там без меня соскучится, зависнит, перезагрузится, электричество моргнёт? Я могу попросить коллегу нажать там резет, но не сдавать же пароли чтобы отпереть диск?
Это мог бы сделать я и сам, по сети. Жаль что груб2 её не умеет :)
Тогда мы приходим к пониманию необходимости еще одной, минимальной-вспомогательной системы на нашей SSDшечке. Её заботой будет загрузиться, поднять сеть, запустить OpenVPN для обхода NAT-ов (у меня хоть и есть прямой IP, но подстраховаться никогда не помешает), запустить sshd, и спрашивать пароли, на физической консоли и при ssh-подключениях. Если там или там был введён пароль, которым удалось раскрыть наш криптоконтейнер с главным ключом, мы открываем им наш основной криптованный рут, LVM, и делаем pivot_root в основную систему. Или, если пароля не ввели, можно например перезагрузиться, или выпасть в консоль вспомогательной системы, или показать котика дня. Ведь по существу ничего, кроме котиков, хранить в незашифрованной системе нельзя (здесь должна быть КДПВ с котиком).

Вот, собственно, такая система была реализована на базе P7 и живёт и здравствует уже почти полтора года.

Плюсы - высокое быстродействие (если верить fio и субъективным ощущениям), вроде-бы криптобезопасность, ну и удобство использования, насколько это возможно.

Из минусов - некоторый геморрой создания всего этого. Штатный инсталлятор, разумеется, и десятой части всего этого изврата не осилит, поэтому основная работа происходит из лив-системы, с последующим разворачиванием образа готовой системы в подготовленное место (можно использовать, например, ALT Linux Live имени enp@). Вспомогательная система у нас должна быть аналогична по пакетному составу основной (совершенно точно должно совпадать версия ядра, скорее всего и всякие libc), за этим надо специально следить при обновлении. Наличие только одного нерезервируемого SSD внушает некоторые опасения, поэтому я время от времени делаю копию рута/бута на диски. Возможно подумаю потом о зеркалировании SSD, хотя уже и устройств пихать некуда :)

Получившаяся разбивка SSD:
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 468862128 sectors, 223.6 GiB
...

Number   Size       Code  Name
   1    256.0 MiB   EF00  EFI System
   2    8.0 MiB     EF02  BIOS boot partition
   3    256.0 MiB   8300  Linux filesystem
   4    2.0 GiB     8300  Linux filesystem
   5    24.0 GiB    8300  Linux filesystem
   6    197.1 GiB   8300  Linux filesystem

3 - boot, 4 - вспомогательная система, 5 - шифрованный рут+usr основной системы, 6 - кеш.


HDD-диски в lsblk выглядят так:

sdb                          8:16   0   1.8T  0 disk
└─md0                        9:0    0   3.7T  0 raid10
  └─bcache0                252:0    0   3.7T  0 disk
    └─cr-lvm (dm-2)        253:2    0   3.7T  0 crypt
      ├─VG0-lv_var (dm-0)  253:0    0    64G  0 lvm    /var
      ├─VG0-lv_home (dm-3) 253:3    0   2.9T  0 lvm    /home
      └─VG0-lv_swap (dm-4) 253:4    0    32G  0 lvm    [SWAP]
sdc                          8:32   0   1.8T  0 disk
└─md0                        9:0    0   3.7T  0 raid10
  └─bcache0                252:0    0   3.7T  0 disk
    └─cr-lvm (dm-2)        253:2    0   3.7T  0 crypt
      ├─VG0-lv_var (dm-0)  253:0    0    64G  0 lvm    /var
      ├─VG0-lv_home (dm-3) 253:3    0   2.9T  0 lvm    /home
      └─VG0-lv_swap (dm-4) 253:4    0    32G  0 lvm    [SWAP]
sdd                          8:48   0   1.8T  0 disk
└─md0                        9:0    0   3.7T  0 raid10
  └─bcache0                252:0    0   3.7T  0 disk
    └─cr-lvm (dm-2)        253:2    0   3.7T  0 crypt
      ├─VG0-lv_var (dm-0)  253:0    0    64G  0 lvm    /var
      ├─VG0-lv_home (dm-3) 253:3    0   2.9T  0 lvm    /home
      └─VG0-lv_swap (dm-4) 253:4    0    32G  0 lvm    [SWAP]
sde                          8:64   0   1.8T  0 disk
└─md0                        9:0    0   3.7T  0 raid10
  └─bcache0                252:0    0   3.7T  0 disk
    └─cr-lvm (dm-2)        253:2    0   3.7T  0 crypt
      ├─VG0-lv_var (dm-0)  253:0    0    64G  0 lvm    /var
      ├─VG0-lv_home (dm-3) 253:3    0   2.9T  0 lvm    /home
      └─VG0-lv_swap (dm-4) 253:4    0    32G  0 lvm    [SWAP]





_______________________________________________
Sysadmins mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить