понедельник, 6 января 2020 г.

Ура, новый сервер | Первый взгляд


Всем привет.

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

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

Сегодня накидаем первый драфт дизайна.

Сервисы

Использую я не так уж и много всего.
  • В основном, конечно, лабораторки как напрямую в ESXi, так и в EVE-NG.
  • Pass. Это как Keepass, только свой.
  • Мониторинг этого всего
Из планов:
  • Вынести отдельно администрирование через Guacamole
  • Возможно DNS, блогом переехать, gitlab, ну и всякое по мелочи
В общем то и правда не так уж и много.

Зонирование

Раньше все мое хозяйство было в одном влане и к нужным сервисам я просто настраивал DNAT на интернет роутере. Guacamole я потом вынес в отдельный влан и фильтровал трафик на файерволе, но это все равно не асоциировалось у меня со солвосочетанием "хороший дизайн". В общем, сейчас понятно, что надо все микросегментировать и зонировать, как нам диктуют всякие там "бест практисы".

Тут мы подходим к зонам.

PROD

В этой зоне будут сидеть практически все виртуалки, которым не нужно что-то необычное в плане изоляции. Очень хорошо бы накрутить что-то вроде Private VLAN, но это зависит от платформы. Адреса планирую выдавать по DHCP, а доступ в Интернет здесь будет неограничен. Все это позволит быстро разворачивать новые виртуалки без особой боли. 

Для многих сервисов нужно будет организовать прямой доступ из Интернета. Хороший примером является EVE-NG для выполняния лаб. Раньше я это делал просто DNAT правилом на Mikrotik. Ничего супер плохого в этом решении вроде нет, но я решил остановится на Reverse Proxy для таких целей. Во-первых, практически всегда речь идет о WEB сервисах. Во-вторых, все же это выглядит чуть безопасней. 

Картинка ниже.


MGMT

Тут все просто. Это сеть соединяющая все машины из PROD и имеющая ногу в роутер. Private VLAN так же желателен. DHCP не будет. В остальном никаких особых требований. 

INFR

В этом VLANе будет находится вся инфраструктура для управления. Как минимум Jump host для доступа на виртуалки по SSH/VNC/RDP и мониторинг. Этот VLAN так же имеет ногу в роутер. Таким образом я смогу довольно "гранулярно" (словцо...) контролировать доступ для управления виртуалками. Перед Jump Host'ом (Guacamole) будет также стоять Reverse Proxy, что даст возможность перейди на HTTPS.

Картинка ниже


ISOL

Сеть для хостов, до которых нужен прямой доступ из интернета по определенному порту. Хороший пример GIT. Тут я планирую максимально строго фильтровать трафик и делать PTP линки до каждой новой такой виртуалки. Управление вообще не планирую реализовывать. Буду лазить через консоль. Здесь хочется достигнуть наибольшей изоляции от других сервисов.


Выбор платформ

  • ESXi для виртуализации. Уже давно использую и всем доволен. Пробовал XEN и KVM. Чет не то... Есть конечно и минусы. Основной - для самых вкусных вещей нужны лицензии. Тот же Private VLAN вроде как не получится реализовать. Раньше я очень страдал на тему управления хостом. Нужно было держать виндовую виртуалку с клиентом, но потом я открыл для себя Embedded host client. Это Vsphere-подобная веб морда для отдельностоящего ESXi хоста. 
  • VyOS в качестве роутера и файрвола. Подумывал про Микротик, но надоело уже, если честно. VyOS это опенсорс файервол и роутер с практически Juniper интерфейсом. На первый взгляд очень неплох и много чего умеет. По сути, это такая компиляция quagga, openswan, iptables и еще много чего. В связи с чем я уже успел покрасноглазить билдя ISO для установки... Толи еще будет... Короче, потыкать точно было бы интересно.
  • NGINX для реверс прокси. Особых наворотов мне не нужно. Тут думаю все будет хорошо.
  • Docker. У меня как минимум два Proxy инстанса и запускать каждый из них под отдельной виртуалкой прям рука не поднимается. Плюс в голове есть несколько идей с маленькими сервисами. Иметь контейнеры было бы полезно. К сожалению, у меня очень маленький опыт в контейнеризации, поэтому тут я ожидаю проблем. Первичные пристрелочные лабы показали, что я, вероятно, буду изолировать контейнеры разными сетями на самом Docker хосте. Запускать все это планирую через docker compose. Пробовал делать macvlan сети и "прокидывать" контейнеры по L2 в сеть, но думаю это слишком.
  • Observium для мониторинга. Почему-то неизвестная платформа мониторинга... Всем рекомендую как минимум для маленьких инсталляций. Красивая, удобная, наглядная. 
Все целиком это выглядит примерно как в начале поста (картинка ниже, чтобы не скролить). 
  • Direct DNAT - сервисы, до которых нужен прямой доступ из интернета не по WEB портам. GIT, PASS, стриминг какой-нибудь.
  • Mgmt Reverse Proxy - тут мы говорим о Guacamole за NGINX прокси. Guacamole не имеет прямого доступа к серверам, только через файервол. Здесь же будет стоять Observium, который до серверов тоже будет фильтроваться. 
  • Prod Reverse Proxy - это проксированный доступ до различных веб-консолей виртуалок. 

Что нужно

    1. Сделать IP plan. Здесь проблем возникнуть не должно
    2. Углубится в L3 дизайн. Хотелось бы сделать VRFы как минимум, но не уверен как это реализовано в VyOS
    3. Грамотно изолировать управление самого ESXi хоста.
    4. Придумать крутые названия для машин
    5. Начать имплементировать )
Накидывайте идей, если вдруг есть кому что сказать. Я в любом случае многое упустил и мне придется с этим столкнутся на поздних стадиях. )

UPD

Поступило несколько комментариев. 
  • Советуют bitwarden_rs вместо Pass. В целом выглядит более интересно, хотя Pass подкупает своей простотой - Git+GPG
  • Говорят, что вместо горячо любимого ESXi можно попробовать Proxmox. Слышал разные отзывы, надо покрутить. 
  • На тему Observium есть некоторые сомнения. Советуют, конечно же, Zabbix, Nagios, Netdata... Посмотрим, хочется чего-то базового и легковесного пока.
  • В качестве GITa советуют глянуть на GiTea и Gogs (painless self-hosted git:). 
  • Обращают внимание на drone-cd для CI/CD (простигоспади).

3 комментария:

  1. Observium вполне, но я бы посмотрел на LibreNMS

    ОтветитьУдалить
  2. Так а што там с редхатовскими сертификациями? И не думал про опеншифт для контейнеризации? Все равно же кубы придётся трогать

    ОтветитьУдалить