docs(agent): 设计 §12 补 SNI 绕过残留 + brain basic auth 已落地
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -234,7 +234,8 @@ journalctl -u pangolin-agent -n 20 # 确认已重渲染、无 ACL ERROR</c
|
||||
<ul>
|
||||
<li><span class="tag warn">泄露</span> 节点配置里我的几台设备 uuid 会出现在同一条规则中(自我关联),且目的地明文可见。目的地本就在公网 DNS 里,泄露面小;但这确实<b>弱化了 <code>render.go:14</code> 的「节点只见不透明 dp_uuid」不变式</b>,属于知情接受,需在该注释处补一行说明。</li>
|
||||
<li><span class="tag warn">缺闸</span> 守红线的 <code>assertNoIdentityFields</code>(<code>agentd/singbox_test.go</code>)只作用于 <code>state.json</code>,<b>从不检查渲染出的 sing-box 配置</b>。本设计不扩大这个缺口,但也没有补上——补闸另开。</li>
|
||||
<li><span class="tag info">建议</span> 本闸失效时(agent 挂了、配置写错)brain 会重新变成对全体 pangolin 用户可读的裸站。建议<b>另外给 brain 加一层 mTLS 或 basic auth</b> 作纵深防御,约一小时工作量,与本设计正交。</li>
|
||||
<li><span class="tag bad">架构限制</span> <b>443 vhost 的判定依赖 SNI,可被绕过。</b>对 <code>brain</code>/<code>git</code>,节点侧唯一的区分手段是 sniff 出的 SNI。攻击者(持有效 dp_uuid 的其他 pangolin 用户)向 <code>182.92.213.171:443</code> 发起<b>不带 SNI</b> 的 TLS、握手后用 <code>Host: brain.51yanmei.com</code> 头访问,则不匹配任何 <code>domain</code> 规则、也不匹配 <code>ip_cidr</code>(443 不在端口清单里)→ 落 <code>final:direct</code> → nginx 按 Host 路由放行。这在 sing-box 层<b>无法闭合</b>——不能整封 <code>:443</code>,否则 jiu/travel/sudoku/pay 一起死。因此下面这条 brain 鉴权不是「可选纵深」,而是本闸对 brain 的<b>前置条件</b>。</li>
|
||||
<li><span class="tag ok">已做(2026-07-23)</span> <b>brain 已加 nginx basic auth</b> 作纵深防御:ali 的 <code>/etc/nginx/conf.d/brain.conf</code> 在原有 <code>allow 103.119.13.48; deny all</code> 之上叠加 <code>auth_basic</code>(<code>satisfy</code> 默认 <code>all</code> → 源 IP 白名单 <b>与</b> 口令二者都需满足),口令存 Bitwarden「brain basic auth」,htpasswd 仅存 apr1 哈希(明文不落 ali)。acme 通道(:80)与 <code>robots.txt</code> 免密。这样即便本节点 ACL 闸失效(agent 挂了、配置手抖)或被上面的 SNI 手法绕过,brain——唯一无自带鉴权的私有服务——仍不裸奔。</li>
|
||||
</ul>
|
||||
|
||||
<p class="small" style="margin-top:40px">相关:<code>~/code/brain/docs/remote-access-brain-domain.html</code>(brain 外网入口与出口 IP 白名单)· baize 台账 <code>~/code/baize/data/{hosts,domains}.yaml</code></p>
|
||||
|
||||
Reference in New Issue
Block a user