luotieh/threat_intelligence_aggregation

GitHub: luotieh/threat_intelligence_aggregation

基于 MISP 的威胁情报聚合服务,负责同步、标准化 IOC 并生成 ta_node 流量检测规则文件。

Stars: 0 | Forks: 0

# Threat Intel Hub Threat Intel Hub 是一个基于 MISP 的威胁情报聚合服务,用于同步 MISP IOC、标准化并分类为 `traffic` / `other`,再把可用于流量检测的 `traffic` IOC 生成 `ta_node` 可加载的规则文件包。 ## 架构图 MISP -> Threat Intel Hub -> ta_node | sync/normalize/classify | local DB/API/export/config page ## 快速启动 cp .env.example .env docker compose up -d curl http://127.0.0.1:18080/health 配置页面: http://127.0.0.1:18080/config ## 环境变量说明 主要配置位于 `.env.example`: - `DATABASE_URL`: PostgreSQL 连接串。 - `REDIS_URL`: Celery broker/backend。 - `MISP_URL`, `MISP_API_KEY`, `MISP_VERIFY_CERT`, `MISP_SYNC_INTERVAL_SECONDS`: MISP 同步配置。 - `TA_NODE_ENABLED`, `TA_NODE_SOURCE_NAME`, `TA_NODE_PUSH_INTERVAL_SECONDS`: ta_node 规则文件生成配置。 - `EXPORT_DIR`: release 包和 IOC 导出文件目录。 - `IOC_OUTPUT_DIR`: 规则文件输出目录,默认 `/data/ftp/ioc`。 - `IOC_RULE_FILENAME`: ta_node 规则文件名,默认 `intel.yaml`,会同时生成同名 `intel.zip`。 配置优先级为:环境变量 > 数据库配置 > 默认配置。 ## 配置页面说明 访问 `/config` 可配置 MISP、ta_node、同步周期和推送周期。密钥字段不会明文返回;页面默认显示 `******`,保存时留空会保留旧密钥。 ## MISP 同步说明 手动触发: curl -X POST http://127.0.0.1:18080/sync/misp 同步逻辑读取上次 `sync_state`,首次默认同步最近 24 小时,搜索 published/to_ids attributes,标准化后写入 `intel_indicator`。同步失败会记录状态,不会删除本地 IOC。 ## ta_node 规则文件说明 Threat Intel Hub 不直接调用 ta_node。它会生成 ta_node `intel.yaml` 格式的规则文件,并压缩为同名 zip,默认保存到 `/data/ftp/ioc`,由网闸同步到内网。 文件格式与 `ta_node` 的 `configs/intel.yaml` 一致: items: - id: "misp-attribute-uuid" type: "domain" value: "evil.example.com" category: "c2" severity: "high" source: "Threat Intel Hub" description: "MISP domain IOC from Threat Intel Hub" tags: ["tlp:white", "c2"] enabled: true created_at: 1710000000 updated_at: 1710000000 手动生成: curl -X POST http://127.0.0.1:18080/ioc-rules/generate \ -H 'Content-Type: application/json' \ -d '{"mode":"full"}' 兼容入口 `/push/ta-node` 仍可用,但现在只排队生成规则包,不再发送 HTTP 请求到 ta_node。 手动上传已有规则文件: curl -X POST http://127.0.0.1:18080/ioc-rules/upload \ -F 'file=@intel.yaml' 上传 `.yaml` / `.yml` 时会校验顶层 `items` 列表和 ta_node 必需字段,然后生成同名 zip;上传 `.zip` 时直接保存到网闸目录。 ## 下载导出说明 IOC 导出: curl http://127.0.0.1:18080/exports/traffic?format=txt curl http://127.0.0.1:18080/exports/traffic?format=csv curl http://127.0.0.1:18080/exports/traffic?format=json 发布包: make package curl -O http://127.0.0.1:18080/downloads/latest 部署包位于 `release/threat-intel-hub.zip` 或 `release/threat-intel-hub.tar.gz`,解压后复制 `.env.example` 为 `.env`,按需填写 MISP 和 ta_node 配置,再执行 `docker compose up -d`。 ## API 列表 - `GET /health` - `GET /health/misp` - `GET /health/ta-node` - `GET /indicators` - `GET /indicators/{id}` - `POST /sync/misp` - `POST /push/ta-node` - `GET /push/ta-node/status` - `POST /ioc-rules/generate` - `POST /ioc-rules/upload` - `GET /exports/traffic?format=json|csv|txt` - `GET /downloads/latest` - `GET /downloads/{filename}` - `GET /config` - `GET /api/config` - `POST /api/config` ## 常见问题 `/health/misp` 失败:检查 `MISP_URL`、`MISP_API_KEY` 和证书校验配置。 `/health/ta-node` 失败:确认 `TA_NODE_BASE_URL` 可从容器内访问。Linux 宿主机服务通常需要使用宿主机网关地址,而不是容器内的 `127.0.0.1`。 生成后没有 IOC:确认 IOC 为 `platform_category=traffic` 且 `to_ids=true`。增量生成只包含未成功生成过的 IOC,全量生成使用 `{"mode":"full"}`。 ## 测试 pytest -q
标签:Docker, IOC聚合, Python, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 搜索引擎查询, 无后门, 流量检测, 测试用例, 版权保护, 请求拦截, 逆向工具