Openclaw安全使用规范

0 阅读9分钟

更多关于AI安全、大模型安全、智能体安全的相关资料,可在公众号《小枣信安》回复 "资料" 获取。

小枣信安:专注AI安全,包括但不限于大模型安全、智能体安全、AI赋能网络安全等。

前言

Openclaw虽然方便,但权限过大且使用不当后,风险也很多,本篇记录Openclaw的安全使用规范,作为参考。

软件更新

Openclaw因为关注度高的原因,会经常暴出安全漏洞,建议养成定时更新的习惯。

1、通过openclaw自身更新
openclaw update
2、npm方式的更新
npm install -g openclaw@latest
3、pnpm方式的更新,以下两个命令都可以
pnpm add -g openclaw@latest
pnpm update -g openclaw

本地模型

Openclaw在处理任务时,会携带相关数据和大模型进行交互,如果使用在线模型,则存在数据泄露问题,针对这种情况,对于机密信息或带有敏感信息的问题,最好使用本地大模型,如果仅仅是聊天、搜东西,则可以使用线上模型。

敏感数据

如果使用在线模型,对于敏感数据,最好不要发给大模型,必须发送的话,建议做一个脱敏的处理,示例数据如下:

个人身份信息(PII):姓名、身份证号、银行卡号、家庭住址等。
专有商业数据:商业秘密、财务信息、战略计划、客户名单等。
技术信息:API密钥、数据库凭证、系统架构详情等。

容器部署

优先建议在虚拟机或容器中部署,比如Vmware、Docker等。如果在宿主机部署,建议找一台专用的电脑进行运行。

禁止部署在生产服务器、域控服务器、核心服务器、主办公电脑上。

本地访问

个人使用建议设置为只允许本地访问(默认配置),即只能通过127.0.0.1访问,哪怕同一个网络下他人通过192或172等内网IP也是访问不到的。

如下是默认配置,mode代表运行模式,local表示Openclaw运行在本地技巧上,bind代表绑定访问地址,loopback代表只允许本地访问。

