Ramkumar2545/opencti-threatintel-tracker-v2
GitHub: Ramkumar2545/opencti-threatintel-tracker-v2
基于 FastAPI 和 Next.js 构建的生产级 OpenCTI 威胁情报 Feed 追踪仪表板,提供实时 IOC 监控、RBAC 权限管控与存储监控能力。
Stars: 0 | Forks: 0
# OpenCTI-ThreatIntel-Tracker v2.0
[](https://docs.docker.com/compose/)
[](https://fastapi.tiangolo.com/)
[](https://nextjs.org/)
[](https://postgresql.org)
[](LICENSE)
用于 OpenCTI 的生产级**威胁情报 Feed 追踪仪表板**。支持实时 IOC 追踪、RBAC、MFA、SSE 流式传输以及完整的存储监控模块——全部通过 Docker Compose 容器化部署。
## 功能
- 🔴 **实时 CTI 数据** —— 直接从 OpenCTI GraphQL API 拉取(无演示数据)
- 📡 **SSE 流式传输** —— 实时 feed 同步、IOC 添加、connector 状态事件
- 🔐 **RBAC** —— `superadmin / admin / analyst / readonly` 角色
- 🛡️ **MFA (TOTP)** —— 兼容 Google Authenticator / Authy
- 💾 **存储监控** —— 来自宿主机的实时 Linux 文件系统及 Docker 指标
- 🔄 **自动刷新** —— 15秒 / 30秒 / 1分钟 / 5分钟 / 15分钟 / 自定义间隔
- 🐳 **一键部署** —— `docker compose up -d`
- 🔒 **HTTPS 端口 1441** —— 通过 NGINX 入口点自动生成自签名 SSL 证书
## 技术栈
| 层级 | 技术 |
|---|---|
| Backend | FastAPI (Python 3.12), SQLAlchemy 2.x async, Alembic |
| Frontend | Next.js 14 (App Router), TypeScript 5.4, Chart.js 4, Lucide React |
| 数据库 | PostgreSQL 16 |
| 缓存 / 队列 | Redis 7 |
| 反向代理 | NGINX (nginx:alpine) |
| 容器化 | Docker Compose v2 |
| 认证 | JWT (HS256), pyotp TOTP, bcrypt |
## 快速开始
### 前置条件
- Docker + Docker Compose v2
- 运行在同一宿主机上的 OpenCTI 实例(在 `opencti-net` 网络中)
- Linux 宿主机(推荐使用 Ubuntu)
### 1. 克隆并配置
```
git clone https://github.com/Ramkumar2545/opencti-threatintel-tracker-v2.git
cd opencti-threatintel-tracker-v2
cp .env.example .env
```
编辑 `.env`:
```
NGINX_HOST=192.168.1.100 # Your server IP or domain
OPENCTI_ADMIN_TOKEN=xxxxxxxx # From OpenCTI → Settings → API Access
POSTGRES_PASSWORD=changeme
JWT_SECRET=change-this-secret-use-openssl-rand
REDIS_PASSWORD=changeme
```
### 2. 部署
```
docker compose up -d
```
NGINX 将在首次启动时自动生成自签名 SSL 证书。
### 3. 访问
```
https://:1441
```
首个 superadmin 账号通过 `.env` 中的 `SUPERADMIN_EMAIL` / `SUPERADMIN_PASSWORD` 进行初始化。
## 环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
| `NGINX_HOST` | ✅ | 用于 SSL SAN 的服务器 IP 或域名 |
| `OPENCTI_ADMIN_TOKEN` | ✅ | OpenCTI API bearer token |
| `POSTGRES_PASSWORD` | ✅ | PostgreSQL 密码 |
| `JWT_SECRET` | ✅ | HS256 JWT 签名密钥(至少 32 个字符) |
| `REDIS_PASSWORD` | ✅ | Redis AUTH 密码 |
| `SUPERADMIN_EMAIL` | ✅ | 首个 superadmin 登录邮箱 |
| `SUPERADMIN_PASSWORD` | ✅ | 首个 superadmin 密码 |
| `DATABASE_URL` | 自动 | 根据 POSTGRES 变量自动设置 |
| `OPENCTI_URL` | 可选 | 默认为 `http://opencti:8080` |
| `HOST_ROOT_PATH` | 自动 | `/host/root`(在 docker-compose 中设置) |
## RBAC 角色
| 角色 | 仪表板 | Feed 配置 | 存储 | 管理员 | 设置 |
|---|---|---|---|---|---|
| `superadmin` | ✅ | ✅ | ✅ 完全 | ✅ | ✅ |
| `admin` | ✅ | ✅ | ✅ + 扫描 | ✅ 用户 | ❌ |
| `analyst` | ✅ | 只读 | ✅ 只读 | ❌ | ❌ |
| `readonly` | ✅ | 只读 | 汇总 | ❌ | ❌ |
## 仪表板页面
| 路由 | 描述 |
|---|---|
| `/dashboard` | 概览 KPI 及图表 |
| `/feeds` | Feed 源表格及健康状态 |
| `/iocs` | IOC 子页面:URL、IP、域名、主机名、邮箱 |
| `/threats/vulnerabilities` | 通过 OpenCTI 获取来自 NVD 的 CVE 列表 |
| `/threats/ransomware` | 勒索软件组织追踪器 |
| `/threats/malware` | 恶意软件家族细分 |
| `/projects` | 项目卡片及 IOC 范围界定 |
| `/storage` | 存储监控(7 个子标签页) |
| `/admin/users` | 用户管理 |
| `/admin/connectors` | OpenCTI connector 状态 |
| `/profile` | 用户资料 + MFA + 会话 |
| `/settings` | 系统配置(superadmin) |
## 存储监控模块
完整文档请参阅 [`README-STORAGE.md`](README-STORAGE.md)。
**数据源(实时来自宿主机):**
- `psutil` —— 文件系统 df-h 指标
- 通过 `/var/run/docker.sock` 的 Docker SDK —— `docker system df`
- 通过 `/host/root` 只读挂载的 `du` 扫描 —— OpenCTI 路径估算
- APScheduler —— 1分钟 / 5分钟 / 15分钟 收集间隔
**警报阈值:**
- ℹ️ 信息:已用 ≥60%
- ⚠️ 警告:已用 ≥70%
- 🔶 高危:已用 ≥85%
- 🔴 严重:已用 ≥90% 或剩余空间预计 ≤7 天耗尽
## 构建批次顺序
| 批次 | 部分 | 文件 |
|---|---|---|
| **批次 1** | Docker + NGINX | `docker-compose.yml`, `nginx/`, `.env.example` |
| **批次 2** | 数据库 Schema | `alembic/`, 所有 SQLAlchemy 模型 |
| **批次 3** | 后端核心 | 认证、feeds、IOCs、threats、projects 路由 |
| **批次 4** | 存储后端 | `disk_metrics`, `docker_metrics`, `storage_projection`, `storage_alerts` |
| **批次 5** | 前端 CTI | 所有仪表板页面 + CTI 组件 |
| **批次 6** | 前端存储 | `/storage` 页面 + 所有存储组件 |
| **批次 7** | 文档 + CI | `README.md`, `CHANGELOG.md`, GitHub Actions |
## SSL
首次执行 `docker compose up -d` 时,会通过 `nginx/entrypoint.sh` 使用 OpenSSL 自动生成自签名证书。证书存储在 `nginx_ssl` Docker volume 中,并在重启后持久保留。
对于生产环境,请通过将其挂载到 `nginx_ssl` volume 中,替换为 Let's Encrypt 或 CA 签名的证书。
## 许可证
MIT © 2026 Ramkumar2545
标签:AV绕过, Docker Compose, FastAPI, OpenCTI, 可视化看板, 威胁情报, 安全运营, 开发者工具, 扫描框架, 版权保护, 负责任AI