Платформа киберучений Jet CyberCamp. Архитектура и технические решения

Привет! В августе мы успешно испытали полностью обновленную платформу киберучений на онлайн-конференции CyberCamp 2022. В этой статье я хочу рассказать, как мы за два года создали Jet CyberCamp и прошли путь от пары-тройки виртуальных машин на EVE-NG до самостоятельной инфраструктуры с разными сценариями.
В статье можно прочитать не только о самой платформе, но и о нестандартных решениях, которые мы использовали при ее создании. Например, как пробросить большое количество пользователей в виртуальную среду с помощью одного браузера, не давая им прямой RDP\VNC\ssh доступ, да еще и бесплатно. Возможно, ты строишь свою платформу обучения и находишься в поисках новых идей. Заходи под кат, поделюсь нашими наработками и будущим платформы Jet CyberCamp;)

Спойлер: тут будет мало воды, много о самой инфраструктуре, немного High-level design и личных впечатлений, а еще россыпь граблей, на которых мы станцевали, куда же без них.

Что такое Jet CyberCamp, зачем нужна и какие цели преследует

Если кратко, платформа киберучений — это место и средство проведения практических учений для команд ИБ. С ее помощью можно воссоздать типовую инфраструктуру предприятия, провести атаки и попытаться защититься от них, можно сделать песочницу и тестировать новые решения, создать лабораторию и исследовать действия атакующих или отдельных вредоносов.
Причем платформа киберучений — это не только виртуальные машины (ВМ) и средства защиты (СЗИ). Еще она выполняет роль образовательного портала, на котором можно найти учебные материалы, текущий прогресс каждого обучающегося, описание заданий, систему учета их выполнения, централизованный доступ ко всем используемым в заданиях ВМ.

Интерфейс платформы киберучений

65e039266ccad2401f8d2bcf869144c5.jpgefd3a80e6104a94b927837e1f6a4f57a.png

Платформу Jet CyberCamp можно рассматривать в двух вариантах:

  1. Цельный готовый коробочный продукт для конечного заказчика со своим сервисом. Решение, которое мы можем внедрять заказчику «под ключ», обеспечивать новыми сценариями, новыми компонентами (в т. ч. СЗИ) и предоставлять обновления инфраструктуры.

  2. Онлайн-сервис, который мы готовы предоставлять неограниченному кругу лиц. Это почти та же Jet CyberCamp, что и в п. 1, но плюс геораспределенная инсталляция, использование новых технологий, удобная и оперативная техподдержка, глубокий мониторинг всех компонентов Jet CyberCamp, а также продвинутая веб-защита.

Немного истории Jet CyberCamp

ЭТАП 1. Началом начал стала EVE-NG, на базе которой мы пытались научить новых коллег пользоваться средствами защиты. Мы разрабатывали сценарии, погружающие обучающихся в детали: состояние инфраструктуры, предшествующие события и цели задания. Основным инструментом для описания сценариев нам служили презентации PowerPoint.

Ученики выполняли задания, сообщали устно свои результаты тренеру (рассказывали, как развивалась атака, что и где нашли). Далее тренер вручную оценивал результат каждого. (Небольшая ремарка: тогда еще не было названия Jet CyberCamp, поэтому назовем этот этап «Платформа киберучений 1.0».)

Личные впечатления от EVE-NG

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

ЭТАП 2. Мы оценили потенциал киберучений и решили проводить их для некоторых наших заказчиков. Закупили отдельный сервер под проект, чем обозначили новый этап развития нашей платформы киберучений (тут все еще нет названия проекта, поэтому пусть будет «Платформа киберучений 2.0»).

На этот сервер поставили VMware ESXi, установили все нужные СЗИ для существующих сценариев, настроили портал для обучения LMS Moodle и шлюз удаленных рабочих столов Guacamole. Таким образом у обучающихся появилась возможность подключаться не к каждой ВМ по отдельности, а к единому порталу через web, откуда они пробрасывались к целевым ВМ.

На этом этапе появились возможности:

  1. Создавать сценарии с любым СЗИ.

  2. Выкладывать теоретический материал на портал, в том числе видео.

  3. Видеть и контролировать процесс выполнения заданий. Guacаmole позволяет тренеру подключиться к сессии обучающегося и помочь/направить его в случае проблем.

  4. Бесшовно пробрасывать подключения к ВМ при помощи Guacamole без запуска RDP- или VNC-сессии обучающимся и без ввода пароля в этой сессии.

  5. Делать снэпшоты и откатываться к ним после «окирпичивания» ВМ обучающимися.

  6. Подавать копию сетевого трафика (SPAN) на отдельные ВМ внутри «Платформы киберучений 2.0». Это позволило нашим тренерам и методистам создать сценарии с углубленным обучением расследованиям и работе с СЗИ, а также использовать вложенную виртуализацию. Например, это требуется для СЗИ класса «песочницы».

Личные впечатления

