Netplayz/Honeywatch
GitHub: Netplayz/Honeywatch
一款轻量级多协议蜜罐系统,集成实时 Web 仪表盘和威胁情报,可快速捕获并可视化展示攻击者的凭据和来源信息。
Stars: 1 | Forks: 0
# 🍯 HoneyWatch
一个轻量级、生产就绪的蜜罐,适用于 DigitalOcean(或任何 VPS)上的 **Ubuntu 24.04 LTS**。捕获攻击者凭据,映射其来源,对照威胁情报数据库检查 IP,并通过实时 Web 仪表盘在 `http://your-ip:5000` 展示所有信息。

## 功能特性
| 功能 | 详情 |
|---|---|
| **SSH 陷阱** | 伪 SSH 服务器(端口 2222)捕获所有登录尝试 |
| **HTTP 陷阱** | 伪管理员登录面板(端口 8080)捕获凭据 |
| **Telnet 陷阱** | 经典 Telnet 蜜罐(端口 2323) |
| **FTP 陷阱** | 伪 ProFTPD 服务器(端口 2121) |
| **地理位置** | 通过 ip-api.com 解析每个攻击者 IP 的国家/城市 |
| **威胁情报** | 可选的 AbuseIPDB 集成,标记已知的恶意 IP |
| **实时仪表盘** | 实时 Web UI,包含世界地图、图表和事件流,端口 `:5000` |
| **Server-Sent Events** | 仪表盘无需轮询即可即时更新 |
| **SQLite 存储** | 所有事件持久化存储在本地 —— 无需外部数据库 |
| **Systemd 服务** | 开机自启,崩溃自动重启 |
| **可选认证** | 仪表盘的 HTTP 基础认证 |
## 快速开始
### 1. 创建 Droplet
- **镜像**: Ubuntu 24.04 LTS x64
- **规格**: 基础版 $6/月 (1 vCPU / 1 GB) 足够
- **区域**: 任意 — 选择离你最近的
### 2. 部署
以 root 身份通过 SSH 登录你的 droplet,然后执行:
```
git clone https://github.com/netplayz/honeywatch.git
cd honeywatch
sudo bash install.sh
```
安装程序将执行以下操作:
- 配置 UFW 防火墙(保持端口 22 开放以供你进行真实的 SSH 连接)
- 创建专用的 `honeypot` 系统用户
- 在 virtualenv 中安装 Python 依赖
- 安装并启动 `honeywatch` systemd 服务
### 3. 打开仪表盘
在浏览器中访问 `http://YOUR_DROPLET_IP:5000`。
## 配置
安装后编辑 `/etc/honeywatch/env`:
```
# 蜜罐端口
SSH_PORT=2222
HTTP_PORT=8080
TELNET_PORT=2323
FTP_PORT=2121
# 仪表板
DASHBOARD_PORT=5000
DASHBOARD_HOST=0.0.0.0
# 可选:在仪表板上启用 HTTP basic auth
DASHBOARD_USER=admin
DASHBOARD_PASS=yourpassword
# 可选:AbuseIPDB 用于威胁情报(免费 API key)
# https://www.abuseipdb.com/register
ABUSEIPDB_API_KEY=your_key_here
```
编辑后,重启服务:
```
sudo systemctl restart honeywatch
```
## 威胁情报
将免费的 [AbuseIPDB](https://www.abuseipdb.com/) API 密钥添加到 `/etc/honeywatch/env`,仪表盘将以红色标记已知的恶意 IP(⚠ THREAT)并显示滥用置信度评分。
## 仪表盘
| 面板 | 展示内容 |
|---|---|
| **世界地图** | 绘制每个攻击者 —— 红色 = 已知威胁,蓝色 = 未知 |
| **统计栏** | 总事件数、最近一小时、最近 24 小时、已知威胁 IP |
| **服务图表** | 按蜜罐类型分类的事件(SSH / HTTP / Telnet / FTP) |
| **主要国家** | 攻击来源国家 |
| **热门用户名/密码** | 最常被尝试的凭据 |
| **实时推送** | 带有地理位置 + 威胁数据的实时事件表 |
## 文件布局
```
honeywatch/
├── main.py ← Entrypoint — starts all services
├── requirements.txt
├── install.sh ← One-shot installer
├── honeywatch.service ← Systemd unit file
├── honeypot/
│ ├── services.py ← SSH / HTTP / Telnet / FTP honeypots
│ └── database.py ← SQLite storage + geo/threat enrichment
└── dashboard/
├── app.py ← Flask web app + SSE
└── templates/
└── index.html ← Live dashboard UI
```
## 服务管理
```
# 状态
sudo systemctl status honeywatch
# 日志
sudo journalctl -u honeywatch -f
# 重启
sudo systemctl restart honeywatch
# 原始日志文件
tail -f /var/log/honeypot/honeypot.log
# SQLite 数据库
sqlite3 /var/lib/honeypot/events.db "SELECT * FROM events ORDER BY timestamp DESC LIMIT 20;"
```
## 安全说明
- **切勿**在包含敏感数据或生产负载的机器上运行此程序
- 蜜罐**始终拒绝**凭据 —— 它从不授予真实访问权限
- 仪表盘端口 5000 默认开放;请通过 `DASHBOARD_USER`/`DASHBOARD_PASS` 或 UFW (`ufw allow from YOUR_IP to any port 5000`) 进行限制
- 服务以受限的 `honeypot` 系统用户身份运行,仅拥有最小的文件系统访问权限
## 法律声明
在拥有服务器所有权的情况下部署蜜罐在大多数司法管辖区是合法的。你是在被动记录对自己系统的连接尝试。部署前请务必查阅当地法律。请勿利用蜜罐数据主动攻击或骚扰任何 IP。
## 扩展
| 想要添加... | 查看位置 |
|---|---|
| 更多蜜罐端口 | `honeypot/services.py` —— 复制 `FTPHoneypot` 的模式 |
| 邮件告警 | `honeypot/database.py` —— 添加到 `_insert()` 线程 |
| 导出为 CSV/JSON | 在 `dashboard/app.py` 中添加 `/api/export` 路由 |
| 仪表盘启用 HTTPS | 在前端放置 nginx 并配置 `proxy_pass http://localhost:5000` |
## 许可证
MIT —— 随意使用,但请勿恶意使用。
标签:AbuseIPDB, ADCS攻击, DigitalOcean, FTP蜜罐, Honeypot, HTTP蜜罐, IP地理位置, LangChain, PFX证书, Python, Server-Sent Events, SQLite, SSH蜜罐, Telnet蜜罐, UFW防火墙, 凭证收集, 威胁情报, 实时仪表盘, 密码管理, 开发者工具, 攻击检测, 无后门, 无控制台执行, 漏洞利用工具, 漏洞诱捕, 网络安全, 蜜罐, 证书利用, 轻量级, 进程注入, 逆向工具, 防御绕过, 隐私保护