Создание сервера дома

  • Автор темы Admin

Admin

#1
Администратор
Регистрация
31.12.2019
Сообщения
6,948
Реакции
25
В условиях современных проблем информационной безопасности верить нельзя никому, поэтому для тех задач где степень безопасности и надежности крайне критична – надо думать более широко и находить решения которые находятся за пределами круга «типовое решение для всех». Собственно, об этом и будет моя статья - собрать «идеальный» (в той мере что возможно) и самый безопасный сервер, который сможет пережить даже физическое извлечение, не отдав свое истинное содержимое недоброжелателю

Нужно составить план
1) Материнская плата
2) Основной вычислительный модуль
3) Хранение данных (SSD)
4) Загрузочный том (BOOT)
5) Модуль защиты TPM
6) Защита физических портов
7) UEFI расширение модуля доверенной загрузки
8) Общие требования к шасси и системе питания

Итак, давайте пойдем по списку!


1) Материнская плата
Это пожалуй один из самых важных моментов, поскольку она является основой любого сервера, от ее правильного выбора будет зависеть все остальные шаги на пути по сборке сервера. Поскольку сейчас достаточно популярен форм фактор mini-ITX, а также его компактные размеры и возможность разместиться в любом 1U корпусе - то выбирать будет именно по этому критерию.
Поскольку наша материнская плата должна быть максимально безопасна - то нужно также сразу забыть о внешнем управлении - а именно модуле BMC который может делать всякую "грязь" - которая при этом нам не нужна.
Также крайне желательно чтобы материнская плата была достаточно надежна, имела поддержку Linux и не умирала после нескольких часов работы (как часто бывает с платами от ASRock).
Из-за компактного форм фактора, а также компактных размеров корпуса - чтобы не нужно было лишний раз изобретать велосипеды - лучше сразу выбирать материнскую плату со встроенным в нее процессором - т.е. embedded CPU, это позволит максимально оптимизировать пространство в корпусе и не иметь проблем со сложной системой охлаждения.


Мой выбор пал на продукцию Supermicro, которая является пожалуй самой популярной на территории СНГ за ее цену и простоту в использовании.
Supermicro X10SBA - https://www.supermicro.com/en/products/motherboard/X10SBA
Встроенный процессор – Intel Celeron J1900 4 ядра 4 потока @ 2.42GHz (не самый плохой вариант для базовой системы)
Оперативная память - SODIMM DDR3 1333MHz до 8GB в 2 модулях

Плюсы
+ Наличие встроенного «адекватного» процессор Intel Celeron J1900 который себя зарекомендовал как хорошее решение во встраиваемом сегменте
+ Наличие полноценного открытого PCIe x8 порта
+ Наличие встроенного на плате полноценного ВНУТРЕННЕГО USB 3.0 Type-A
+ Внутренний коннектор для mSATA и mPCIe
+ Наличие коннектора для модуля TPM
+ Отсутствие модуля BMC(!) – собственно поэтому эта плата и была выбрана
+ Качество сборки Supermicro всегда на высоте, а также нету значительных проблем с BIOS/UEFI
+ Плата серверного класса
+ Низкая цена


Минусы
- старая версия платформы
- малое количество портов USB
- только 2 порта RJ45 1Gbps
- PCIe хоть и полноценный, но работает на скорости лишь PCIe x2
- Нету поддержки M.2
- максимум 8GB RAM


(Supermicro X10SBA вид сверху и вид со стороны портов)
111111112.jpg.7566db02e5a9e0da14e778a85251e50f.jpg



111111113.jpg.77a35a571e586fffd82f87522d70ab98.jpg

