写在前面
关于 OpenClaw 的部署、升级、接入飞书、接入大模型、多机器人配置……这些主题我之前已经写了好几篇。那几篇笔记的重点都是“怎么把它跑起来”“怎么配置好用”。
但在实际折腾的过程中,我发现一个被很多人忽略的问题:大家忙着跑通功能,往往把安全放在最后考虑,甚至根本不考虑。
我的服务器是阿里云的 2 核 2G,系统是 Alibaba Cloud Linux 3。作为一个 7x24 小时运行的服务,OpenClaw 暴露在公网上的时间越长,风险就越大。SSH 暴力破解、容器逃逸、密钥泄露……这些不是理论上的威胁,而是每天都在发生的事。
这篇笔记不是部署教程,也不是配置教程。它是我前面所有实操经验的安全篇总结——我会记录在部署和配置过程中,做了哪些安全加固、为什么这么做、以及这些配置到底在防什么。
如果你已经照着我的其他笔记把 OpenClaw 跑起来了,那这篇笔记就是你的“安全检查清单”。
一、服务器基础安全:先把门守好
OpenClaw 跑在服务器上,服务器的安全是一切的前提。这一步没做好,后面容器配置得再安全也没用。
1.1 改 SSH 端口 + 关密码登录
默认的 22 端口每天被扫描无数次。我做了这几件事:
1.2 阿里云安全组:云平台的防火墙
安全组在云平台边缘节点就把流量过滤掉了,比服务器上的 iptables 更安全——攻击者连你的服务器都摸不到。
关键点:OpenClaw 的 Web 端口我只绑了 127.0.0.1,不暴露在公网。我通过本地代理访问,这样就算端口被扫到,外部也连不进来。
二、容器安全配置:把 OpenClaw 关进“笼子”
Docker 容器的默认权限其实偏大。如果容器被攻破,攻击者可能获得宿主机的部分权限。我的目标是:即使容器被入侵,攻击者也干不了什么。
cap_drop: ALL | ||
cap_add: DAC_OVERRIDE | ||
read_only: true | ||
user: "1000:1000" | ||
no-new-privileges:true | ||
ports: 127.0.0.1:38459:18789 |
2.1 Docker 部署的独特安全优势:快速止损
如果容器真的被攻击了——比如你发现日志里有异常请求、某个 Agent 行为怪异——Docker 部署能让你秒级止损:
# 立即暂停(保留现场,方便排查)
docker pause openclaw-gateway
# 或者直接停止
cd /opt/openclaw && docker compose down
对比传统部署方式:如果是直接跑在宿主机上的进程,被攻击后你需要 kill 进程、查端口、清理残留文件……一套操作下来至少几分钟。而 Docker 部署下,一条命令就能把整个服务隔离起来,给你争取宝贵的排查时间。
这也是我选择 Docker 部署的重要原因之一——不仅方便管理,更是为了在被攻击时能快速切断风险。
2.2 挂载目录的权限策略
这是我从一个坑里爬出来的教训。挂载目录的权限设计遵循该写的才给写,不该写的坚决只读。
./config./workspace、./agents | :rw | |
./credentials | :ro | |
./skills./extensions | :ro |
踩坑记录:一开始我把 config目录也设成了只读,结果容器一直报 EROFS。查了半天才发现 OpenClaw 需要在里面写会话状态。教训:安全配置要建立在理解程序运行机制的基础上,不能一刀切。
三、文件权限:防止“自己人”泄密
服务器上可能有多个用户(或者你以后会加其他人)。如果文件权限太松,别人就能看到你的密钥。
.env | ||
credentials/ | ||
docker-compose.yml | ||
为什么是 1000:1000?因为容器以 user: "1000:1000"运行,宿主机文件属主也设为 1000:1000,容器才能正常读写。
四、技能安装:从可信源下载
技能本质上是下载代码并在你的环境中执行。如果下载慢,你可能去非官方渠道找,这就引入了风险。
我的做法:让小智从国内可信镜像站 http://mirror-cn.clawhub.com安装。
在飞书里告诉小智:
"国内镜像站地址 http://mirror-cn.clawhub.com,用这个地址下载安装技能。帮我安装一下 [技能名称]"
安全收益:
镜像站对技能做了基础安全扫描 避免从不明第三方源下载 小智自动处理,减少人为操作失误
技能共享的权限考虑:技能默认安装在小智的工作区。为了让所有 Agent 都能用,我把它移到全局目录,并保持只读挂载,防止运行中的 Agent 篡改技能代码。
五、数据备份:最后一道防线
安全配置再完善,也可能有疏漏。定期备份是数据可恢复性的保障。
workspace/ | ||
config/credentials/ | ||
config/openclaw.json | ||
data/ |
备份策略:每周日凌晨自动备份,保留 28 天。这个窗口足够你发现数据异常并回滚。
六、安全验证:确认配置真的生效
# 验证非 root 运行
docker exec -it openclaw-gateway whoami
# 应输出:node
# 验证根文件系统只读
docker exec -it openclaw-gateway touch /test.txt
# 应报错:Read-only file system
# 验证端口绑定
docker compose ps
# 应显示:127.0.0.1:38459->18789/tcp
# 验证无权限错误
docker compose logs openclaw --tail 50 | grep -i "erofs\|permission"
# 应无输出
七、应急响应:被攻击了怎么办?
7.1 快速止损
# 方案1:暂停(最快,保留现场,方便排查)
docker pause openclaw-gateway
# 方案2:停止(彻底,释放资源)
cd /opt/openclaw && docker compose down
暂停 vs 停止的区别:
docker pause | ||
docker compose down |
7.2 排查问题
# 导出日志
docker compose logs openclaw --tail 500 > incident.log
# 检查可疑文件
ls -la /opt/openclaw/workspace/main/skills/
ls -la /opt/openclaw/skills/
# 检查配置文件是否被篡改
diff /opt/openclaw/config/openclaw.json /path/to/backup/openclaw.json
7.3 恢复服务
# 如果之前用了 pause,恢复
docker unpause openclaw-gateway
# 如果之前用了 down,启动
cd /opt/openclaw && docker compose up -d
⚠️ 重要提醒:重启不一定“干净”
docker compose down+ up -d能恢复容器运行状态,但不会清除被篡改的持久化数据:
如果需要完全干净的恢复,建议从备份恢复:
# 1. 停止容器
cd /opt/openclaw && docker compose down
# 2. 从备份恢复配置文件
cp /path/to/clean-backup/config/openclaw.json config/
# 3. 清理可疑技能
rm -rf skills/<可疑技能名>
# 4. 重新启动
docker compose up -d
八、常见问题(安全视角)
Q1:2核2G服务器够用吗?
够用。我跑了 5-6 个 Agent,内存限制 1.5G,CPU 限制 1 核,很稳定。资源限制本身就是安全措施——防止某个 Agent 耗光资源导致拒绝服务。
Q2:装技能太慢有安全风险吗?
有。下载慢会诱使你去非官方渠道找资源,增加被植入后门的风险。我的解决方案是使用国内可信镜像站,让小智自动安装。
Q3:docker pause 和 docker stop 有什么区别?
docker pause | docker unpause | ||
docker compose down | docker compose up -d | ||
docker stop | docker start |
九、安全检查清单
.env | ||
credentials/ | ||
最后
回顾我写过的那些 OpenClaw 笔记——《阿里云2核2G服务器玩转OpenClaw:Docker安全部署完全指南》《OpenClaw Docker 部署极速升级指南》《OpenClaw 接入阿里云百炼大模型完整教程》《OpenClaw 接入飞书机器人完整教程》《OpenClaw 多飞书机器人完整配置教程》《亲测有效!OpenClaw卸载重装党狂喜!5步彻底干净》——它们讲的是怎么部署、怎么配置、怎么升级、怎么接入各种服务。
而这篇笔记,是前面所有经验的安全篇总结。
我把自己在实操过程中对安全的思考和做法提炼出来,核心就是这几条:
缩小攻击面:改 SSH 端口、关密码登录、安全组白名单、端口只绑本地 限制容器权限:非 root 运行、只读根文件系统、最小 Capabilities 保护敏感数据:密钥文件 600 权限、凭证目录 700、关键目录只读挂载 防止代码注入:技能和插件目录只读、从可信源安装 快速止损能力:Docker 部署,一条命令就能暂停或停止服务 保证可恢复:定期备份、保留 28 天
这些配置大部分是一次性的,花半小时配好,后面就不用操心了。但如果你忽略了它们,风险会一直存在。
特别提一下应急响应:docker pause能让你在被攻击时秒级冻结容器、保留现场,从容排查;docker compose down能快速重启服务。但记住,重启不会清除被篡改的持久化数据——真正的“干净”恢复,需要从备份还原。
安全没有绝对,但能多做一层就多做一层。希望这份笔记对你有帮助。
有问题欢迎交流,我会持续更新。

夜雨聆风