修正版 | 事实核查通过
开篇:一个必须纠正的错误认知
之前有个说法流传很广:“家用电脑部署 OpenClaw 更安全,因为内网 IP 外网访问不到。”
这是片面的。
今天这篇文,只讲一个核心结论:为了数据安全,openclaw.json 必须配置 bind: "127.0.0.1"。
事实一:云服务器公网裸部署 = 极高风险
OpenClaw 极度不推荐在云服务器上进行公网裸部署。
原因非常直接:
云服务器自带固定公网 IP。 端口极易被全网自动化扫描。 - 24 小时内必然被爆破脚本命中
一旦泄露密钥 = 服务权限完全失守。这不是“可能”,是必然。全网扫描脚本从不休息,暴露的端口就像黑夜里的灯。
事实二:家用内网 ≠ 绝对安全
这才是关键纠正点。
很多人认为:“家用宽带是内网 IP,外网访问不到,所以安全。”
错。
- 风险在于配置
虽然 NAT 本身是隔离的,但如果你开启了 UPnP(路由器自动端口映射) 或手动配置了端口转发,内网服务就会直接暴露给公网。 - 全网扫描无差别攻击
Shodan、Censys 等搜索引擎以及各类僵尸网络脚本,24小时不间断扫描全网 IP。一旦 UPnP 生效,你的端口在几分钟内就会出现在黑客的雷达上,根本不存在“内网隐身”这回事。 - 局域网威胁
即使不暴露公网,绑定局域网 IP 也意味着同一 WiFi 下的其他设备(可能包含被入侵设备)也能直接访问。
内网 IP 不是护身符,除非你确定没有任何端口映射且局域网完全可信。
最佳实践:bind: "127.0.0.1"
安全标准的答案只有一条:在 openclaw.json 中强制配置绑定回环地址:
// openclaw.json// ️只有 127.0.0.1 能让服务彻底“隐身”,拒绝一切外部连接{ "gateway": { "bind": "127.0.0.1", "port": 18789 }}(注:端口号请根据你的实际配置填写,此处以默认 18789 为例)
这意味着什么?
- 仅本机可访问
流量不经过物理网卡,只在操作系统内部流转。 - 物理隔绝攻击
无论外网还是局域网,都无法直接扫描或连接你的端口。 - 架构级安全
即使密钥泄露,攻击者若没有服务器登录权限(SSH/RDP),也无法远程连接。
为什么这是最优解?
| 0.0.0.0 | |||
| 192.168.x.x | |||
| 127.0.0.1 | 仅本机 | 操作系统级隔离,攻击面为零。 |
只要绑定 127.0.0.1:
- 云服务器上
→ 安全(外网连不进回环地址) - 家用电脑上
→ 安全(局域网也连不进回环地址)
需要远程访问怎么办?
如果你确实需要远程使用 OpenClaw,不要直接修改 bind 配置,请使用以下方案:
方案一:SSH 隧道(强烈推荐)利用 SSH 加密通道转发流量,安全且无需开放防火墙端口。
ssh -L 18789:127.0.0.1:18789 user@your-server本地访问 127.0.0.1:18789,流量即通过 SSH 隧道安全转发。
方案二:VPN / Tailscale搭建私人网络,接入后如同在局域网内,再配合防火墙限制访问。
方案三:内网穿透 + 鉴权使用 frp/ngrok 等工具,但必须叠加额外的鉴权层(如 Basic Auth),且不要直接暴露原始端口。
特别提醒(反向代理用户必看):如果你必须使用 Nginx/Caddy 进行反向代理,请务必在 OpenClaw 的配置文件中正确设置 trustedProxies 字段。否则,攻击者可以通过伪造 IP 请求头,轻松绕过你的鉴权机制,让“127.0.0.1”的防护形同虚设。
别忘文件安全(本地防护):即使你把网络端口封死在 127.0.0.1,OpenClaw 的 openclaw.json 中仍可能包含明文存储的 API Key 和 Token。请务必保护好你的服务器文件系统,安装杀毒软件或定期扫描,防止恶意软件(如窃密木马)直接读取本地配置文件,窃取你的密钥。
实践清单
部署 OpenClaw 前,完成这三步:
检查配置文件
确认 openclaw.json中bind值为"127.0.0.1"。确认不是 0.0.0.0或缺省(部分旧版本默认监听所有网卡,等价于 bind: 0.0.0.0)。验证监听状态请在终端输入以下命令检查端口占用情况:
正确结果:应看到
127.0.0.1:18789错误结果:看到0.0.0.0:18789或:::18789- Windows 用户:
netstat -ano | findstr 18789 - macOS / Linux 用户:
netstat -an | grep 18789或者使用更直观的命令:lsof -i :18789 测试外部连接
- 本机测试
curl http://127.0.0.1:18789(应成功) - 外部测试
从另一台设备或手机访问 http://你的IP:18789(应失败或无法连接) 手机浏览器“真机”验证(强烈推荐):为了彻底确认安全,请拿出连接同一 WiFi 的手机进行测试:
如果手机能打开页面,说明你的配置失败!请立即检查 bind 设置。
- 本机测试:在电脑浏览器访问
http://127.0.0.1:18789→ 应正常显示登录页。 - 外部测试:在手机浏览器访问
http://[你的电脑内网IP]:18789→ 应显示“无法访问”或“连接超时”。
结语:安全是消除攻击面
之前说“家用电脑相对安全”,这个说法在工程上不够严谨。
安全没有绝对的 “更安全”,核心是对攻击面的有效管理。
云服务器裸部署 → 攻击面最大 家用电脑 0.0.0.0 监听 → 攻击面不可控(取决于路由器配置) - 任何环境 bind: 127.0.0.1
→ 攻击面为零
最好的安全,是让攻击者根本找不到入口。
本文根据《交大龙虾安全课》核心内容编写,已纠正早期技术表述。安全是持续迭代的过程,感谢所有指出问题的朋友。
📌 核心记忆点:openclaw.json 强制配置 bind: "127.0.0.1"仅本机回环地址可访问,从根源隔绝所有网络攻击。
- 内网不内:UPnP 和端口转发会让内网设备瞬间裸奔。
- bind 为王:
bind: "127.0.0.1"是物理隔绝攻击面的唯一解。 - 隧道代劳:远程访问请用 SSH 隧道,别开防火墙端口。
- 文件也防:网络防住了,别忘了本地文件也是明文存储。
夜雨聆风