这是一个专业的蜜罐网站,用于捕获和分析恶意攻击行为。主要特点:
- 登录页面捕获: 从用户访问登录页面开始记录所有信息
- 实时监控: 实时追踪和分析攻击行为
- 数据记录: 详细记录攻击者的IP、位置、浏览器、操作系统等信息
- 智能检测: 自动识别SQL注入、XSS、目录遍历等攻击模式
每次访问都会记录:
- IP地址和地理位置(国家、城市)
- ⚠️ 注意: 本地IP(127.0.0.1)、私有IP(192.168.x.x, 10.x.x.x)和IPv6回环地址(::1)无法获取地理位置
- 只有公网IP地址才能正确查询到地理位置信息
- 建议使用公网IP或从其他设备访问测试
- User Agent(浏览器、操作系统、设备类型)
- 时间戳
- Referer信息
- Cookies数量
- 系统语言和编码
- 连接类型
node test-geoip.js
自动识别以下攻击类型:
- SQL注入尝试
- XSS攻击
- 目录遍历
- 暴力破解
- 常见管理员用户名尝试
- 敏感文件访问(.git, config.php等)
系统包含多个诱饵路径,吸引攻击者:
/wp-login.php - WordPress登录页
/xmlrpc.php - WordPress XML-RPC
/.git - Git目录
/config.php - 配置文件
/admin - 管理页面
/dashboard - 仪表盘
npm install
npm start
开发模式(自动重启):
npm run dev
- 数据库: SQLite (honeypot.db)
- 日志文件: honeypot.log (JSON格式)
数据库错误: "table attacks has no column named raw_ip"
如果遇到数据库表结构错误,运行迁移脚本:
node fix-database.js
npm start
这是正常的!以下IP地址无法获取地理位置:
- 本地回环:
127.0.0.1, ::1, localhost
- 私有网络:
192.168.x.x, 10.x.x.x, 172.16.x.x-172.31.x.x
解决方法:
- 将蜜罐部署到有公网IP的服务器
- 或者从其他网络设备访问测试
- 使用带公网IP的测试工具
如果看到 ERR_ERL_PERMISSIVE_TRUST_PROXY 警告,说明您使用的是旧版本。最新版本已修复此问题。
⚠️ 重要提醒:
- 仅用于合法的安全研究和教育目的
- 不要用于非法活动
- 保护好管理后台的访问凭据
- 定期清理日志和数据
- 建议在内网环境中使用
- 后端: Node.js + Express
- 数据库: SQLite3
- 安全: Helmet, Rate Limiting
- IP定位: geoip-lite
- 用户代理解析: useragent
管理后台提供以下功能:
- 查看所有攻击记录
- 统计分析(攻击次数、IP分布、事件类型)
- Top攻击IP排行
- 实时数据刷新
- IP搜索和过滤
日志以JSON格式存储,包含完整的攻击者信息。可以使用任何JSON解析工具进行分析。
- 修改默认管理密码
- 配置防火墙规则
- 定期备份数据
- 监控系统资源使用
- 及时更新依赖包