Yel1oww/Pi-Hole-Threat-Detector
GitHub: Yel1oww/Pi-Hole-Threat-Detector
基于 n8n 工作流编排的 Pi-hole DNS 威胁检测与自动拦截系统,整合 VirusTotal 和 AlienVault 情报源,并通过 Grafana 实现安全态势可视化。
Stars: 0 | Forks: 0
# 🛡️ DNS 威胁检测器
一个自动化的威胁情报流水线,用于监控 **Pi-hole** 流量,将域名与 **VirusTotal** 和 **AlienVault OTX** 进行交叉比对,自动拦截恶意行为者,并在 **Grafana** 中可视化所有信息。

## 🚀 概述
本项目为您的家庭网络构建了一个闭环安全系统:
1. **提取:** n8n 每 5 分钟从您的 **Pi-hole** 拉取一次日志。
2. **分析:** 根据 **AlienVault OTX** 和 **VirusTotal** 检查域名。
3. **行动:** 如果域名超过威胁阈值(例如,>= 5 个恶意检测),n8n 会向 Pi-hole 发送命令以**立即拦截**该域名。
4. **记录:** 所有扫描结果存储在 **InfluxDB** 中。
5. **可视化:** **Grafana** 仪表板显示实时威胁级别和拦截历史。
## 🛠️ 前置条件
* **Pi-hole** (已启用 API 访问)
* **n8n** (自托管或云端)
* **InfluxDB 2.x** (用于数据存储)
* **Grafana** (用于仪表板)
* **API Keys:**
* [AlienVault OTX](https://otx.alienvault.com/) (免费)
* [VirusTotal](https://www.virustotal.com/) (免费层级)
## 📦 安装说明
### 1. n8n 工作流

1. 打开您的 n8n 实例并创建一个 **New Workflow** (新工作流)。
2. 打开本仓库中的 `n8n_workflow.json` 文件。
3. 复制内容并直接粘贴到 n8n 画布上。
4. **必须配置:**
* 使用您的 Pi-hole 和 InfluxDB IP 地址更新 **HTTP Request** 节点。
* 在 **VirusTotal** 和 **AlienVault** 节点的 Header 参数中输入您的 API keys。
* 使用您的 Org (组织) 和 Bucket (存储桶) 名称更新 **Push to InfluxDB** 节点。
### 2. InfluxDB 设置
在您的 InfluxDB UI 中创建一个 bucket (存储桶)(例如 `DNS_Security`)。确保您的 API token 拥有该 bucket 的 **Write** (写入) 权限。
### 3. Grafana 仪表板
1. 在 Grafana 中,前往 **Dashboards** > **New** > **Import**。
2. 上传 `grafana_dashboard.json` 文件或粘贴 JSON 文本。
3. JSON 中包含占位符 `[YOUR_BUCKET_NAME]`。您应在导入前查找并将其替换为您实际的 InfluxDB bucket 名称,或者在导入完成后手动更新面板中的查询。
## ⚙️ 配置变量
要运行工作流和仪表板,您必须将 JSON 文件中的以下占位符替换为您特定的环境详细信息(别忘了删除 "[]"):
| 占位符 | 描述 | 在哪里找到它 |
| :--- | :--- | :--- |
| `[YOUR_PIHOLE_IP]` | 您的 Pi-hole 实例的本地 IP 地址。 | Pi-hole 上的 `hostname -I` |
| `[YOUR_PIHOLE_AUTH_TOKEN]` | 您的 Pi-hole Web API 密码哈希。 | `/etc/pihole/setupVars.conf` |
| `[YOUR_INFLUXDB_IP]` | 托管 InfluxDB 2.x 的本地 IP。 | 您的服务器/容器 IP |
| `[YOUR_INFLUX_TOKEN]` | 您的 InfluxDB API 写入/读取 Token。 | InfluxDB UI > API Tokens |
| `[YOUR_ORG_NAME]` | 您的 InfluxDB 组织名称。 | InfluxDB UI > About/Org |
| `[YOUR_BUCKET_NAME]` | 用于存储的 bucket 名称。 | InfluxDB UI > Buckets |
| `[YOUR_VIRUSTOTAL_API_KEY]` | 您的个人 VirusTotal API Key。 | [VT User Settings](https://www.virustotal.com/) |
| `[YOUR_ALIENVAULT_API_KEY]` | 您的个人 AlienVault OTX API Key。 | [OTX Settings](https://otx.alienvault.com/) |
## 🤝 贡献
随意 Fork 本仓库并提交 Pull Request。对于重大更改,请先开一个 Issue 进行讨论,说明您想要更改的内容。
## 📄 许可证
[MIT](https://choosealicense.com/licenses/mit/)
标签:Ask搜索, C2检测, DNS安全, DNS日志分析, Grafana, InfluxDB, IP 地址批量处理, n8n, Pi-hole, SOAR, VirusTotal, 可视化面板, 域名拦截, 威胁情报, 家庭实验室, 开发者工具, 恶意域名, 网络安全, 自动化响应, 闭环安全, 隐私保护