Fazzycode1O1/threat-intelligence-platform

GitHub: Fazzycode1O1/threat-intelligence-platform

基于 Spring Boot 和 Kafka 的分布式威胁情报处理平台,实现从 IOC 数据接入、验证、评分到存储的完整事件驱动流水线。

Stars: 0 | Forks: 0

# 威胁情报处理平台 一个用于处理网络安全威胁情报的分布式、事件驱动微服务平台。基于 Java 17、Spring Boot 3、Apache Kafka 和 MySQL 构建。 ## 架构 ``` POST /api/ingest | ingestion-service (8081) | [ioc_raw] --> extraction-service (8082) -- validates IPs & domains | [ioc_validated] --> ranking-service (8083) -- scores & classifies | [ioc_ranked] --> database-service (8084) -- persists to MySQL | analytics-service (8085) <-- (read-only REST queries) ``` ## 服务 | 服务 | 端口 | 职责 | |---------|------|----------------| | ingestion-service | 8081 | REST 入口 - 接受源名称并将模拟 IOC 数据发布到 Kafka | | extraction-service | 8082 | 消费原始 IOC,使用正则表达式验证 IP 和域名,转发有效条目 | | ranking-service | 8083 | 对 IOC 进行评分 (0-100) 并将其分类为 LOW / MEDIUM / HIGH | | database-service | 8084 | 将已评分的 IOC 持久化到 MySQL,在启动时创建 schema | | analytics-service | 8085 | 只读 REST API,用于查询已存储的 IOC | | consumer-service | - | 占位 Kafka 监听器 (无 HTTP 端口) | | shared-models | - | 共享的 IocData DTO 和 Kafka topic 常量 | ## 技术栈 - **Java 17** - **Spring Boot 3.2** - **Apache Kafka** - 服务间的异步事件总线 - **MySQL 8** - 通过 JPA/Hibernate 进行持久化 IOC 存储 - **Maven** - 多模块构建 ## 前置条件 - Java 17+ - Maven 3.8+ - MySQL 8 运行在 localhost:3306 (用户名: root, 密码: password) - Apache Kafka 运行在 localhost:9092 ## Kafka 设置 启动 Zookeeper 和 broker (在单独的终端中): ``` bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-start.sh config/server.properties ``` 创建三个必需的 topic: ``` bin/kafka-topics.sh --create --topic ioc_raw --bootstrap-server localhost:9092 bin/kafka-topics.sh --create --topic ioc_validated --bootstrap-server localhost:9092 bin/kafka-topics.sh --create --topic ioc_ranked --bootstrap-server localhost:9092 ``` ## 构建 从项目根目录运行 (构建全部 7 个模块): ``` mvn clean install -DskipTests ``` ## 运行 按以下顺序在单独的终端中启动每个服务: ``` cd database-service && mvn spring-boot:run # port 8084 - creates schema first cd ingestion-service && mvn spring-boot:run # port 8081 cd extraction-service && mvn spring-boot:run # port 8082 cd ranking-service && mvn spring-boot:run # port 8083 cd analytics-service && mvn spring-boot:run # port 8085 cd consumer-service && mvn spring-boot:run # no HTTP port ``` database-service 必须首先启动 - analytics-service 使用 ddl-auto: validate,需要 iocs 表已存在。 ## API 参考 **触发 IOC 摄取** ``` POST http://localhost:8081/api/ingest Content-Type: application/json { "source": "abuseipdb" } ``` **获取所有 IOC** ``` GET http://localhost:8085/api/iocs GET http://localhost:8085/api/iocs?severity=HIGH&type=IP&source=abuseipdb ``` **获取高风险 IOC (严重程度评分 >= 50)** ``` GET http://localhost:8085/api/iocs/high-risk ``` **按来源获取 IOC** ``` GET http://localhost:8085/api/iocs/source/abuseipdb ``` ## 数据流 1. POST /api/ingest 触发 ingestion-service 将两个模拟 IOC 发布到 ioc_raw Kafka topic。 2. extraction-service 从 ioc_raw 消费,使用正则表达式验证 IP 地址和域名,将有效条目转发到 ioc_validated。 3. ranking-service 从 ioc_validated 消费,计算严重程度评分 (0-100),分配 LOW / MEDIUM / HIGH,发布到 ioc_ranked。 4. database-service 从 ioc_ranked 消费,并将每个 IOC 持久化到 MySQL 的 iocs 表中。 5. analytics-service 暴露 REST 端点,以直接从 MySQL 查询已存储的 IOC。 ## 数据库 Schema ``` CREATE TABLE iocs ( id BIGINT AUTO_INCREMENT PRIMARY KEY, type VARCHAR(20), value VARCHAR(255), source VARCHAR(255), severity_score INT, risk_level VARCHAR(10), timestamp DATETIME ); ``` ## 项目结构 ``` threat-intelligence-platform/ ├── pom.xml ├── shared-models/ ├── ingestion-service/ ├── extraction-service/ ├── ranking-service/ ├── database-service/ ├── analytics-service/ ├── consumer-service/ └── doc/ ├── INSTALLATION.md └── report.md ``` ## 故障排除 | 症状 | 解决方案 | |---------|-----| | Kafka 连接被拒绝 | 先启动 Zookeeper 然后启动 broker;检查端口 9092 | | analytics-service 启动失败 | 先启动 database-service | | MySQL 连接错误 | 检查 MySQL 是否正在运行;更新 application.yml 中的凭据 | | /ingest 返回 404 | 请使用 /api/ingest | | analytics API 无结果 | 摄取后等待几秒钟,以等待 Kafka pipeline 完成 | | 编译错误 | 在项目根目录运行 mvn clean install -DskipTests |
标签:Apache Kafka, IOC提取, IP 地址批量处理, Java 17, JPA/Hibernate, Maven, REST API, Spring Boot 3, Spring Boot微服务, 事件驱动架构, 分布式系统, 后端开发, 响应大小分析, 多模块项目, 失陷标示, 威胁分级, 威胁情报, 威胁评分, 密码管理, 开发者工具, 微服务架构, 情报处理平台, 数据分析服务, 数据验证, 消息队列, 漏洞验证, 网络安全, 软件成分分析, 隐私保护