跳到主要内容
WebMux安装 WebMux

安全与部署建议

WebMux 以启动服务的系统用户身份执行任意命令,等同于把一个 shell 暴露到网络上。它不是进程沙箱,也不提供多用户隔离,安全依赖于网络隔离。

安全模型

  • 默认监听所有接口 0.0.0.0:7681;仅本机使用请设为 127.0.0.1:7681,远程访问建议绑定可信 VPN 地址,并用防火墙限制可访问的接口。
  • 首次启动生成 0600 配置文件和持久化的 256 位 Token,可用 webmux status --json --reveal-token 查看。
  • 所有 API 与 WebSocket 都需要认证(启用 token 时),token 以常量时间比较;带 Origin 的请求必须同源或位于 allowed_origins 中。
  • Token 不进入请求 URL:HTTP 使用 Bearer 头,WebSocket 使用子协议;终端输入输出不会写入日志,配置接口不返回 token。
  • WebMux 不内置 TLS;需要 HTTPS 时使用 tailscale serve 或反向代理。
  • 登记的 Git 仓库必须可信:Git 会执行仓库配置中的 hooks 与 filters。关闭会话会清理其进程树,但完全脱离终端会话的自守护进程可能不受控制。
  • 只有最新发布版本会接收安全修复。

阅读完整安全策略

三种推荐拓扑

风险最低

仅本机

适合谁

只在运行 WebMux 的这台电脑上用浏览器或 webmux attach 操作会话。

监听

127.0.0.1:7681

Token 要求

仅监听 loopback 且未启用隧道时,空 token 表示不认证;仍建议保留首次启动生成的 256 位 Token。

不要这样做

  • 保留默认的 0.0.0.0:7681 却以为只有本机能访问。
  • 在同一台机器上与不可信的其他用户共用该端口。

详细步骤: 配置

推荐的远程方式

Tailscale / WireGuard

适合谁

要从手机、平板或另一台电脑访问,访问设备都能加入同一个可信 VPN。

监听

Tailscale / WireGuard 地址,或 [tailscale] mode = "serve"

Token 要求

使用随机 token;托管 Serve 要求至少 43 字符的登录 Token。token 保存在浏览器 localStorage 中,只在可信设备上登录。

不要这样做

  • 让防火墙对 VPN 以外的接口开放该端口。
  • 把 tailnet 内的入口当作公网入口分享给不在 tailnet 的人。

详细步骤: 手机访问(Tailscale)

公网:Token 是唯一屏障

Cloudflare Named Tunnel 或 Tailscale Funnel

适合谁

确实无法使用 VPN,又需要从任意网络访问,并愿意承担公开 shell 风险的人。

监听

127.0.0.1,经 Named Tunnel 或 Funnel 提供 HTTPS

Token 要求

Token 是唯一入口屏障:隧道与 Funnel 都要求至少 43 字符的 WebMux 登录 Token,建议用 openssl rand -base64 32 生成。任何拿到链接与 Token 的人都能以服务用户身份执行命令。

不要这样做

  • 把 WebMux 端口直接暴露到公网,或用无身份验证的反向代理转发。
  • 长期使用 Quick Tunnel:它没有 Cloudflare Access 或额外身份验证,地址随机且无 SLA。
  • 让他人读取 journal 或日志:带 #token= 的链接和二维码会写入其中。
  • 以为移除 --tunnel 就关闭了公网:持久化设置会在下次启动恢复,需在网页、托盘或本机 API 中关闭。

详细步骤: Cloudflare Named Tunnel 配置指南

报告漏洞

请不要通过公开 Issue 报告安全漏洞。请使用 GitHub 的 私密漏洞报告,并提供受影响的版本与平台、复现步骤或概念验证、可能的影响范围。详见 安全策略 · 报告漏洞。