"gateway": {
    "port": 18789,
    "mode""local",
    "bind""loopback",

专属账号运行

对于运行Openclaw的账户,建议采用最小权限原则,去专门建立一个低权限的系统账户,以该账户去运行Openclaw,以此来限制其权限,因为Openclaw你用哪个账户运行,它就拥有哪个账户的权限。

同时对于openclaw目录和openclaw的配置文件也应该添加相应权限,禁止其它无关的账户进行读写执行等操作。

chmod 700 ~/.openclaw
chmod 600 ~/.openclaw/openclaw.json

修改默认端口

默认的18789端口很容易被扫描,可以在配置文件的gateway下的port中修改默认端口,例如8789:

"gateway": {
    "port": 8789,
    "mode""local",
    "bind""loopback",

防火墙配置

可以利用系统防火墙添加访问规则,只允许本地访问openclaw:

sudo ufw allow from 127.0.0.1 to any port 8789

或者根据情况添加某个白名单:

sudo ufw allow from x.x.x.x to any port 8789

强Token认证

openclaw的默认token为32位,如果想增加爆破难度,可以将其替换为64位、128位等。可以使用模型生成,或一些密码工具或者使用如下命令:

openssl rand -base64 128

或使用如下python命令:

python -c "import secrets;print(secrets.token_urlsafe(128))"

会话隔离

会话隔离可以防止记忆污染,当给A智能体对话时,B智能体是看不到的,且如果要多人使用openclaw,团队共享时,该配置也很有用,能保证每个人的会话是独立互不影响的,该配置为默认配置,可检查如下配置是否存在:

 "session": {
    "dmScope""per-channel-peer"
  }

密钥管理

密钥直接明文配置到配置文件中,不仅不合规,且容易导致泄露,建议将密钥存放到环境变量中,以Windows为例,创建一个用户级别的变量,比如DEEPSEEK_API,变量名要全大写,之后在配置文件中用${}形式引用:

"profiles": {
    "deepseek:default": {
      "type""api_key",
      "provider""deepseek",
      "key""${DEEPSEEK_API}"
 }

上面这种配置形式,其它程序也可以调用,如果环境变量只在openclaw中使用,则可以在openclaw的配置菜单下进行添加,如下图。

图片

整个openclaw的相关密钥可以通过下面这条命令来查看,它会列出来相关密钥的位置以及是否是明文:

openclaw secrets audit

权限管理

多个智能体应按照智能体当前的功能规划来分配权限,比如写作助手,就不应该分配执行命令的权限,这个可以在Openclaw的代理栏下的Tools下进行配置,它默认提供了几个分类,有Minimal最小权限,有Coding编程的,也有Full所有的,也可以根据自己需求去进行单独的开启和关闭。

图片

建议禁用一些高风险的权限,比如exec执行任意命令、browser浏览器、web_fetch抓取外部内容、web_search搜索引擎查询等。

SKILL安全

安装SKILL时,必须对其进行安全审查,可以进行安全扫描或者人工审查,对于已经安装的SKILL也应该定期进行检查,在openclaw中,可以安装如下skill对其它skill进行安全检查:

clawhub.ai/itsclawdbro…

或者使用snyk的在线扫描器进行扫描:

github.com/snyk/agent-…

labs.snyk.io/experiments…

如果在skill市场下载相关技能时:

skills.sh/

一定要关注右侧的安全审计信息,Trust Hub是官方的审查结果,Socket是Socket.dev,全球顶级的JS/Node.js供应链安全工具,Snyk就是刚刚提到的那个在线扫描,可以多关注这三个地方的检测结果。

图片

日志记录

开启日志审计功能,便与出问题后进行审计,位置在配置-Logging下,相关参数说明如下:

Console Log Level:控制台日志的输出级别。

Console Log Style:控制台日志输出的样式,pretty代表彩色输出。

Log File Path:存放日志文件的目录。

Log Level:日志文件的输出级别。

Max File Bytes:日志文件的最大大小,默认是500M,超过该容量后将会禁止写入。

Custom Redaction Patterns:自定义脱敏规则,可配置哪些内容写入日志时进行脱敏,该项配置后会覆盖默认的规则。

Sensitive Data Redaction Mode:自带的脱敏规则,tools选项代表工具参数、密码、key等场景的敏感信息,会脱敏后再存入日志。

图片

图片

或者在配置文件中添加如下内容:

"logging": {
    "level""debug",
    "file""D:\\openclaw\\.openclaw\\logs\\openclaw.log",
    "consoleLevel""info",
    "consoleStyle""pretty",
    "redactSensitive""tools"
  },

沙箱隔离

沙箱会为Agent提供一个独立的、隔离的、最小权限的运行环境,这样不可信的操作都会在容器中运行,在agent标签下添加配置,代表为每个智能体创建一个沙箱:

"agents": {
    "defaults": {
      "sandbox": {
        "mode""all",
        "scope""agent",
        "workspaceAccess""none"
      },

sandbox代表开启沙箱功能,mode代表模式,其中all代表每个会话都会在沙箱中运行,scope用来控制创建多少个容器,agent代表为每个智能体都创建一个容器,workspaceAccess代表沙箱中能看到什么,none代表只能看到.openclaw/sandboxes目录。以上只是示例,具体可根据自己情况调整。

注意,默认的镜像环境比较苛刻,一些常用的环境比如python、node是没有的,默认也不能上网,除了在agents标签下配置所有智能体,也可以在list标签下给单独指定的智能体配沙箱,示例如下。

"agents": {
  "list": [
    {
      "id""research",
      "sandbox": {
        "mode""all",
        "scope""agent"
      }
    }
  ]
}

关于相关详细配置和选项,可参考官方文档说明,地址如下:

https://docs.openclaw.ai/zh-CN/gateway/sandboxingd

私信策略

如果智能体接入了外部渠道,比如企微、飞书等,则需要注意私信策略,即谁可以通过外部机器人来和智能体通信,假设我们在飞书创建了一个机器人应用,这个机器人除了我们,同企业下的其它员工也能搜到访问,或拉到一个群里,大家都能看到,那么就需要限制私信策略。

默认策略就是pairing,代表谁都可以和智能体通信,但会给一个授权码,需要在openclaw端运行授权码命令才行,如下。

"channels": {
    "feishu": {
      "dmPolicy""pairing",

另一个选项是allowlist,代表只有白名单内的才能通信,白名单需要allowFrom配置:

"channels": {
    "feishu": {
      "dmPolicy""allowlist",
      "allowFrom": ["用户ID1""用户ID2"]

如果要所有人均可访问,策略需要配置为open,白名单中要有*才行,禁用所有人私信的话,策略需要配置为disabled。

定期审计

可以使用自带的安全审计功能进行定期审计,命令如下:

openclaw security audit --deep

该命令会检查常见的安全隐患,比如网关认证暴露、浏览器控制暴露、文件系统权限过高等等,可以使用fix参数进行修复,命令如下:

openclaw security audit --fix

这个修复命令会应用一些安全措施,比如隐私策略如果是open,会改为allowlist,日志写入的敏感信息规则如果off关掉,会改为tools,openclaw目录会确定是否是700权限,配置文件是否是600权限等等。

应急响应

如果发现openclaw遭受了攻击,可参考如下步骤进行应急:

一、遏制与隔离

二、消除影响与凭据更换

三、调查与取证

四、恢复与重建

总结

更多关于Openclaw的相关使用和配置,可以参考官方文档:

https://docs.openclaw.ai/zh-CN

以上就是关于Openclaw使用过程中的一些安全规范,感谢阅读。