2026/4/10 6:45:04
网站建设
项目流程
观山湖制作网站,推广平台有哪些优势,个人可以做视频网站吗,微商软件平台ClawdBot安全加固教程#xff1a;JWT鉴权IP白名单速率限制配置
ClawdBot 是一个面向个人用户的本地化 AI 助手#xff0c;设计初衷是“在你自己的设备上运行、完全可控、无需依赖云服务”。它不追求大而全的平台能力#xff0c;而是聚焦于轻量、可审计、易部署——你可以把…ClawdBot安全加固教程JWT鉴权IP白名单速率限制配置ClawdBot 是一个面向个人用户的本地化 AI 助手设计初衷是“在你自己的设备上运行、完全可控、无需依赖云服务”。它不追求大而全的平台能力而是聚焦于轻量、可审计、易部署——你可以把它理解为一个装在自己笔记本或树莓派上的「AI控制台」后端由 vLLM 提供高性能模型推理能力前端提供直观的 Web 控制界面支持模型切换、会话管理、插件扩展等核心功能。但正因为它是直接暴露在局域网甚至公网的服务尤其当你通过 SSH 端口转发或反向代理对外提供访问时默认配置下的 ClawdBot不具备生产级安全防护能力。它的 API 网关默认开放、无身份校验、无访问控制、无调用节流——这意味着只要知道地址和端口任何人就能调用你的模型、读取历史会话、甚至执行未授权操作。这显然不符合“个人可控”的初心。真正的可控不是“我能装”而是“只有我能用”。本教程不讲原理堆砌不套用抽象概念只聚焦三件事怎么让每次请求都必须带上有效 JWT 才能进门怎么只允许你家路由器分配的那几个 IP 连接怎么防止有人写个脚本疯狂刷接口拖垮你的 vLLM 服务。所有配置均基于 ClawdBot 当前稳定版2026.1.24-3实测可用无需修改源码全部通过标准配置文件与环境变量完成。1. 安全加固前的认知准备ClawdBot 的请求入口在哪ClawdBot 的服务架构非常清晰前端 UIGradio负责展示后端 Gatewayclawdbot gateway负责统一接收 HTTP/WS 请求并分发给模型服务。而真正需要加固的正是这个 Gateway 层。关键事实ClawdBot 默认启动的gateway进程监听http://127.0.0.1:18780HTTP和ws://127.0.0.1:18780WebSocket它不自带鉴权中间件也不做 IP 过滤或限流。所有安全策略必须在此之上叠加。你可能已经通过clawdbot dashboard获取了带 token 的 Web 地址如http://localhost:7860/?tokenxxx但请注意那个 token 仅用于 Gradio 前端登录它对后端 Gateway 完全无效。Gateway 仍处于“裸奔”状态。所以加固的第一步不是改前端而是明确我们要保护的是:18780这个端口。1.1 查看当前 Gateway 状态在终端中执行clawdbot gateway status你会看到类似输出 Clawdbot 2026.1.24-3 (885167d) — I speak fluent JSON, but I still sigh when you forget the comma. Status: running Bind: 127.0.0.1:18780 Mode: local Health: OK (vLLM connected)确认Bind地址确实是127.0.0.1:18780。如果你曾手动修改过绑定地址比如改成0.0.0.0:18780请立即改回127.0.0.1——这是第一道防线拒绝外部直连只允许本机进程通信。小贴士ClawdBot 的设计哲学是“前端代理后端”。Web UI 和 CLI 命令都通过127.0.0.1:18780与 Gateway 通信。因此只要 Gateway 绑定在127.0.0.1你就无需担心公网扫描后续所有加固都是为“你主动暴露出去的代理层”如 Nginx、Caddy 或 SSH 端口转发服务的。2. 第一层防护启用 JWT 鉴权强制身份核验JWTJSON Web Token是目前最轻量、最易集成的 API 认证方式。ClawdBot 原生支持只需两步生成密钥 启用验证。2.1 生成安全密钥并写入环境变量不要用123456或password。打开终端运行openssl rand -hex 32你会得到一串 64 位随机字符串例如a1b2c3d4e5f678901234567890abcdef1234567890abcdef1234567890abcdef将它保存为环境变量。推荐写入~/.clawdbot/.env如果不存在则创建echo CLAWDBOT_JWT_SECRETa1b2c3d4e5f678901234567890abcdef1234567890abcdef1234567890abcdef ~/.clawdbot/.env注意.env文件权限必须设为600仅所有者可读写chmod 600 ~/.clawdbot/.env2.2 在配置文件中启用 JWT 验证编辑~/.clawdbot/clawdbot.json即/app/clawdbot.json在顶层添加security字段{ security: { jwt: { enabled: true, header: Authorization, prefix: Bearer } }, agents: { ... }, models: { ... } }重要说明header: 指定从哪个 HTTP Header 读取 token默认Authorizationprefix: 指定 token 前缀默认Bearer注意末尾空格此配置不会影响现有 CLI 命令clawdbot models list等仍可直接运行因为 CLI 走的是本地 Unix socket不经过 HTTP所有外部 HTTP/WS 请求包括你用 curl 测试、前端 JS 调用、Postman 调试现在都必须携带合法 JWT否则返回401 Unauthorized。2.3 生成一个可用的 JWT 并测试安装jwt-climacOS/Linuxnpm install -g jwt-cli # 或使用 Python需先 pip install pyjwt pip install pyjwt[crypto]生成 token有效期设为 7 天jwt encode --secret a1b2c3d4e5f678901234567890abcdef1234567890abcdef1234567890abcdef \ --expires-in 7d \ --iss clawdbot \ --sub admin \ --aud gateway你会得到一长串 token形如eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJjbGF3ZGJvdCIsInN1YiI6ImFkbWluIiwiYXVkIjoiZ2F0ZXdheSIsImV4cCI6MTcyMjQwMDAwMH0.xxxxx现在用 curl 测试curl -H Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJjbGF3ZGJvdCIsInN1YiI6ImFkbWluIiwiYXVkIjoiZ2F0ZXdheSIsImV4cCI6MTcyMjQwMDAwMH0.xxxxx \ http://127.0.0.1:18780/v1/models应返回模型列表HTTP 200❌ 若去掉-H参数返回401 Unauthorized。小结JWT 鉴权已生效。你不再需要记住多个密码只需安全保管好CLAWDBOT_JWT_SECRET所有合法 token 都可随时签发、随时废止通过更换密钥实现。3. 第二层防护配置 IP 白名单最小权限访问即使有了 JWT你也应限制“谁能发起请求”。ClawdBot 支持基于 CIDR 的 IP 白名单粒度精确到子网。3.1 确定你的可信 IP 范围如果你只在本机使用如通过localhost:7860访问 UI白名单只需127.0.0.1/32如果你在家庭网络中多设备访问手机、平板、另一台电脑查一下路由器分配的局域网段常见为192.168.1.0/24覆盖192.168.1.1~192.168.1.25410.0.0.0/24或172.16.0.0/12根据你的路由器设置如果你通过 SSH 端口转发如ssh -L 7860:127.0.0.1:7860 userserver那么服务器的内网 IP如10.0.2.2也要加入。快速查看本机局域网 IPmacOS/Linuxipconfig getifaddr en0或hostname -IWindowsipconfig | findstr IPv43.2 在配置中启用 IP 白名单继续编辑~/.clawdbot/clawdbot.json在security下添加ipWhitelist{ security: { jwt: { enabled: true, header: Authorization, prefix: Bearer }, ipWhitelist: [127.0.0.1/32, 192.168.1.0/24] }, agents: { ... }, models: { ... } }支持多个 CIDR用数组表示/32表示单 IP/24表示 C 类子网❌ 不支持域名、不支持通配符如192.168.*.*白名单检查在 JWT 验证之前执行——这意味着非法 IP 连接连 token 校验环节都进不去直接403 Forbidden。3.3 验证白名单是否生效找一台不在白名单内的设备如手机用蜂窝网络尝试访问curl -v http://YOUR_SERVER_IP:18780/v1/models你应该看到响应头中包含HTTP/1.1 403 Forbidden且响应体为{error:Forbidden: IP not in whitelist}白名单工作正常。小结IP 白名单 JWT 形成双重校验——先看“你是谁IP”再看“你有没有钥匙token”。两者缺一不可。4. 第三层防护启用速率限制防暴力探测与滥用没有限流的 API就像没锁的门——即使有钥匙也挡不住有人连续敲门一万次。ClawdBot 内置基于内存的令牌桶Token Bucket限流器开箱即用。4.1 理解限流参数key、limit、windowClawdBot 的限流按“请求路径前缀”分组每个组独立计数。常用配置项参数含义示例key限流分组依据path:/v1/chat/completions表示所有/v1/chat/completions请求归为一组limit窗口期内最大请求数10window时间窗口秒60→ 即每分钟最多 10 次推荐组合对/v1/chat/completionslimit: 30,window: 60防脚本刷对话对/v1/modelslimit: 5,window: 60防频繁探针对根路径/limit: 100,window: 300宽松供前端健康检查4.2 配置速率限制规则在clawdbot.json的security下添加rateLimiting{ security: { jwt: { ... }, ipWhitelist: [ ... ], rateLimiting: { enabled: true, rules: [ { key: path:/v1/chat/completions, limit: 30, window: 60 }, { key: path:/v1/models, limit: 5, window: 60 }, { key: path:/, limit: 100, window: 300 } ] } } }注意rateLimiting是对象rules是数组每条 rule 必须包含key、limit、window三个字段。4.3 测试限流效果用 curl 连续快速请求模拟攻击for i in {1..40}; do curl -s -o /dev/null -w %{http_code}\n -H Authorization: Bearer YOUR_TOKEN http://127.0.0.1:18780/v1/chat/completions; sleep 0.1; done你会看到前 30 次返回200或400请求体错误第 31 次起返回429 Too Many Requests响应头中包含X-RateLimit-Limit: 30 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1722400000限流器已就位。小结速率限制不是为了“卡住用户”而是为系统留出喘息空间。它让 ClawdBot 在遭遇误操作或恶意探测时依然保持核心服务模型推理的稳定性。5. 综合加固后的完整配置示例以下是整合 JWT、IP 白名单、速率限制后的clawdbot.json安全相关片段仅展示security部分其余保持不变{ security: { jwt: { enabled: true, header: Authorization, prefix: Bearer }, ipWhitelist: [127.0.0.1/32, 192.168.1.0/24], rateLimiting: { enabled: true, rules: [ { key: path:/v1/chat/completions, limit: 30, window: 60 }, { key: path:/v1/models, limit: 5, window: 60 }, { key: path:/, limit: 100, window: 300 } ] } }, agents: { ... }, models: { ... } }重启 ClawdBot 生效若正在运行clawdbot gateway stop clawdbot gateway start提示ClawdBot 的配置是热加载的但security相关变更需重启 gateway 进程才能生效。6. 加固后验证清单5 分钟自查完成配置后请按顺序执行以下 5 项验证确保无遗漏JWT 缺失测试curl http://127.0.0.1:18780/v1/models→ 应返回401 UnauthorizedJWT 无效测试curl -H Authorization: Bearer invalid.token.here http://127.0.0.1:18780/v1/models→ 应返回401IP 白名单测试从非白名单 IP如手机蜂窝网络访问 → 应返回403 Forbidden速率限制测试用正确 token 连续请求/v1/chat/completions超过 30 次/分钟 → 第 31 次起应返回429功能回归测试用浏览器打开http://localhost:7860/?tokenxxx→ 前端 UI 应完全正常所有按钮、下拉、提交均可用因为前端已自动注入 token全部通过恭喜你的 ClawdBot 已具备基础生产级防护能力。7. 进阶建议让安全更进一步以上三重防护已覆盖 95% 的个人使用场景。若你有更高要求可考虑以下延伸方案非必需按需选用7.1 使用反向代理Nginx/Caddy做前置网关将127.0.0.1:18780完全屏蔽只暴露443端口在 Nginx 中终止 TLS、添加 Basic Auth、集成 WAF 规则利用 Nginx 的limit_req模块做第二层限流更精细日志集中收集便于审计。7.2 启用 HTTPS强制加密传输ClawdBot 本身不内置 HTTPS但可通过clawdbot dashboard启动时指定证书clawdbot dashboard --ssl-key-file /path/to/key.pem --ssl-cert-file /path/to/cert.pem或更推荐用 Caddy 一键反代并自动申请 Lets Encrypt 证书。7.3 定期轮换 JWT 密钥将CLAWDBOT_JWT_SECRET写入密码管理器每 3 个月手动更新一次并通知所有合法使用者重新生成 token。密钥轮换是成本最低、收益最高的安全实践。最后提醒安全不是一劳永逸的配置而是一种持续的习惯。ClawdBot 的价值在于它把控制权交还给你——而这份控制权值得用一点点配置去守护。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。