vishalVasanthakumarPoornima/Cloud-Threat-Intelligence-Dashboard
GitHub: vishalVasanthakumarPoornima/Cloud-Threat-Intelligence-Dashboard
一个集成了多个主流威胁情报源的 IOC 富化与调查仪表板,帮助安全分析人员高效评估 IP、域名、URL 和文件哈希的风险。
Stars: 0 | Forks: 0
# 威胁情报仪表板
一个安全的入侵指标 (IOC) 富化与调查仪表板
基于 FastAPI、React、TypeScript、Tailwind、SQLAlchemy 和 PostgreSQL 构建。
该项目接受 IP 地址、域名、URL 或文件哈希,对输入进行分类和
验证,编排服务器端的威胁情报连接器,
计算透明的风险评分,并在
仪表板中呈现分析人员可读的证据。
## 当前状态
此仓库现在包含 Codex 构建计划的基础部分:
- FastAPI 后端,包含 `/api/health`、`/api/analyze`、`/api/active-scan/nmap`、`/api/sources/status`、结果路由以及执行版 PDF 报告。
- 严格的入侵指标 (IOC) 分类器,涵盖 IP、域名、URL
和哈希。
- 默认拦截私有/内部 IP、环回 IP、链路本地 IP、多播 IP 和云元数据 IP。
- 用于分析请求、工具结果、风险报告、缓存条目和审计日志的 SQLAlchemy 数据模型。
- 请求大小限制、基本的速率限制、安全的 CORS 默认设置以及安全标头。
- React TypeScript 仪表板,包含浅色/深色模式、风险卡片、来源状态卡片、证据表格和 API 客户端。
- Dockerfile、Docker Compose PostgreSQL 服务、环境示例和架构文档。
- 用于 VirusTotal、AbuseIPDB、AlienVault OTX、Shodan、
URLScan 和 IPinfo 的实时被动连接器。
- 仅针对已授权 IP/域名目标的主动 Nmap 预设,包括快速
端口检查、服务检测、操作系统指纹尝试和 SYN 扫描模式。
特权预设可以在明确
启用本地演示时使用免密 `sudo -n nmap`。
- 安全的 VirusTotal 文件检查,它首先对上传的文件进行哈希处理,并将样本
视为不透明的字节,不进行本地执行、提取或解包。
- 通过 `/api/results/{analysis_id}` 进行当前会话的结果查找。
- 完成了视觉仪表板的打磨,包括滚动动画效果、加载
反馈、结果完成反馈、深色/浅色模式以及响应式卡片。
## 项目就绪情况
该项目已准备好在本地运行并进行端到端演示。剩余的工作是
部署/输入设置,而不是缺少核心代码:
- 在 `backend/.env` 中添加真实的提供商 API 密钥以获取实时情报结果。
- 从仓库根目录运行 `./start.sh` 并打开 `http://127.0.0.1:5173`。
- 添加密钥后,使用 `backend/scripts/check_api_keys.py` 确认提供商访问权限。
- 有关 Render 托管,请遵循 `docs/render-deployment.md`。
- 对于生产环境,设置一个非本地的 `ALLOWED_ORIGINS`,通过
密钥提供 `DATABASE_URL`,并部署前端时将 `VITE_API_BASE_URL` 指向
后端 API。
- 可选的未来升级:将已完成的报告持久化到 PostgreSQL 中,而不是
将结果查找保留在当前的后端进程内存中。
## 仓库结构
```
backend/
app/
api/routes/
connectors/
core/
db/
schemas/
services/
tests/
frontend/
src/
api/
components/
types/
docs/
architecture.md
screenshots/
```
## 后端设置
```
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --port 8080
```
健康检查:
```
curl http://localhost:8080/api/health
```
## 启动一切
从项目根目录开始:
```
./start.sh
```
该脚本会创建缺失的本地依赖项,在
`http://127.0.0.1:8080` 上启动 FastAPI,在 `http://127.0.0.1:5173` 上启动 Vite,并在你按下
`Ctrl+C` 时将两者同时关闭。如果任一端口已被占用,脚本将退出
并显示一条明确的提示信息,而不是默默地切换端口。
分析请求:
```
curl -X POST http://localhost:8080/api/analyze \
-H "Content-Type: application/json" \
-d '{"ioc":"8.8.8.8"}'
```
获取当前会话的结果:
```
curl http://localhost:8080/api/results/
```
为已完成的当前会话结果下载执行版 PDF 报告:
```
curl -o threat-report.pdf http://localhost:8080/api/results//report.pdf
```
VirusTotal 文件检查:
```
curl -X POST http://localhost:8080/api/analyze/file \
-F "file=@/path/to/sample"
```
## 前端设置
```
cd frontend
npm install
cp .env.example .env.local
npm run dev
```
除非更改了
`VITE_API_BASE_URL`,否则仪表板默认在 `http://localhost:8080/api` 查找后端。后端本地的 CORS 默认设置同时允许
`http://localhost:5173` 和 `http://127.0.0.1:5173`。
## API 密钥
仅将密钥存储在后端环境变量或部署密钥管理器中:
- `VIRUSTOTAL_API_KEY`
- `ABUSEIPDB_API_KEY`
- `OTX_API_KEY`
- `SHODAN_API_KEY`
- `URLSCAN_API_KEY`
- `IPINFO_TOKEN`
文件上传防护机制:
- `MAX_UPLOAD_FILE_BYTES` 默认为 `33554432` 字节。上传的文件将
在本地进行哈希处理,首先通过 SHA-256 在 VirusTotal 中查询,并且只有在
没有现有报告时才会提交给 VirusTotal。
特权 Nmap 设置:
- `NMAP_USE_SUDO=false` 为默认值。
- 仅在本地或已锁定的后端环境中设置 `NMAP_USE_SUDO=true`。
- 在需要 root 权限的系统上演示操作系统检测或 SYN 扫描
预设之前,请遵循 `docs/nmap-privileged-mode.md`。
可选的 AI 摘要:
- `AI_PROVIDER=groq` 配合 `GROQ_API_KEY` 和 `GROQ_MODEL` 用于 Groq Cloud。
- `AI_PROVIDER=xai` 配合 `XAI_API_KEY` 和 `XAI_MODEL` 用于 xAI/Grok。
- `AI_PROVIDER=gemini` 配合 `GEMINI_API_KEY` 和 `GEMINI_MODEL` 用于 Gemini。
请勿将 API 密钥放在前端的 `.env` 文件、源代码、屏幕截图或日志中。
添加密钥后,你可以运行经过脱敏处理的提供商冒烟测试:
```
cd backend
.venv/bin/python scripts/check_api_keys.py
```
该脚本仅打印提供商状态代码和简短的健康信息。它不会
打印 API 密钥值。
## 测试
分类器测试使用 Python 标准库,因此它们可以在
完全安装后端依赖项之前运行:
```
cd backend
PYTHONPATH=. python -m unittest discover -s app/tests
```
## 道德使用
该项目通过经批准的第三方 API 执行富化,并且仅
在用户确认授权的情况下才会进行主动 Nmap 扫描。它不会
进行漏洞利用、暴力破解、模糊测试或攻击目标。仅分析你获得授权调查的指标并扫描
主机。
标签:AV绕过, CTI, FastAPI, GitHub, React, Syscalls, 威胁情报, 安全运营中心, 开发者工具, 攻防调查, 测试用例, 网络映射, 请求拦截, 逆向工具