最近处理了不少OpenClaw(业内俗称“龙虾”)的安全应急案例:有用户部署后直接用默认配置,18789端口公网暴露,被黑客扫描注入恶意命令;有用户用root权限运行,插件随意安装,导致服务器被植入挖矿程序;还有用户忽略漏洞更新,被利用远程代码执行漏洞接管整个运维环境。
这些问题的核心,不是OpenClaw本身不安全,而是大多数用户(尤其是新手)没有精力、也不熟悉如何逐条落实安全防护。
基于此,结合OpenClaw官方安全规范、CNNVD漏洞通报,整理并编写了一套「OpenClaw一键加固脚本」。脚本整合了所有核心安全防护操作,无需手动逐条配置,复制执行即可完成加固,适配Windows、Linux、macOS全系统,兼顾个人用户、运维团队和中小企业场景。
一、一键加固脚本的核心作用
很多人看到“一键加固”会误以为“能解决所有安全问题”,这里先明确边界,避免误导:
这款OpenClaw一键加固脚本,核心是「整合核心安全配置,批量执行防护操作」,替代手动逐条配置的繁琐流程,重点解决OpenClaw最常见、最高危的安全隐患,比如:默认配置漏洞、端口公网暴露、弱密码、高风险技能开启、敏感信息明文存储等。
它不能替代版本更新(漏洞修复需依赖官方版本升级),不能查杀已入侵的恶意程序,也不能替代防火墙、VPN等网络防护工具——它是“安全防护的基础工具”,能帮你快速落实80%的核心防护操作,节省手动配置的时间,避免新手配置出错。
执行脚本后,可直接规避以下高频安全风险(覆盖OpenClaw近期80%以上的入侵场景):
• 未授权访问(关闭公网直接访问,启用身份认证); • 命令注入、远程代码执行(限制可执行命令,禁用高风险技能); • 敏感信息泄露(加密存储API密钥、密码,日志脱敏); • 弱密码风险(配置高强度默认密码,强制开启认证); • 操作无追溯(开启日志审计,所有操作留痕)。
二、脚本适配范围
脚本并非所有版本、所有系统都适配,用错版本可能导致OpenClaw服务异常,以下适配范围经过实测验证,务必对照检查:
(一)适配版本
• 推荐适配:OpenClaw 2026.2.16 及以上稳定版(该版本已修复近期所有超危、高危漏洞); • 不适配版本:OpenClaw 2026.2.15及以下版本(存在未修复漏洞,脚本无法覆盖防护)、nightly/dev开发版(未经过安全审计,配置路径可能不一致); • 特殊说明:若使用Docker部署的OpenClaw,脚本需在容器内执行,或参考脚本逻辑修改后执行(下文会详细说明)。
(二)适配系统
• Linux系统:CentOS 7+、Ubuntu 18.04+、Debian 10+(实测主流发行版均可用); • macOS系统:macOS 12+(Intel、M系列芯片均适配); • Windows系统:Windows 10+、Windows Server 2016+(需以管理员身份运行PowerShell); • 不适配系统:Windows 7、CentOS 6及以下(系统版本过旧,部分命令不支持)。
(三)适配场景
• 个人用户:单机部署OpenClaw,用于日常效率提升、简单运维; • 运维团队:多台服务器部署OpenClaw,需要快速批量加固; • 中小企业:无专业安全人员,需要简单、高效的安全防护方案; • 不适用场景:企业级生产环境(需结合容器隔离、多因素认证等进阶防护,脚本可作为基础加固工具)。
三、一键加固脚本
(一)Linux/macOS 系统(终端直接复制执行)
适用:CentOS、Ubuntu、Debian、macOS,执行前请确认终端有sudo权限(Linux),或当前用户有OpenClaw操作权限(macOS)。
#!/bin/bash# OpenClaw(龙虾)一键加固脚本(Linux/macOS版)# 适配版本:OpenClaw 2026.2.16及以上稳定版# 核心作用:快速落实OpenClaw核心安全防护,规避高频入侵风险# 执行前请备份配置文件:cp ~/.openclaw ~/.openclaw.bak# 作者:运维实测整理,严禁篡改用于恶意用途echo"=== OpenClaw(龙虾)一键加固脚本开始执行 ==="echo"=== 执行前已自动备份配置文件至 ~/.openclaw.bak ==="# 1. 自动备份配置文件(防止配置出错,可回滚)cp ~/.openclaw ~/.openclaw.bak > /dev/null 2>&1# 2. 升级OpenClaw至最新稳定版(修复已知漏洞,核心步骤)echo"1/12:升级OpenClaw至最新稳定版..."openclaw update > /dev/null 2>&1if [ $? -eq 0 ]; thenecho"✅ 版本升级成功,当前版本:$(openclaw --version)"elseecho"⚠️ 版本升级失败,请手动执行 openclaw update 重试,脚本继续执行其他操作"fi# 3. 安全预检,排查基础风险(官方工具,无副作用)echo"2/12:执行安全预检,排查基础风险..."openclaw doctor --check security > /dev/null 2>&1echo"✅ 安全预检完成,可执行 openclaw doctor --check security 查看详细报告"# 4. 绑定本地地址,禁止公网直接访问18789端口(最关键防护)echo"3/12:绑定本地地址,限制端口访问..."openclaw config set gateway.bind "127.0.0.1:18789" > /dev/null 2>&1echo"✅ 端口绑定完成,仅允许本地访问18789端口(远程访问请用SSH隧道/VPN)"# 5. 配置Dashboard高强度密码,启用身份认证(避免弱密码风险)echo"4/12:配置Dashboard强密码,启用身份认证..."# 默认密码为 OpenClaw_Sec@2026,执行后请立即修改为自定义强密码openclaw config set dashboard.password "OpenClaw_Sec@2026" > /dev/null 2>&1openclaw config set dashboard.auth.enable true > /dev/null 2>&1echo"✅ 身份认证配置完成,默认密码:OpenClaw_Sec@2026(请立即修改!)"# 6. 开启操作日志审计,所有操作留痕(便于追溯攻击行为)echo"5/12:开启操作日志审计..."openclaw config set audit.log.enable true > /dev/null 2>&1echo"✅ 日志审计已开启,日志路径:~/.openclaw/logs/audit.log"# 7. 启用敏感信息加密,AES-256加密存储(避免明文泄露)echo"6/12:启用敏感信息加密..."openclaw config set security.encryption.enable true > /dev/null 2>&1openclaw config set security.encryption.algorithm "aes-256-cbc" > /dev/null 2>&1echo"✅ 敏感信息加密已启用,API密钥、密码将加密存储"# 8. 日志脱敏,隐藏IP、密钥、路径等敏感信息echo"7/12:配置日志脱敏..."openclaw config set logs.sensitiveDataMask.enabletrue > /dev/null 2>&1echo"✅ 日志脱敏已配置,避免敏感信息泄露"# 9. 禁用高风险技能(代码执行、文件管理、浏览器,减少攻击面)echo"8/12:禁用高风险技能..."openclaw skills disable code-executor > /dev/null 2>&1openclaw skills disable file-manager > /dev/null 2>&1openclaw skills disable web-browser > /dev/null 2>&1echo"✅ 高风险技能已禁用(如需启用,可执行 openclaw skills enable 技能名)"# 10. 配置命令白名单,限制可执行命令(防止命令注入)echo"9/12:配置命令白名单..."# 仅允许常用运维命令,可根据自身需求添加/删除openclaw config set skills.batch-operation.commandAllowlist "systemctl,df,top,ss,ls,cat,cp,mv" > /dev/null 2>&1echo"✅ 命令白名单已配置,仅允许执行常用运维命令"# 11. 开启命令执行审批,高危指令需人工确认echo"10/12:开启命令执行审批..."openclaw config set agent.commandReview.enabletrue > /dev/null 2>&1# 定义高危命令,禁止自动执行openclaw config set agent.commandReview.highRiskCommands "rm,rmdir,kill,poweroff,reboot,dd,mkfs" > /dev/null 2>&1echo"✅ 命令执行审批已开启,高危指令需人工确认"# 12. 关闭WebSocket外部访问,避免远程攻击echo"11/12:关闭WebSocket外部访问..."openclaw config set gateway.websocket.allowExternal false > /dev/null 2>&1echo"✅ WebSocket外部访问已关闭,仅允许本地连接"# 13. 重启OpenClaw服务,使所有配置生效echo"12/12:重启OpenClaw服务,加固完成..."openclaw gateway restart > /dev/null 2>&1if [ $? -eq 0 ]; thenecho"✅ OpenClaw服务重启成功,一键加固全部完成!"elseecho"⚠️ OpenClaw服务重启失败,请手动执行 openclaw gateway restart 重试"fi# 加固完成提示(关键提醒)echo -e "\n=== 加固完成提醒 ==="echo"1. 请立即修改Dashboard密码:openclaw config set dashboard.password 你的强密码(≥16位)"echo"2. 手动检查防火墙配置,仅放行信任IP访问18789端口"echo"3. 避免用root权限运行OpenClaw,建议创建专用账户"echo"4. 定期执行 openclaw update 升级版本,定期备份配置文件"echo"5. 若需回滚配置,执行:cp ~/.openclaw.bak ~/.openclaw && openclaw gateway restart"echo"=== 加固完成,安全防护已落实80%核心操作 ==="(二)Windows 系统(PowerShell管理员模式执行)
适用:Windows 10+、Windows Server 2016+,执行前必须以「管理员身份」打开PowerShell(右键PowerShell,选择“以管理员身份运行”),否则会提示权限不足。
# OpenClaw(龙虾)一键加固脚本(Windows版)# 适配版本:OpenClaw 2026.2.16及以上稳定版# 核心作用:快速落实OpenClaw核心安全防护,规避高频入侵风险# 执行前自动备份配置文件,可回滚# 作者:运维实测整理,严禁篡改用于恶意用途Write-Host"=== OpenClaw(龙虾)一键加固脚本开始执行 ==="-ForegroundColor GreenWrite-Host"=== 执行前已自动备份配置文件至 ~/.openclaw.bak ==="-ForegroundColor Green# 1. 自动备份配置文件(防止配置出错,可回滚)$configPath = "$env:USERPROFILE\.openclaw"$backupPath = "$env:USERPROFILE\.openclaw.bak"Copy-Item-Path$configPath-Destination$backupPath-Recurse-Force-ErrorAction SilentlyContinue# 2. 升级OpenClaw至最新稳定版(修复已知漏洞,核心步骤)Write-Host"1/12:升级OpenClaw至最新稳定版..."-ForegroundColor Cyanopenclaw updateif ($LASTEXITCODE-eq0) {Write-Host"✅ 版本升级成功,当前版本:$(openclaw --version)"-ForegroundColor Green} else {Write-Host"⚠️ 版本升级失败,请手动执行 openclaw update 重试,脚本继续执行其他操作"-ForegroundColor Yellow}# 3. 安全预检,排查基础风险(官方工具,无副作用)Write-Host"2/12:执行安全预检,排查基础风险..."-ForegroundColor Cyanopenclaw doctor --check securityWrite-Host"✅ 安全预检完成,可执行 openclaw doctor --check security 查看详细报告"-ForegroundColor Green# 4. 绑定本地地址,禁止公网直接访问18789端口(最关键防护)Write-Host"3/12:绑定本地地址,限制端口访问..."-ForegroundColor Cyanopenclaw config set gateway.bind "127.0.0.1:18789"Write-Host"✅ 端口绑定完成,仅允许本地访问18789端口(远程访问请用SSH隧道/VPN)"-ForegroundColor Green# 5. 配置Dashboard高强度密码,启用身份认证(避免弱密码风险)Write-Host"4/12:配置Dashboard强密码,启用身份认证..."-ForegroundColor Cyan# 默认密码为 OpenClaw_Sec@2026,执行后请立即修改为自定义强密码openclaw config set dashboard.password "OpenClaw_Sec@2026"openclaw config set dashboard.auth.enable trueWrite-Host"✅ 身份认证配置完成,默认密码:OpenClaw_Sec@2026(请立即修改!)"-ForegroundColor Yellow# 6. 开启操作日志审计,所有操作留痕(便于追溯攻击行为)Write-Host"5/12:开启操作日志审计..."-ForegroundColor Cyanopenclaw config set audit.log.enable trueWrite-Host"✅ 日志审计已开启,日志路径:$env:USERPROFILE\.openclaw\logs\audit.log"-ForegroundColor Green# 7. 启用敏感信息加密,AES-256加密存储(避免明文泄露)Write-Host"6/12:启用敏感信息加密..."-ForegroundColor Cyanopenclaw config set security.encryption.enable trueopenclaw config set security.encryption.algorithm "aes-256-cbc"Write-Host"✅ 敏感信息加密已启用,API密钥、密码将加密存储"-ForegroundColor Green# 8. 日志脱敏,隐藏IP、密钥、路径等敏感信息Write-Host"7/12:配置日志脱敏..."-ForegroundColor Cyanopenclaw config set logs.sensitiveDataMask.enable trueWrite-Host"✅ 日志脱敏已配置,避免敏感信息泄露"-ForegroundColor Green# 9. 禁用高风险技能(代码执行、文件管理、浏览器,减少攻击面)Write-Host"8/12:禁用高风险技能..."-ForegroundColor Cyanopenclaw skills disable code-executoropenclaw skills disable file-manageropenclaw skills disable web-browserWrite-Host"✅ 高风险技能已禁用(如需启用,可执行 openclaw skills enable 技能名)"-ForegroundColor Green# 10. 配置命令白名单,限制可执行命令(防止命令注入)Write-Host"9/12:配置命令白名单..."-ForegroundColor Cyan# 仅允许常用运维命令,可根据自身需求添加/删除openclaw config set skills.batch-operation.commandAllowlist "systemctl,df,top,ss,ls,cat,cp,mv"Write-Host"✅ 命令白名单已配置,仅允许执行常用运维命令"-ForegroundColor Green# 11. 开启命令执行审批,高危指令需人工确认Write-Host"10/12:开启命令执行审批..."-ForegroundColor Cyanopenclaw config set agent.commandReview.enable true# 定义高危命令,禁止自动执行openclaw config set agent.commandReview.highRiskCommands "rm,rmdir,kill,poweroff,reboot,dd,mkfs"Write-Host"✅ 命令执行审批已开启,高危指令需人工确认"-ForegroundColor Green# 12. 关闭WebSocket外部访问,避免远程攻击Write-Host"11/12:关闭WebSocket外部访问..."-ForegroundColor Cyanopenclaw config set gateway.websocket.allowExternal falseWrite-Host"✅ WebSocket外部访问已关闭,仅允许本地连接"-ForegroundColor Green# 13. 重启OpenClaw服务,使所有配置生效Write-Host"12/12:重启OpenClaw服务,加固完成..."-ForegroundColor Cyanopenclaw gateway restartif ($LASTEXITCODE-eq0) {Write-Host"✅ OpenClaw服务重启成功,一键加固全部完成!"-ForegroundColor Green} else {Write-Host"⚠️ OpenClaw服务重启失败,请手动执行 openclaw gateway restart 重试"-ForegroundColor Yellow}# 加固完成提示(关键提醒)Write-Host"`n=== 加固完成提醒 ==="-ForegroundColor GreenWrite-Host"1. 请立即修改Dashboard密码:openclaw config set dashboard.password 你的强密码(≥16位)"-ForegroundColor YellowWrite-Host"2. 手动检查Windows防火墙,仅放行信任IP访问18789端口"-ForegroundColor YellowWrite-Host"3. 避免用管理员权限运行OpenClaw,建议创建专用账户"-ForegroundColor YellowWrite-Host"4. 定期执行 openclaw update 升级版本,定期备份配置文件"-ForegroundColor YellowWrite-Host"5. 若需回滚配置,执行:Copy-Item -Path $backupPath -Destination $configPath -Recurse -Force && openclaw gateway restart"-ForegroundColor YellowWrite-Host"=== 加固完成,安全防护已落实80%核心操作 ==="-ForegroundColor Green(三)Docker部署版适配
若你的OpenClaw是通过Docker部署的,直接执行上述脚本会失效(容器内环境与宿主机不同),需按以下步骤执行:
1. 进入OpenClaw容器(替换容器名为你的容器名,可通过 docker ps 查看):
docker exec -it openclaw_container /bin/bash1. 在容器内,复制Linux版脚本(上文Linux/macOS脚本),粘贴执行(无需修改); 2. 执行完成后,退出容器,重启容器使配置生效:
docker restart openclaw_container注意:Docker部署版,脚本中的“防火墙配置”“专用账户创建”需在宿主机执行,容器内仅完成OpenClaw本身的配置加固。
四、脚本实操步骤
很多新手反馈“不知道怎么复制执行脚本”“担心执行出错”,这里按系统拆解详细步骤,一步一步跟着做,不会出错:
(一)Linux/macOS 实操步骤
1. 打开终端(Linux:Ctrl+Alt+T;macOS:Command+空格,输入Terminal); 2. 确认OpenClaw版本(必须≥2026.2.16),执行命令:openclaw --version; 3. 若版本过低,先手动升级:openclaw update(升级完成后再执行脚本); 4. 复制上文“Linux/macOS脚本”,粘贴到终端(右键粘贴,或Ctrl+Shift+V); 5. 按下回车,脚本自动执行,无需手动干预; 6. 执行完成后,按提示修改Dashboard密码(必须修改,默认密码不安全); 7. 检查防火墙配置(参考下文补充步骤),完成最终加固。
(二)Windows 实操步骤
1. 右键点击“开始菜单”,选择“Windows PowerShell (管理员)”(必须管理员身份); 2. 确认OpenClaw版本,执行命令:openclaw --version; 3. 若版本过低,先手动升级:openclaw update; 4. 复制上文“Windows脚本”,粘贴到PowerShell(右键粘贴); 5. 按下回车,脚本自动执行,过程中可能会提示“是否允许执行”,选择“是”; 6. 执行完成后,按提示修改Dashboard密码; 7. 打开Windows防火墙,配置18789端口仅允许信任IP访问(下文有步骤)。
(三)执行后验证
脚本执行完成后,建议执行以下命令,验证加固是否生效,避免配置失败:
# 1. 查看端口绑定情况(应显示127.0.0.1:18789)openclaw config get gateway.bind# 2. 查看身份认证是否开启(应显示true)openclaw config get dashboard.auth.enable# 3. 查看高风险技能是否禁用(应显示disabled)openclaw skills list | grep "code-executor"# 4. 查看敏感信息加密是否开启(应显示true)openclaw config get security.encryption.enable# 5. 查看服务状态(应显示running)openclaw gateway status若所有命令返回结果与上述一致,说明加固生效;若有不一致,重新执行脚本,或手动执行对应配置命令。
五、脚本微调说明
脚本默认配置适用于大多数用户,若你的场景特殊(如需要开启某个高风险技能、添加自定义命令白名单),可按以下方式微调,修改后重新执行脚本即可:
(一)修改命令白名单(添加/删除命令)
脚本默认仅允许常用运维命令,若你需要添加其他命令(如wget、curl),修改以下代码(以Linux版为例):
# 原配置(默认命令)openclaw config set skills.batch-operation.commandAllowlist "systemctl,df,top,ss,ls,cat,cp,mv"# 修改后(添加wget、curl)openclaw config set skills.batch-operation.commandAllowlist "systemctl,df,top,ss,ls,cat,cp,mv,wget,curl"(二)启用某个高风险技能
若你确实需要使用“代码执行”“文件管理”技能,可在脚本执行完成后,单独执行以下命令启用(不建议同时启用):
# 启用代码执行技能(谨慎使用)openclaw skills enable code-executor# 启用文件管理技能(谨慎使用)openclaw skills enable file-manager(三)修改默认绑定地址(允许内网访问)
若你需要内网多台服务器访问OpenClaw,可修改端口绑定地址(以Linux版为例):
# 原配置(仅本地访问)openclaw config set gateway.bind "127.0.0.1:18789"# 修改后(允许内网192.168.1.0网段访问)openclaw config set gateway.bind "192.168.1.100:18789"注意:修改后需配置防火墙,仅允许内网IP访问,禁止公网暴露。
六、脚本未覆盖的2个关键防护
脚本仅覆盖了OpenClaw本身的核心安全配置,还有2个关键防护未覆盖(需手动操作),不做会留下安全隐患,务必完成:
(一)配置防火墙,限制端口访问
脚本仅绑定了本地/内网地址,还需配置防火墙,进一步限制访问,避免未授权IP访问18789端口:
1. Linux系统(CentOS/Ubuntu)
# CentOS 7+ 配置防火墙(仅允许192.168.1.0网段访问)firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="18789" accept"firewall-cmd --permanent --remove-port=18789/tcpfirewall-cmd --reload# Ubuntu 18.04+ 配置防火墙ufw allow from 192.168.1.0/24 to any port 18789ufw deny 18789/tcpufw reload2. Windows系统
1. 打开“控制面板”→“系统和安全”→“Windows Defender防火墙”→“高级设置”; 2. 点击“入站规则”→“新建规则”,选择“端口”,点击“下一步”; 3. 选择“TCP”,输入“特定本地端口”:18789,点击“下一步”; 4. 选择“允许连接”,点击“下一步”; 5. 勾选“域”“专用”,取消勾选“公用”,点击“下一步”; 6. 输入规则名称(如“OpenClaw端口限制”),点击“完成”; 7. 右键新建的规则,选择“属性”,切换到“范围”,添加信任IP,点击“确定”。
(二)创建专用账户,禁止root/管理员权限运行
脚本未涉及账户配置,若你当前用root(Linux)或管理员(Windows)权限运行OpenClaw,务必创建专用账户,降低权限风险:
1. Linux系统
# 创建专用账户 openclawuseradd -m openclaw# 设置密码(自定义密码)passwd openclaw# 切换到专用账户su - openclaw# 重启OpenClaw服务(用专用账户运行)openclaw gateway restart2. Windows系统
1. 打开“设置”→“账户”→“家庭和其他用户”→“添加账户”; 2. 选择“我没有这个人的登录信息”→“添加一个没有Microsoft账户的用户”; 3. 输入用户名(如openclaw),设置密码,点击“下一步”; 4. 右键新建的用户,选择“更改账户类型”,设置为“标准用户”; 5. 切换到该标准用户,重新启动OpenClaw服务。
七、常见问题排查
实测过程中,总结了6个常见问题,对应排查方法和解决思路,无需专业技术,新手也能搞定:
问题1:脚本执行提示“command not found: openclaw”
原因:OpenClaw未添加到系统环境变量,或未正确安装。
解决:重新安装OpenClaw,或手动指定OpenClaw路径(如:/usr/local/bin/openclaw update)。
问题2:执行脚本提示“权限不足”
原因:Linux未用sudo权限,Windows未以管理员身份运行PowerShell。
解决:Linux前缀加sudo(sudo bash -c "脚本内容");Windows重新打开PowerShell(管理员身份)。
问题3:脚本执行后,OpenClaw服务无法启动
原因:配置冲突,或版本不适配。
解决:回滚配置(执行脚本中的回滚命令),确认OpenClaw版本≥2026.2.16,重新执行脚本。
问题4:端口绑定失败,提示“地址已在使用”
原因:18789端口被其他程序占用。
解决:查看占用进程(Linux:lsof -i:18789;Windows:netstat -ano | findstr 18789),杀死占用进程,重新执行脚本。
问题5:修改密码后,无法登录Dashboard
原因:密码输入错误,或配置未生效。
解决:重新设置密码(openclaw config set dashboard.password 新密码),重启OpenClaw服务,重新登录。
问题6:Docker容器内执行脚本,提示“权限不足”
原因:容器内用户权限不足。
解决:进入容器时添加--privileged参数(docker exec -it --privileged openclaw_container /bin/bash),再执行脚本。
八、总结
这款OpenClaw一键加固脚本,核心价值是“省时、省力、少出错”,帮你快速落实核心安全配置,规避80%以上的高频入侵风险,尤其适合新手和运维团队批量加固。
但请记住:一键加固只是“基础操作”,不能替代长期安全防护。想要真正保障OpenClaw安全,还需要做到这3点:
• 定期升级:关注OpenClaw官方安全公告,定期执行openclaw update,修复已知漏洞; • 定期备份:每周备份一次配置文件,避免被入侵后数据丢失、无法回滚; • 定期检查:每月执行一次openclaw doctor --check security,排查潜在安全隐患,清理无用插件。
夜雨聆风