Ahlyx/security-enrichment-api
GitHub: Ahlyx/security-enrichment-api
一个基于 FastAPI 的威胁情报聚合服务,将 8 个主流安全平台的数据统一为标准化 JSON 响应,支持 IP、域名、URL 和文件哈希的多维度查询。
Stars: 0 | Forks: 0
# 安全情报富化 API
一个威胁情报聚合 API,将来自多个来源的 IP、域名、URL 和文件哈希数据富化为单一的标准化 JSON 响应。
## 功能特性
- 聚合 8 个来源的威胁情报:AbuseIPDB、VirusTotal、IPinfo、AlienVault OTX、Google Safe Browsing、URLScan.io、MalwareBazaar 和 CIRCL HashLookup
- 向所有来源发起并行请求以实现快速响应
- SQLite 缓存,基于来源成功率实现分层 TTL
- 针对每个 IP 地址的 Rate limiting
- 输入验证 —— 拒绝私有 IP,Bogon 检测,哈希类型自动检测
- 优雅降级 —— 如果某个来源失败,返回部分结果
- 前端仪表板,支持选项卡式搜索、实时颜色编码结果和查询历史
## 技术栈
- **Python 3.12** / **FastAPI**
- **httpx** 用于异步 HTTP 请求
- **asyncio.gather** 用于并行 API 调用
- **Pydantic** / **pydantic-settings** 用于响应 Schema 验证和配置
- **slowapi** 用于 Rate limiting
- **SQLite** 用于缓存
- **dnspython** 用于 DNS 解析
## 端点
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/api/v1/ip/{address}` | IP 信誉、地理位置和威胁情报 |
| GET | `/api/v1/domain/{name}` | 域名 WHOIS、DNS 记录、SSL/TLS 和信誉 |
| GET | `/api/v1/url?url=...` | 跨 Safe Browsing、URLScan 和 VirusTotal 的 URL 安全检查 |
| GET | `/api/v1/hash/{hash}` | 文件哈希查询 —— MD5、SHA1 或 SHA256 |
| GET | `/health` | 健康检查 |
| GET | `/docs` | 交互式 API 文档 |
## 响应示例
```
{
"query": "185.220.101.1",
"query_type": "ip",
"timestamp": "2026-03-07T09:14:15.013806Z",
"sources": [
{ "source": "abuseipdb", "success": true },
{ "source": "ipinfo", "success": true },
{ "source": "virustotal", "success": true },
{ "source": "alienvault_otx", "success": false, "error": "Request timed out" }
],
"ip": "185.220.101.1",
"geolocation": {
"country": "DE",
"region": "State of Berlin",
"city": "Berlin"
},
"abuse": {
"abuse_score": 100,
"total_reports": 167,
"isp": "Artikel10 e.V.",
"is_tor": true
},
"virustotal": {
"malicious_votes": 15,
"harmless_votes": 47,
"suspicious_votes": 3
},
"is_bogon": false,
"is_tor": true
}
```
## 设置
### 前置条件
- Python 3.12+
- 以下服务的 API 密钥:AbuseIPDB、VirusTotal、IPinfo、AlienVault OTX、Google Safe Browsing、URLScan.io、MalwareBazaar
- CIRCL HashLookup 无需 API 密钥
### 安装
```
git clone https://github.com/Ahlyx/security-enrichment-api.git
cd security-enrichment-api
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 配置
```
cp .env.example .env
```
编辑 `.env` 并添加您的 API 密钥:
```
ABUSEIPDB_API_KEY=your_key_here
VIRUSTOTAL_API_KEY=your_key_here
IPINFO_API_KEY=your_key_here
OTX_API_KEY=your_key_here
GOOGLE_SAFE_BROWSING_API_KEY=your_key_here
URLSCAN_API_KEY=your_key_here
MALWAREBAZAAR_API_KEY=your_key_here
```
### 运行
```
uvicorn app.main:app --reload
```
访问 `http://127.0.0.1:8000` 查看前端仪表板,或访问 `http://127.0.0.1:8000/docs` 查看交互式 API 文档。
## 架构
```
Request → Validate input → Check cache → Parallel API calls → Normalize → Cache result → Return
```
每个外部服务都隔离在 `app/services/` 下各自的模块中。聚合器使用 `asyncio.gather()` 同时发起所有请求,并将结果合并为由 `app/models/` 中的 Pydantic 模型定义的统一响应 Schema。
## 缓存
- 完全成功(所有来源) → 缓存 1 小时
- 部分成功 → 缓存 15 分钟
- 所有来源失败 → 不缓存
标签:API密钥检测, API聚合, AV绕过, DAST, DNS枚举, FastAPI, IP信誉查询, IP 地址批量处理, Python, SOC工具, SQLite缓存, URL扫描, Web安全, 域名安全, 威胁情报, 安全编排自动化响应, 开发者工具, 异步编程, 恶意软件分析, 数据富化, 文件哈希查询, 无后门, 沙箱检测, 漏洞发现, 网络安全工具, 蓝队分析, 计算机取证, 输入验证, 运行时操纵, 限流