musfiraahmed31/threat-intel-platform-ccp
GitHub: musfiraahmed31/threat-intel-platform-ccp
基于 Spring Boot 微服务和 Kafka 事件驱动架构的威胁情报处理平台,实现从外部源采集、提取、评分到存储 IOC 的完整流水线。
Stars: 0 | Forks: 0
# 🛡️ 威胁情报处理平台
**COMP-370 – 软件构建与开发**
**CCP:使用 Microservices 开发安全系统**
**指导教师:Malik Nabeel Ahmed Awan 博士**
## 📌 概述
一个基于分布式 Microservices 的网络安全平台,具备以下功能:
- 从 AbuseIPDB 和 AlienVault(或模拟 API)获取威胁情报
- 提取失陷指标:IP 地址和域名
- 通过 Apache Kafka 流式传输数据(事件驱动架构)
- 通过外部/模拟 ranking API 对 IOC 进行评分
- 将增强后的数据存储在 MySQL 中
- 提供 REST API 用于查询和分析
- 提供简洁的 HTML/CSS/JS 前端仪表板
## 🏗️ 架构
```
[AbuseIPDB / AlienVault APIs]
│
▼
┌─────────────────────┐
│ Ingestion Service │ :8081
└────────┬────────────┘
│ REST
▼
┌─────────────────────┐
│ Extraction Service │ :8082
└────────┬────────────┘
│ REST
▼
┌────────────────────────────┐
│ Kafka Producer Service │ :8083 ──► Kafka Topic: ioc-raw
└────────────────────────────┘
│
▼
┌────────────────────────────┐
│ Processing/Consumer Svc │ :8084
└────────────┬───────────────┘
│ REST
▼
┌─────────────────────┐
│ Ranking Service │ :8085
└──────────┬──────────┘
│ REST
▼
┌─────────────────────┐
│ Database Service │ :8086
└──────────┬──────────┘
│
MySQL
│
┌──────────▼──────────┐
│ Frontend (HTML) │ browser
└─────────────────────┘
```
## 🧩 Microservices
| 服务 | 端口 | 描述 |
|---|---|---|
| ingestion-service | 8081 | 从 AbuseIPDB/AlienVault 获取数据 |
| extraction-service | 8082 | 解析 JSON,提取 IP 和域名 |
| kafka-producer-service | 8083 | 将 IOC 发布到 Kafka |
| processing-service | 8084 | 从 Kafka 消费,验证 IOC |
| ranking-service | 8085 | 分配严重性评分 |
| database-service | 8086 | 存储和查询 IOC 数据
## ⚙️ 技术栈
- **后端**:Spring Boot 3.x (Java 17)
- **消息传递**:Apache Kafka 3.x
- **数据库**:MySQL 8.x
- **前端**:HTML5, CSS3, Vanilla JavaScript
- **构建工具**:Maven
## 🚀 快速入门
### 前置条件
- Java 17+
- Maven 3.8+
- Docker 和 Docker Compose(推荐用于 Kafka + MySQL)
- 或:本地安装的 Kafka + MySQL
### 步骤 1 – 启动基础设施
```
docker-compose up -d
```
这将启动:
- Zookeeper,端口 2181
- Kafka,端口 9092
- MySQL,端口 3306
### 步骤 2 – 初始化数据库
```
mysql -u root -p < database-service/src/main/resources/schema.sql
```
### 步骤 3 – 启动所有服务(按顺序)
```
# 终端 1 – Database Service
cd database-service && mvn spring-boot:run
# 终端 2 – Ranking Service
cd ranking-service && mvn spring-boot:run
# 终端 3 – Processing Service
cd processing-service && mvn spring-boot:run
# 终端 4 – Kafka Producer Service
cd kafka-producer-service && mvn spring-boot:run
# 终端 5 – Extraction Service
cd extraction-service && mvn spring-boot:run
# 终端 6 – Ingestion Service
cd ingestion-service && mvn spring-boot:run
```
### 步骤 4 – 打开前端
在浏览器中打开 `frontend/index.html`。
## 📡 触发 Pipeline
```
# 从 AbuseIPDB 触发 Ingestion (mock)
curl -X POST http://localhost:8081/api/ingest/start
# 检查提取的 IOC
curl http://localhost:8086/api/iocs
# 获取高风险 IOC
curl http://localhost:8086/api/iocs/high-risk
```
## 📊 Kafka Topics
| Topic | 用途 |
|---|---|
| `ioc-raw` | 来自 extraction service 的原始 IOC |
| `ioc-processed` | 来自 processing service 的已验证 IOC |
| `ioc-ranked` | 带有严重性评分的 IOC |
## 🧪 Postman 集合
从根目录导入 `postman_collection.json`。
## 📁 项目结构
```
threat-intel-platform/
├── docker-compose.yml
├── ingestion-service/
├── extraction-service/
├── kafka-producer-service/
├── processing-service/
├── ranking-service/
├── database-service/
├── frontend/
│ ├── index.html
│ ├── css/styles.css
│ ├── js/app.js
│ └── assets/
├── postman_collection.json
└── README.md
```
标签:AbuseIPDB, AlienVault, Apache Kafka, HTML/CSS/JS, IOC提取, IP地址分析, IP 地址批量处理, Python, REST API, Sigma 规则, 事件驱动架构, 分布式系统, 前端仪表盘, 响应大小分析, 域名分析, 域名枚举, 失陷标示符, 威胁情报, 安全系统开发, 密码管理, 开发者工具, 微服务架构, 情报处理平台, 数据可视化, 数据富化, 数据摄取, 数据流处理, 数据管道, 无后门, 消息队列, 版权保护, 网络信息收集, 网络安全, 请求拦截, 软件工程, 隐私保护