sujalthakur-03/SOAR-PROJECT

GitHub: sujalthakur-03/SOAR-PROJECT

一套面向 SOC 的轻量级 SOAR 平台,通过可视化 Playbook 编排实现安全告警的自动富化、调查与标准化响应。

Stars: 1 | Forks: 0

# CyberSentinel SOAR **安全编排、自动化与响应平台** CyberSentinel 是一个面向安全运营中心 的全栈 SOAR 平台。它从 Wazuh(通过专用的转发器)摄取安全告警,将其与用户定义的 Playbook 进行匹配,并执行自动化的响应工作流——包括富化、条件分支、人工审批关卡、遏制措施以及通知。 ## 架构 ``` ┌──────────────────────┐ │ Wazuh Manager │ │ (Alert Source) │ └─────────┬────────────┘ │ Forwarder (Python, runs on Wazuh server) │ POST /api/webhooks/trigger/:playbookId/:secret ▼ ┌──────────────────────────────────────────────────────────┐ │ soar-backend (Node.js / Express) port 3001 │ │ ─ Webhook ingestion & trigger evaluation │ │ ─ Playbook execution engine (step-by-step) │ │ ─ Connector integrations (VirusTotal, AbuseIPDB, …) │ │ ─ Approval workflow management │ │ ─ REST API for frontend │ └─────────┬────────────────────────────────────────────────┘ │ MongoDB (persistent storage) ▼ ┌──────────────────────────────────────────────────────────┐ │ soar-database (MongoDB 7.0) port 27017 │ │ ─ Playbooks, Executions, Cases, Audit Logs │ └──────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────┐ │ soar-frontend (React / TypeScript / Vite) port 3000 │ │ ─ Playbook manager & visual drag-and-drop editor │ │ ─ Execution timeline (live updates) │ │ ─ Approval console │ │ ─ Connector status, Audit log, SOC metrics dashboard │ └──────────────────────────────────────────────────────────┘ ``` ## 技术栈 | 层级 | 技术 | |-----------|----------------------------------------------------| | Frontend | React 18, TypeScript, Vite, Tailwind CSS, ReactFlow, shadcn/ui | | Backend | Node.js 18, Express, Mongoose | | Database | MongoDB 7.0 | | Forwarder | Python 3 (运行在 Wazuh 服务器上) | | Deployment| Docker Compose | ## 前置条件 - **Docker & Docker Compose**(推荐的部署方式) - 或:Node.js 18+, MongoDB 7.0+(用于手动设置) - 如果需要真实的告警摄取,需要一个 Wazuh 服务器 ## 快速开始 ``` git clone https://github.com/sujalthakur-03/SOAR-PROJECT.git cd SOAR-PROJECT # 根据示例创建 backend env 文件 cp backend/.env.example backend/.env # 使用您的 API keys 编辑 backend/.env(见下方 Environment 章节) # 构建并启动所有服务 docker compose up -d --build # 查看日志 docker compose logs -f ``` 运行后: | 服务 | URL | |----------|----------------------------| | Frontend | http://localhost:3000 | | Backend | http://localhost:3001 | | MongoDB | mongodb://localhost:27017 | ## 手动设置(不使用 Docker) ``` # Terminal 1 — Backend cd backend npm install cp .env.example .env # then edit .env npm start # listens on port 3001 # Terminal 2 — Frontend npm install npm run dev # listens on port 3000 ``` MongoDB 必须在本地默认端口上运行,或者在 `backend/.env` 中设置 `MONGODB_URI`。 ## 环境配置 所有后端配置位于 `backend/.env`。关键变量: ``` # MongoDB MONGODB_URI=mongodb://localhost:27017 MONGODB_DB_NAME=cybersentinel # Authentication JWT_SECRET= # Wazuh Active Response(不用于告警摄取) WAZUH_API_URL=https://your-wazuh-server:55000 WAZUH_API_USERNAME=... WAZUH_API_PASSWORD=... # Threat Intelligence VIRUSTOTAL_API_KEY=... ABUSEIPDB_API_KEY=... # Notifications SLACK_WEBHOOK_URL=https://hooks.slack.com/services/... SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=... SMTP_PASS=... # Firewall FIREWALL_API_URL=... FIREWALL_API_KEY=... # Server PORT=3001 NODE_ENV=production ``` 请参阅 `backend/.env.example` 获取带有描述的完整列表。 ## Forwarder 设置 **CyberSentinel Forwarder** 是一个运行在 Wazuh 服务器上的轻量级 Python 脚本。它实时读取 Wazuh `alerts.json` 文件中的告警,并将匹配的告警转发到 SOAR 后端的 Webhook 端点。 它是单独部署的——不在 Docker Compose 内部。请参阅 `forwarder/` 目录以获取其配置和设置说明。 ## 创建 Playbook 1. 在 `http://localhost:3000` 打开 Frontend 2. 在侧边栏导航到 **Playbooks** 3. 点击 **Create Playbook** 并使用可视化拖放编辑器定义步骤 4. 保存 Playbook —— 后端会自动生成一个 Webhook URL 5. 复制 Webhook URL 并在 Forwarder 的路由规则中进行配置 或者,通过 API: ``` # 创建 playbook curl -X POST http://localhost:3001/api/v2/playbooks \ -H "Content-Type: application/json" \ -d '{ "name": "SSH Brute Force Response", "description": "Automated response to SSH brute force attacks", "trigger": { "type": "webhook", "conditions": { "rule_id": "5763", "severity": "high" } }, "dsl": { "steps": [ { "step_id": "enrich-1", "type": "enrichment", "connector": "abuseipdb", "action": "check_ip" }, { "step_id": "cond-1", "type": "condition", "field": "enrich-1.abuse_score", "operator": "gt", "value": 80 }, { "step_id": "action-1", "type": "action", "connector": "firewall", "action": "block_ip" }, { "step_id": "notify-1", "type": "notification", "connector": "slack", "action": "send_message" } ] } }' # 从响应中获取 webhook URL # POST alerts 到该地址: curl -X POST http://localhost:3001/api/webhooks/trigger// \ -H "Content-Type: application/json" \ -d '{ "rule": { "id": "5763" }, "data": { "srcip": "1.2.3.4" } }' ``` ## 项目结构 ``` SOAR-PROJECT/ ├── src/ # Frontend source │ ├── components/ │ │ ├── views/ # Dashboard views (Playbooks, Executions, etc.) │ │ ├── playbook-editor/ # Visual drag-and-drop editor (ReactFlow) │ │ ├── cases/ # Case management components │ │ ├── layout/ # Sidebar, TopBar │ │ └── ui/ # shadcn/ui primitives │ ├── hooks/ # React Query hooks (usePlaybooks, useExecutions, …) │ ├── lib/ # API client, utilities │ ├── types/ # TypeScript type definitions │ └── pages/ # Route pages ├── backend/ │ └── src/ │ ├── models/ # Mongoose schemas (playbook-v2, execution, case, …) │ ├── routes/ # Express route handlers │ ├── services/ # Business logic (execution engine, metrics, SLA, …) │ ├── executors/ # Step executors (enrichment, action, notification) │ ├── integrations/ # External API clients │ └── index.js # Express app entry point ├── forwarder/ # Python forwarder (deployed on Wazuh server) ├── docker-compose.yml # Full-stack Docker deployment ├── Dockerfile # Frontend container └── backend/Dockerfile # Backend container ``` ## API 端点 ### Playbooks | Method | Endpoint | Description | |--------|-------------------------------------|--------------------------| | GET | `/api/v2/playbooks` | 列出所有 Playbook | | POST | `/api/v2/playbooks` | 创建一个 Playbook | | GET | `/api/v2/playbooks/:id` | 通过 ID 获取 Playbook | | PUT | `/api/v2/playbooks/:id` | 更新一个 Playbook | | DELETE | `/api/v2/playbooks/:id` | 删除一个 Playbook | ### Webhooks & Executions | Method | Endpoint | Description | |--------|--------------------------------------------------|--------------------------------| | POST | `/api/webhooks/trigger/:playbookId/:secret` | 通过 Webhook 触发 Playbook | | GET | `/api/v1/executions` | 列出执行记录 | | GET | `/api/v1/executions/:id` | 获取执行详情 | | GET | `/api/v1/executions/stats` | 执行统计信息 | ### Approvals, Cases, Metrics | Method | Endpoint | Description | |--------|--------------------------------|----------------------------| | GET | `/api/v1/approvals` | 待处理审批 | | POST | `/api/v1/approvals/:id/decide` | 批准 / 拒绝 | | GET | `/api/v1/cases` | 列出 Cases | | POST | `/api/v1/cases` | 创建一个 Case | | GET | `/api/soc/kpis` | SOC 指标 & KPI | ### Health | Method | Endpoint | Description | |--------|------------|-------------------| | GET | `/health` | Backend 健康检查 | ## 许可证 MIT
标签:AbuseIPDB, AMSI绕过, Ask搜索, CISA项目, DAST, Express, GNU通用公共许可证, IP 地址批量处理, LIDS, MITM代理, MongoDB, Node.js, PE 加载器, Python, SOAR平台, SOC效率提升, VirusTotal, Wazuh集成, Webhook, 事件响应工作流, 人工审批, 全栈安全平台, 剧本引擎, 力导向图, 告警分类, 威胁情报丰富, 威胁检测, 安全工具集成, 安全运营中心, 审计日志, 密码管理, 恶意软件分析, 插件系统, 无后门, 日志处理, 网络安全审计, 网络映射, 自动化响应, 自动化调查, 自定义脚本, 请求拦截, 逆向工具