Apurvabharoliya/sentinel-siem

GitHub: Apurvabharoliya/sentinel-siem

基于 React、Node.js 和 Supabase 构建的高性能全栈 SIEM 平台,提供实时威胁情报、日志管理和事件响应能力。

Stars: 0 | Forks: 0

# Sentinel SIEM 一个高性能、全栈的安全信息与事件管理(SIEM)平台,专为实时威胁情报、日志管理和事件响应设计 — 由 **Supabase** 提供支持。 ## 功能 - **实时数据摄取与日志管理**:使用 UI 虚拟化(`react-window`)高效查看和过滤海量日志流。 - **启发式关联引擎**:智能日志解析和自动化安全事件关联。 - **交互式安全模块**:EDR/XDR、WAF 和事件响应仪表板。 - **实时事件模拟与 WebSockets**:由实时事件引擎和 Socket.IO 驱动的动态数据更新。 - **安全认证**:通过 Supabase Auth 进行基于 JWT 的身份验证。 - **3D 网络可视化**:沉浸式 Three.js 背景,包含粒子系统和动画数据流。 ## 技术栈 ### 前端 - **React 19** + **TypeScript** + **Vite** - React Router(路由) - Recharts(数据可视化) - Socket.IO Client(实时事件) - React-Window(UI 虚拟化) - Three.js / @react-three/fiber(3D 背景) - Lucide React(图标) ### 后端 - **Node.js** & **Express**(REST API) - **Socket.IO**(WebSockets) - **Supabase**(数据库、身份验证、实时功能) ### 数据库 - 通过 **Supabase** 使用 **PostgreSQL** - 行级安全 (RLS) - 实时订阅 ## 项目结构 ``` siem-/ ├── src/ # Frontend React application │ ├── components/ # UI components (Dashboard, Logs, Incidents, etc.) │ ├── context/ # React context providers (Auth, GlobalState) │ ├── index.css # Global cyber-themed styles │ └── App.tsx # Root app with routing ├── server/ # Backend Node.js/Express application │ ├── server.js # Express server with Supabase integration │ └── .env.example # Backend env template ├── supabase/ # Database resources │ └── schema.sql # Full schema + seed data for Supabase ├── .env.example # Frontend env template └── README.md ``` ## 快速开始 ### 前置条件 - **Node.js** v18 或更高版本 - **一个 Supabase 账户**(在 [supabase.com](https://supabase.com) 提供免费套餐) ### 第 1 步:设置 Supabase 1. 访问 [supabase.com](https://supabase.com) 并创建一个新项目。 2. 创建完成后,转到 Supabase Dashboard 中的 **SQL Editor**。 3. 打开本项目中的 `supabase/schema.sql`,复制其内容,粘贴到 SQL Editor 中,然后点击 **Run**。 - 这将创建所有表(users、logs、threats、incidents、metrics)、索引、RLS 策略,并植入演示数据。 4. 转到 **Settings → API** 并复制您的: - **Project URL**(类似于 `https://abc123.supabase.co`) - **anon public key** - **service_role key**(这是一个密钥 — 切勿将其暴露给前端!) ### 第 2 步:配置环境 **后端** — 根据模板创建 `server/.env`: ``` cp server/.env.example server/.env ``` 使用您的 Supabase 凭据编辑 `server/.env`: ``` PORT=3001 SUPABASE_URL=https://your-project.supabase.co SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key ``` **前端** — 根据模板创建 `.env`: ``` cp .env.example .env ``` 默认的 `VITE_API_URL=http://localhost:3001` 应该可以直接开箱即用。 ### 第 3 步:安装并运行 **安装所有依赖项:** ``` npm install cd server && npm install && cd .. ``` **启动后端服务器:** ``` cd server npm run dev ``` 服务器在 `http://localhost:3001` 上启动。 **启动前端(在单独的终端中):** ``` npm run dev ``` Vite 前端可通过 `http://localhost:5173` 访问。 ### 第 4 步:登录 在登录屏幕上点击 **Quick Demo Access**,即可立即以 `demo_user` / `demo_pass` 身份登录。 ## API Endpoints | Method | Path | Auth Required | Description | |--------|-----------------------|---------------|------------------------------------| | POST | `/api/auth/login` | No | 使用用户名和密码登录 | | POST | `/api/auth/register` | No | 创建新账户 | | POST | `/api/auth/demo-login`| No | 即时演示登录 | | GET | `/api/health` | No | 健康检查 | | GET | `/api/logs` | Yes (JWT) | 获取所有日志(最新优先) | | GET | `/api/threats` | Yes (JWT) | 获取所有威胁(最新优先) | | GET | `/api/incidents` | Yes (JWT) | 获取所有事件(最新优先) | | GET | `/api/metrics` | Yes (JWT) | 获取仪表板指标 | | POST | `/api/chat` | No | AI Copilot 聊天(模拟) | ## Auth 流程 1. **Login** 和 **Register** 页面调用后端 Express API。 2. 后端使用 Supabase Admin API (`service_role`) 创建用户并验证凭据。 3. 成功后,后端返回一个 **JWT**(来自 Supabase Auth)和一个用户配置文件。 4. 前端将 JWT 存储在 `localStorage` 中,并将其作为 `Bearer` token 附加到后续的 API 调用中。 5. 后端 middleware 使用 `supabase.auth.getUser()` 验证 JWT。 ## 演示数据 `supabase/schema.sql` 在数据库中植入了: - **1 个演示用户** (`demo_user` / `demo_pass`) - **15 条示例日志**(各种级别和来源) - **10 条示例威胁**(SQLi、XSS、Brute Force、DDoS 等) - **7 个示例事件**(Open、Investigating、Resolved) - **1 行指标数据**,包含实时仪表板统计数据 应用程序运行时,前端 **SimulationRunner** 组件还会每隔几秒钟在客户端生成额外的虚假日志/威胁/事件。 ## 截图 | Dashboard | Log Explorer | Incidents | |-----------|-------------|-----------| | 实时 KPI、威胁时间线、攻击向量、实时信息流 | KQL 风格搜索、实时日志流、CSV 导出 | 事件分类、状态工作流、案例管理 | 怀着 ❤️ 为安全运营而构建。
标签:GNU通用公共许可证, MITM代理, Node.js, React, SIEM系统, Supabase, Syscalls, 安全事件响应, 安全运营, 扫描框架, 测试用例, 自动化攻击