saeedhabiba/threat-intel-platform-ccp
GitHub: saeedhabiba/threat-intel-platform-ccp
一个基于 Spring Boot 微服务和 Kafka 的轻量级威胁情报处理平台,用于自动采集、提取、评级和存储 IOC 指标。
Stars: 0 | Forks: 0
# 🛡️ 威胁情报处理平台
**COMP-370 – 软件构建与开发**
**CCP:基于微服务的安全系统开发**
**指导教师:Malik Nabeel Ahmed Awan 博士**
## 📌 概述
一个基于分布式微服务的网络安全平台,具备以下功能:
- 从 AbuseIPDB 和 AlienVault(或模拟 API)获取威胁情报
- 提取失陷指标:IP 地址和域名
- 通过 Apache Kafka 流式传输数据(事件驱动架构)
- 通过外部/模拟排名 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
└─────────────────────┘
```
## 🧩 微服务
| 服务 | 端口 | 描述 |
|---|---|---|
| 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 数据 (MySQL) |
## ⚙️ 技术栈
- **后端**:Spring Boot 3.x (Java 17)
- **消息传递**:Apache Kafka 3.x
- **数据库**:MySQL 8.x
- **前端**:HTML5、CSS3、原生 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 – 启动所有服务(按顺序)
```
# Terminal 1 – Database Service
cd database-service && mvn spring-boot:run
# Terminal 2 – Ranking Service
cd ranking-service && mvn spring-boot:run
# Terminal 3 – Processing Service
cd processing-service && mvn spring-boot:run
# Terminal 4 – Kafka Producer Service
cd kafka-producer-service && mvn spring-boot:run
# Terminal 5 – Extraction Service
cd extraction-service && mvn spring-boot:run
# Terminal 6 – Ingestion Service
cd ingestion-service && mvn spring-boot:run
```
### 步骤 4 – 打开前端
在浏览器中打开 `frontend/index.html`。
## 📡 触发管道
```
# 触发从 AbuseIPDB 的 Ingestion(模拟)
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 主题
| 主题 | 用途 |
|---|---|
| `ioc-raw` | 来自提取服务的原始 IOC |
| `ioc-processed` | 来自处理服务的已验证 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, AV绕过, FastAPI, Flask, masscan, PB级数据处理, Python, REST API, Spring Boot, 事件驱动架构, 代码示例, 分布式系统, 前端仪表盘, 后端开发, 响应大小分析, 失陷标示, 威胁情报, 威胁情报平台, 安全运维, 开发者工具, 微服务架构, 情报接入, 情报消费, 指标提取, 数据丰富, 数据分析, 数据可视化, 数据流处理, 无后门, 系统架构, 网络威胁, 网络安全, 网络测绘, 请求拦截, 隐私保护