跳到主要内容

安全配置

Ithiltir 的安全边界主要是管理员认证、节点 secret、同源部署和系统服务权限。

管理员密码

管理员密码来自环境变量:

monitor_dash_pwd

不要写入 YAML。发布包安装脚本会把它写入 systemd unit 的环境变量。

要求:

  • 可见 ASCII 字符。
  • 足够长。
  • 不与节点 secret 或数据库密码复用。

JWT 签名密钥

配置:

auth:
jwt_signing_key: "<high-entropy-secret>"

这是 HS256 签名密钥。泄露后应立即轮换,所有现有 session 都应视为不可信。

节点 secret

节点 secret 只用于:

X-Node-Secret: <secret>

作用范围:

  • /api/node/identity
  • /api/node/metrics
  • /api/node/static

不要把节点 secret 放进本地页面、浏览器代码、公开配置或日志。

HTTPS

生产环境要求按 HTTPS 域名暴露:

  • Dash 对外只暴露 HTTPS。
  • Nginx/Caddy/负载均衡终止 TLS,并反向代理到 Dash 后端。
  • 节点安装和上报使用 HTTPS。
  • 节点加 --require-https 禁止 HTTP 回落。
  • IP+HTTP 只用于本机或临时内网验证。
./node push 3 --require-https

反向代理信任

http.trusted_proxies 只写真实代理 CIDR:

http:
trusted_proxies:
- 127.0.0.1/32
- ::1/128

不要信任全网代理头。

systemd 权限

Dash 发布包服务以 root 写入敏感配置和 unit,配置文件 0600。Linux 节点服务使用独立 ithiltir 用户,并限制可写路径到 /var/lib/ithiltir-node

Webhook 签名

Webhook 设置 secret 后,Dash 会发送:

X-Webhook-Signature: sha256=<hmac>

接收端应使用共享 secret 对原始 body 做 HMAC-SHA256 校验。

不支持的部署方式

  • Dash 子路径部署。
  • 浏览器跨域直连 API。
  • 多个 Dash 实例同时写同一套数据库和 Redis。