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, 攻防演练, 测试用例, 网络安全, 自动化攻击, 请求拦截, 隐私保护, 靶场平台