При архитектуре «Платформы киберучений 2.0» и ограниченных серверных мощностях мы могли пробрасывать через Guacamole не более 20 человек. Если выдать больше мощностей LMS и Gaucamole, то меньше ресурсов останется на ВМ для сценариев, и наоборот. Но это в какой-то мере было еще «терпимое» ограничение. Ряд других проблем все же требовал кардинальных изменений: отсутствие автоматизации развертывания и настройки ВМ для сценариев, масштабирование количества обучающихся (каждому нужна УЗ, эту УЗ нужно внести в LMS и Guacamole, настроить их, сконфигурировать jump host, с которого обучающийся будет иметь доступ к другим ВМ сценариев), отсутствие отказоустойчивости на всех уровнях, отсутствие мониторинга и учета IP-адресов и пр.

ЭТАП 3. А затем родилась идея глобальных киберучений для 200 человек или 40 команд.

https://twitter.com/kcgreennhttps://twitter.com/kcgreenn

Как появилась платформа киберучений 3.0 Jet CyberCamp

Новая идея подстегнула нас к решению фундаментальных проблем, описанных выше. Плюс мы захотели тратить меньше сил и времени на обновление и администрирование гипервизора, сделать нашу платформу киберучений менее ресурсоемкой и более гибкой, перенести часть инфраструктуры в код (т. е. не держать настроенные ВМ на хосте, а иметь только шаблоны ОС и инструмент для их полноценного развертывания и настройки компонентов внутри ВМ). Также необходимо было найти новые проблемы и мужественно их преодолеть!

Поэтому мы:

  1. Придумали название проекту! Как назовешь корабль платформу киберучений, так она и поплывет. С этого момента мы стали строить Jet CyberCamp!

  2. Докупили мощностей в серверы, подключили их к vSphere, СХД, настроили мониторинг, создали ресурс-пулы, структурировали все ВМ по определенной логике.

Структура папок и именование машин в среде виртуализации

Ниже на скрине логика такая: папка с машинами в разработке, есть золотые образы, которые полностью готовы и их можно клонировать (Golden Images), есть разбивка папок по дням: в первый день есть как общие машины, входящие в домен, так и машины команд (Teams). Логика именования машины: [день_учений-номер_сценария]тип_машины_в_сценарии.

Структура папок и именование машин в среде виртуализацииСтруктура папок и именование машин в среде виртуализации
  1. Ввели правила именования ВМ, создали IP-план, описали правила учета настроек ВМ: всё, что делается внутри ВМ, должно быть описано на confluence, а затем, когда начали писать код, то завели для этого GitLab.

  2. Стали проводить внутренние (на небольшую группу работников «Инфосистемы Джет») прогоны сценариев для выявления ошибок в архитектуре сценариев и поиска путей их оптимизации. В общем, собирали любую обратную связь от коллег.

  3. Определили формат легенд для сценариев (например, «Инсайдер поневоле») и создали профиль для каждого сценария. В профиле сценария указывается детальная информация по всем возможным аспектам, начиная от целей сценария и заканчивая его маппингом на MITRE. Детали методологической составляющей Jet CyberCamp мы опишем в следующей статье.

Пример профиля для сценария

dd4f23fb55e551474feb13573d4f20b9.png
  1. Стали рисовать первые робкие схемы уровней High-level design, L3 и L1-L2.

Одна из первых схем HLDОдна из первых схем HLD

  1. Решили доработать LMS Moodle под наши нужды. Уже в процессе доработки поняли, что его не надо доделывать, а нужно полностью создать свой собственный портал. LMS Moodle содержал много лишнего для нас по умолчанию и оказался слишком негибким при доработке. Эта история достойна отдельного поста.

Горящие сроки и приближение онлайн-конференции CyberCamp 2022 подтолкнули нас к быстрым и кардинальным изменениям в проекте. Все первые робкие схемы резко превратились в солидные и детальные, сформировались сетевые сегменты «ядра» и сценариев, в ускоренном темпе изучались ITSM (модели здоровья для мониторинга всех компонентов и планы по восстановлению, формализация и разделение задач, ролей и многое другое).

Ну и напрашивался переход от парка отдельных виртуальных машин Jet CyberCamp к контейнерам для удобства администрирования и непрерывной доставки сервиса обучающимся.

HLD схема Jet CyberCamp. Гибрид on-premise и облачной инфраструктурыHLD схема Jet CyberCamp. Гибрид on-premise и облачной инфраструктуры

Расчеты требуемых ресурсов и мощностей

Этот этап мы проходили несколько раз: сначала при закупке первого сервера, затем при закупке второго, а далее — при расчете мощности для мероприятия CyberCamp 2022.

Мы спросили у наших тренеров:

  • сколько всего машин планируется поднимать для каждого сценария (допустим, для сценария «Инсайдер поневоле» нужны были: 1 SIEM, 1 IRP, 1 TIP, 1 портал ГосСОПКА, 1 машина Kali для Red Team, 2 рабочие станции, 1 файловый сервер, 1 почтовый сервер с OWA, 1 сканер уязвимостей, 1 МСЭ),

  • какие они должны быть (готовые апплаенсы или ПО поверх ОС),

  • их ОС,

  • потребляемые ресурсы,

  • расчет каналов при разной архитектуре,

  • расчет количества серверов.

Ну и потом надо было перемножить полученное количество на 40 (такое количество команд заявлялось к участию)

© Habrahabr.ru