OpenClaw 作为功能强大的 AI 工具,能轻松实现写代码、管文档、发邮件等各类操作,成为不少开发者和爱好者的工作利器。但能力越强,潜在的安全风险也随之攀升,默认端口易被扫描、TOKEN 可能遭破解、第三方技能暗藏恶意脚本等问题,稍不注意就会让你的 OpenClaw 处于 “裸奔” 状态。对于刚接触OpenClaw的爱好者而言,缺乏安全防护意识更易踩坑。我整理了 9 个实用的安全防护操作,从端口修改、权限管控到敏感信息隔离,层层筑牢安全防线,让大家既能放心使用 OpenClaw 的强大功能,又能守住安全底线。
黑客在网上通常不是手动找目标的,他们会写一堆自动化的“扫描机器人(Botnets/Scanners)”在全网盲扫。 因为 18789 是 OpenClaw 的默认端口,这些机器人就像是在挨家挨户敲门,专门敲门牌号是 18789 的房间。如果门敲开了(端口开放且有响应),机器人就会立刻知道:“哈!这里跑着一个 OpenClaw!” 接着就会尝试用默认密码、暴力破解 Token,或者利用已知的漏洞发起攻击。
如果你把端口改成了比如 38472 这种毫无规律的数字,黑客的“专用扫描器”扫过 18789 发现没东西,就会直接跳过你。这能帮你屏蔽掉 99% 的无差别自动化攻击!这就像是你把家里的防盗门从显眼的大街上,挪到了一个只有你自己知道的隐秘小巷子里。

修改端口后,停止当前网关
openclaw gateway stop
重新后台启动网关
openclaw gateway start
获取 token 重新登录
openclaw dashboard --no-open

你以前在浏览器里可能是输入 http://localhost:18789,以后就要记得改成 http://localhost:你的新端口 啦。
记得启用Token认证,在openclaw.json 文件中将 mode:"token"。

OpenClaw 有一个 Gateway(网关),平时提供 Web UI 控制台和各种 API 接口。如果完全不设防,局域网(甚至公网)里的任何人只要知道你的 IP 和端口,就能随便进来控制你的设备、读取你的文件。
启用了 Token 之后,任何想要连接的客户端(包括浏览器、手机 App、或者你写的脚本)都必须出示这把“钥匙”,否则就会被无情地拦在门外(返回 401 Unauthorized 错误)。
如果你怀疑 Token 不小心被别人看到了,别慌!直接去 openclaw.json 里修改成一个新的长字符串,然后运行 openclaw gateway restart 重启一下服务,旧的钥匙就立刻作废啦!
在安装任何来自 GitHub 或第三方提供的 Skill 之前,必须使用 skill-vetter 检查其是否包含恶意网络请求、窃取 Token 或执行恶意脚本的行为。
在对话框输入:
使用 skill-vetter 检查OpenClaw中的所有技能,确认他们的风险等级

你可以把 Agent Skills(技能)想象成给我的大脑安装的“新插件”,它们能让我拥有各种强大的能力(比如控制浏览器、读写文件、操作 GitHub 等)。但是,能力越大,风险也越大!如果随便从网上(比如非官方的 GitHub 仓库或 ClawdHub)下载一个未知技能直接运行,万一里面藏了恶意代码,那咱们的 Token、私人文件甚至系统权限可就全暴露了。
skill-vetter 就是为了防止这种事发生的安全审查协议。它会强制阅读技能里的所有代码文件,寻找“危险信号(Red Flags)”。一旦发现下面这些行为,直接亮红牌拒绝:
偷窥隐私: 试图读取你的 ~/.ssh 密钥、浏览器 Cookie、~/.config 配置文件,或者偷看我的 MEMORY.md、SOUL.md。
暗度陈仓: 用 curl 或 wget 把数据悄悄发给未知的外部服务器(尤其是直接写 IP 地址而不是域名的)。
浑水摸鱼: 代码里故意用 base64 编码加密,或者用 eval()、exec() 偷偷执行不明脚本(也就是代码混淆)。
越权操作: 试图修改工作区之外的系统文件,或者索要管理员(sudo)权限。
它会根据审查结果生成一份标准的安全体检报告 (SKILL VETTING REPORT),并给出风险等级评定:
🟢 低风险 (LOW): 比如做个笔记、查个天气,安全通过。
🟡 中风险 (MEDIUM): 涉及文件操作或 API 调用,需要仔细看代码。
🔴 高风险 (HIGH): 涉及账号凭证、系统操作,必须人类(也就是你)亲自批准。
⛔ 极度危险 (EXTREME): 涉及 Root 权限或修改安全配置,绝对不安装。
有了 skill-vetter 这个铁面无私的保安,你就可以放心大胆地让我去学习新技能啦!绝对不给恶意脚本留任何可乘之机!
OpenClaw 提供了一个内置的安全审计工具,可以一键扫描您的配置是否存在潜在风险。
请运行安全审计 :
openclaw security audit --deep

