TParrish21p/logshield-lab

GitHub: TParrish21p/logshield-lab

一个教学型事件响应仪表板原型,通过安全可控的方式演示日志分析、告警生成与事件跟踪等 SOC 核心工作流程。

Stars: 0 | Forks: 0

# LogShield 实验室 **LogShield Lab** 是一个安全的教学型事件响应仪表板,由 Tyler Parrish 在其个人独立开发品牌 **Bizarre Studios** 下构建。 ## 在线公开演示 ``` https://logshield-lab.vercel.app ``` 公开演示是一个纯前端的安全演示。它使用内置的合成数据,不接受真实的上传文件。 ## 截图 ### 公开演示仪表板 ![LogShield Lab 公开演示仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b717346b03174313.png) ### 解析器结果 ![LogShield Lab 解析器结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ea4257840b174319.png) ## 架构 请参阅架构图: ``` docs/architecture/architecture-diagram.md ``` ## 安全须知 请勿上传真实的凭证、私钥、客户数据、员工数据、财务数据、医疗保健数据、公司机密、受监管数据或其他敏感信息。仅使用合成的、经过脱敏处理的或实验室生成的日志。 LogShield Lab 不是一个真正的 SOC 平台、合规产品、企业安全工具或生产监控系统。 ## 项目目的 LogShield Lab 演示了以下内容: - 安全的日志文件上传概念 - 上传日志的临时解析 - 基于 Python 的日志分析 - 告警和事件生成 - 事件状态跟踪 - 分析师笔记 - 基本基于角色的访问概念 - 注重隐私的数据处理 - 安全优先的设计决策 ## 公开演示模式 公开演示模式专为安全的作品集托管而设计。 在公开演示模式下: - 真实文件上传被禁用 - 后端 API 调用被禁用 - 数据库写入被禁用 - 解析器服务调用使用内置的合成结果进行模拟 - 更改仅在浏览器内存中发生,并在页面重新加载时重置 从前端文件夹在本地运行公开的安全演示: ``` npm run dev:demo ``` 从前端文件夹构建公开的安全静态演示: ``` npm run build:demo ``` 更多详情: ``` docs/public-demo.md ``` ## 本地全栈架构 ``` User opens browser ↓ React frontend dashboard ↓ Java Spring Boot backend API ↓ Python parser service ↓ PostgreSQL database ``` ## 本地开发端口 ``` Frontend: http://localhost:5173 Backend: http://localhost:8080 Python parser service: http://127.0.0.1:5000 Database: Local PostgreSQL ``` ## 技术栈 - 前端:使用 TypeScript 的 React - 后端:Java Spring Boot - 解析器服务:Python Flask - 数据库:PostgreSQL - 托管:Vercel 纯前端公开演示 ## 项目结构 ``` logshield-lab/ ├── frontend/ ├── backend/ ├── parser-service/ ├── docs/ │ ├── architecture/ │ └── security/ ├── sample-logs/ ├── README.md └── .gitignore ``` ## 本地设置要求 安装: - Git - Node.js - Java 17 或更高版本 - Python 3.12 或更高版本 - PostgreSQL - VS Code 检查版本: ``` git --version node --version npm --version java --version python --version ``` ## 在本地运行公开演示 从项目根目录运行: ``` cd frontend npm install npm run dev:demo ``` 打开: ``` http://localhost:5173 ``` ## 运行完整的本地开发者版本 完整的本地版本使用三个服务。 ### 终端 1:Python 解析器服务 仅在此终端中激活 `.venv`: ``` cd parser-service .\.venv\Scripts\Activate.ps1 python app.py ``` 完成后: ``` deactivate ``` ### 终端 2:Spring Boot 后端 为此终端会话设置 PostgreSQL 密码: ``` cd backend $env:LOGSHIELD_DB_PASSWORD="your_postgres_password" .\mvnw.cmd spring-boot:run ``` ### 终端 3:React 前端 请勿在此处激活 `.venv`: ``` cd frontend npm run dev ``` 打开: ``` http://localhost:5173 ``` ## PostgreSQL 本地数据库名称: ``` logshield_lab ``` 后端从以下位置读取数据库密码: ``` LOGSHIELD_DB_PASSWORD ``` 该密码不应提交到 Git。 ## 当前后端端点 ``` GET /api/health GET /api/incidents PATCH /api/incidents/{id}/status PATCH /api/incidents/{id}/notes POST /api/demo/analyze POST /api/upload/analyze ``` ## 当前解析器端点 ``` GET /health POST /analyze ``` ## 演示角色 当前的教学模拟角色: ``` ADMIN ANALYST VIEWER ``` 这还不是真正的身份验证。它演示了在添加生产级身份验证之前基于角色的行为。 ## 上传安全 本地开发者上传流程: - 仅允许 `.txt`、`.log`、`.csv` 和 `.json` - 拒绝空文件 - 强制执行 1 MB 的最大文件大小 - 不信任用户文件名 - 不暴露上传路径 - 将文件文本临时发送到解析器服务 - 不主动长期存储原始上传的日志 对于托管的公开演示,真实文件上传应保持禁用状态。 ## 开发阶段 已完成: - 阶段 1:项目设置 - 阶段 2:后端 MVP - 阶段 3:Python 解析器 MVP - 阶段 4:前端 MVP - 阶段 5:安全上传处理 - 阶段 6:PostgreSQL 持久化 - 阶段 7:模拟身份验证和角色 - 公开的安全托管演示模式 下一步: - 阶段 8:作品集完善 ## 文档 ``` docs/public-demo.md docs/architecture/phase-1-setup-notes.md docs/architecture/phase-2-backend-mvp-notes.md docs/architecture/phase-3-parser-mvp-notes.md docs/architecture/phase-4-frontend-mvp-notes.md docs/architecture/phase-6-postgresql-notes.md docs/security/phase-5-demo-analysis-notes.md docs/security/phase-7-auth-roles-notes.md docs/security/threat-model.md docs/demo-walkthrough.md ``` ## 状态 当前状态:本地全栈教学原型,加上公开安全的纯前端演示。
标签:Bizarre Studios, JS文件枚举, Python, React, SOC概念验证, Syscalls, Vercel部署, 前端原型, 前端演示, 合成数据演示, 告警生成, 安全事件响应仪表盘, 安全仪表盘, 安全开发实践, 安全日志解析, 教育项目, 无后门, 日志解析器, 测试用例, 网络安全教学, 自动化攻击, 逆向工具, 隐私保护设计