cyr6x/ccorp-sirts

GitHub: cyr6x/ccorp-sirts

面向 SOC 团队的全栈安全事件响应与工单管理系统,提供结构化的事件生命周期管理、角色权限控制和 CVE 漏洞增强,解决安全运营中事件追踪混乱、协作低效的问题。

Stars: 0 | Forks: 0

# CCorp SIRTS **安全事件响应与工单系统** — 网络安全与网络工学学士(荣誉)| 毕业设计项目 ## 项目背景 安全运营中心常常被大量非结构化的事件数据所淹没。分析师们把时间浪费在电子邮件线程和电子表格中追踪状态更新,而真正的威胁却在不断升级。CCorp SIRTS 以现实世界的 IR 工作流为模型,用一个结构化、感知角色的工单系统取代了这种混乱局面——为 SOC 团队提供了从检测到关闭的统一视图,每一次操作都被记录,每一个决策都可追溯。 ## 在线演示 ![CCorp SIRTS Demo](https://raw.githubusercontent.com/cyr6x/ccorp-sirts/main/docs/demo.gif) ## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ BROWSER │ │ React 18 + Vite + Tailwind CSS + Recharts │ │ LoginPage │ Dashboard │ Incidents │ Detail │ Admin Panel │ └──────────────────────┬──────────────────────────────────────┘ │ HTTP/REST (JWT Bearer Token) ┌──────────────────────▼──────────────────────────────────────┐ │ EXPRESS.JS API (Port 5000) │ │ Auth Middleware → Role Guard → Controllers → Prisma ORM │ │ │ │ /api/auth /api/incidents /api/users /api/dashboard │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ PostgreSQL Database (via Prisma ORM) │ │ Users │ Incidents │ Comments │ AuditLogs │ Sessions │ └─────────────────────────────────────────────────────────────┘ │ ┌────────────▼────────────┐ │ NVD CVE API (External) │ │ CVE enrichment on │ │ incident creation │ └─────────────────────────┘ ``` ## 技术栈 | 层级 | 技术 | |---|---| | **Frontend** | React 18, Vite, Tailwind CSS, React Router v6, Recharts | | **Backend** | Node.js, Express.js (ES Modules) | | **Database** | PostgreSQL via Prisma ORM | | **Auth** | JWT (jsonwebtoken), bcryptjs | | **External API** | NVD CVE API (漏洞增强) | | **API Style** | RESTful JSON | ## 核心功能 - **基于角色的访问控制** — 包含 ADMIN、SOC_LEAD、ANALYST、VIEWER 角色及受保护的路由 - **事件生命周期管理** — 创建、更新、上报、解决和关闭事件 - **SOC 仪表盘** — 柱状图(按天统计事件)、饼图(按类别)、统计卡片、最近事件动态 - **事件详情视图** — 完整的事件元数据、状态更新、评论/笔记、审计日志时间线 - **CVE 增强** — 事件可以关联到 CVE ID,并从 NVD API 拉取实时数据 - **管理面板** — 在选项卡界面中进行用户角色管理和事件分配 - **审计日志** — 每次状态更改和操作都会记录时间戳和操作者 - **JWT 身份验证** — 考虑了 HTTP-only 的无状态认证 - **暗色网络安全 UI** — Tailwind CSS 暗色主题,带有严重程度/状态的颜色编码徽章 ## 项目结构 ``` ccorp-sirts/ ├── client/ # React frontend (Vite) │ └── src/ │ ├── api/ # Axios instance │ ├── components/ # Navbar │ ├── context/ # AuthContext (JWT) │ └── pages/ # All page components │ ├── LoginPage.jsx │ ├── DashboardPage.jsx │ ├── IncidentsPage.jsx │ ├── IncidentDetailPage.jsx │ ├── NewIncidentPage.jsx │ └── UsersPage.jsx │ └── server/ # Express backend ├── controllers/ # Business logic ├── middleware/ # Auth + Role guards ├── prisma/ │ ├── schema.prisma # DB schema │ └── seed.js # Demo data seeder └── routes/ # API routes ``` ## 快速开始 ### 前置条件 - Node.js >= 18 - PostgreSQL 数据库 - npm 或 yarn ### 1. 克隆并安装 ``` git clone https://github.com/cyr6x/ccorp-sirts.git cd ccorp-sirts # 安装服务器依赖 cd server && npm install # 安装客户端依赖 cd client && npm install ``` ### 2. 配置环境 ``` # server/.env(以 .env.example 作为参考) DATABASE_URL="postgresql://USER:PASSWORD@localhost:5432/ccorp_sirts" JWT_SECRET="your-super-secret-jwt-key" PORT=5000 DIRECT_URL="postgresql://USER:PASSWORD@localhost:5432/ccorp_sirts" # client/.env VITE_API_URL=http://localhost:5000/api ``` ### 3. 数据库设置 ``` cd server # 运行 migrations npx prisma migrate dev --name init # 生成 Prisma 客户端 npx prisma generate # 填充 demo 数据 npx prisma db seed ``` ### 4. 运行开发服务器 (Frontend) ``` # 终端 1 — Backend(端口 5000) cd client && npm run dev # 终端 2 — Frontend(端口 5173) cd client && npm run dev ``` 在浏览器中打开 http://localhost:5173。 ## 演示凭据 | 角色 | 邮箱 | 密码 | 权限 | |---|---|---|---| | Admin | `admin@ccorp.local` | `Admin@1234` | 完整系统访问权限 | | SOC Lead | `lead@ccorp.local` | `Lead@1234` | 管理事件,分配分析师 | | Analyst | `analyst@ccorp.local` | `Analyst@1234` | 创建并处理事件 | | Viewer | `viewer@ccorp.local` | `Viewer@1234` | 只读访问权限 | ## API 参考 ### 身份验证 | 方法 | 端点 | 描述 | |---|---|---| | POST | `/api/auth/login` | 登录,返回 JWT | | POST | `/api/auth/register` | 注册新用户 | | GET | `/api/auth/me` | 获取当前用户 | ### 事件 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/api/incidents` | 列出所有事件 | | GET | `/api/incidents/:id` | 获取事件 + 评论 + 审计日志 | | POST | `/api/incidents` | 创建新事件 | | PATCH | `/api/incidents/:id` | 更新事件 | | DELETE | `/api/incidents/:id` | 删除(仅限 Admin) | | POST | `/api/incidents/:id/comments` | 添加评论 | ### 用户 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/api/users` | 列出所有用户 (Admin) | | PATCH | `/api/users/:id` | 更新用户角色 (Admin) | ### 仪表盘 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/api/dashboard/stats` | 用于仪表盘图表的事件统计 | ## 事件类别 `PHISHING` `MALWARE` `UNAUTHORIZED_ACCESS` `DDoS` `DATA_BREACH` `INSIDER_THREAT` `OTHER` ## 严重程度级别 | 级别 | 颜色 | SLA | |---|---|---| | CRITICAL | 🔴 红色 | 要求立即响应 | | HIGH | 🟠 橙色 | 在 1 小时内响应 | | MEDIUM | 🟡 黄色 | 在 4 小时内响应 | | LOW | 🟢 绿色 | 在 24 小时内响应 | ## 学术与专业背景 本项目作为网络安全与网络工学学士(荣誉)的毕业设计项目开发。展示了以下方面的实际应用: - **事件响应** — 符合 NIST SP 800-61 的结构化 IR 工作流(识别 → 抑制 → 根除 → 恢复 → 经验教训) - **网络安全** — JWT 身份验证、基于角色的授权、无状态 API 设计 - **SOC 运营** — 分析师工作流、上报路径、审计追踪、CVE 关联增强 - **安全开发** — 密码哈希、受保护的 API 路由、输入验证、环境变量隔离 ## 路线图 - [ ] 添加演示 GIF (`docs/demo.gif`) - [ ] 导出 draw.io 架构图 (`docs/architecture.drawio`) - [ ] 扩展 CVE API 集成并显示 CVSS 评分 - [ ] 创建 CRITICAL 级别事件时添加电子邮件通知 - [ ] Docker 化全栈以实现一键部署 ## 许可证 MIT — 允许学术使用,但需注明出处。
标签:CMS安全, Express, GNU通用公共许可证, JavaScript, JWT, MITM代理, Node.js, Prisma ORM, React, Recharts, RESTful API, Syscalls, Tailwind CSS, TypeScript, Vite, 单页面应用, 安全告警管理, 安全插件, 安全管理平台, 安全运营中心, 实战演练, 工单系统, 提示词优化, 毕业设计, 测试用例, 网络威胁, 网络安全, 网络映射, 网络研究, 自定义脚本, 角色权限控制, 隐私保护