跳到主要内容

安全检查清单

把夜莺开放给更多人之前要过一遍的清单。

这页是前面几页的索引,按「什么时候该做」排。每一条都能在半分钟内确认, 展开的做法在链过去的那一页。

夜莺的默认配置是为「装完就能用」优化的,不是为「直接放给一屋子人用」优化的。 所以第一节的四条不是可选项。

1. 装完立刻做​

检查展开
改掉 root 的默认口令。 root.2020 是公开信息,装完到改完之间这台机器是敞开的用户与团队
换掉配置文件自带的示例 BasicAuth。 [HTTP.APIForService.BasicAuth] 里那组账号密码是随代码发布的,所有人都知道网络与 TLS 加固
决定 [Center.AnonymousAccess] 关不关。 两个开关默认都是 true,开着的时候数据源查询和反代接口不需要登录网络与 TLS 加固
给自己建一个带名字的管理员账号,日常别用 root 干活——出事时才分得清是谁做的用户与团队

2. 让同事进来之前​

这一节都是权限的事。记住权限是两层且的关系,只配一层的结果是「能登录,但什么都看不见」。

检查展开
团队建好了,人编进去了;业务组授权到团队并标了读写 / 只读业务组授权
确认 Standard 对你们够用也不过宽——它带着完整的 /busi-groups 增删改权限角色与权限矩阵
自动化和 AI 客户端用专用账号签发 Token,一个用途一个账号,不要用 AdminToken 与凭据轮换
机器从「未归组」里分到了业务组,否则同事在设备列表里看不到它们业务组授权
每个人的邮箱 / 手机号 / 联系方式填了——取不到地址的通知是静默丢弃的用户与团队
接了 SSO 的话,DefaultTeams(或默认团队)配了,且那个团队在业务组里有授权SSO 与外部身份集成

3. 接外部流量之前​

检查展开
TLS 终结了:要么 [HTTP] CertFile + KeyFile,要么前面有网关网络与 TLS 加固
按路径切流量,没有把 17000 整个放出去——写入端点和管理端点在同一个端口上端口与网络流向
采集器写入加了 BasicAuth([HTTP.APIForAgent.BasicAuth] 默认是注释掉的)网络与 TLS 加固
内置时序库:没有只配 DatasourceUrl 却不配 BasicAuth——那会把读和写一起对全网打开网络与 TLS 加固
[HTTP] PProf 关了,/metrics 没放到公网网络与 TLS 加固
[HTTP.A2A] MCPEnableWriteTools 保持 false,/mcp 只暴露只读工具网络与 TLS 加固
JWT 有效期按需要调短了(默认访问 25 小时、刷新 7 天)网络与 TLS 加固
登录页对外可达的话,[HTTP.ShowCaptcha] 打开了网络与 TLS 加固
「打印请求 Body 路径」里没有带凭证的路径,排查完的条目删掉了站点与用户变量
配置文件 chmod 600,六个可加密字段该加密的加密了密钥管理

4. 验一遍​

清单能骗人,请求不会。换成你自己的地址跑这三条:

# 1. 匿名能不能列出数据源?
curl -i https://<你的夜莺地址>/api/n9e/datasource/brief

# 2. pprof 还开着吗?
curl -i https://<你的夜莺地址>/api/debug/pprof/

# 3. 采集器心跳要不要凭据?
curl -i -X POST https://<你的夜莺地址>/v1/n9e/heartbeat

期望的结果是三条都失败:401、403、404,或者干脆连不上。

拿到 200 分别意味着:

  1. [Center.AnonymousAccess] PromQuerier 还是 true,或者这个地址压根没做网络收口—— 任何人都能对你的数据源发查询;
  2. [HTTP] PProf 还是 true,堆和 goroutine 栈可以被拉走;
  3. [HTTP.APIForAgent.BasicAuth] 还是空的,任何人都能往里写指标。

第 3 条有个例外要注意:拿到 404 只说明这个地址上根本没挂采集器接口组, 只有在你确认采集器是从别的地址写入时,它才算通过。如果是,就换那个地址再跑一遍—— 否则写入通道是敞开的,只是你没往那儿看。

默认配置下这三条都会返回 200。 这不是环境坏了,这就是没配之前的样子。

5. 定期复查​

检查展开
用户列表按最后活跃时间排一遍,清理离职账号和废弃的服务账号用户与团队
每个服务账号名下应该只有一条 Token;多出来的是上一轮轮换没删干净Token 与凭据轮换
仪表盘的公开设置和还没过期的分享链接过一遍——它们和密码是解耦的匿名限时分享
按凭据清单轮换一轮:口令、BasicAuth、数据源、SSO、媒介 TokenToken 与凭据轮换
每次升级之后,重新核对一遍端口和配置默认值端口与网络流向

下一步​