安全部署
安全
clmbot 的安全模型与信任边界:mTLS、凭证保存、私钥权限、日志脱敏、下载校验、8862 端口防火墙与漏洞报告流程。
本文说明 clmbot 的安全模型、部署时需要关注的风险点,以及漏洞报告流程。
安全模型与信任边界
clmbot 部署在你的服务器上,处于以下信任边界之中:
- 上游证书服务(CaaS、私有 CLM 或自有服务):持有证书签发能力,clmbot 通过上游定义的认证与其通信;
- clmbot 进程:以专用系统账号运行,只被授予证书目录读写和精确的服务重载命令(见最小权限);
- 目标中间件(Nginx/Apache/Tomcat/IIS 等):接收 clmbot 写入的证书,由
after_script重载。
关键信任假设:
- 上游被信任签发正确的证书。请只接入你信任并可审计的上游;
before_script/after_script以 clmbot 账号权限执行。脚本内容等同于可执行代码,必须人工审计;- clmbot 运行账号被攻破时,影响面应被最小权限配置限制在证书目录与已授权命令内。
双向 TLS(mTLS)
远程推送模式下,clmbot 以 Server 模式监听(当前示例为 8862/TCP),与上游之间支持双向 TLS 认证:双方互相校验证书身份,防止未经授权的一方向 clmbot 推送证书或冒充 clmbot 接收证书。
定时拉取模式不监听端口,出站连接使用上游定义的安全认证。
凭证保存
- AccessKey、AccessSecret 等上游凭证只在初始化时输入,不要写入 shell 脚本、代码仓库、CI 配置或文档截图;
config.yaml及凭证存储文件应仅允许 clmbot 账号和必要管理员读取;- 定期轮换凭证;人员变动或疑似泄露时立即在上游吊销并重新签发;
- 文档与工单中一律使用
<YOUR_ACCESS_KEY>类占位符。
私钥文件权限
- 私钥文件(如
.key)建议0640或更严格,属主/属组只覆盖必要账号; - 证书目录建议
0750,并用 ACL 精确授予 clmbot 读写(完整示例见最小权限); .bak备份文件同样包含旧私钥,权限要求与正式文件一致,不再需要时及时清理。
配置与日志脱敏
对外提供 config.yaml、update.log 或终端输出前(例如提交 Issue、寻求支持),必须删除或替换:
- AccessKey、AccessSecret;
- 私钥与 PFX 密码;
config.yaml中的敏感字段;- 内网 IP、主机名和客户标识;
- 完整证书内容;
- 含凭证的命令历史和日志。
下载校验与签名
- 只从下载页列出的 sslTrus 官方 CDN 获取 clmbot,下载后校验 SHA256(见安装);
- 校验值不一致的文件不要执行;
- 当前发布完整性以下载页公布的 SHA256 为准;如后续增加签名或 provenance,会在发布记录中单独说明。
防火墙与 8862/TCP
- 定时拉取模式不需要任何入站端口,这是它被默认推荐的重要原因;
- 远程推送模式需要开放入站端口(当前示例为 8862/TCP),应只对上游来源 IP 开放,并将监听地址绑定到必要的网卡(详见远程推送)。
脚本执行风险
before_script / after_script 在证书更新时自动执行:
- 任何能修改这两个脚本的人都可以借 clmbot 的权限执行代码。脚本文件本身的写权限必须严格限制;
- 启用前人工逐行审计,变更后重新审计;
- 不在脚本中嵌入凭证、不调用不受限的解释器(见最小权限的禁止做法)。
漏洞报告流程
请勿在公开 Issue、Discussions 或社交媒体披露未修复的安全漏洞。
报告渠道:
- 安全邮箱:
security@clmbot.org; - 如果 GitHub 仓库的 Security 页面显示 Report a vulnerability,也可以从该入口发起私密报告。
报告时请包含受影响版本、脱敏后的复现步骤和影响评估。维护者会先确认信息并协调修复;在用户能够采取行动时,安全公告会说明受影响版本和升级建议。安全问题不承诺固定处理时限。
提交公开 Issue 前的脱敏清单
在任何公开渠道(Issue、Discussions、论坛)贴出配置、日志或命令输出前,逐项确认已删除:
- AccessKey、AccessSecret;
- 私钥与 PFX 密码;
-
config.yaml中的敏感字段; - 内网 IP、主机名和客户标识;
- 完整证书内容;
- 含凭证的命令历史和日志。
