moya-raviraj/SOC-Analyst-Training-Simulation-Web-App

GitHub: moya-raviraj/SOC-Analyst-Training-Simulation-Web-App

一个基于 Flask + MySQL 的 SOC 培训与模拟平台,提供结构化学习、实时仪表盘与测验引擎,解决安全人员标准化训练与实战演练的痛点。

Stars: 0 | Forks: 0

```markdown # CyberOps Simulator & SOC Training Portal CyberOps 是一个基于 Flask + MySQL 的 SOC 培训与模拟平台,提供两种主要体验: - **学习系统**:分等级引导式 SOC 培训(基础 -> 工作流 -> 日志 -> 检测 -> 响应 -> 模拟/测验/报告实验) - **模拟控制台**:实时 SOC 风格仪表盘、告警、日志查看器、分析与报告 UI 针对实用 SOC 控制台体验进行了优化,前端具备实时事件模拟能力。 ## 主要特性 ### 1) 登录与访问流程 - 首页提供两个入口选项: - 探索学习系统 - 登录使用工作控制台 - 基于会话的登录/注销 ### 2) 引导式学习模块 - 结构化学习页面,支持逐步推进 - 交互式 SOC 工作流说明 - 实时日志模拟与点击分析面板 - 攻击检测练习 - 事件响应模块 - 顶点流程: - 模拟 -> 测验 -> 报告撰写实验 -> 结果 ### 3) 交互式 SOC 测验引擎 - 10 道聚焦 SOC 的问题(简单/中等/困难) - 每次一道题目 - 上一题/下一题导航 - 实时分数追踪 - 每题答案后提供解释 ### 4) SOC 报告撰写实验 - 完整培训表单: - 事件标题 - 攻击类型 - 严重程度 - 影响系统 - IOC - 时间线 - 根本原因 - 已采取的行动 - 最终建议 - 自动反馈质量评分 - 本地已提交培训报告历史记录 ### 5) 模拟控制台 - 使用 Chart.js 的仪表盘可视化 - 按严重性分组的告警仪表盘 - 终端日志查看器 - 分析与报告页面 - 模式自适应的 SQL(支持不同表列名) ### 6) 实时前端事件流 - 每约 2–3 秒产生新事件(不存入数据库) - 仪表盘/告警/日志查看器中的实时更新 - 新条目高亮显示 - 条目上限控制以避免界面过载 ## 技术栈 - **后端**:Python Flask - **数据库**:MySQL - **数据库驱动**:`mysql-connector-python` - **认证**:会话 + bcrypt 验证支持 - **前端**:HTML、CSS、JavaScript、Chart.js ## 项目结构 ``` PROJECT/ ├─ app.py ├─ schema.sql ├─ README.md ├─ static/ │ ├─ styles.css │ └─ script.js ├─ templates/ │ ├─ landing.html │ ├─ learning/ │ │ ├─ home.html │ │ ├─ soc-workflow.html │ │ ├─ log-analysis.html │ │ ├─ attack-detection.html │ │ ├─ incident-response.html │ │ ├─ simulation-lab.html │ │ ├─ quiz.html │ │ └─ report-lab.html │ └─ simulation/ │ ├─ login.html │ ├─ dashboard.html │ ├─ alert-dashboard.html │ ├─ log-viewer.html │ ├─ analysis.html │ └─ report.html └─ (legacy static html folders: learning/, simulation/) ``` ## 数据库说明 本项目支持两种模式: 1. **使用提供的 schema(`schema.sql`)** - 表包括:`users`、`alerts`、`logs`、`analyses`、`reports` 2. **使用现有的 SOC 数据集** - 应用会动态检测现有表中的列,例如: - `active_alerts`、`alerts`、`logs`、`incident_timeline`、`reports`、`users` - 查询映射具备自适应能力,以减少列不匹配导致的失败。 ## 本地环境搭建 ### 安装依赖 ``` pip install flask mysql-connector-python bcrypt ``` ### 配置数据库 设置环境变量(推荐)或编辑 `app.py` 中的 `DB_CONFIG`。 PowerShell 示例: ``` $env:MYSQL_HOST="localhost" $env:MYSQL_USER="root" $env:MYSQL_PASSWORD="your_password" $env:MYSQL_DATABASE="soc_training" $env:MYSQL_PORT="3306" ``` ### 初始化数据库结构(可选但推荐用于干净启动) ``` mysql -u root -p < schema.sql ``` ### 运行应用 ``` python app.py ``` 访问: - `http://127.0.0.1:5000` ## 认证机制 - 登录路由:`POST /login` - 注销路由:`GET /logout` - 仪表盘别名:`GET /dashboard` 如果 `users` 表中存储的是 bcrypt 哈希,系统会自动验证;明文形式的旧密码也受支持。 ## 重要路由 ### 学习与首页 - `/` -> 首页 - `/learning/home.html` - `/learning/soc-workflow.html` - `/learning/log-analysis.html` - `/learning/attack-detection.html` - `/learning/incident-response.html` - `/learning/simulation-lab.html` - `/learning/quiz.html` - `/learning/report-lab.html` ### 模拟控制台 - `/simulation/login.html` - `/simulation/dashboard.html` - `/simulation/alert-dashboard.html` - `/simulation/log-viewer.html` - `/simulation/analysis.html` - `/simulation/report.html` - `/api/dashboard-metrics` ## UI/UX 说明 - SOC 风格玻璃拟态面板 - 严格的严重性配色系统 - 图表稳定性优化(`maintainAspectRatio: false`、固定图表容器) - 更简洁的导航栏与一致的网格间距 - 平滑页面过渡/淡入效果 - 实时数据流行为,避免强制页面跳转 ## 部署快速说明 ### GitHub ``` git init git add . git commit -m "Initial CyberOps Simulator commit" git branch -M main git remote add origin git push -u origin main ``` ### Vercel Vercel 非常适合静态/Node 应用。对于 Flask + MySQL: - 使用支持 Python 的托管平台(Render/Railway/Fly.io)实现最简单部署,或 - 使用 Vercel 的无服务器 Python 适配器(需要高级配置) 如果仍希望使用 Vercel,请添加: - `vercel.json` - 正确的 Python 入口点与无服务器兼容结构 ## 已知的实用注意事项 - 自行数据库中的某些表可能与 `schema.sql` 不同;核心页面已包含列自适应的查询逻辑。 - `__pycache__` 可忽略在 Git 提交中。 - 根目录下存在遗留静态 HTML 文件夹(`learning/`、`simulation/`),但活跃应用页面使用 `templates/`。 ## 后续推荐改进 1. 添加用于部署可复现性的 `requirements.txt` 锁定文件 2. 添加使用 `python-dotenv` 的 `.env` 支持 3. 添加基于角色的路由保护(`analyst`、`senior`、`manager`) 4. 为报告撰写实验培训提交添加后端持久化支持 5. 添加认证与自适应 SQL 映射的单元测试 ```
标签:Bcrypt, Chart.js, PFX证书, Python Flask, SOC 培训, SOC 模拟, 交互式学习, 仪表盘, 会话认证, 前端实时更新, 后端开发, 告警模拟, 多模态安全, 安全运营中心, 实战演练, 实时日志, 报告撰写, 攻击检测, 数据可视化, 测验引擎, 网络安全教育, 网络映射