vinodap-hub/honeypot-attack-logger
GitHub: vinodap-hub/honeypot-attack-logger
一个集成 TCP 蜜罐诱捕、攻击日志记录与实时可视化仪表盘的威胁情报监测平台。
Stars: 0 | Forks: 0
# HoneyWatch — 蜜罐攻击记录器
一个基于欺骗的威胁情报平台,可实时诱捕、记录并可视化针对您基础架构的恶意活动。
  
## 功能
- **用户身份验证** — 注册、登录、登出、JWT (Supabase Auth)、密码哈希、忘记密码流程、个人资料页
- **仪表盘** — 总攻击数、今日攻击数、独立 IP 数、已封禁 IP 数、活动蜜罐数,以及时间线、攻击类型、国家、端口、协议和风险等级的图表
- **TCP 蜜罐** — Python socket 服务器监听 22、23、80、443、445、3389 端口(可配置)。记录源 IP、时间戳、端口、协议、GeoIP 数据、攻击类型、原始请求和风险等级
- **攻击日志** — 搜索、排序、筛选(国家、类型、日期、风险、端口)、分页、导出(CSV / Excel / PDF)、删除、封禁 IP
- **实时功能** — 每 5 秒自动刷新、实时攻击订阅源、通知下拉菜单
- **攻击地图** — 带有地理定位攻击者标记的 Leaflet.js 世界地图;点击查看 IP、国家、时间、攻击类型
- **管理面板** — 已封禁 IP 管理、蜜罐设置(端口、状态、通知)
- **安全性** — Supabase Auth、密码哈希、所有表上的 Row Level Security、输入验证、CORS
## 技术栈
| 层级 | 技术 |
|------------|------------|
| 前端 | React 18, Vite, TypeScript, Tailwind CSS, React Router, Chart.js, Framer Motion, Leaflet |
| 后端 | Supabase (PostgreSQL 数据库 + Auth) |
| 蜜罐 | Python sockets (多线程 TCP 监听器),通过 REST API 写入 Supabase |
## 项目结构
```
.
├── src/ # React frontend
│ ├── components/ # Layout, charts, stat cards, logo
│ ├── context/ # Auth context (Supabase)
│ ├── lib/ # Supabase client, API layer, utilities
│ ├── pages/ # Dashboard, Attacks, Map, Blocked, Settings, Profile
│ │ └── auth/ # Login, Register, ForgotPassword
│ └── types/ # TypeScript types
├── backend/ # Python honeypot
│ ├── honeypot.py # TCP honeypot listener (writes to Supabase)
│ ├── requirements.txt
│ └── .env.example
├── database/
│ └── schema.sql # Reference schema (tables are auto-created in Supabase)
├── docs/ # Architecture documentation
└── README.md
```
## 安装 — 分步指南
### 步骤 1:前端 (React)
前端已配置好连接到您的 Supabase 项目。连接详细信息位于 `.env` 文件中。
```
npm install
npm run dev
```
这将在 `http://localhost:5173` 上启动应用程序。您可以注册一个账户并立即登录 — 数据库表已经创建完毕。
### 步骤 2:蜜罐(可选 — 用于捕获真实攻击)
蜜罐是一个独立的 Python 脚本,它监听 TCP 端口并将每个连接记录到您的 Supabase 数据库中。
```
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # add your Supabase URL + service role key
python honeypot.py
```
您需要在 `backend/.env` 中提供两个值:
- `SUPABASE_URL` — 您的项目 URL(与前端 `.env` 中的 `VITE_SUPABASE_URL` 相同)
- `SUPABASE_SERVICE_ROLE_KEY` — service role key(在您的 Supabase 控制台的 Settings → API 下找到)
## 一切如何连接
```
Attacker
|
v
TCP Honeypot (Python) ──writes──> Supabase Database (PostgreSQL)
^
|
React Frontend ──reads/writes──> Supabase Database + Auth
```
1. **React 前端**直接与 **Supabase** 通信,进行身份验证(登录/注册)以及读取/写入攻击日志、已封禁 IP 和设置。
2. **Python 蜜罐**通过其 REST API 将捕获的攻击直接写入同一个 **Supabase** 数据库。
3. 前端每 5 秒自动刷新一次,因此蜜罐捕获的攻击会近实时地显示在仪表盘上。
无需 Flask 服务器或 MySQL 安装 — Supabase 负责处理数据库和身份验证。
## 数据库表
所有表都会在 Supabase 中自动创建,并启用 Row Level Security:
- **attack_logs** — id, ip_address, country, country_code, city, latitude, longitude, isp, hostname, attack_type, protocol, port, raw_data, risk_level, connection_status, os, created_at
- **blocked_ips** — id, ip, reason, created_at
- **settings** — id, honeypot_status, ports, notifications
用户账户由 Supabase Auth(内置的 `auth.users` 表)管理。
## 部署
### 前端 → Vercel
1. 将代码仓库推送到 GitHub
2. 在 [Vercel](https://vercel.com) 中导入项目
3. 构建命令:`npm run build` · 输出目录:`dist`
4. 添加环境变量:`VITE_SUPABASE_URL` 和 `VITE_SUPABASE_ANON_KEY`
5. 部署
### 蜜罐 → Render / VPS
1. 将 `backend/honeypot.py` 作为后台 worker 部署在 [Render](https://render.com) 或任何 VPS 上
2. 设置环境变量:`SUPABASE_URL` 和 `SUPABASE_SERVICE_ROLE_KEY`
3. 启动命令:`python honeypot.py`
4. 确保部署主机的防火墙允许您监控的端口上的入站流量
### 数据库 → Supabase(已配置)
Supabase 项目已经设置完毕。表和安全策略已应用。要查看您的数据,请打开 Supabase 控制台并检查 Table Editor。
## 蜜罐配置
从 UI 中的**设置**页面更改受监控的端口。蜜罐在启动时会读取活动端口。默认端口:`22, 23, 80, 443, 445, 3389`。
## 安全说明
- 通过 Supabase Auth 进行用户身份验证(bcrypt 密码哈希)
- 在所有数据库表上启用 Row Level Security
- 只有经过身份验证的用户才能读取或写入数据
- 蜜罐使用 service role key(绕过 RLS)插入攻击日志
- 环境变量确保机密信息不包含在源代码中
## License
MIT
标签:CISA项目, Python, React, Syscalls, 威胁情报, 安全, 开发者工具, 插件系统, 无后门, 测试用例, 自动化攻击, 蜜罐, 证书利用, 超时处理, 逆向工具