更多关于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进行安全检查:
或者使用snyk的在线扫描器进行扫描:
如果在skill市场下载相关技能时:
一定要关注右侧的安全审计信息,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使用过程中的一些安全规范,感谢阅读。