2) Основной вычислительный модуль
Тут пожалуй на ум приходят только сопроцессор Xeon Phi, однако почему Xeon Phi? Все достаточно просто – это один из старых проектов Intel по созданию вычислительных модулей-видеокарт подобного типа, но на архитектуре x86. Весь что может быть лучше чем полноценный (почти) сервер в форм факторе видеокарты.
Пример модуля – Intel Xeon Phi 7120A (A означает – Active Cooling – а именно активную турбинную систему охлаждения, есть также версия P – Passive Cooling – без турбины и для установки в специально приспособленные для этого шасси). Конфигурацию модуля легко получить на Intel ARK - https://ark.intel.com/content/www/r...coprocessor-7120a-16gb-1-238-ghz-61-core.html
(Intel Xeon Phi 61 ядро и 244 потока @ 1.24-1.33GHz + 16GB MCDRAM которые распаяны на PCB платы)
По сути представляют из себя 61 плотно упакованных процессоров Intel Atom (именно поэтому у них есть 4 потока, ведь каждое ядро Intel Xeon Phi это по своей сути 2 ядерное 4 поточное ядро Intel Atom), однако с поддержкой команд AVX для ускорения арифметики с плавающей точкой.
Ну а самое главное – что на карте запускается полноценный Linux! Да да, самый обычный Linux что позволяет заходить на карту как на обычный сервер при помощи команды «ssh mic0» где mic0 это имя карты которое определяется в системе. (Для того чтобы это определение работало – на хост систему нужно установить набор пакетов и драйверов Intel MPSS)


Плюсы
- x86 совместимая система
- высокая производительность в параллелизме (244 потока)
- 16GB быстрой внутренней памяти (намного более быстрой чем DDR4)
- монолитная компоновка которая эффективно защищает от разбора


Минусы
- потребление до 300W – как обычная видеокарта (хотя некоторые GPU сейчас потреляют гораздо меньше)
- низкая частота на ядро
- начальная загрузка системы весьма нетипичная
- необходимость 2 полноразмерных слотах PCIe, однако влезает даже в 1U корпуса (если они имеют такую поддержку)


(Intel Xeon Phi 7120A)
f4845d8931af294fad820.jpg

3) Хранение данных (SSD)
Сразу скажу что нам диск нужен не самый просто, а именно с поддержкой само-шифрования (SED), автоматической внутренней очисткой (Auto GC) и компактным форм фактором (mSATA). Поскольку единственным распространённым сейчас форматом для дисков SED является TCG OPAL – то будем выбирать диск, который имеет его поддержку. (больше о самом OPAL - https://en.wikipedia.org/wiki/Opal_Storage_Specification )
Пожалуй одним из лучших накопителей компактного форм фактора (mSATA), а также с поддержкой внутреннего шифрования и автоматической сборкой – являются диски Samsung (правда не все модели), а именно модель 850 EVO mSATA (подробности можно посмотреть по ссылке - https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/850evo/ )


(Компоновка Samsung 850 EVO mSATA)
2e9566c2b39c5eb1df9eb.jpg

(Важные параметры на которые нужно обращать внимание)
4c54fb0ffd441ec95ebe8.jpg

4) Загрузочный том (BOOT)
Представляет из себя обычную USB 3.0 флэшку, с наличием пин пада на корпусе для получения доступа к ее содержимому. Поскольку вендоров много, я пожалуй напишу лишь про ту – где у меня был опыт (положительный) – iStorage DATASHUR PRO2 - https://istorage-uk.com/product/datashur-pro2/ Поскольку это только загрузочный том – то тратить большие деньги на это не требуется – версии на 4GB (минимально доступный размер) – будет хватать более чем. Ее принцип прост. Для начала работы нажимаем на значок разблокировки – вводим пароль – если он верный, то флэшка в течении определенного времени может быть подключена к системе и будет работать как обычный USB – в противном случае тыква. При множестве неверных вводов пароля ставиться таймаут или же возможно полного удаления данных на самом устройстве (а если точнее – то крипто-процессор флэшки стирает ключ которым зашифрованы данные внутри и генерирует новый). Решение старо как мир – однако работаеть. Кстати при потере питания от хоста флэшка уходит в блокировку. Внутренняя батарея флэшки подпитывается от порта USB поэтому можно не волноваться о том что данные могут быть на ней потеряны навсегда в результате ошибки. 
(DATASHUR PRO2)
6f61030cef61533a4f181.jpg

