franjmenezz/realtime-threat-intelligence-platform

GitHub: franjmenezz/realtime-threat-intelligence-platform

一个基于 PySpark Streaming 和 Kafka 的全栈实时威胁情报平台,从 OSINT 源采集 IoC 数据并经过 ML 风险评分后在 SOC 仪表板上实时展示。

Stars: 1 | Forks: 1

# 🛡️ 实时威胁情报平台
[🇬🇧 English](README.md) · [🇪🇸 Español](README.es.md) ![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=for-the-badge&logo=python&logoColor=white) ![PySpark](https://img.shields.io/badge/PySpark-3.5-E25A1C?style=for-the-badge&logo=apachespark&logoColor=white) ![Kafka](https://img.shields.io/badge/Apache_Kafka-3.7-231F20?style=for-the-badge&logo=apachekafka&logoColor=white) ![Next.js](https://img.shields.io/badge/Next.js-14-000000?style=for-the-badge&logo=nextdotjs&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-0.111-009688?style=for-the-badge&logo=fastapi&logoColor=white) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-4169E1?style=for-the-badge&logo=postgresql&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?style=for-the-badge&logo=docker&logoColor=white) **一个基于 Apache Spark Structured Streaming 构建的生产级、实时威胁情报平台。** 从多个 OSINT 来源获取 IoC 数据源,使用地理位置和信誉数据进行丰富,通过加权 ML 模型对其进行评分,并提供带有实时事件流的全栈 SOC 分析师仪表板。 [功能特性](#-features) · [系统架构](#-architecture) · [技术栈](#-tech-stack) · [快速开始](#-quick-start) · [API 文档](#-api-reference) · [路线图](#-roadmap)
![Dashboard Preview](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8543ed3f29023620.png)
## 📌 概述 本项目模拟了安全运营中心 (SOC) 内部使用的真实工作流程。系统持续从公共 OSINT 数据源获取**威胁指标** —— 恶意 IP、域名、文件哈希和 URL —— 使用上下文元数据对每一个指标进行丰富,使用 ML 分配**风险评分**,并通过现代暗黑模式仪表板显示可操作的告警。 端到端覆盖了整个数据生命周期: ``` Ingestion → Kafka → PySpark Streaming → Enrichment → ML Scoring → PostgreSQL → FastAPI → Next.js ``` ## ✨ 功能特性 ### 🔄 实时流处理管道 - 通过 **Apache Kafka** 主题进行多源 IoC 摄取 - 使用 **PySpark Structured Streaming** 进行亚秒级处理 - 具有 5 秒触发间隔的微批处理架构 - 自动检查点和故障恢复 ### 🌍 OSINT 数据源集成 | 来源 | 类型 | 免费额度 | |--------|------|-----------| | **AbuseIPDB** | IP 信誉 | 1,000 次查询/天 | | **VirusTotal** | 哈希与 URL 分析 | 500 次查询/天 | | **AlienVault OTX** | 社区数据源 | 无限制 | | **Mock Feed** | 开发数据 | 始终可用 | ### 🧠 基于 ML 的风险评分 - 使用丰富信号的加权评分引擎 (0–100) - 特征:AbuseIPDB 评分、VirusTotal 检出率、Tor/VPN 标志、来源置信度 - 风险等级:`CRITICAL` · `HIGH` · `MEDIUM` · `LOW` · `INFO` - 可扩展至训练好的 PySpark MLlib 随机森林模型 ### 📊 专业 SOC 仪表板 - 带有 App Router 和暗黑模式的 **Next.js 14** - 通过 **Server-Sent Events (SSE)** 实时获取 IoC 数据 - 交互式图表:区域时间线、按类型划分的环形图、按国家/地区划分的条形图 - 具有过滤、搜索和分页功能的 IoC 浏览器 - 具有严重性过滤器的告警管理 - JWT 认证 ### 🐳 一键部署 - 通过 `docker-compose up -d` 启动全栈 - 服务:Kafka, Zookeeper, Spark, PostgreSQL, FastAPI, Next.js - 健康检查、自动重启和优雅停机 ## 🏗️ 系统架构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ OSINT DATA SOURCES │ │ AbuseIPDB VirusTotal AlienVault OTX Mock Feed Generator │ └───────────────────────────────┬──────────────────────────────────────┘ │ Python Kafka Producers ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ APACHE KAFKA │ │ [iocs.raw] [iocs.enriched] [alerts.critical] │ └───────────────────────────────┬──────────────────────────────────────┘ │ Structured Streaming ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ PYSPARK PROCESSING LAYER │ │ Kafka Source → Deserialization → Enrichment UDFs │ │ → ML Risk Scoring │ │ → Alert Rules Engine │ │ → foreachBatch → PostgreSQL │ └───────────────────────────────┬──────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ PostgreSQL 16 (hot storage) Parquet (cold archive) │ └───────────────────────────────┬──────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ FASTAPI — REST + SSE — Swagger at /docs │ └───────────────────────────────┬──────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ NEXT.JS 14 — Dashboard · IoC Explorer · Alerts · Settings │ └──────────────────────────────────────────────────────────────────────┘ ``` ## 🛠️ 技术栈 | 层级 | 技术 | 版本 | 用途 | |-------|-----------|---------|---------| | **流代理** | Apache Kafka | 3.7 | IoC 事件消息队列 | | **流处理** | PySpark Structured Streaming | 3.5 | 分布式实时处理 | | **ML 引擎** | PySpark MLlib | 3.5 | 风险评分模型 | | **API** | FastAPI + Uvicorn | 0.111 | REST 端点 + SSE 实时数据流 | | **数据库** | PostgreSQL | 16 | IoC 和告警存储 | | **前端** | Next.js App Router | 14 | SOC 分析师仪表板 | | **图表** | Recharts | 2.12 | 数据可视化 | | **基础设施** | Docker Compose | — | 全栈编排 | | **CI/CD** | GitHub Actions | — | 自动化测试和代码检查 | ## 🚀 快速开始 ### 前置条件 - [Docker Desktop](https://www.docker.com/products/docker-desktop/) — 至少 8 GB 内存 - [Git](https://git-scm.com/) ### 1. 克隆并配置 ``` git clone https://github.com/YOUR_USERNAME/realtime-threat-intelligence-platform.git cd realtime-threat-intelligence-platform cp .env.example .env ``` ### 2. 启动全栈 ``` docker-compose up -d ``` 首次运行大约需要 5 分钟来下载所有镜像。后续启动大约需要 30 秒。 ### 3. 启动模拟 IoC 数据源 ``` docker-compose --profile dev up -d mock-feed ``` ### 4. 打开仪表板 | 服务 | URL | 凭证 | |---------|-----|-------------| | **Dashboard** | http://localhost:3000 | admin@threatintel.local / changeme | | **API Swagger** | http://localhost:8000/docs | — | | **健康检查** | http://localhost:8000/health | — | ## ⚙️ 配置 所有字段都有可用的默认值。**API 密钥是可选的** —— 如果没有它们,系统会使用逼真的模拟数据。 ``` # OSINT API 密钥 (可选) ABUSEIPDB_API_KEY= # abuseipdb.com — free, 1000 req/day VIRUSTOTAL_API_KEY= # virustotal.com — free, 500 req/day OTX_API_KEY= # otx.alienvault.com — free, unlimited # Auth JWT_SECRET=change_this_to_a_strong_random_secret # Mock 订阅源 MOCK_FEED_INTERVAL_SECONDS=3 MOCK_FEED_BATCH_SIZE=5 ``` ## 📡 API 参考 完整的交互式文档位于 `http://localhost:8000/docs`。 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `POST` | `/api/v1/auth/login` | JWT 认证 | | `GET` | `/api/v1/iocs` | 列出带有过滤和分页的 IoC | | `GET` | `/api/v1/iocs/{id}` | 单个 IoC 详情 | | `POST` | `/api/v1/iocs/search` | IoC 全文搜索 | | `GET` | `/api/v1/alerts` | 活动告警列表 | | `GET` | `/api/v1/stats/summary` | 仪表板指标 | | `GET` | `/api/v1/stats/timeline` | 24 小时获取时间线 | | `GET` | `/api/v1/stats/by-country` | 按国家/地区划分的 IoC 数量 | | `GET` | `/api/v1/stream/iocs` | SSE 实时 IoC 数据流 | ## 🗺️ 路线图 - [x] 完整的 Docker Compose 全栈 (6 个服务) - [x] PySpark Structured Streaming 管道 - [x] 带有模拟 IoC 数据源的 Kafka 生产者 - [x] 地理、ASN 和信誉丰富 UDF - [x] 加权 ML 风险评分引擎 - [x] FastAPI REST + SSE 端点 + Swagger - [x] Next.js 14 仪表板 — 暗黑模式、图表、实时数据流 - [x] JWT 认证 - [x] GitHub Actions CI 管道 - [ ] AbuseIPDB / VirusTotal / OTX 实时集成 - [ ] 训练好的 PySpark MLlib 随机森林模型 - [ ] 完整的单元和集成测试套件 - [ ] Kubernetes 部署清单 ## 📄 许可证 根据 MIT 许可证分发。详情请参见 `LICENSE`。
由 ☕ 和对网络流量的健康“偏执”构建而成。
标签:Apache Kafka, AV绕过, Docker Compose, ESC4, FastAPI, IoC, IP 地址批量处理, ML机器学习, Next.js 14, OSINT, PostgreSQL, PySpark, Python, React, Structured Streaming, Syscalls, 前后端分离, 大数据处理, 威胁情报, 威胁数据源, 安全仪表盘, 安全告警, 安全评分, 安全运营中心, 实时处理, 实时流计算, 密码管理, 开发者工具, 恶意IP检测, 恶意域名, 攻击指标, 数据富化, 数据工程, 文件哈希, 无后门, 流式数据处理, 测试用例, 网络信息收集, 网络安全, 网络安全监控, 网络映射, 自动化攻击, 请求拦截, 软件成分分析, 逆向工具, 隐私保护, 风险量化, 驱动开发