yashwantraj147-eng/honeypot-system
GitHub: yashwantraj147-eng/honeypot-system
这是一款集成了多协议模拟、威胁情报关联及可视化管理界面的轻量级多功能蜜罐系统,旨在诱捕攻击并记录详细操作日志。
Stars: 1 | Forks: 0
# 🛡️ HoneypotNet — 多服务蜜罐系统
HoneypotNet 部署了四个模拟的易受攻击服务 —— **SSH、HTTP、FTP 和 Telnet** —— 用于吸引恶意行为者并记录其所有操作:尝试的凭证、执行的命令、上传的 Payload 以及扫描器探测。基于 Web 的管理仪表板允许您过滤、搜索和导出捕获的数据。
## ⚠️ 法律免责声明
## 📁 项目结构
```
honeypot-system/
├── main.py # Monolith launcher (all services in threads)
├── config.yaml # Central configuration (API keys, ports, etc.)
├── requirements.txt # Python dependencies
├── Dockerfile # Monolith Docker image
├── docker-compose.yml # Multi-container orchestration
├── .gitignore
│
├── core/ # Shared infrastructure
│ ├── __init__.py
│ ├── config_loader.py # YAML config singleton
│ ├── logger.py # SQLite central logger
│ ├── geoip.py # ip-api.com geolocation
│ ├── threat_intel.py # AbuseIPDB lookup
│ ├── alerting.py # Email + Telegram alerts
│ ├── rate_limiter.py # Per-IP sliding-window limiter
│ └── enrichment.py # Geo + TI + DB + alert in one call
│
├── honeypots/ # Emulated vulnerable services
│ ├── __init__.py
│ ├── ssh_honeypot.py # Paramiko SSH server
│ ├── http_honeypot.py # Flask HTTP server
│ ├── ftp_honeypot.py # Raw-socket FTP server
│ └── telnet_honeypot.py # Raw-socket Telnet server
│
├── admin/ # Web admin panel
│ ├── __init__.py
│ ├── app.py # Flask dashboard app
│ └── templates/
│ ├── login.html
│ └── dashboard.html
│
├── docker/ # Per-service Dockerfiles
│ ├── Dockerfile.ssh
│ ├── Dockerfile.http
│ ├── Dockerfile.ftp
│ ├── Dockerfile.telnet
│ └── Dockerfile.admin
│
├── tests/
│ └── test_honeypots.py # Unit + integration tests
│
├── data/ # Runtime data (auto-created)
│ ├── honeypot.db # SQLite database
│ ├── ssh_host_key # Auto-generated RSA key
│ └── uploads/ # Files uploaded via HTTP honeypot
│
└── logs/ # Rotating text log files
└── honeypot.log
```
## 🚀 快速开始
### 选项 A — 本地运行(开发环境)
```
# Clone and enter the project
git clone && cd honeypot-system
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 编辑配置
cp config.yaml config.yaml.bak
# Edit config.yaml — set your AbuseIPDB key, Telegram bot token, etc.
# 启动所有服务
python main.py
```
服务将在 `config.yaml` 中定义的端口上启动:
| Service | Default Port |
|----------|-------------|
| SSH | 2222 |
| HTTP | 8080 |
| FTP | 2121 |
| Telnet | 2323 |
| Admin UI | 5000 |
### 选项 B — Docker Compose(生产环境)
```
# 1. Edit config.yaml with your API keys
# 2. Build and launch all containers
docker-compose up -d --build
# 3. Tail logs
docker-compose logs -f
# 4. Stop everything
docker-compose down
```
## 🖥️ 管理仪表板
导航至 `http://localhost:5000` 并使用 `config.yaml` 中的凭证登录(默认:`admin` / `honeypot_admin_2024`)。
**功能特性:**
- 📊 汇总卡片(总事件数、唯一 IP 数、各服务计数)
- 🔍 按服务、源 IP、日期范围过滤
- 📄 分页事件表
- 📥 过滤结果的 CSV 导出
- 🌍 地理位置数据(国家、城市)
- ⚠️ AbuseIPDB 信心评分
## 🔔 告警
### Email (SMTP)
在 `config.yaml` 中设置 `alerting.email.enabled: true` 并配置您的 SMTP 服务器。对于 Gmail,请使用 [App Password](https://support.google.com/accounts/answer/185833)。
### Telegram Bot
1. 通过 [@BotFather](https://t.me/BotFather) 创建一个机器人并获取 token。
2. 给 [@userinfobot](https://t.me/userinfobot) 发送消息以获取您的 Chat ID。
3. 设置 `alerting.telegram.enabled: true` 并填写 `bot_token` 和 `chat_id`。
告警对**每个 IP 进行速率限制**(可配置 `cooldown_seconds`)以防止消息泛滥。
## 🌍 地理位置与威胁情报
| Feature | Provider | Free Tier |
|---------------|---------------|--------------------------|
| Geolocation | ip-api.com | 45 req/min, no key |
| Threat Intel | AbuseIPDB | 1 000 checks/day (free) |
这两个模块均会在内存中缓存结果(LRU)以最大程度减少 API 调用。
## 🧪 测试
```
# 运行所有测试
pytest tests/ -v
# With coverage
pytest tests/ -v --cov=core --cov=honeypots --cov=admin
```
测试套件包括:
- 针对日志记录器、geoIP、威胁情报、速率限制器和告警模块的**单元测试**
- **集成测试**,在高端口启动每个蜜罐并验证协议行为
- 使用 Flask 测试客户端的**管理仪表板测试**
## 🛡️ 反检测特性
- **逼真的 Banner**:SSH、FTP 和 HTTP 头部模仿真实生产软件版本。
- **逼真的 Shell**:SSH 和 Telnet 对 `id`、`uname`、`ls`、`cat /etc/passwd` 等命令返回逼真的响应。
- **伪造目录列表**:FTP 提供看似真实的文件列表,包含具有诱惑力的文件名(如 `database.sql`、`.htpasswd`)。
- **扫描器陷阱**:HTTP 蜜罐暴露带有“禁止”路径的 `/robots.txt`、`.env`、`/phpmyadmin`、`/.git/config`。
- **速率限制**:避免被识别为接受无限连接的黑洞。
## 📋 配置参考
| Key | Description | Default |
|------------------------------|------------------------------------------|-------------------------|
| `general.database_path` | SQLite 文件路径 | `data/honeypot.db` |
| `general.log_level` | 日志详细程度 | `INFO` |
| `services..port` | 每个蜜罐的监听端口 | See `config.yaml` |
| `geoip.rate_limit_per_minute`| 每分钟最大的 ip-api.com 请求数 | 45 |
| `threat_intel.abuseipdb_api_key` | 您的 AbuseIPDB API key | *(placeholder)* |
| `alerting.cooldown_seconds` | 每个 IP 两次告警之间的最小秒数 | 300 |
| `rate_limiting.max_connections`| 窗口内每个 IP 的最大连接数 | 30 |
## 📦 数据库架构
```
CREATE TABLE events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL, -- ISO-8601 UTC
src_ip TEXT NOT NULL,
service TEXT NOT NULL, -- ssh | http | ftp | telnet
action TEXT NOT NULL,
payload TEXT, -- JSON blob
geo_country TEXT,
geo_city TEXT,
geo_lat REAL,
geo_lon REAL,
abuse_score INTEGER DEFAULT -1
);
```
## 📜 许可证
本项目在 **MIT License** 下发布。详见 [LICENSE](LICENSE)。
*为防御者构建。保持安全。 🛡️*
标签:AbuseIPDB, AMSI绕过, Docker, ETW劫持, Flask, GeoIP, Honeypot, NIDS, Paramiko, PoC, Python, SQLite, SSH, Telegram, Telnet, Web管理面板, 协议模拟, 告警系统, 地理位置, 多服务蜜罐, 威胁情报, 威胁检测, 安全运营, 安全防御评估, 容器化, 开发者工具, 开源安全工具, 扫描框架, 数据导出, 无后门, 日志记录, 时间线生成, 暴力破解, 版权保护, 红队对抗, 网络安全, 蓝队, 蜜罐, 证书利用, 诱捕系统, 请求拦截, 逆向工具, 逆向工程平台, 邮件告警, 隐私保护