Холст для инфраструктуры red team и киберполигонов. Составьте топологию, экспортируйте исполняемые Terraform и Ansible и разверните её самостоятельно. Ваши облачные учётные данные никогда не покидают вашу машину.

Веб-канвас, на котором вы строите инфраструктуру как топологию, а затем экспортируете полный, готовый к запуску рабочий каталог Terraform и Ansible. Вы запускаете его со своей машины. redStackPRO никогда не хранит ваши облачные учётные данные.
[!IMPORTANT] redStackPRO находится в стадии prerelease (beta). Схема и функции всё ещё меняются. GCP и AWS протестированы от начала до конца; Azure, Proxmox и ESXi — в планах. Ожидайте шероховатостей, и фиксируйте версию на выпущенной, если вам нужна стабильность.
Столкнулись с шероховатостью или есть отзыв? Откройте issue на Issues. Если это было развёртывание, приложите очищенный
logs/deploy-*.log, который записал запуск (в нём фиксируются версии, провайдер и место остановки, с удалёнными секретами), чтобы его можно было быстро проанализировать. Ваши отчёты формируют релиз.
redStackPRO помещает атакующую инфраструктуру и целевые полигоны на один канвас. Два
режима канваса — Offense (атакующая инфраструктура) и Defense (оборонительные AD-полигоны); экспорт
называет свой handoff OFFENSE-BRIEFING.md или DEFENSE-BRIEFING.md в соответствии с режимом.
Split horizon C2, атакующая инфраструктура: два входных узла, не разделяющих судьбу, Apache перед Sliver и Nginx перед Mythic, каждый редиректор в своей пиринговой сети, с teamserver'ами, коллектором и операторами за jumpbox.

Несколько операторов, один стек. Jumpbox атакующей инфраструктуры может указывать
список operators (handle плюс роль), и каждый получает логин в портал Guacamole
на общем пароле лаборатории. Установите access_mode jumpbox в wireguard или
openvpn (по умолчанию — публичный портал), и каждый оператор также получит персональные
VPN-учётные данные, сгенерированные на jumpbox при apply: ключи никогда не покидают машину
и не попадают в экспорт, только файл клиентской конфигурации. Логины портала сегодня
используют один общий пароль лаборатории, поэтому изоляция между операторами обеспечивается
собственными VPN-учётными данными каждого оператора, а не логином портала; индивидуальные пароли портала — в
планах. В режиме доступа через VPN портал закрывается от интернета и перемещается за
туннель, тогда как SSH остаётся открытым, чтобы администратор мог продолжать развёртывать и управлять
машиной. Добавляйте или удаляйте коллегу на работающем jumpbox с помощью
sudo rsp-operator add <handle>. См.
wiki Deploying a Range.
Harbor, целевой полигон: небольшой корпоративный лес, корневой домен и дочерний поверх доверия parent-child, с обычным путём от фишинговой рабочей станции до леса.

GOAD, полная лаборатория: три домена в двух лесах, пять машин и их доверия, эталонный полигон, которому следует письменное решение.

[!IMPORTANT] Экспорт — это граница. Канвас генерирует файлы; вы запускаете их под своими учётными данными. redStackPRO никогда ничего не развёртывает и никогда не хранит секрет.
[!CAUTION] Только авторизованное использование. redStackPRO создаёт атакующую инфраструктуру и намеренно уязвимые полигоны. Используйте его только в лабораторных средах, которыми вы владеете или на тестирование которых у вас есть явное разрешение, никогда против систем, на которые у вас нет письменного разрешения.
Pre-release, и схема топологии всё ещё меняется. Сам конвейер работает от начала до конца: топология компилируется в Terraform и Ansible, и экспорт развёртывается.
| Провайдер | Состояние |
|---|---|
| GCP, AWS | Поддерживаются и протестированы от начала до конца, как для целевых полигонов, так и для атакующей инфраструктуры. |
| Azure, Proxmox, ESXi | В планах, пока не поддерживаются. |
Весь канвас в одном контейнере, API и веб-приложение на одном порту:
docker compose up # builds from this repo, http://127.0.0.1:8000
Или возьмите опубликованный образ вместо сборки:
docker run -p 8000:8000 -v redstackpro-data:/data \
ghcr.io/devzero-security/redstackpro:0.9.0
Канвас слушает порт 8000 внутри контейнера. Чтобы обслуживать его на другом порту
хоста, измените левую половину маппинга (-p 8787:8000) или задайте
REDSTACKPRO_PORT для compose (REDSTACKPRO_PORT=8787 docker compose up).
Compose также несёт опциональный бэкенд Postgres для общего развёртывания:
REDSTACKPRO_DATABASE_URL=postgresql+psycopg://redstackpro:redstackpro@db:5432/redstackpro \
docker compose --profile postgres up
Образ — это только слой композиции. Он не несёт Terraform или Ansible и никогда не хранит ваши облачные учётные данные: вы запускаете экспорт, который он создаёт, со своей машины, точно так же, как в потоке из исходников ниже.
Python 3.11 или новее, и Node 24 для канваса.
git clone <this repo> && cd redStackPRO
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
Канвас — это два процесса, API и веб-приложение:
redstackpro serve # http://127.0.0.1:8000
cd frontend && npm install && npm run dev
redstackpro serve --port 8787 переносит API на другой порт. Направьте
dev-сервер канваса на него с помощью REDSTACKPRO_API=http://127.0.0.1:8787.
Откройте его, используйте Load blueprint (кнопку или палитру режимов), чтобы открыть поставляемую отправную точку, выберите своё облако в селекторе провайдера на панели инструментов (GCP или AWS), откройте вкладку Export (она компилируется на лету), затем Download. Вы получите zip рабочего каталога, описанного ниже.
Или пропустите канвас полностью и скомпилируйте поставляемый blueprint из командной строки, тот же компилятор, тот же вывод:
redstackpro compile frontend/public/goad/goad-light.json -o export
Командная строка по умолчанию использует GCP. Передайте --provider aws для AWS.