跳到正文

安全 ​

中枢、被控端和客户端各以什么身份运行,谁能连进中枢,密钥和密码存在哪,中枢往外连哪些地方,都列在这一页。

为什么是 root ​

中枢要改防火墙、装软件包、启动和停止系统服务,所以以 root 运行。macOS 上它是 root 的 LaunchDaemon,Windows 上它是以 SYSTEM 运行的服务。被控端要替中枢装模块、管服务,也以同样的身份运行。

Linux 上,中枢的 systemd 单元收窄了 root 能做的事。

  • 它不能再提权,setuid 程序也不能给它更多权限。
  • 它不能创建 setuid 或 setgid 文件。
  • 它只能用自己用到的五类套接字。
  • 它不能改系统时钟,也不能用实时调度。

macOS 和 Windows 上没有这样的服务单元,中枢以完整的 root 或 SYSTEM 权限运行。

面板不存这台电脑的 sudo 密码。面板里存的 sudo 密码属于受管设备,只经 SSH 用在那台设备上。

VS Code 和 CloudCLI 以它们服务的那个账户运行。浏览器拿到它们的令牌,也只能碰到这个账户的文件。终端默认以 root 开 shell,可以在终端模块里换成别的账户。客户端以你自己的账户运行,在 Android 上就是这个应用本身。

8443 开在外面时谁能进来 ​

  • 手机和笔记本上的客户端、别的机器上的被控端,都只连中枢的 8443。直连、SSH 中继和虚拟网都通到这一个端口,所以对外要守的只有它。
  • 加入中枢要一条面板生成的链接,只有登录面板的人能生成。链接里有中枢证书的指纹和一张票据,票据 30 分钟内有效,只能用一次。
  • 加入时,中枢发给设备一个令牌。之后每次连接,设备先核对中枢证书的指纹,对上了才发出令牌。
  • 中枢关掉连上来 3 秒还不发数据的连接(Windows 上是 10 秒),也关掉 30 秒内没通过令牌核对的连接。没加入的连接同时最多 128 个。
  • 60 秒内有 30 次加入失败时,中枢暂停新的加入,直到最早那次失败超过 60 秒。已加入的设备照常连接。
  • 客户端只能打开 客户端 页允许它的那几类服务,终端也是其中一类。在那一页停用或删除一个客户端,它开着的终端和连接立即关闭。
  • 直连只在网口上开 8443 这一个端口。面板、AI 网关和其他端口,仍然只在 网络 页 开放范围 里的网络上应答。
  • 客户端链接里还带着加入虚拟网的材料,也就是 NetBird 的 setup key 或 EasyTier 网络的密钥。在 外部访问 页换掉它们之前,用过的链接还能加入虚拟网,但拿不到令牌。

面板 ​

面板默认用 HTTP,只在 开放范围 里的网络上应答。在 设置 页可以 开启 HTTPS。证书由中枢自己的证书颁发机构签发,这个颁发机构只给私有地址、CGNAT 地址和几个私有名字签证书。浏览器装上它,信任的范围也只到这些地址。

面板密码只存 scrypt 哈希。连续输错密码后,登录页显示 多次失败后已锁定。 在中枢上运行 sudo nhub unlock 解除,Windows 上在管理员 PowerShell 里运行 nhub unlock。重启机器也会解除锁定。

密钥和密码存在哪 ​

存的是什么存在哪怎么保护
SSH 密钥、登录信息、令牌,AI 提供方的 API 密钥也存成令牌保险库,配置目录下的 credentials/vault.jsonAES-256-GCM 整个加密,名字和种类也看不到;数据密钥用保险库口令包着
解开保险库的数据密钥状态目录下的 vault.key只有 root 能读;Windows 上只有 SYSTEM 和管理员能读
面板密码配置目录下的 web/settings.json只存 scrypt 哈希
AI 网关发给客户端的密钥配置目录下的 cliproxyapi/cliproxyapi.json用保险库的数据密钥封存
AI 订阅账号的登录文件状态目录下的 cliproxyapi/auth/只在这台电脑上,备份里没有;恢复备份后重新登录

Linux 上,配置目录是 /etc/neutrino/hub,状态目录是 /var/lib/neutrino/hub。macOS 和 Windows 上的位置,见卸载的最后一节。

保险库口令护的是备份:备份配置目录得到的文件里,密钥都是加密的,拿到这份文件的人没有口令打不开。中枢这台电脑上的 root 能解开保险库,因为数据密钥就在状态目录里。

中枢往外连哪里 ​

什么时候连到哪
在 设置 页检查更新,或运行 nhub update完整版连 GitHub,国内版连 Gitee
装 CloudCLINode.js 和 npm 包:完整版连 nodejs.org 和 npmjs.org,国内版连 npmmirror
装 code-server完整版连 GitHub,国内版连中国科学技术大学的镜像
机器的 AI 工具第一次用到 cc-switch完整版连 GitHub,国内版连微子自己在 Gitee 上的发布
装其他模块各模块的发布方
开着 NetBird、EasyTier 或 SSH 中继NetBird 的管理服务器、EasyTier 控制台或碰头点、你的中继服务器
AI 网关转发请求你加的提供方,或订阅账号所属的服务
代理开着你的出口节点
Linux 上第一次打开 NetBird、EasyTier、代理或 AI 网关这个程序在 GitHub 上的发布页;要装的系统包来自系统的软件源
在 代理 页选择 更新 geodataGitHub 上 v2fly 的 geoip 和 geosite 发布
代理测量出口节点经每个节点连 探测地址(probe URL);参照地址(reference URL) 直接连,默认是 www.msftconnecttest.com
容器 模块列出镜像的标签Docker Hub

装模块时,有的文件由中枢下载后转给被控端,有的由装模块的那台机器自己下载。这台电脑自己的 DNS 解析、时间同步一类系统服务归操作系统管,不在这张表里。

卸载 ​

把微子从机器上拿掉的做法,见卸载。

微子 · 个人开发基础设施