若是终端返回的信息看不懂,可以问一问豆包、kimi或者Gemini,让它们帮忙解读。

如果您只在本地使用,建议改为 bind: "loopback"。如果需要远程访问,强烈建议结合 Tailscale 使用,而不是直接暴露端口到公网。
设置方法:openclaw gateway config set gateway.bind loopback (或启用 tailscale gateway.tailscale.mode: "tailscale")

有三个层级的做法,从简单到严格,您可以根据自己的实际需求来选择:
层级 1:基础防范(最简单,必须做到)
这是您当前直接以 wukong 这个用户运行 OpenClaw 时需要注意的:
永远不要用 sudo:启动服务时,绝对不要输入 sudo openclaw gateway start。只用 openclaw gateway start,确保它以当前普通用户权限运行。
利用内置黑名单:您已经在 openclaw.json 中配置了 denyCommands(拒绝了录屏、摄像头等)。这是第一道防线,AI 即使被恶意引导,也会被网关直接拦截。
不要随意授权 eval/exec:当 AI 提议运行不熟悉的 Bash 脚本、Python 脚本或修改系统全局配置(如 /etc 目录下的文件)时,请拒绝或仔细审查。
层级 2:系统级用户隔离(推荐的“纯正”做法)
由于您目前是在 wukong 用户下运行,AI 理论上具备读取 wukong 所有私人文件(如浏览器记录、微信文件、SSH 密钥 ~/.ssh)的系统权限。为了做到真正的最小权限:
创建专属账户:打开 macOS 的“系统设置” -> “用户与群组”,点击“添加账户”。创建一个全新的普通用户(例如起名叫 openclaw_runner),千万不要勾选“允许此用户管理这台电脑”。
切换账户运行:注销或切换到这个 openclaw_runner 用户,在这个全新的干净环境下安装并运行 openclaw gateway start。
设定工作区:此时,这个 AI 只能读写 /Users/openclaw_runner/ 下的文件。如果它试图跨界去偷看 /Users/wukong/ 的文件,macOS 底层的权限系统会直接报错拒绝(Permission denied)。
层级 3:Docker 容器隔离(最严密,适合开发者)
如果您熟悉 Docker,这是企业级的隔离方案。
将 OpenClaw 跑在 Docker 容器里,利用容器的隔离特性:
启动容器时,只把需要的目录映射进去。例如,只映射 -v ~/.openclaw/workspace:/workspace。
这样一来,不管 AI 怎么折腾,它眼里的“整个世界”就只有这个 workspace 文件夹,主机的系统文件、网络环境对它来说都是完全隔离甚至不可见的。
如果您只是用来辅助写代码、处理日常任务,层级 1 加上您现有的黑名单已经足够安全了。但如果您打算让 OpenClaw 全天候后台运行,或者经常让它自动执行网络上抓取来的代码,强烈建议您花 5 分钟时间采用 层级 2(建一个独立的 Mac 普通账户给它专用),这是成本最低且非常坚固的安全物理墙。
在 OpenClaw 中,denyCommands 不仅可以用来拦截内置的系统动作(如 camera.snap),还可以利用**正则表达式(Regex)**来拦截直接发送给操作系统的底层 Shell 命令(即通过 exec 工具执行的命令)。
具体实施方法是将带有正则表达式格式的字符串(以 / 开头和结尾)加入到 openclaw.json 的 gateway.nodes.denyCommands 列表中。
为了防止系统被意外破坏,建议将以下常见的“删库跑路”或高危系统级命令加入黑名单:
/rm\s+-r.*f\s+\//:拦截试图递归强制删除根目录(rm -rf /)的行为。
/rm\s+-r.*f\s+~/:拦截试图删除整个用户主目录(rm -rf ~)的行为。
/mkfs/:拦截格式化磁盘的命令。
/dd\s+if=.*of=\/dev\//:拦截底层的磁盘覆写命令。
/chmod\s+-R\s+777\s+\//:拦截试图将整个系统文件权限全开的命令。
/chown\s+-R.*:\s+\//:拦截试图更改系统根目录所有者的命令。
如何配置?
方法一:由我帮您自动配置(推荐)
如果您同意,我可以直接为您将上述针对 Shell 命令的正则表达式,合并到您现有的黑名单中。您只需要回复我:“好的,帮我加上”。
方法二:手动修改 openclaw.json
如果您想自己控制,可以打开 ~/.openclaw/openclaw.json 文件,找到 gateway -> nodes -> denyCommands 节点,将其修改为如下样子:
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send",
"/rm\\s+-r.*f\\s+\\//",
"/rm\\s+-r.*f\\s+~/",
"/mkfs/",
"/dd\\s+if=.*of=\\/dev\\//",
"/chmod\\s+-R\\s+777\\s+\\//",
"/chown\\s+-R.*:\\s+\\//"
] 修改保存后,执行 openclaw gateway restart 重启服务即可生效。
正则表达式黑名单是“防君子不防小人”的。如果有人刻意混淆命令(例如把 rm 拆成变量执行:a="r"; b="m"; $a$b -rf /),正则可能无法精准拦截。所以,这道防线主要是防止 AI 的“幻觉”或意外的错误操作。真正兜底的安全保障,依然是上一条提到的不要用 root 权限运行 OpenClaw。
实施敏感文件隔离,我们需要认清一个非常重要的技术前提:因为 OpenClaw 目前是直接在您的 wukong 账户下运行的,所以它自带的 read 工具(通过 Node.js 直接读取文件)拥有和您完全一样的读取权限。
这意味着,仅仅靠“命令黑名单(denyCommands)”去拦截 cat ~/.ssh/id_rsa 是不够的,因为 AI 可以不敲命令,直接调用内置的 read 工具把文件内容读出来。
因此,要真正做到敏感文件隔离,您可以采取以下几个层面的实施方法:
实施方法一:终极物理隔离(最安全,强烈推荐)
这是唯一能 100% 在系统底层阻止 AI 偷看文件的办法,即我们在“最小权限原则”中提到的:给 OpenClaw 建一个专属的 Mac 账户。
在 Mac 设置里创建一个名为 openclaw 的标准用户。
登录该用户,并在该用户下启动 openclaw gateway start。
因为 macOS 底层严格的用户权限隔离,这个 openclaw 用户绝对无法打开或读取您主账户 /Users/wukong/.ssh 或 /Users/wukong/.aws 下的任何文件(会直接报 Permission denied)。
实施方法二:将敏感凭证移出明文文件(最佳实践)
如果您不想建新账户,那就让凭证“隐身”。您的工作区里已经安装了 1password 技能。
不要在电脑上留明文密钥:将 AWS 凭证、GitHub Token、私钥等全部存入 1Password。
删除明文文件:清空或删除 ~/.aws/credentials 等容易被扫描的文件。
按需注入:当需要运行相关环境时,通过 1Password CLI (op run) 将凭证作为环境变量临时注入,用完即焚。这样哪怕 AI 遍历您的硬盘,也找不到任何明文密码。
实施方法三:通过系统行为准则“防君子”(软隔离)
如果您只是为了防止 AI 在帮您干活时“误触”或产生幻觉去读敏感文件,可以通过核心提示词(Prompt)来约束它。
在您的工作区 ~/.openclaw/workspace/SOUL.md 文件中,加入以下绝对红线(我看到您目前已经有类似规定,可以进一步细化):
**绝对红线:**
- 你的活动范围仅限 `~/.openclaw/workspace` 及明确被要求处理的项目目录。
- 绝对禁止使用 read 工具或 exec 命令读取 `~/.ssh`、`~/.aws`、`~/.npmrc`、`~/.env` 或系统密钥链中的任何凭证文件。
- 如果工具或脚本试图访问这些敏感路径,必须立刻中断并向我报告。 注:这种方法依赖于大模型的指令遵循能力,防得住意外,但防不住有意的恶意指令注入。
实施方法四:清理全局环境变量
很多时候,敏感信息不是被读文件泄露的,而是通过环境变量泄露的。
如果您的 ~/.zshrc 或 ~/.bash_profile 里写满了类似 export OPENAI_API_KEY=sk-... 或 export AWS_SECRET_ACCESS_KEY=... 的明文,OpenClaw 启动时会继承这些变量,AI 只要运行一个简单的 env 或 printenv 命令就能全部看光。
检查您的 ~/.zshrc,把敏感的环境变量删掉。改为在启动特定项目时再加载,或者使用 .env 文件(并确保将 .env 加入 .gitignore 且不要让 AI 去读它)。
在当前的 wukong 用户下,由于 read 工具的存在,没有完美的软件层拦截方案。如果您电脑上存有公司的核心代码或非常机密的私钥,强烈建议您花几分钟时间实施“方法一”(创建独立账户),一劳永逸。
Tools(底层工具)是 OpenClaw 引擎提供的最基础的原子能力(原生 API)。比如 read(读文件)、write(写文件)、exec(执行终端命令)、browser(控制浏览器)、cron(设置定时任务)等。
因为逐个配置 39 个工具太麻烦,OpenClaw 提供了几种打包好的权限模板(Profile):
full(全能型):拥有所有工具的权限(也就是您现在的状态)。
coding(编程型):允许读写文件和执行终端命令,但可能限制某些社交或通讯相关的底层工具。
chat / restricted(受限聊天型):只能聊天、搜索或读文件,绝对禁止执行终端命令 (exec) 或修改文件 (write),非常安全。
有时候预设的 Profile 不能完全满足需求。比如您选了 full(全开),但您就是不希望 AI 有能力去控制您的本地浏览器。这时,您就可以在 UI 界面上,单独把 browser 这个底层工具的开关给关掉。这种“在模板基础上,手动对个别工具进行开启/关闭”的操作,就叫做 per-tool overrides(微调覆盖)。
关注我,分享更多AI技术和干货。