averma2988225-droid/RED-TEAM-VS-BLUE-TEAM
GitHub: averma2988225-droid/RED-TEAM-VS-BLUE-TEAM
一个全栈网络安全训练平台,通过红蓝对抗模拟、CTF 挑战和 SOC 监控帮助用户提升攻防实战能力。
Stars: 0 | Forks: 0
# CyberRange — 红队攻击。蓝队防御。让你的代码库坚不可摧。
一个生产就绪的网络安全模拟与训练平台,与 Hack The Box 和 TryHackMe 竞争。
## 🏗️ 架构
```
RED TEAM VS BLUE TEAM/
├── frontend/ # Next.js 15 + React + TypeScript + Tailwind
│ └── src/
│ ├── app/
│ │ ├── page.tsx # Landing page
│ │ ├── (auth)/login/ # Auth pages
│ │ ├── (auth)/register/
│ │ └── (dashboard)/ # Protected pages
│ │ ├── dashboard/ # Overview
│ │ ├── red-team/ # Offensive ops
│ │ ├── blue-team/ # Defensive ops
│ │ ├── cyber-range/ # Live scenarios
│ │ ├── learning/ # Challenges + labs
│ │ ├── analytics/ # Charts + metrics
│ │ └── admin/ # Admin panel
│ ├── components/
│ │ ├── ui/ # Badge, Button, Card, Input
│ │ ├── layout/ # Sidebar, Header
│ │ └── dashboard/ # StatCard
│ ├── lib/ # api.ts, utils.ts
│ ├── store/ # Zustand authStore
│ └── types/ # TypeScript types
└── backend/ # Node.js + Express + Prisma + PostgreSQL
├── prisma/
│ ├── schema.prisma # Database models
│ └── seed.ts # Seed data
└── src/
├── index.ts # Express + Socket.IO entry
├── lib/prisma.ts # Prisma client
├── types/ # JWT payload types
├── utils/ # jwt.ts, logger.ts
├── middleware/ # auth, audit, errorHandler
├── controllers/authController.ts # Auth logic
├── routes/ # All API routes
└── services/socketService.ts # Real-time events
```
## 🗄️ 数据库 Schema
| 模型 | 关键字段 |
|-------------------|---------------------------------------------------------------|
| User | id, email, username, password, role, securityScore, 2FA |
| RefreshToken | token, userId, expiresAt |
| Simulation | type, status, findings (JSON), score |
| Alert | severity, category, source, isResolved |
| Challenge | category, difficulty, points, solution |
| ChallengeProgress | userId, challengeId, isCompleted, attempts |
| Vulnerability | cveId, severity, cvssScore, solution |
| AuditLog | action, resource, userId, ipAddress |
| ThreatFeed | indicator, type, severity, source |
## 🔐 安全特性
- **JWT 认证** — Access token (15分钟) + Refresh token (7天)
- **RBAC** — STUDENT / RED_TEAM / BLUE_TEAM / ADMIN
- **2FA** — 通过 Google Authenticator 的 TOTP
- **限流** — 全局 200 请求/15分钟,认证 10 请求/15分钟
- **Helmet** — 安全标头
- **审计日志** — 记录每一个带有 IP 和 user agent 的写入操作
- **输入验证** — 在所有认证 endpoint 上使用 express-validator
- **密码哈希** — 使用带有 12 轮 salt round 的 bcrypt
- **Refresh Token 轮换** — 存储在数据库中,可撤销
## 🚀 快速开始
### 前置条件
- Node.js 20+
- PostgreSQL 14+
- npm 9+
### 后端设置
```
cd backend
npm install
npx prisma generate
npx prisma db push
npx ts-node prisma/seed.ts
npm run dev
```
后端运行在 http://localhost:4000
### 前端设置
```
cd frontend
npm install
npm run dev
```
前端运行在 http://localhost:3000
## 📡 API 参考
| 方法 | Endpoint | 认证 | 描述 |
|--------|-------------------------------|----------|------------------------------|
| POST | /api/auth/register | 公开 | 创建账户 |
| POST | /api/auth/login | 公开 | 登录 + JWT |
| POST | /api/auth/refresh | 公开 | 刷新 access token |
| POST | /api/auth/logout | JWT | 撤销 refresh token |
| GET | /api/auth/me | JWT | 获取当前用户 |
| POST | /api/auth/2fa/setup | JWT | 获取 2FA 二维码 |
| POST | /api/auth/2fa/verify | JWT | 启用 2FA |
| GET | /api/simulations | JWT | 列出用户模拟 |
| POST | /api/simulations | JWT | 运行新模拟 |
| GET | /api/alerts | JWT | 列出告警 |
| PATCH | /api/alerts/:id/resolve | JWT | 解决告警 |
| GET | /api/challenges | JWT | 列出挑战 |
| POST | /api/challenges/:id/submit | JWT | 提交挑战答案 |
| GET | /api/vulnerabilities | JWT | 列出漏洞 |
| GET | /api/analytics/dashboard | JWT | 仪表盘统计 |
| GET | /api/analytics/global | BLUE/ADMIN| 全局统计 |
| GET | /api/admin/stats | ADMIN | 管理员统计 |
| GET | /api/admin/audit-logs | ADMIN | 审计日志 |
| PATCH | /api/admin/users/:id/role | ADMIN | 更改用户角色 |
| GET | /api/threats | JWT | 威胁情报 |
## 🌐 WebSocket 事件
| 事件 | 方向 | 描述 |
|-----------------------|-----------|-----------------------------------|
| alert:new | 服务器→客户端 | 新安全告警 |
| simulation:update | 服务器→客户端 | 模拟完成 |
| threat:detected | 服务器→蓝队/管理员 | 新威胁指标 |
| join:simulation | 客户端→服务器 | 订阅模拟更新 |
## 🚢 部署
### Docker (推荐)
```
# Backend Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npx prisma generate
RUN npm run build
CMD ["node", "dist/index.js"]
```
```
# docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:16
environment:
POSTGRES_DB: cyberrange
POSTGRES_PASSWORD: securepassword
volumes:
- pgdata:/var/lib/postgresql/data
backend:
build: ./backend
ports: ["4000:4000"]
environment:
DATABASE_URL: postgresql://postgres:securepassword@postgres:5432/cyberrange
JWT_SECRET:
depends_on: [postgres]
frontend:
build: ./frontend
ports: ["3000:3000"]
environment:
NEXT_PUBLIC_API_URL: https://api.yourdomain.com/api
volumes:
pgdata:
```
### 生产环境检查清单
- [ ] 更改 `.env` 中的所有密钥
- [ ] 启用 HTTPS(使用 Nginx 或 Caddy 作为反向代理)
- [ ] 设置 `NODE_ENV=production`
- [ ] 配置用于密码重置邮件的 SMTP
- [ ] 设置数据库备份
- [ ] 配置日志轮换
- [ ] 将 `CLIENT_URL` 设置为生产域名
- [ ] 使用强 JWT 密钥(64+ 字符,随机)
- [ ] 启用数据库 SSL (`?sslmode=require`)
- [ ] 在多实例部署中添加 Redis 用于限流
## 🎮 演示凭证
| 角色 | 电子邮件 | 密码 |
|-----------|----------------------------|-------------|
| 管理员 | admin@cyberrange.io | Admin@123! |
| 红队 | redteam@cyberrange.io | User@123! |
| 蓝队 | blueteam@cyberrange.io | User@123! |
标签:GNU通用公共许可证, MITM代理, Node.js, TGT, 攻防演练, 测试用例, 网络安全, 自动化攻击, 请求拦截, 隐私保护, 靶场平台