Kasm Workspaces – это DaaS (Desktop as a Service) использующий контейнеры Docker вместо виртуальных машин.
Этот перспективный проект уже получил популярность в кругах исследователей безопасности и разработчиков.
В этой статье я расскажу вам об основных возможностях этого инструмента.
VDI
VDI, или Virtual Desktop Infrastructure, — инфраструктура виртуальных рабочих столов. К неоспоримым достоинствам ВРМ (VDI)
с точки зрения ИТ в корпоративном окружении можно отнести:
безопасность
экономия на лицензиях
автоматизация (контроль и установкой софта и обновлений)
Существуют и недостатки о которых стоит упомянуть. Большинство продуктов на рынке VDI (VMware, Citrix и другие) рассчитаны на крупный бизнес,
а это означает соответствующую политику лицензирования и закрытую кодовую базу.
Kasm
Kasm в отличии от корпоративных VDI систем рассчитан для решения совершенно других задач.
Если перечислять основные возможности, то это:
Благородя поддержке NVIDIA GPU, Kasm можно использовать для централизованного управления удаленными рабочими местами разработчиков и инженеров данных (data engineer).
Тренинги и проведение образовательных курсов – простой доступ через веб-браузер это огромный плюс.
Исследование безопасности, багхантинг и ручное тестирование веб-приложений.
Проект коммерческий, но с полностью открытой кодовой базой, щедрым лицензированием (не более 5 открытых сессий одновременно в бесплатной версии)
и рядом уникальных возможностей, поэтому не грех сделать для него небольшую рекламу.
Технологии
Kasm не изобрел ничего революционного, системы вроде Apache Guacamole, предназначенные для стриминга удаленных рабочих столов через браузер,
хорошо известны специалистам в этой области.
В использовании контейнеров Docker для изоляции GUI приложений тоже нет ничего прорывного: https://www.digitalocean.com/community/tutorials/how-to-remotely-access-gui-applications-using-docker-and-caddy-on-ubuntu-20-04
Но у Kasm получилось собрать все эти компоненты в цельную платформу, с приятным веб-интерфейсом для администрирования и API.
https://github.com/kasmtech/KasmVNC
Возможности
После установки Kasm пользователю прямо «из коробки» предоставляется доступ к десяткам базовых образов Docker которые включают в себя полнофунциональнуюверсию Kali Linux, Chrome:
![Рабочий стол Kasm](https://habrastorage.org/getpro/habr/post_images/b02/db4/96a/b02db496ab25b1c9c68efde092f8a488.jpg)
и другие образы:
![Базовые образы](https://habrastorage.org/getpro/habr/post_images/f22/8ea/2f8/f228ea2f8474eef67dc6621bf5c41293.jpg)
Есть возможность добавления своих образов или кастомизации существующих.
Через веб-консоль можно добавлять файлы (например скрипты для тестирования),
которые при запуске рабочего стола будут монтироваться контейнере:
![Скрипт для Nmap](https://habrastorage.org/getpro/habr/post_images/85c/2a3/1f7/85c2a31f7fe502352d9da31c6a0af79b.jpg)
Например скрипт для обнаружения kube-apiserver:
![http-get.nse](https://habrastorage.org/getpro/habr/post_images/99c/366/c84/99c366c84ccccf31f26f96f0ba7b4016.jpg)
![Скрипт](https://habrastorage.org/getpro/habr/post_images/1bd/aed/9db/1bdaed9db57e18115034cf439858d6e7.jpg)
Установка Kasm
Скачиваем образы Docker Kasm Workspaces, это может занять 10-15 минут:
cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.13.1.421524.tar.gz
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_service_images_amd64_1.13.1.421524.tar.gz
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_workspace_images_amd64_1.13.1.421524.tar.gz
Распаковываем скачанный архив:
tar -xf kasm_release_1.13.1.421524.tar.gz
Стартуем установочный процесс в режиме оффлайн:
sudo bash kasm_release/install.sh --offline-workspaces /tmp/kasm_release_workspace_images_amd64_1.13.1.421524.tar.gz --offline-service /tmp/kasm_release_service_images_amd64_1.13.1.421524.tar.gz
Нажать клавишу Y для того, чтобы принять пользовательское соглашение:
![Соглашение](https://habrastorage.org/getpro/habr/post_images/d0c/9f2/13a/d0c9f213ad6a8ea685142208f80101b7.jpg)
Установка может занять 10-15 минут:
![Установка](https://habrastorage.org/getpro/habr/post_images/b4e/33b/505/b4e33b505732aaab1e92eb9328dc76fb.jpg)
После установки будут автоматически сгенерированы пароли для учетных записей по-умолчанию. Скопируйте их:
![Креды](https://habrastorage.org/getpro/habr/post_images/c8d/416/603/c8d416603df4c0101970e8bf5e3ee9c1.jpg)
Войдите в веб-консоль Kasm, используя учетную запись администратора (admin@kasm.local):
https://<KASM_SERVER>
Узнать IP адрес сервера:
hostname --ip-address
Такое сообщение означает, что Kasm использует сомоподписанный сертификат. Нужно пропустить проверку, нажав «Доверять этому веб-сайту»:
![SSL](https://habrastorage.org/getpro/habr/post_images/c68/ca9/8de/c68ca98de9b1f5ff03554f78bad893a8.jpg)
На этом этапе для входа нужно использовать учетные данные администратора сгенерированные установочным скриптом:
![Логин](https://habrastorage.org/getpro/habr/post_images/949/a50/ef4/949a50ef42a19ece2fd1094645cf9d0e.jpg)
Панель управления:
![Панель управления](https://habrastorage.org/getpro/habr/post_images/4dc/ee3/f50/4dcee3f50bd37517e0469212ef4db85c.jpg)