gmelodie/honey
GitHub: gmelodie/honey
基于 Cowrie 的 SSH/Telnet 蜜罐系统,提供实时 Web 仪表盘展示攻击会话并自动生成凭据字典。
Stars: 4 | Forks: 0
# honey
SSH/Telnet 蜜罐,用于捕获攻击者会话并在实时 Web 仪表盘中展示,同时支持下载凭据字典。
**技术栈:** Cowrie → PostgreSQL → Flask → Nginx (SSL + reCAPTCHA)
Cowrie 监听 2222/2223 端口(通过 iptables 从 22/23 端口重定向)。会话、登录信息、命令和下载内容均存入 PostgreSQL。统计数据和字典由后台 worker 预先计算,并由 Web 服务器即时提供服务。
## 前置条件
- 拥有公网 IP 且已指向域名的 Linux VPS
- Docker 和 Docker Compose v2
- Root / sudo 权限
## 安装说明
### 1. 克隆
```
git clone ~/honey
cd ~/honey
```
### 2. 将真实的 SSH 移出 22 端口
请在修改 iptables **之前**执行此操作,否则你将自己被锁定在外。
```
echo "Port 22222" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
```
打开一个新终端,在继续操作之前确认可以使用新端口登录。
### 3. 配置 .env
```
cp .env.example .env
nano .env
```
```
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_DB=cowrie
POSTGRES_USER=cowrie
POSTGRES_PASSWORD=strong-password-here
TARGET_HOST=honey.example.com
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=
```
在 [google.com/recaptcha/admin](https://www.google.com/recaptcha/admin) 获取 reCAPTCHA 密钥——添加你的域名,选择 v2 Checkbox,然后粘贴这两个密钥。留空则禁用该验证。
### 4. 启动服务栈
```
docker compose up -d
```
| 服务 | 作用 |
|---|---|
| `postgres` | 存储所有蜜罐数据 |
| `postgres-init` | 应用数据库 schema(仅运行一次,随后退出) |
| `cowrie` | 运行在 2222/2223 端口的 SSH/Telnet 蜜罐 |
| `stats-gen` | 每 5 分钟预计算仪表盘统计数据 |
| `wordlist-gen` | 每 6 小时生成凭据字典 |
| `web` | 运行在 localhost:8373 的仪表盘 |
| `nginx` | 按域名路由 80/443 端口 |
| `certbot` | 每 12 小时续期 SSL 证书 |
### 5. 获取 SSL 证书
```
TARGET_HOST=honey.example.com CERTBOT_EMAIL=you@example.com ./scripts/init-letsencrypt.sh
docker compose restart nginx
```
### 6. 将 22 和 23 端口重定向到 Cowrie
```
sudo bash scripts/setup-port-redirect.sh
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save
```
### 7. 验证
```
ssh root@your-server-ip # should land in a fake shell
```
打开 `https://honey.example.com`。
## 导入现有 Cowrie 日志
如果你有现存的 Cowrie JSON 日志,可以将它们导入数据库:
```
pip install psycopg2-binary python-dotenv
python3 scripts/import-cowrie-json.py /path/to/cowrie.json*
```
- 自动从 `.env` 读取数据库凭据
- 对重叠文件重复运行是安全的——重复条目将被跳过
- 导入后,`stats-gen` 和 `wordlist-gen` 将在下次运行时提取新数据
## 备注
- 所有容器均使用 `network_mode: host` 并通过 `127.0.0.1` 通信。
- `.env` 已被 gitignore——切勿将其提交。
- 仪表盘统计每 5 分钟刷新一次;字典每 6 小时刷新一次。
- `setup-port-redirect.sh` 具有幂等性——重复运行是安全的。
标签:Certbot, Cobalt Strike, Docker, Docker Compose, Flask, iptables, Nginx, PostgreSQL, Python, reCAPTCHA, SSH蜜罐, SSL, Telnet蜜罐, VPS部署, Web仪表盘, 人机验证, 低交互蜜罐, 凭据收集, 威胁情报, 安全防御评估, 密码字典, 开发者工具, 开源安全工具, 攻击诱捕, 数据库, 无后门, 无控制台执行, 测试用例, 版权保护, 端口重定向, 网络安全, 蜜罐, 证书利用, 请求拦截, 软件分析, 进程注入, 逆向工具, 逆向工程平台, 隐私保护