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 [![Docker](https://img.shields.io/badge/Docker-Compose-blue?logo=docker)](https://docs.docker.com/compose/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.115+-green?logo=fastapi)](https://fastapi.tiangolo.com/) [![Next.js](https://img.shields.io/badge/Next.js-14-black?logo=nextdotjs)](https://nextjs.org/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-blue?logo=postgresql)](https://postgresql.org) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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