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 规则, 事件驱动架构, 分布式系统, 前端仪表盘, 响应大小分析, 域名分析, 域名枚举, 失陷标示符, 威胁情报, 安全系统开发, 密码管理, 开发者工具, 微服务架构, 情报处理平台, 数据可视化, 数据富化, 数据摄取, 数据流处理, 数据管道, 无后门, 消息队列, 版权保护, 网络信息收集, 网络安全, 请求拦截, 软件工程, 隐私保护