MaazSherMuhammad/threat-intel-platform-ccp

GitHub: MaazSherMuhammad/threat-intel-platform-ccp

一个基于Spring Boot微服务架构的威胁情报处理平台,通过Kafka实现事件驱动的IOC采集、提取、评分和存储全流程。

Stars: 0 | Forks: 0

# 🛡️ 威胁情报处理平台 **COMP-370 – 软件构建与开发** **CCP:基于 Microservices 的安全系统开发** **指导教师:Dr. Malik Nabeel Ahmed Awan** ## 📌 概述 一个基于分布式 Microservices 的网络安全平台,具备以下功能: - 从 AbuseIPDB 和 AlienVault(或 mock API)获取威胁情报 - 提取威胁指标 (IOC):IP 地址和域名 - 通过 Apache Kafka 流式传输数据(事件驱动架构) - 通过外部/mock 排序 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 数据 (MySQL) | ## ⚙️ 技术栈 - **后端**: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 # 检查提取的 IOCs curl http://localhost:8086/api/iocs # 获取高风险 IOCs curl http://localhost:8086/api/iocs/high-risk ``` ## 📊 Kafka Topics | Topic | 用途 | |---|---| | `ioc-raw` | 来自 extraction 服务的原始 IOC | | `ioc-processed` | 来自 processing 服务的已验证 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, CMS安全, CSS, Flask, HTML, IP 地址批量处理, JavaScript, REST API, Spring Boot, 事件驱动架构, 入侵指标, 分布式系统, 前端仪表盘, 响应大小分析, 域名枚举, 威胁分析, 威胁情报, 安全数据分析, 安全系统开发, 密码管理, 开发者工具, 微服务架构, 数据可视化, 数据摄取, 数据管道, 流处理, 消息队列, 网络信息收集, 网络安全, 自动化侦查工具, 请求拦截, 课程项目, 软件工程, 隐私保护