Skip to content

安全 ​

登录 ​

  • 管理员密码来自 Worker 机密 ADMIN_PASSWORD(至少 8 位;短了不生效,登录页会直说)。面板第一次读到它时,会把加盐的 PBKDF2 哈希存进 D1——不是明文,也不是能离线快速爆破的单轮摘要——这样重新部署丢了机密也不会被锁在门外。机密还在时以机密为准(恒定时间比较摘要),机密没了则用库里的记录校验。
  • 登录后得到一个签名的会话 Cookie:HttpOnly、SameSite=Strict,HTTPS 下带 Secure,7 天有效。签名密钥由 TOKEN_KEY 经 HKDF 派生出单独的一把(加密数据的密钥从不直接用来签名),并以当前的密码记录为盐:修改密码即让所有会话失效。
  • 退出登录会让所有设备上的登录一起失效:Cookie 里带着一个会话代数,退出时它加一,之前签发的 Cookie(包括被人复制走的)都不再有效。
  • 同一地址 15 分钟内失败 10 次后,暂停这个地址的登录;IPv6 按 /64 计(一台机器通常有整个 /64,换地址绕不过去)。
  • 会改动数据的请求必须来自面板自己的页面(浏览器的 Sec-Fetch-Site / Origin),别的网站借你的登录状态发请求会被拒绝;SameSite=Strict 之外的第二道锁。
  • 需要更强的保护时,可以在面板前面加 Cloudflare Access,放行 /api/agent/* 和 /sub/*(服务器和订阅客户端不会登录)。

页面 ​

  • 页面带 Content-Security-Policy(只运行面板自己的脚本,不允许被嵌进别的网站)、X-Content-Type-Options: nosniff、Referrer-Policy: no-referrer;接口的回答一律不缓存。
  • 订阅地址、节点链接、安装命令里的令牌默认遮住中间一段,点 👁 才显示,复制不需要先显示——截图、共享屏幕时不会顺带泄露。

服务器 ​

  • psm-agent 不监听任何端口,只主动用 HTTPS 连接面板。面板地址必须是 https://(本机和内网地址的测试面板除外)。
  • 安装命令里的令牌一次性、24 小时有效;同一台服务器再看安装命令还是同一条(加密保存,D1 里没有明文),不会越点越多;怀疑泄露时在服务器页 重新生成,旧的立即失效。接入后换成这台服务器自己的 agent 令牌,面板只存它的 SHA-256。
  • psm-agent 只执行白名单校验过的 psm 命令:内核、协议、节点名、端口、密钥、中转的地址和端口等逐项校验,参数以数组传递,从不经过 shell。面板无法让服务器执行 PSM 命令行做不到的事。
  • 同一个 agent 令牌一分钟内同步远超 psm-agent 正常频率时,面板让它放慢(429)。
  • psm-agent 下载时用发布页的 SHA256SUMS 校验(校验的是完整性:发布页本身被篡改防不住,没有另外的签名)。
  • 自动选择 REALITY 伪装目标时,面板自己查网络测绘引擎,API Key 不会发给服务器;服务器只拿到候选网站去做 TLS 检查。

数据 ​

  • 节点的协议参数(密码、密钥)、客户端链接、下发的任务、订阅令牌、安装命令的令牌、中转隧道的密码、服务器的诊断报告,在 D1 里都用 AES-GCM 加密保存。

  • agent 令牌、加入令牌、订阅令牌的查找都用哈希;数据库里没有明文令牌。

  • 加密密钥放在哪:一键部署时面板自己生成密钥并存在 D1 里——和它加密的数据在一起,拿到数据库导出就能解开。系统设置里能看到密钥的位置,并按步骤把它挪进 Cloudflare 机密 TOKEN_KEY,再删掉 D1 里的副本,见 系统设置 · 数据加密密钥。

  • 旧数据每天自动清理(北京时间凌晨 3 点,由 Worker 的定时触发器执行,不依赖服务器在线;服务器同步时也会顺带清理,最多一小时一次):

    数据保留
    操作日志7 天
    已完成的任务7 天
    中转测量7 天(图表最多看 7 天)
    每日流量60 天(流量页显示 30 天)
    登录失败记录1 天
    用过或过期的安装令牌1 天
  • Worker 默认开启 Workers Logs(Cloudflare 控制台里只有你自己能看),请求日志会记下访问的地址,订阅地址里的令牌也在其中。不希望这样时,把 wrangler.jsonc 里的 observability.enabled 改成 false。订阅地址泄露时在面板上重置即可。

  • 仓库里没有任何密钥;密钥只在你自己 Cloudflare 账号的 Worker 机密里(或按上面说的,暂时在 D1 里)。

AGPL-3.0 · 与 PSM 相同