
HoneyWire hub/v2.1.0
开源欺骗平台,能将任何Linux机器转变为高信号蜜罐。在文件、端口和网络服务上部署绊线传感器,检测入侵者并提供即时取证与推送通知。
HoneyWire
📋 目录
概述
HoneyWire 是一个轻量级的分布式高信号安全早期预警系统构建器,专为内网设计。它利用其架构和用户体验,使构建新的 Cyber Canary 服务器或在现有服务器上部署 HoneyWires 变得极其简单。通过使用欺骗技术,它取代了传统 SIEM 的"放大镜"方法——传统 SIEM 通过监视合法流量来让分析师淹没在误报中,而 HoneyWire 采用高保真绊网(Tripwire)模型。
将传感器精确放置在您想要的位置。如果它被触发,说明您有入侵者。
- 生产环境绊网:当活动服务被以不应有的方式探测时发出警报。通过在绝不应被读取的敏感文件或绝不应被访问的服务端口上放置传感器,您可以根据入侵者偏离"授权路径"的行为来识别他们。
- 合成欺骗:部署诸如 ICMP Canary 或 网络扫描检测器 之类的诱饵。由于这些传感器不提供任何合法的业务价值,其 100% 的流量都是可操作的情报。
部署多个传感器后,您就能对入侵者的横向移动有一个相当清晰的了解。无需调优,没有噪音,只有即时取证。 如果您有合法的自动化安全扫描器触发了 HoneyWires,只需在 Hub 的设置中将它们加入白名单即可。
演示
🔌 通用事件标准(自带传感器)
注意:如果您使用官方 HoneyWire SDK 构建传感器,此 JSON 格式化和投递将自动为您处理。
HoneyWire 的真正强大之处在于 Hub 和 Wizard 完全与传感器无关。您不仅限于附带的官方传感器。
通过遵循 HoneyWire 事件标准 V2.0,您可以用任何语言(Bash、Go、Rust、Python)编写脚本来监控任何内容,Sentinel UI 将动态解析、语法高亮并渲染您的取证数据。
无论是**深度包检测(DPI)**引擎、DNS 黑洞、嵌入在 PDF 中的 Canary Token、电子邮件蜜罐,还是简单的 TCP 端口绊网,只需将 通用事件标准 JSON 负载 POST 到 Hub 即可。
功能特性
- Sentinel Hub UI: 一个完全响应式的、基于 Vue 3 的仪表板,具有动态取证负载检查、节点和传感器的部署与管理(包括传感器更新)功能,可直接在 UI 中操作。
- 通用推送通知: 原生、零依赖集成,可将关键警报路由到 Discord、Slack、Ntfy 和 Gotify。
- 企业 SIEM 集成: 原生 RFC5424 Syslog 转发(TCP/UDP),可无缝将结构化遥测数据推送到 Splunk、Elastic、Wazuh 或 Vector。
- 设置向导: 一个部署和测试自动化工具,明确设计为不是 24/7 运行的代理。它只是一个 TUI CLI 工具,用于自动化操作员任务,例如为给定节点应用和协调 Hub 的期望状态,自动处理配置、部署以及失败部署时的回滚。
- 官方 HoneyWires 套件: 包括原生 TCP Tarpit、Web 路由器诱饵、文件 Canary(FIM)、ICMP Canary 和 网络扫描检测器。
架构
HoneyWire 分为四个独立的微服务:
/Hub:中央大脑。一个纯 Go 二进制文件,运行嵌入式 SQLite 数据库和 Vue.js 仪表板。它以非 root 用户身份在 Distroless 容器中运行,安全地将数据挂载到专用卷。/Sensors:诱饵节点。静态链接的 Go 二进制文件,监听易受攻击的端口,诱捕攻击者,并安全地将入侵数据 POST 回 Hub。/SDKs:官方库(如sdk-go),用于处理安全的 Hub 通信,使社区开发者能够轻松构建新传感器。/wizard:设置向导 CLI 工具,用于自动化操作员任务,如发现、部署和测试 HoneyWires。
🚀 快速入门指南
使用我们预构建的 GitHub Container 镜像,部署 HoneyWire Hub 只需不到 60 秒。
1. 部署 Hub
在您的服务器上创建一个新目录,创建一个 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 将设置 secure 标志,在生产环境中强烈建议移除此项并通过反向代理使用 https 运行
- HW_PORT=8080
- HW_DB_PATH=/data/honeywire.db
# 可选:硬编码仪表板密码(禁用 UI 密码重置功能)
# - HW_DASHBOARD_PASSWORD=admin
启动 Hub:
docker compose up -d
2. 初始化系统
在浏览器中导航到 http://<your-server-ip>:HW_PORT。您将看到 Initialize Sentinel 屏幕。
- 创建您的主密码。
- 验证您的 Hub 端点 URL(传感器将用于访问 Hub 的 IP/URL)。
- 点击 "Initialize Hub"。
3. 部署传感器
- 创建一个新节点,并粘贴提供的命令以安装设置向导并将其链接到 Hub。
- 直接从 Hub 安装传感器,然后在节点上运行
honeywire apply以协调期望状态,或运行honeywire discover让设置向导根据环境自动扫描并建议 HoneyWires。
4. 测试 HoneyWires
容器启动后,Tarpit 传感器应在 30 秒内显示为 ONLINE。
运行 honeywire firedrill 让 HoneyWires 向 Hub 发送一个模拟事件以测试连通性。
注意: 有关管理节点、更新传感器和处理回滚的深入介绍,请参阅 用户操作指南。
安全说明
- 威胁模型: 有关信任边界、架构风险和安全规则的深入介绍,请参阅 THREATMODEL.md。
- 节点密钥: 确保您的传感器使用其唯一的
Node Key与 Hub 通信。Hub 将拒绝任何密钥不匹配或无效的负载。 - 系统布防: 您可以在 Hub UI 中切换 "System Armed" 按钮,以在进行内网维护或漏洞扫描时临时禁用推送通知。
- 容器加固: HoneyWire 使用
gcr.io/distroless/static-debian12:nonroot。我们遵循最小权限原则,确保即使容器被攻破,爆炸半径也能得到控制。 - 分布式部署: 强烈建议将 Hub 及其传感器运行在独立的物理机或虚拟机上。如果攻击者攻破了传感器节点,他们不应立即获得对集中式 Hub 的本地访问权限。
- ⚠️ 加密(HTTPS): 在生产环境中,始终通过反向代理(如 Nginx、Caddy 或 Traefik)通过 HTTPS 提供 Hub Web UI 和 API。否则,您的仪表板密码和节点密钥将暴露于网络嗅探风险。
技术栈
- 后端: Go 1.25、
net/http(标准库)、SQLite(ModernC 纯 Go 驱动) - 前端: Vue 3(Composition API)、TailwindCSS、Chart.js
- 基础设施: Docker、Docker Compose v5.0.0+
路线图与开发
HoneyWire 正在积极演进,目标是成为一个完全由 GitOps 驱动的企业级欺骗平台。
- 查看公开路线图 了解我们目前正在构建的内容(v2.2.0 功能、v3.0.0 IaC 重构以及即将推出的 SIEM 基准测试)。
- 想影响路线图? 我们非常依赖社区反馈。请前往我们的 GitHub Discussions 投票选择即将推出的功能、提议新的诱饵类型,或分享您在实验室中使用 HoneyWire 的经验。
版本管理与 API 参考
- HoneyWire 版本通过 Git Tags 管理。
Hub端点:GET /api/v2/version→ 返回{ "version": "v2.x.x" }
- API 文档文件:API.md,包含完整的后端路由参考和示例负载。