如果你也在云服务器上跑了OpenClaw,看完这篇文章赶紧去检查一下。别等哪天登录服务器发现多了几个陌生进程,或者聊天记录被人扒了个遍,那时候再后悔就晚了。
问题到底出在哪儿
OpenClaw的安全隐患,说白了就是设计时太信任用户。默认监听0.0.0.0:18789,这意味着只要你的服务器有公网IP,全世界都能扫到这个端口。攻击者用Shodan这类搜索引擎,输入“port:18789”就能列出一大串目标。
更严重的是,OpenClaw默认以宿主机权限直接运行,而不是隔离在Docker容器里。一旦被入侵,攻击者获得的就是服务器的完整控制权。加上API密钥、OAuth令牌、聊天记录全是明文存储,相当于把家门钥匙放在门口的鞋垫下面。
还有一招更阴的,叫“间接提示注入”。攻击者在网页里藏一段恶意指令,当你的OpenClaw去读那个页面时,就会乖乖执行命令——下载脚本、删文件、发邮件,什么都干得出来。
云服务器上怎么“自救”
第一招:让18789端口从公网消失
最直接的办法,是让这个端口根本不在公网上暴露。配置OpenClaw监听127.0.0.1而不是0.0.0.0,这样只有服务器本机能访问。
然后你需要访问它怎么办?用SSH隧道。在本地电脑执行这条命令:
ssh -L 18789:127.0.0.1:18789 root@你的服务器IP
保持终端开着,浏览器访问http://127.0.0.1:18789,流量就通过加密的SSH通道安全地转发到服务器了。攻击者扫描你服务器IP的时候,18789端口压根不响应,直接隐身。
第二招:用Docker把OpenClaw关进“笼子”
别再让OpenClaw直接在宿主机上跑了。用Docker容器隔离,就算被攻破,攻击者也只拿到容器权限,动不了宿主机。
Docker部署很简单,先安装Docker:
curl -fsSL https://get.docker.com | sudo sh
创建docker-compose.yml:
yaml
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw-gateway
restart: always
ports:
- "127.0.0.1:18789:18789"
volumes:
- ~/openclaw/data:/home/node/.openclaw
environment:
- NODE_ENV=production
注意ports那行写的`127.0.0.1:18789:18789`,意思就是只绑定本地,不暴露公网。
第三招:安全组和防火墙双重保险
云厂商的控制台里都有安全组功能,进去把18789端口的入方向规则删掉,或者只放行你的本地IP。同时服务器上开启防火墙:
sudo ufw enable
sudo ufw allow ssh
sudo ufw deny 18789
万一哪天配置错了,防火墙还能挡一道。
第四招:权限最小化,别给“万能钥匙”
在OpenClaw的配置文件里,明确限制它能执行的命令、能访问的目录。敏感操作(删文件、发邮件、转账)设置人工确认,别让AI自作主张。API密钥定期更换,能用短期的就别用长期。
OpenClaw确实是好工具,但用好它的前提是别把它当“玩具”扔在公网上。花半小时做一遍上面这些配置,比你被黑之后通宵恢复数据划算得多。