Aymwvn/BrovanaRange

GitHub: Aymwvn/BrovanaRange

一个基于 Docker 的开源网络安全靶场平台,提供按用户隔离的攻击性安全训练实验室,并集成 IDS 监控、强认证与反作弊机制。

Stars: 0 | Forks: 0

# Brovana 范围 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Docker](https://img.shields.io/badge/docker-compose-2496ED?logo=docker&logoColor=white) ![Status](https://img.shields.io/badge/status-active--development-orange) ![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg) ## 演示 ![BrovanaRange 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f2c1b04880b2a7e9669ad270c4da324fb907b06c30b051458eedf5b30dae028e.png) ## 什么是 BrovanaRange? BrovanaRange 是一个开源的网络安全靶场平台,允许用户启动隔离的、容器化的实验室来练习攻击性安全技术——包括 Web 漏洞利用、权限提升和数字取证——同时每一个操作都会被真实的 IDS 技术栈(Suricata + Zeek)监控。它的架构像生产级平台,而不是一个玩具:支持带 MFA 的 JWT 认证、RBAC、速率限制、审计日志,以及一个可以检测 flag 共享和自动化解题的反作弊系统。 ## 主要功能 - 🔒 **按用户隔离的实验室环境** — 每个会话都运行在独立的 Docker 容器中,配有专用网络、自动过期机制和资源限制 - 🛡️ **真实的 IDS/网络监控** — 部署 Suricata + Zeek 来检查实验室流量,提供 EVE JSON 日志记录和自定义检测规则 - 🔑 **强化的身份验证** — JWT + 轮换刷新 token,Argon2 密码哈希,TOTP MFA,邮件 OTP,账户锁定 - 🚦 **反作弊系统** — 检测快速解题爆发、IP 复用以及跨用户 flag 共享 - 📊 **全面的可观测性** — 审计日志、Prometheus metrics endpoint,以及用于监控会话/容器/反作弊事件的管理员仪表板 - 🌐 **网络隔离** — 为 frontend/DMZ、backend、database 以及按用户划分的实验室提供独立的 Docker 网络,所有这些都位于带有 TLS 的 Nginx 反向代理之后 ## 架构 ![BrovanaRange 架构图](https://static.pigsec.cn/wp-content/uploads/repos/cas/02/02215fe7f5b590e6571f5a2353ff40ae882fc60d71940a878997730d4d74a7b3.svg) 流量通过 Nginx(TLS 终止)流入隔离的 Docker 网络——frontend/DMZ、backend/internal、database 以及按用户划分的实验室网络之间都是相互隔离的。每个实验室会话的流量都会被镜像到 Suricata 和 Zeek 以进行实时检测,警报和日志会反馈到后端,用于管理员仪表板和审计追踪。 ## 技术栈 | 层级 | 技术 | |---|---| | Frontend | React | | Backend | FastAPI | | Database | PostgreSQL | | 容器化 | Docker, Docker Compose | | 反向代理 | Nginx (TLS 终止) | | IDS / 监控 | Suricata, Zeek | | 认证 | JWT, Argon2, TOTP MFA | | Metrics | 兼容 Prometheus 的 `/metrics` | ## 安全架构 BrovanaRange 在每一层都采用了纵深防御的设计方法:
网络安全 - 通过 Nginx 实现的 HTTPS/TLS,HTTP→HTTPS 重定向 - Backend、frontend 和 database 端口从不对外公开 - Docker 网络隔离:独立的 frontend/DMZ、backend、database 以及按用户划分的实验室网络 - 带有默认拒绝入站策略的 UFW 防火墙 - 通过 Nmap 扫描验证攻击面
容器安全 - 为每个用户的每个实验室会话提供隔离的 Docker 容器 - 自动过期的会话及自动清理机制 - `no-new-privileges`,默认丢弃 Linux capabilities - 对每个容器强制执行 CPU/RAM/PID 限制 - 支持 gVisor (runsc) 沙箱;仅在权限提升实验室需要时才使用 `runc` - 没有将宿主机文件夹挂载到实验室容器中;Docker socket 从不直接挂载到 backend 中
身份验证与授权 - JWT access token + 轮换 refresh token,支持 logout/logout-all 会话撤销 - Argon2 密码哈希(支持传统的 bcrypt 验证) - 支持 TOTP MFA 和邮件 OTP 挑战 - 多次登录失败后触发账户锁定 - 基于角色的访问控制 (RBAC),管理员 API 受角色限制 - 会话/终端所有权验证——用户无法触碰彼此的实验室
速率限制与防滥用 - 对登录、注册、启动实验室和提交 flag 实施速率限制 - 缓解暴力破解、自动化 flag 猜测和资源耗尽攻击
反作弊系统 - 检测快速解题爆发、可疑的 IP 复用以及跨用户 flag 复用 - flag 是动态的且基于会话生成,在验证前进行哈希处理,在存储时进行脱敏 - 用于查看反作弊事件的管理员仪表板
IDS 与网络监控 - Suricata 部署在 Docker 中,通过 EVE JSON + fast.log 警报监控实验室网络流量 - 自定义检测规则(ICMP,HTTPS 流量) - Zeek 生成连接、DNS、DHCP 和异常日志
监控与可观测性 - 完整的审计日志:身份验证事件、实验室生命周期、flag 提交、管理员操作 - 兼容 Prometheus 的 `/metrics` endpoint - 用于会话、容器和审计日志的管理员仪表板
完整的安全架构说明:[`docs/SECURITY.md`](docs/SECURITY.md) ## 快速开始 ``` git clone https://github.com/Aymwvn/BrovanaRange.git cd BrovanaRange cp .env.example .env # 在启动前使用你自己的 secrets 编辑 .env docker-compose up --build ``` Frontend 将在 `https://localhost` 提供(首次运行时使用自签名证书)。 ## 项目结构 ``` BrovanaRange/ ├── backend/ # FastAPI app (auth, labs, API) ├── frontend/ # React dashboard ├── ids/ # Suricata + Zeek configs/rules ├── docs/ │ ├── SECURITY.md # Full security architecture doc │ └── screenshots/ ├── docker-compose.yml ├── .env.example ├── LICENSE └── README.md ``` ## 路线图 - [ ] 自动 IPS 阻断(目前为被动 IDS) - [ ] SIEM 集成 + 集中式日志仪表板 - [ ] 部署 WAF - [ ] Kubernetes 网络策略 / 云安全组 - [ ] 为实验室提供 Firecracker/Kata microVM 隔离 - [ ] 为生产环境部署受信任的公共 TLS 证书 ## 许可证 MIT — 查看 [LICENSE](LICENSE) ## 作者 **Aymane Boualam** — [github.com/Aymwvn](https://github.com/Aymwvn)
标签:CISA项目, Docker, Metaprompt, Web报告查看器, 安全训练, 安全防御评估, 测试用例, 版权保护, 网络安全, 网络靶场, 自定义请求头, 请求拦截, 隐私保护