安全配置

小匠实战约 4 分钟读完更新于 2026-06-19

上线前必过 5 项:防火墙、postgres 不暴露、API key env 注入、admin 强密码、订阅鉴权开启。逐条打勾即可上生产。

6.1 防火墙

对外只开 22 / 80 / 443,其它收口。

  1. 看当前监听:ss -tlnp
  2. 用 ufw 或 firewalld 放行 22/80/443,其它拒绝
  3. 从外网 nmap -p 3001,5432 服务器IP 验证扫不到
# Ubuntu / Debian
sudo ufw default deny incoming
sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
sudo ufw enable

# CentOS / RHEL
sudo firewall-cmd --permanent --add-service={ssh,http,https}
sudo firewall-cmd --reload

注意: 云上别忘云防火墙:阿里云安全组 / AWS SG 是另一层,要和系统防火墙同时收口。

6.2 postgres 不暴露公网

数据库永远不挂公网。小匠 postgres 容器默认只在 docker 内网监听,确认 3 处。

  1. 检查 compose 里 postgres 的 ports:——生产应整段删掉,或只绑 127.0.0.1:5432:5432,绝不能写 5432:5432
  2. 密码用 32 位以上强随机串,通过 .env 注入
  3. 需远程连库走 SSH 隧道:ssh -L 5432:localhost:5432 ops@服务器

注意: 不可逆事故:公网暴露 5432 + 弱密码 = 几小时内被勒索锁库。上线前用 nmap 反向扫一次,确认 psql -h 服务器IP 连不上。

6.3 LLM API Key

DeepSeek / OpenAI key 统一走环境变量,不进 git、不进镜像、不进日志。

  1. key 写 .env,权限 chmod 640.gitignore 排除
  2. compose 用 env_file: .env 引用;每 90 天在管理后台「模型配置」轮换一次
  3. 在 DeepSeek / OpenAI 控制台设置月度花费上限告警
# /opt/jecloud-ai/.env
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
POSTGRES_PASSWORD=<32 位随机串>

sudo chown root:ops /opt/jecloud-ai/.env
sudo chmod 640 /opt/jecloud-ai/.env

小贴士: 误提交了:立刻去 LLM 控制台吊销那把 key、重新生成、更新 .env。仅 git rm 没用,历史里还在。

6.4 admin 强密码

管理后台是钥匙串。默认初始密码 jecloud@123,不改等于裸奔。

  1. 首次部署后立刻登录「管理员」页面改密码,≥12 位含大小写 + 数字 + 符号
  2. 给每个管理员单独开账号,不共用 admin(审计能追到人)
  3. 离职 / 转岗当天在「管理员」页面禁用其账号

注意: 当前无 2FA:v1 仅密码 + Cookie,未集成短信 / TOTP。纵深防御 = 强密码 + 管理后台不开公网 + 离职即时禁用。

提示: 忘记密码:进容器跑 agent reset-admin <username> --yes,会重置成 jecloud@123,登录后立刻再改。

6.5 订阅鉴权(License Guard)

AI 套件靠 per-server license 探测放行业务请求。位置在管理后台「系统设置 → 系统信息」面板的「订阅鉴权」卡片。

  1. 「订阅鉴权总开关」生产保持开启(关闭仅应急调试用)
  2. 查「license 状态」列表,确认各 JECloud 服务器都是 active;异常状态 no_ai_plugin / idle 直接读错误消息排查
  3. 需要立即生效改动时点「强制刷新」,否则调度器每 1 小时自动探测一次

注意: per-server,不是 global:登录服务器 A 有证书但请求路由到 B 而 B 没证书,会被拦下报 no_ai_plugin——设计如此,避免跨服务器授权泄漏。

6.6 上线前 check list

逐项打勾,全过才上生产。

  • ☐ 防火墙只开 22/80/443,nmap 外网扫 3001 / 5432 都封死
  • ☐ postgres 端口不绑公网,远程连库走 SSH 隧道
  • ☐ LLM API key 在 .env、权限 640、不在 git 历史里
  • ☐ admin 默认密码已改成 ≥12 位强密码,管理后台未暴露公网
  • ☐ HTTPS 已上、证书有效期 ≥60 天(见反向代理 + HTTPS
  • ☐ 订阅鉴权总开关已开启,各服务器 license_status 全 active

提示: 下一步:看性能调优,做最后一道性能优化。

相关

没解决你的问题?

直接问学院 AI 助教小帅 —— 他读过全部学院文档,会带着步骤和文档链接回答;也可以让工程师一对一讲解。