安全与凭证

远程桌面把「一台内网机器的桌面」交给一个网页,所以发放规则比文件分享更敏感。本页说明这条链路默认给你挡住了什么、没挡住什么,以及出事之后怎么收。

访问地址本身就是凭证

https://p2pee.cn/r/<凭证>/
                 └────────┘ 路径这一段编码这台网关的凭证信息
  • 凭证写在地址里,而不是写在服务端 session 里。这是有意的设计取舍:不把内网地址与机器名推给持有凭证的浏览器,就没法知道该连哪台机器。
  • 结论:拿到完整地址的人 = 能连进这台网关清单里的机器。RDP 还要目标机的账号口令;VNC 如果预置了 pass=,那就什么都不用再输。
  • 地址不会被搜索引擎收录(/r/ 在 robots.txt 里 Disallow,入口页带 X-Robots-Tag: noindex),但这只是防索引,不是保密手段。
这些都不该做

把地址发到群聊 / 公开仓库 / 工单系统;给 VNC 预置 pass= 之后把地址发给不熟悉的人;把地址存成书签共享给同事一起用(每份会话都占并发额度,且无从追责)。

目标机器改不了,也当不了跳板

防线实现
地址只来自启动参数网页上没有地址输入框,机器卡片上的地址只作展示
选择只认清单 ID页面回传的是 rdp-1 / vnc-2 这样的编号,ID 不在清单里一律被拒绝
启动时就拒绝公网目标回环 / 私有网段 / 链路本地 / CGNAT / 内网语义域名 / 裸主机名之外一律不让启动,判定不看订阅、也没有绕过开关

所以就算有人拿到完整凭证,也无法让网关去连它指定的一台内网机器 —— 能连的只有你启动时写下的那几台。

口令的去向

凭据出现位置不会出现在
RDP 用户名 / 域可写在启动参数里预置,页面仍可修改—
RDP 口令只在页面输入,仅存内存,随会话结束消失启动参数、机器清单、日志、地址
VNC 口令可写在启动参数 pass= 里;不进清单,只在会话就绪时经已加密的 P2P 通道下发一次页面 DOM、机器清单、日志

RDP 不给预置是因为 NLA / CredSSP 需要账号与口令成对出现,塞进命令行就等于让启动参数变成凭据载体。

日志与数据面

  • 日志脱敏:访问地址只写成 https://…/r/Abc123*** 这种认得出、用不上的形式;换凭证的 key= 请求串、broker 地址与 topic 的账号段都会被遮掉。完整地址只出现在网关启动的那一次横幅里 —— 要长期托管它,请当作密码管理。
  • 画面不经服务器:桌面字节始终走浏览器与网关之间的 DTLS 加密 P2P DataChannel,服务器只牵线、牵完即退出链路;网关不开放任何入站端口,也不需要端口映射。
  • 走中继也不解密:打洞失败经 TURN 中继转发时,改变的是路径(多一跳、带宽受限)而不是机密性,中继拿到的只是密文。

地址外泄之后怎么作废

手段效果说明
停止网关进程立即失效(连不上)最可靠的一层,但重启后若 markID 不变,同一地址又活了
重启网关(非会员)换新地址markID 每次随机 1000-9999,重启即作废旧地址
改 -mark 后重启(会员)换新地址会员用 -mark 固定地址,作废就得改成新值
控制台重置账户 Key❌ 作不了废已发出的地址里编码的是「用户 + 派生口令 + markID」,与 Key 无关,重置 Key 后旧地址照样打得开
重置 Key ≠ 换访问地址

这是最容易误判的一条。Key 泄露要重置 Key;访问地址泄露要靠让网关重新分配 markID(重启或改 -mark),或者先把网关停掉。顺手把 -connect 里的 VNC 预置口令一并撤掉,避免新地址又带着免入口令。

一份发放前自检

  1. -connect 里有没有不该预置的 pass=?发给别人就撤掉。
  2. 目标机上是否只开了需要的账号?别为了让空口令账户连上而去关掉口令要求。
  3. 地址只发给需要的人,并告诉他「这是凭证,不要转发」。
  4. 用完让网关下线:停进程、让被控机休眠,或在控制台确认这条被控端已不在列表里。
  5. 长期常驻的机器(NAS / 软路由)上,把带 -key 的服务文件权限收到 600。

相关