Title: Установка OpenBSD с полным шифрованием дисков
Author: Viva Calman
Date: 2024-09-29 15:18:30
Correction code: 172761232999334

Я редко меняю что-то в том бардаке, который когда-нибудь станет тем, что в зарубежных интернетах гордо именуется словом homelab. Однако, обстоятельства сложились так, что один из основных узлов моей домашней сети, компьютер, который выключается еще реже, чем мой основной десктоп (который в общем-то работает 24/7) стал совсем уж немощным по современным меркам. Ну или меркам тех нагрузок, что я на него пытаюсь возложить. Ибо вместо "сервера" у меня используется полумертвый нетбук, родом из далекого 2012го года с Intel Atom вместо процессора. Да, я помню, двенадцать (*начинаю приходить в ужас от числа, которое нынче приходится писать рядом со словами "лет назад") лет назад два ядра и 1.6Ггц частоты в них, в принципе, казались "ну, потянет", и даже вроде как предполагалось, что подобные машинки будут использоваться специально для того, чтобы серфить интернет, но реальность была к ним куда более жестока. Мелкие экраны, дохлые процессоры, чипсеты, не позволяющие поставить больше двух гигабайт памяти... короче говоря, машинки устарели быстрее, чем производители перестали их выпускать. Причем все и сразу. Более поздние нетбуки еще и отличались экзотическими видеочипами, над поддержкой которых никто даже и не стал заморачиваться — ну сдохло и сдохло.

Собственно, именно поэтому я уже давно собирался заменить бедолагу-нетбук на что-то более мощное. Собирался долго, неторопливо, но в конце концов мне под руку подвернулся небольшой системник, лежавший долгое время без дела. Ничего особенного, обычная пишушая машинка офисного уровня, даже не Intel Core, а всего лишьPentium G3240 , правда с не очень офисным количеством оперативной памяти. Но это только к лучшему, ибо памяти мало не бывает. Так как дисков в машине не было, была установлена свежая SSD-шка под систему и пара обычных дисков по терабайту, чтобы потом собрать из них софтварный RAID1.

В качестве ОС я решил выбрать OpenBSD. Почему? Это очень хороший вопрос, так как старый добрый Debian, который является для меня дистрибутивом линукса по умолчанию, встал бы на эту машину без каких-либо проблем, к тому же, избавив меня от многих потенциальных трудностей. Однако я не стал искать легких путей. Последнее время я начал ловить себя на паталогической лени, которая выражается в том, что "если проблема не решается по первой ссылке в поисковой выдаче, где расписан пошаговый алгоритм, который надо скопипастить в консоль", то у меня пропадает всякое желание напрягаться и думать. И это начало пугать. Нежелание думать — достаточно тревожный знак для меня. Поэтому я решил создать себе немного искусственных неудобств и поставить систему, про которую не так много информации в интернете, в которой нет принципа "я сделал docker run и оно как-то заработало" и в которой придется именно что думать чтобы что-то сделать. Ну или как минимум, внимательно читать мануалы.

В экстремуме, можно было бы выбрать какую-нибудь обскурную систему, которой пользуются полтора человека, но это все же был бы перебор. Мне не нужен станок для IT-садомазохизма, а нужнен нормально работающий сервер. Просто слегка необычный. И так как у меня давным давно была симпатия к BSD-семейству, с FreeBSD, тогда еще версии 5.4, я начинал свой путь в мир *nix, то я и выбрал вторую по известности ОС, из имеющих в названии эти буквы. Упомянутую выше OpenBSD. До этого момента я ее трогал, но не слишком сильно — разворачивал на ноутбуке, ставил иксы, свой любимый FVWM, после чего утомлялся и откладывал ноутбук на полочку.

В этот же раз я заставил себя установить OpenBSD на повседневку. Да не просто установить, а с шифрованием дисков. В конце концов, мы живем в довольно мрачном настоящем, поэтому лишние меры безопасности будут только кстати. Ну или лишний источник геморроя, если не повезет. Это не менее вероятный вариант развития событий, но я постараюсь предусмотреть меры и на этот случай.