Поскольку корпус в котором мы будем собирать сервер имеет высоту 1U - то установка данного диска-флэшки вертикально будет создавать проблемы, для исправления этой ситуации мы будем использовать угловой USB 3.0 переходник - который повернет разьем на 90 градусов и позволит спокойно подключить устройство горизонтально.


(Угловой переходник USB 3.0)
05ec37978a057fad67a79.jpg



5) Модуль защиты TPM
Название спецификации, описывающей криптопроцессор, в котором хранятся криптографические ключи для защиты информации, а также обобщённое наименование реализаций указанной спецификации, например, в виде «чипа TPM» или «устройства безопасности TPM». Устройство безопасности TPM обычно представляет из себя небольшую PCB схему и интерфейсом SPI который подключается на специальный порт материнской платы (сейчас большинство материнских плат имеют его в своем составе). Большинство дистрибьютивов Linux имеют поддержки TPM модулей из коробки. Более подробно о TPM можно прочитать по ссылке - https://en.wikipedia.org/wiki/Trusted_Platform_Module


(Пример TPM модуля от Supermicro)
6481e01a0c41b7450680c.jpg



6) Защита физических портов
Пожалуй тут стоит отдельно остановиться, ведь даже несмотря на то что модуль BMC выключен или отсутствует, это не мешает злоумышленнику подключится по портам VGA или COM (если есть) – для того чтобы попытаться войти через консоль Linux в систему. Конечно это можно решить путем генерации слепого пароля на сервер (чтобы даже вы его не знали), а заходить только удаленно по ключу, однако все равно – эти векторы атаки тоже стоит пресечь.


Пример кабеля USB – VGA https://www.amazon.com/dp/B07P3SRGV4/
Такой кабель позволяет закрыть выходной VGA порт на материнской плате замкнув его на самом себе, таким образом чтобы операционная система работающая на хосте могла видеть, подключен ли этот кабель и закрыты ли внешний порт VGA. Закрытие внешних портов является лишь одной из мер защиты и не обеспечивает полной безопасности системы по отдельности в отрыве от остальных мер. На вопрос, а почему тогда не закрываются порты HDMI и DisplayPort – ответ прост, они выключаются через драйвер, а для порта VGA в силу архитектурных особенностей увы такая возможность штатно отсутствует :(


(Пример кабеля VGA-USB)
5a72682d8023ee9fa2356.jpg

Также при вопросе защиты физических портов возникает вопрос – а как сделать так – чтобы знать, пытались ли что-то сделать с сервером? Ответ просто – встроенная миниатюрная веб камера – которая записывает события в случае обнаружения движения и в хорошем качестве.
Миниатюрная USB Web камера с гибким регулятором, детектором движения и по смешной цене в 25$. Устанавливается в оставшийся свободный USB 3.0 слот на задней стороне материнской платы, после чего средствами ОС осуществляет мониторинг того что происходит с сервером. По углу направления крайне желательно чтобы он смотрел одновременно на крышку сервера и на стойку, тем самым чтобы было явно видно, когда его пытаются вскрыть или вынуть.


(USB камера на гибком коннекторе)
111111111.jpg.8032c0c96443878b54e9302745dba033.jpg

111111111.jpg.8032c0c96443878b54e9302745dba033.jpg7) UEFI расширение модуля доверенной загрузки
Поскольку вариантов много, но к сожалению далеко не все можно достать достаточно легко и по адекватной цене, то мой выбор пал на ViPNet SafeBoot. Это модуль доверенной загрузки – который является расширением UEFI (бывают и в виде отдельлный аппаратных модулей) на пред начальной стадии загрузки системы, является одним из компонентов для защиты системы от вмешательств злоумышленников в процесс загрузки.
Обеспечивает защиту BIOS и проверку целостности, защиту NVRAM, ведет журнал загрузок и попыток доступа, поддерживает опциональную возможность по созданию корневой точки доверия и прочее... Полный список возможностей есть на официальном сайте - https://infotecs.ru/product/vipnet-safeboot.html
Описывать все возможности SafeBoot было бы рекламой – поэтому просто оставлю ссылку на достаточно полный обзор возможностей этого решения - https://www.anti-malware.ru/reviews/uefi-bios-vipnet-safeboot
Из основных плюсов еще можно выделить цену на лицензию – всего 100$, что делает это весь привлекательным предложениям. Как по заявлению вендора, так и по моим личным тестам - полностью совместим с BIOS/UEFI от Supermicro, что радует.

