alive-xd/SentriX
GitHub: alive-xd/SentriX
Sentrix 是一个基于 FastAPI 与 Next.js 14 构建的开源模块化安全运营中心(SOC)平台,为蓝队提供集中的告警管理、威胁情报追踪、案件协同与 SOAR 自动化基础。
Stars: 4 | Forks: 0
## 🌟 概述
**Sentrix** 是一个模块化、面向服务的安全运营中心 (SOC) 工作区。
Sentrix 采用企业级架构模式(Next.js App Router、FastAPI、PostgreSQL 和 Redis)构建,为构建高级安全工作流提供了坚实的基础。它将告警管理、威胁情报追踪和案件协作集中到一个直观的界面中,为开发者和安全团队提供了一个具有高度可扩展性的底层平台。
## 🏢 应用场景
- **开发基础**:实现了模块化的面向服务的后端,非常适合构建自定义 SOC 解决方案。
- **事件响应工具**:使用 Docker 将 Sentrix 快速部署到环境中,建立集中的追踪工作区。
- **网络靶场与教育**:支持种子数据集,用于逼真的开发与演示,以及针对初级分析师的事件响应工作流培训。
## 📊 项目统计
| 指标 | 验证数量 |
| :--- | :--- |
| **前端页面** | 29 |
| **REST API Endpoints** | 81 |
| **数据库表** | 26 |
| **后端服务** | 13 |
| **种子告警** | 485 |
| **审计日志条目** | 1000 |
## 🎯 设计目标
1. **现代架构**:全面采用异步 Python (`asyncio`, `asyncpg`),并由严格的 Repository/Service 模式提供支持。
2. **可操作的上下文**:集中式仪表盘,将威胁情报和恶意软件元数据直接关联至案件。
3. **无摩擦部署**:初始部署无需复杂的 Kubernetes manifests;只需纯粹的 Docker Compose。
4. **极佳的用户体验**:Sentrix 利用 TailwindCSS、shadcn/ui 和 Framer Motion 打造高级的暗色主题美学。
## ✨ 当前功能
### ✅ 已完全实现
- **告警管理**:提供完整的 CRUD REST API 和用于管理安全告警的 UI。
- **案件管理**:通过专属的时间线和 artifact 关联功能协同处理事件。
- **身份验证**:无状态的 JWT 生命周期,并由 Redis 支持的 refresh token 黑名单机制。
- **审计日志**:全面的用户行为内部追踪。
- **分页与过滤**:在主要数据网格中实现了标准化。
### ⚠️ 部分实现
- **基础全局搜索**:在主要实体间进行广泛的 SQL `ILIKE` 搜索。
- **基础基于角色的访问控制**:包含数据库模型和基本的超级用户强制执行机制。
- **威胁情报 IOC 追踪**:在本地数据库中管理威胁指标 (IP、哈希)。
- **恶意软件样本管理**:追踪逆向工程中的 artifact 元数据。
- **仪表盘**:聚合指标展示和近期活动流。
- **组织分组**:基础的多租户模型。
### 🗺️ 计划路线图
- **AI 调查工作区 (架构已就绪)**:UI 已完成;后端目前返回模拟的推理步骤,等待接入 LLM。
- **SOAR Playbook 管理**:拖拽式的 playbook 设计 UI 已完成;执行引擎待规划。
- **威胁狩猎工作区**:已支持查询保存;高级遥测搜索引擎待规划。
- **外部集成**:VirusTotal、AlienVault OTX 和沙箱 API 同步。
- **高管报告**:定时的 PDF 报告生成。
## 📸 截图
| 仪表盘 | 告警 |
|-----------|--------|
|  |  |
| 带有告警严重性细分和分析师工作量分布的威胁指标 | 带有 MITRE ATT&CK 技术标签和一键提升为案件功能的活跃告警队列 |
| 案件 | 威胁情报 |
|-------|-------------------|
|  |  |
| 包含 artifact 关联、分析师笔记和严重性追踪的完整事件时间线 | IOC 管理与指标信誉追踪 |
| 恶意软件分析 | 威胁狩猎 |
|-----------------|----------------|
|  |  |
| 带有 SHA256 追踪和案件关联的恶意软件 artifact 追踪 | 威胁狩猎查询工作区 |
| SOAR 自动化 |
|----------------|
|  |
| 拖拽式 playbook 构建器界面 |
## 🎥 演示演示
[](https://loom.com/REPLACE_WITH_YOUR_LINK)
*在 [loom.com](https://loom.com) 免费录制*
## 🏗️ 系统架构
Sentrix 被设计为一个高性能的 Web 应用程序,采用了受微服务启发的单体架构。
```
graph TD
Client[Web Browser] -->|HTTPS| Proxy[Nginx / Traefik]
subgraph "Frontend Tier"
Proxy --> UI[Next.js 14 App Router]
UI --> ReactQuery[TanStack Query]
UI --> Tailwind[TailwindCSS]
end
subgraph "Backend Tier"
UI -->|REST API| API[FastAPI Gateway]
API --> Auth[Auth Middleware]
Auth --> Controllers[Routers]
Controllers --> Services[Service Layer]
Services --> Repos[Repository Layer]
end
subgraph "Data Tier"
Repos --> PG[(PostgreSQL 16 + SQLAlchemy 2.0)]
Repos --> Redis[(Redis 7)]
end
style Client fill:#1e293b,color:#fff,stroke:#334155
style UI fill:#0ea5e9,color:#fff,stroke:#0284c7
style API fill:#10b981,color:#fff,stroke:#059669
style PG fill:#3b82f6,color:#fff,stroke:#2563eb
style Redis fill:#ef4444,color:#dc2626
```
### 请求生命周期
```
sequenceDiagram
participant Client
participant FastAPI
participant Auth
participant Service
participant Database
Client->>FastAPI: HTTP Request (e.g., GET /api/v1/alerts)
FastAPI->>Auth: Verify JWT Token
Auth-->>FastAPI: User Context
FastAPI->>Service: Call Business Logic
Service->>Database: Execute Async SQL Query
Database-->>Service: Return ORM Models
Service-->>FastAPI: Return Pydantic Schemas
FastAPI-->>Client: JSON Response
```
## 🔄 SOC 调查工作流
Sentrix 的主要目标是简化事件响应 pipeline。
```
flowchart TD
A[Alert Ingestion] --> B{Triage}
B -->|False Positive| C[Close Alert]
B -->|True Positive| D[Assign Analyst]
D --> E[Create Investigation Case]
E --> F[Threat Intel Lookup]
F --> G[Threat Hunting]
G --> H[Malware Analysis]
H --> I[Assign SOAR Playbook]
I --> J[Containment & Remediation]
J --> K[Executive Reporting]
K --> L[Close Case]
style I fill:#8b5cf6,color:#fff,stroke:#7c3aed
style A fill:#3b82f6,color:#fff,stroke:#2563eb
style L fill:#10b981,color:#fff,stroke:#059669
```
## 🛠️ 技术栈
| 领域 | 技术 | 描述 |
| :--- | :--- | :--- |
| **前端框架** | Next.js (App Router) | 高性能 React 框架。 |
| **样式与 UI** | TailwindCSS + Lucide Icons | 实用优先的 CSS 和现代 SVG 图标。 |
| **状态与数据获取** | TanStack React Query | 高级缓存、去重和轮询。 |
| **后端 API** | FastAPI (Python 3.11) | 超快的异步 Python Web 框架。 |
| **数据库 (关系型)** | PostgreSQL 16 + SQLAlchemy 2.0 | 主数据存储,带有完全异步的 ORM。 |
| **缓存与认证** | Redis 7 | JWT 黑名单和临时状态存储。 |
| **容器化** | Docker + Docker Compose | 隔离、可复现的部署环境。 |
## 📁 项目结构
```
SentriX/
├── backend/ # FastAPI backend application
│ ├── app/ # Main application logic (API, Models, Services)
│ ├── alembic/ # Database migrations
│ ├── scripts/ # DB seeding and utility scripts
│ └── tests/ # Backend unit and integration tests
├── frontend/ # Next.js frontend application
│ ├── app/ # Next.js App Router pages
│ ├── components/ # Reusable UI components
│ └── lib/ # Utility functions and API clients
├── screenshots/ # UI screenshots for README
├── assets/ # Logos and banners
├── .github/ # Issue templates and PR guidelines
└── docker-compose.yml # Local orchestration
```
## 🗄️ 数据库 Schema
基于严格的 SQLAlchemy 2.0 ORM 模型构建,带有 `UUID` 主键、软删除功能以及稳健的级联关系。
```
erDiagram
USERS ||--o{ CASES : "assigns"
USERS {
uuid id PK
string email
string hashed_password
string role
boolean is_active
}
CASES ||--o{ ALERTS : "contains"
CASES {
uuid id PK
string title
string status
string severity
uuid assignee_id FK
}
ALERTS ||--o{ ASSETS : "impacts"
ALERTS {
uuid id PK
string rule_name
string severity
jsonb payload
}
MALWARE_SAMPLES ||--o{ CASES : "links_to"
MALWARE_SAMPLES {
uuid id PK
string sha256
string verdict
int threat_score
}
```
## 🔌 API 文档
Sentrix 提供由 FastAPI 自动生成的美观的 Swagger/OpenAPI 文档。
- **Swagger UI**: `/docs` (例如 `http://localhost:8000/docs`)
- **ReDoc**: `/redoc` (例如 `http://localhost:8000/redoc`)
请求示例 (创建告警):
```
curl -X POST "http://localhost:8000/api/v1/alerts" \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"rule_name": "Suspicious Login", "severity": "HIGH", "status": "OPEN"}'
```
## 🚀 快速开始
### 一键启动 (Docker)
在本地运行整个 Sentrix 平台:
```
# 1. Clone 仓库
git clone https://github.com/alive-xd/SentriX.git
cd SentriX
# 2. 复制环境变量
cp backend/.env.example backend/.env
# 3. 启动基础设施 (Postgres, Redis, Backend)
docker compose up -d
# 4. 在单独的终端中,安装并启动 frontend
cd frontend
npm install
npm run dev
```
导航至 [http://localhost:3000](http://localhost:3000) 并使用默认的种子凭据登录:
- **Email**: `admin@stark.com`
- **Password**: `password123`
## ⚙️ 安装
对于不使用 Docker 的裸机本地安装:
1. 确保您的主机上正在运行 **PostgreSQL 16** 和 **Redis 7**。
2. 为后端设置 Python 3.11 虚拟环境,并安装 `backend/requirements.txt`。
3. 通过 `alembic upgrade head` 运行数据库迁移。
4. 通过 `uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4` 运行后端。
5. 通过 `npm run build` 构建前端,并通过 `npm run start` 启动。
## 🔑 环境变量
`backend/.env` 中定义的关键环境变量:
| 变量 | 描述 |
| :--- | :--- |
| `DATABASE_URL` | PostgreSQL 异步连接字符串 (`postgresql+asyncpg://`) |
| `REDIS_URL` | Redis 连接字符串 (`redis://`) |
| `SECRET_KEY` | 用于 JWT 签名的 256 位密钥。**在生产环境中必须进行轮换。** |
## 🌱 数据库填充
为了测试,向数据库中填充逼真的告警、案件、恶意软件样本和威胁情报:
```
docker compose exec backend python -m scripts.seed_database
```
这会自动向数据库中准确插入 485 条告警、120 个案件、300 个威胁指标、150 个资产和 1000 条审计日志。
## 🔐 安全特性
- **JWT (JSON Web Tokens)**:安全的 token,具有由 Redis 支持的 refresh token 轮换和注销黑名单机制。
- **密码哈希**:通过 `passlib` 实现业界标准的 `bcrypt` 哈希。
- **基础基于角色的访问控制**:防止权限提升的数据库结构。
- **SQL 注入防护**:完全依赖 SQLAlchemy ORM 参数化查询。
- **输入验证**:Pydantic v2 schema 严格清理所有传入的 API payload。
## 🛡️ 架构与威胁模型
- **信任边界**:API Gateway (FastAPI) 充当数据层的唯一入口。假设所有内部服务间通信 (PostgreSQL, Redis) 在内部 Docker 桥接网络后都是安全的。
- **静态数据**:敏感的分析师密码经过加密保护。
- **传输中数据**:生产环境部署应在反向代理处终止 TLS。
## 🧪 测试
Sentrix 拥有一套基础测试套件,以确保 API 健康状况和基本身份验证的强制执行。
在本地运行单元测试:
```
cd backend
pytest -v
```
## 📖 文档
整个平台的文档均包含在此 README 中,以确保所有架构、部署和操作流程均拥有单一事实来源。
## ❓ 常见问题解答
**问:我可以用 Sentrix 替换我的 SIEM 吗?**
答:不可以,Sentrix 被设计为一个 SOAR 和案件管理工作区,旨在*依附于* SIEM 之上运行。
**问:有付费的企业版吗?**
答:没有。Sentrix 是 100% 开源的,基于 MIT 许可协议。
## 📅 更新日志
查看 [CHANGELOG.md](CHANGELOG.md) 获取详细的版本历史。
## 🙏 致谢
特别感谢促成此项目的开源项目:
- **FastAPI** (作者:Tiangolo)
- **Next.js** (作者:Vercel)
- **PostgreSQL** 社区
## 📜 许可协议
本项目基于 MIT 许证 - 详情请参阅 [LICENSE](LICENSE) 文件。
标签:AV绕过, FastAPI, SOAR自动化, 告警管理, 威胁情报, 安全运营中心, 库, 应急响应, 开发者工具, 搜索引擎查询, 测试用例, 网络映射, 请求拦截, 逆向工具