Это все было лирическое вступление к собственно небольшой памятке об установке OpenBSD на шифрованный корневой диск. Это оказалось не слишком сложно.

Для начала мы просто грузимся с загрузочной флешки, но вместо того, чтобы начать установку, запускаем шелл командой "s".

Так как "сервер" (я все еще пишу это название в кавычках, так как настоящий сервер в моих глазах должен стоять в стойке (и это тоже в планах)) у меня абсолютно чистый, то у меня не было страха потерять какую либо информацию. Однако, если эти манипуляции производятся на компьютере с мультибутом/дисками, на которых уже есть данные, стоит быть очень внимательным. Ибо машину времени еще не изобрели.

В консоли вводим

# sysctl hw.disknames

Команда выведет нам доступные диски. При этом скорее всего в /dev нужного файла устройства не будет, так как ramdisk загрузочного образа ну очень уж аскетичный, так что следующим шагом (определившись с тем, на какой физический диск мы будем ставить систему) делаем

# cd /dev
# sh MAKEDEV sdX

sdX — для примера, смотреть надо по ситуации, конечно же.

Дальше, делаем на диске таблицу разделов. Для MBR вводим

# fdisk -iy sdX

Для GPT вводим

# fdisk -gy -b 960 sdX

Таблица разделов создана, двигаемся дальше. Теперь сделаем "подразделы" командой disklabel. OpenBSD берет раздел диска, понятный BIOS и уже в свою очередь разбивает его на кусочки. Сразу вспоминаются "слайсы" FreeBSD.

# disklabel -E sdX

Если нажать "p", то будут выведены имеющиеся разделы. В моем случае, так как я создавал разметку GPT, там есть небольшой раздельчик под служебные нужды. Команда disklabel работает в пошаговом режиме, чтобы создать раздел, нам надо ввести "a" и букву создаваемого раздела.

Label editor (enter '?' for help at any prompt)
sdX> a a
offset: [1024]
size: [XXXXXXXXXXX] *
FS type: [4.2BSD] RAID
sdX*> w
sdX> q
No label changes.

Раздел сделали, теперь надо сделать его шифрованым.

# bioctl -c C -l sdXa softraid0

Команда попросит ввести пассфразу для расшифровки диска, ее повтор, после чего выведет на экран номер устройства, которым в системе будет обозначен получившийся псевдософтрейд. Номер нужно запомнить. В дальнейшем, система будет установлена именно на него:

softraid0: CRYPTO volume attached as sdY

Для спокойствия переходим в /dev и делаем

# sh MAKEDEV sdY

Далее рекомендуется занулить первый мегабайт получившегося устройства.

# dd if=/dev/zero of=/dev/rsdYc bs=1m count=1

И остается выйти из оболочки, набрав

# exit

Дальше ведем установку как обычно, только в качестве устройства, которое будет корневым диском, выбираем sdY, которое нам сказал bioctl

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

В принципе, ничего сложного, кроме того момента, что теперь сервер не закинуть под кровать, оставив только кабель питания и витую пару — после каждой перезагрузки потребуется доступ к физической консоли. Как вариант, можно сделать ключевой носитель, на который будет записан ключ шифрования, и этот ключ/флешка должны быть воткнуты в компьютер в момент загрузки. Я выбрал вариант с пассфразой, так как не планирую запихивать сервер очень далеко, и его физическая консоль будет у меня всегда под рукой. Ну и не забываем о том, что шифрование все таки требует некоторой части ресурсов, поэтому производительность ввода-вывода может быть снижена.

Следующим шагом будет создание шифрованного RAID1-массива на основе все того же bioctl. Думаю, это будет интересное костыляторство, в процессе которого я что-нибудь да сломаю. Но зато будет не скучно.

^HOME