mikipuita/live-tracker-cyber
GitHub: mikipuita/live-tracker-cyber
一个实时威胁情报仪表板项目,整合 NVD 漏洞库和 AbuseIPDB 恶意 IP 数据,通过 WebSocket 实时推送并可视化展示安全威胁态势。
Stars: 1 | Forks: 0
# 实时网络威胁情报仪表板
一个实时网络安全威胁情报平台,聚合并可视化来自权威安全数据库的实时威胁数据。该系统通过 WebSocket 将威胁情报流式传输到带有图表和实时推送的交互式仪表板。
## 功能特性
- 通过 WebSocket 流式传输的实时威胁推送
- 来自 NVD(国家漏洞数据库)的 CVE 追踪
- 来自 AbuseIPDB 的恶意 IP 监控(需配置 API key)
- 基于严重程度的视图(低、中、高、严重)和威胁类型图表 (Chart.js)
- 生成场景中包含基于国家的地理坐标提示
- 交互式仪表板:实时列表 plus **威胁可视化**(饼图和条形图)
## 仓库结构
```
live-tracker-cyber/
├── README.md # This file
└── my-project/
├── start-local.sh # One command: API + dashboard (dev)
├── backend/ # FastAPI + WebSocket (Python)
│ ├── main.py
│ ├── requirements.txt
│ └── .env.example
└── frontend/ # Next.js 15 (React, TypeScript, Tailwind)
└── ...
```
## 技术栈
**后端:** Python, FastAPI, WebSocket (requires `uvicorn[standard]` / `websockets`), httpx, python-dotenv
**前端:** Next.js, React, TypeScript, Tailwind CSS, Chart.js, react-chartjs-2
**数据来源:** NVD API, AbuseIPDB API
## 前置条件
- 推荐使用 **Python 3.10+**(3.8+ 可能可用)
- **Node.js 18+** 和 npm(用于 Next.js 15)
- **AbuseIPDB API key**(本地演示可选;若未提供,后端将使用回退/模拟样式的威胁数据)
- **NVD API key**(可选;可提升速率限制)
## 快速开始 (克隆)
```
git clone https://github.com/mikipuita/live-tracker-cyber.git
cd live-tracker-cyber
```
## 本地运行 (单终端)
在 `my-project/` 目录下:
```
chmod +x start-local.sh # first time only
./start-local.sh
```
- API: **http://127.0.0.1:9000**
- 仪表板: **http://127.0.0.1:3000**
使用 **Ctrl+C** 停止(将停止前端并清理 API 进程)。
## 本地运行 (双终端)
### 后端
```
cd my-project/backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # add keys if you have them
python main.py
```
后端监听 **http://0.0.0.0:9000**(在浏览器中使用 **http://localhost:9000** 进行健康检查)。
**WebSockets:** 安装时必须包含 `uvicorn[standard]`(参见 `requirements.txt`)。若缺少此项,`/ws/threats` 将无法正确升级。
### 前端
```
cd my-project/frontend
npm install
npm run dev
```
打开 **http://127.0.0.1:3000**(开发脚本绑定到此主机,以便 Next.js 不会调用 `os.networkInterfaces()`,这在某些 Node/OS 设置上可能会崩溃)。
### 生产环境构建 (前端)
```
cd my-project/frontend
npm run build
npm start
```
## 环境变量
创建 **`my-project/backend/.env`**(参见同目录下的 **`.env.example`**):
| 变量 | 必需 | 说明 |
|----------|----------|--------|
| `ABUSEIPDB_API_KEY` | 否 | 如果省略,恶意 IP 列表将保持为空;推送仍可使用 CVE + 回退数据工作 |
| `NVD_API_KEY` | 否 | 可选;有助于提升 NVD 速率限制 |
**获取密钥**
- AbuseIPDB: https://www.abuseipdb.com/register
- NVD: https://nvd.nist.gov/developers/request-an-api-key
## API 端点
- `ws://localhost:9000/ws/threats`: 实时威胁推送 (WebSocket)
- `GET /`: 健康检查和缓存计数
- `GET /api/cves`: 缓存的 CVE 样本
- `GET /api/malicious-ips`: 缓存的 IP 样本
## 工作原理
后端从 NVD 刷新 CVE 数据,并(如果已配置)从 AbuseIPDB 获取黑名单数据。威胁对象每隔几秒通过 WebSocket 流式传输。Next.js UI 显示来自同一数据流的实时表格和图表。
## 故障排除
**“无法访问此网站” / 仪表板从未加载 / `npm run dev` 崩溃**
- 开发服务器必须正在运行(在 `frontend` 目录下执行 `./start-local.sh` 或 `npm run dev`)。如果端口 **3000** 上没有任何监听,浏览器将显示错误页面。
- 如果 **`npm run dev` 以 `uv_interface_addresses` / `Unknown system error` 退出**,请按照编写的方式使用项目脚本(它传递了 **`--hostname 127.0.0.1`**)或运行:
`npx next dev --hostname 127.0.0.1 --port 3000`
- 如果端口 **3000 已被占用**,Next.js 会选择另一个端口(例如 **3001**);请阅读终端中显示 **“Local:”** 的那一行并打开该 URL,或者停止占用 3000 的其他进程。
**WebSocket 失败 / 实时推送为空**
- 确认后端正在端口 **9000** 上运行。
- 确认依赖项:`pip install -r requirements.txt`(包含 WebSocket 支持)。
- 检查浏览器控制台的连接错误。
**恶意 IP 始终为空**
- 在 `my-project/backend/.env` 中设置 `ABUSEIPDB_API_KEY` 并重启 API。
**前端出现 `Module not found`**
- 在 **`my-project/frontend`** 内运行 `npm install`。图表需要 `chart.js` 和 `react-chartjs-2`(已在 `package.json` 中列出)。
## 部署说明
此应用需要一个用于 WebSocket 的 **长期运行的 Python 进程**,以及一个 **Next.js** 生产服务器(或者如果你进行了重构,可以使用静态导出)。典型的设置是使用带有 HTTPS 和反向代理的 **VPS 或云虚拟机**,或者将 **API**(例如 Render/Fly.io)与 **前端**(例如 Vercel)分离,并使用 `wss://` 指向你的 API 主机。
## 致谢
数据来源:
- NVD (National Vulnerability Database)
- AbuseIPDB Community
- 后端逻辑中的 MITRE ATT&CK 风格分类映射
**免责声明:** 这是一个教育项目。请勿将其作为生产安全决策的唯一来源。
## 许可证
尚未指定。
## 贡献与 GitHub
默认远程地址是主项目仓库。如果你没有写入权限,请在 GitHub 上 **fork** 该仓库,将你的 fork 添加为 `origin`,并使用你的分支打开一个 **pull request**。
```
# Fork 到 YOUR_USER/live-tracker-cyber 后的示例
git remote set-url origin https://github.com/YOUR_USER/live-tracker-cyber.git
git push -u origin main
```
## 作者
- **Miguel Sanchez:** 后端和实时威胁情报
- **Rishi Alva:** 数据可视化和分析(仪表板图表,前端集成)
标签:AbuseIPDB, AV绕过, Chart.js, FastAPI, HTTP/HTTPS抓包, NVD, Python, React, SecOps, Syscalls, Tailwind CSS, TypeScript, WebSocket, 云安全架构, 仪表盘, 依赖分析, 威胁情报, 安全插件, 安全运营, 开发者工具, 态势感知, 恶意IP检测, 扫描框架, 无后门, 网络安全, 自动化攻击, 逆向工具, 隐私保护