(Пример экрана входа)
5720ba5c85dfc72343d33.jpg

8) Общие требования к шасси и системе питания
Поскольку наш сервер крайне не любит всякие экстремальные отключения, то он обязательно крайне желательно должен иметь 2 блока питания, хотя некоторые шасси (на удивление) сейчас бывает это не поддерживают (бывает что сказать). Также дополнительным фактором стоит учесть собственный и монтируемый в стойку комплект батарей – что могут продержать сервер на случай выхода их работы сразу 2 вводов питания (да да, даже лучшие не застрахованы от этого)
Пример достаточно неплохой батарейки для монтирования в стойку может быть продукция Eaton - Eaton 5P 1500R 1500VA Rack Mountable 1U LCD 120V (800-1000$)
Также заодно было бы хорошо понять, насколько долго система проживет от такой небольшой батарейки. Это достаточно просто – переходим на сайт производителя и смотрим на схему - http://powerquality.eaton.com/5P1500R.aspx?cx=15&GUID=198CFFB0-49B0-45EF-A169-7505446BCAA3
Например – небольшой сервер с PSU на 300W будет работать на полной загрузке до 26-28 минут что более чем достаточно для большинства «нормальных» ДЦ чтобы восстановить питание.
Также весьма приятным бонусом является то что к резервной батарее можно подключаться по Ethernet для получения информации о состоянии, поэтому 2ой сетевой порт на материнской плате будет занимать именно он.

(Eaton 5P 1500R 1500VA 1U)
4c252ece17b8d26d4aa1d.jpg

Теперь рассмотрим процесс того – как должна запускаться такая система
1) Необходимо выкатить на салазках сервер и открыть его верхнюю крышку
2) Вытащить USB Boot диск из сервера и ввести там корректный пароль, после чего вставить обратно во внутренний USB слот
3) Закрыть верхнюю крышку и вернуть сервер на место
4) Включить питание сервера
5) Подождать пока сервер получит сетевой адрес и можно будет зайти по ssh на предзагрузочный режим сервера
6) Произвести авторизацию основного SSD по протоколу TCG OPAL
7) Ввести пароль сервера для расшифровки первого слоя шифрования основного диска и перехода ко второму слою, что расшифровывает диск при помощи ключей хранящихся в модуле TPM, а также при помощи ключа что хранится на загрузочной флэшке
8) Произвести повторную загрузку сервисов из расшифрованной системы и сервисов Intel MPSS
9) Запуск основной ОС на сопроцессоре используя данные с расшифрованного и примонтированного основного радела

Итоговая система в итоге работает как 2 независимых сервера. Использование сопроцессора в качестве основной системы для запуска кода позволяет получить изоляцию на физическом уровне для основной системы, ведь сопроцессор не имеет возможности прямого выхода в сеть, кроме как использовать прокси гейт с хост системы – которая может безопасным образом сделать все необходимые ограничения. Конечный сервер по своей концепции разделяется на 2 части – хост система и сопроцессор. На сопроцессоре выполняется основной код, а на хост возложены функции по обеспечению прослойки шифрования дисков, обеспечения сетевого ввода-вывода, выполнение функции сетевого экрана и детектора вторжений на систему. Поскольку сопроцессор использует обычное ядро Linux – то есть возможность также запускать на сопроцессоре системы паравиртуализации как LXC и Docker – то еще добавляют уровней абстракции для выполняемого там кода.
На этом все. Спасибо за внимание.


Автор: sweetMika7
 

Members, viewing this thread

Сейчас на форуме нет ни одного пользователя.