HoneyWire 是一个轻量级、分布式、高信号安全早期预警系统构建工具,专为内部网络设计。它利用其架构和用户体验,使得构建新的蜜罐服务器或在现有服务器上部署 HoneyWire 变得异常简单。它采用欺骗技术,取代了传统 SIEM 那种“放大镜”方法——后者常常因监控合法流量而产生大量误报,使分析人员不堪重负。HoneyWire 采用高保真触发器模型。
将传感器精确放置在您想要的位置。如果它被触发,就意味着有入侵者。
设置多个传感器后,您就能相当清晰地了解入侵者的横向移动路径。无需调优,没有噪音,只有即时取证。如果您有合法的自动化安全扫描器触发了 HoneyWire,只需在 Hub 的设置中将它们加入白名单即可。
注意:如果您使用官方 HoneyWire SDK 构建传感器,此 JSON 格式化和交付将自动为您处理。
HoneyWire 的真正强大之处在于 Hub 和向导完全与传感器无关。您并不局限于附带的官方传感器。
通过遵循 HoneyWire 事件标准 V2.0,您可以用任何语言(Bash、Go、Rust、Python)编写脚本监控任何事物,Sentinel UI 将动态解析、语法高亮并渲染您的取证数据。
无论是深度包检测(DPI)引擎、DNS 沉洞、嵌入 PDF 中的蜜罐令牌、邮件蜜罐,还是简单的 TCP 端口触发器,只需将通用事件标准JSON 负载 POST 到 Hub 即可。
HoneyWire 由四个独立的微服务组成:
/Hub:中央大脑。一个纯 Go 二进制文件,运行嵌入式 SQLite 数据库和 Vue.js 仪表盘。它以非 root 用户身份在 Distroless 容器中运行,并将数据安全挂载到专用卷。/Sensors:诱饵节点。静态链接的 Go 二进制文件,监听脆弱端口,诱捕攻击者,并将入侵数据安全地 POST 回 Hub。/SDKs:官方库(如 sdk-go),用于处理安全的 Hub 通信,方便社区开发者构建新传感器。/wizard:设置向导 CLI 工具,用于自动化操作员任务,例如 HoneyWire 的发现、部署和测试。使用我们预构建的 GitHub 容器镜像,部署 HoneyWire Hub 只需不到 60 秒。
在服务器上创建一个新目录,创建 docker-compose.yml 文件,并粘贴以下内容:
services:
# 1. 权限修复器:运行一次,确保 Hub 可以写入数据卷
permission-fixer:
image: alpine:latest
container_name: honeywire-permission-fixer
command: sh -c "chown -R 65532:65532 /data"
volumes:
- ./honeywire_data:/data
# 2. HUB:基于 Go 的中央仪表盘和 API
hub:
image: ghcr.io/andreicscs/honeywire-hub:latest
container_name: honeywire-hub
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./honeywire_data:/data
depends_on:
permission-fixer:
condition: service_completed_successfully
# 严格安全沙箱
user: "65532:65532"
read_only: true
cap_drop: ["ALL"]
security_opt: ["no-new-privileges:true"]
environment:
- HW_ENV=development # 如果未使用 HTTPS,则需要此项,否则 cookie 将设置安全标志。在生产环境中,强烈建议移除此项,并通过使用 HTTPS 的反向代理运行
- HW_PORT=8080
- HW_DB_PATH=/data/honeywire.db
# 可选:硬编码仪表盘密码(禁用 UI 密码重置功能)
# - HW_DASHBOARD_PASSWORD=admin
启动 Hub:
docker compose up -d
在浏览器中导航到 http://<your-server-ip>:HW_PORT。您将看到 初始化 Sentinel 屏幕。
honeywire apply 以协调期望状态,或运行 honeywire discover 让设置向导自动扫描并根据环境建议 HoneyWire。容器启动后,Tarpit 传感器应在 30 秒内显示为 ONLINE。
运行 honeywire firedrill 让 HoneyWire 向 Hub 发送模拟事件以测试连接性。
注意: 有关管理节点、更新传感器和处理回滚的深入说明,请参阅 用户操作指南。
节点密钥 与 Hub 通信。Hub 将拒绝任何密钥不匹配或无效的负载。gcr.io/distroless/static-debian12:nonroot。我们遵循最小权限原则,确保即使容器被攻破,也尽可能控制爆炸半径。net/http(标准库), SQLite(ModernC 纯 Go 驱动)Hub 端点:
GET /api/v2/version → 返回 { "version": "v2.x.x" }