第四篇:部署阶段安全加固——从裸奔到生产级防护

当AI智能体拥有系统权限,每一次部署都是对安全防线的终极考验

引言:为什么你的OpenClaw在"裸奔"?

2026年3月,工信部网络安全威胁和漏洞信息共享平台(NVDB)发布预警,直指OpenClaw在默认或不当配置下存在"较高安全风险",易引发网络攻击、信息泄露-1。Shodan扫描数据显示,超过312,000个 OpenClaw实例在默认端口运行且几乎无保护-1。更令人担忧的是,Censys追踪到21,639个 公网可访问实例-1

这些触目惊心的数字背后,是无数开发者和企业在享受AI智能体效率红利时,完全忽略了基础安全配置------用管理员权限运行服务、将18789端口暴露在公网、允许无认证访问、以最高权限读写文件系统......这些做法无异于在数字世界"裸奔"。

本文将基于工信部预警要求与OpenClaw v2026.3.8(含12个安全补丁)的最新特性,提供一套可落地的生产级安全加固方案-1。所有命令均可直接复制执行,助你从"裸奔养虾"升级为"安全筑栏"。

一、网络层防护:筑起第一道防火墙

1.1 核心原则:严禁公网直接暴露

OpenClaw的默认配置文件路径为~/.openclaw/openclaw.json,其核心端口18789 是控制界面与网关连接的通道-2。这一端口一旦暴露在公网,无异于将你家大门的钥匙挂在门外。

真实案例 :早期版本默认绑定0.0.0.0,意味着公网可直接访问,存在被恶意接管的风险-1。v2026.3.8版本已修复此问题,默认绑定127.0.0.1,但仍需用户手动配置确保安全-1

安全配置检查

# 检查当前绑定地址

grep -A 5 "gateway" ~/.openclaw/openclaw.json | grep bind

# 应为 "bind": "loopback" 或 127.0.0.1

1.2 防火墙配置:最小暴露原则

OpenClaw防火墙配置的核心是精准放行核心端口、配置白名单、管控入出站规则,同时结合系统防火墙与云平台安全组形成双层防护-2

云平台安全组配置(以阿里云为例)

配置项 规则 说明
入方向 放行TCP 18789 仅允许官方白名单IP或可信IP访问
入方向 放行TCP 22 SSH管理端口,来源限制为管理员IP
入方向 放行TCP 443 HTTPS服务(如需Web界面)
出方向 默认拒绝,仅放行443、53 防止数据外泄
默认策略 拒绝所有入站流量 严格最小暴露原则

核心白名单IP (必须添加,保障服务正常通信)-2

  • 121.40.82.220
  • 47.97.73.42
  • 47.98.226.113

一键配置命令(阿里云轻量服务器):

# 进入轻量应用服务器控制台,找到OpenClaw实例

# 在「应用详情」页面单击"一键放通"端口18789

1.3 系统防火墙配置(Linux)

ufw防火墙配置

# 启用ufw

sudo ufw enable

# 放行核心端口并限制来源

sudo ufw allow from 121.40.82.220 to any port 18789 proto tcp

sudo ufw allow from 47.97.73.42 to any port 18789 proto tcp

sudo ufw allow from 47.98.226.113 to any port 18789 proto tcp

# 放行SSH(仅限管理员IP)

sudo ufw allow from 你的IP地址 to any port 22 proto tcp

# 默认拒绝所有入站

sudo ufw default deny incoming

# 查看规则

sudo ufw status numbered

iptables防火墙配置

bash

复制

下载

# 清空现有规则

sudo iptables -F

# 设置默认策略

sudo iptables -P INPUT DROP

sudo iptables -P FORWARD DROP

sudo iptables -P OUTPUT ACCEPT

# 允许本地回环

sudo iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许官方白名单IP访问18789端口

sudo iptables -A INPUT -s 121.40.82.220 -p tcp --dport 18789 -j ACCEPT

sudo iptables -A INPUT -s 47.97.73.42 -p tcp --dport 18789 -j ACCEPT

sudo iptables -A INPUT -s 47.98.226.113 -p tcp --dport 18789 -j ACCEPT

# 允许SSH(管理员IP)

sudo iptables -A INPUT -s 你的IP地址 -p tcp --dport 22 -j ACCEPT

# 保存规则

sudo apt install iptables-persistent

sudo netfilter-persistent save

1.4 容器部署特殊防护

容器部署时防火墙需兼顾宿主机与容器两层,避免端口暴露风险-2

# 宿主机防火墙放行18789端口,限制白名单

sudo iptables -A INPUT -s 官方白名单IP -p tcp --dport 18789 -j ACCEPT

# 容器端口映射(将容器18789映射至宿主机18789)

docker run -p 127.0.0.1:18789:18789 openclaw/openclaw

# 容器内防火墙(使用iptables或容器管理工具)

docker exec -it openclaw-container iptables -A INPUT -p tcp --dport 18789 -j ACCEPT

1.5 地域选择策略

目前中国内地域(除香港)的轻量应用服务器,联网搜索功能受限-1-6。建议优先选择:

地域 优势 适用场景
中国香港 免备案、网络延迟低、联网搜索正常 个人开发者、中小企业
华东1(杭州) 国内访问速度快、合规性好 政务云、企业内网
美国(弗吉尼亚) 海外用户访问快 全球化部署

二、身份认证强制开启:拒绝无证访问

2.1 Token模式配置(核心防线)

OpenClaw使用HTTP Basic Auth,AUTH_USERNAME和AUTH_PASSWORD环境变量由部署工具自动生成-3。同时生成网关令牌OPENCLAW_GATEWAY_TOKEN用于API访问-3

生成强令牌(32位随机字符串):

# 生成32位随机字符串

openssl rand -hex 16

# 输出示例:a2d22396ef3f8ba21a0e98834fb468d1

# 或使用更复杂的base64编码(更长,更安全)

openssl rand -base64 24

# 输出示例:8X4vG2pL9qR5sT7wY3zN6kM1

2.2 配置Token(环境变量引用,避免硬编码)

方法A:通过环境变量设置(推荐)

# 编辑~/.bashrc或~/.zshrc

export OPENCLAW_GATEWAY_TOKEN="你的32位随机令牌"

export OPENCLAW_AUTH_USERNAME="admin"

export OPENCLAW_AUTH_PASSWORD="你的32位密码"

# 使配置生效

source ~/.bashrc

# 验证

env | grep OPENCLAW

方法B:通过配置文件引用环境变量

编辑~/.openclaw/openclaw.json:

{

"gateway": {

"port": 18789,

"mode": "local",

"auth": {

"mode": "token",

"token": "${OPENCLAW_GATEWAY_TOKEN}"

}

}

}

优势 :环境变量方式可避免密钥硬编码在配置文件中,即使配置文件泄露,攻击者也无法直接获取Token-8

2.3 禁用mDNS广播

mDNS(多播DNS)会将你的OpenClaw服务广播到本地网络,可能导致未经授权的发现和访问-7

# 临时禁用

export OPENCLAW_DISABLE_BONJOUR=1

# 永久禁用(添加到~/.bashrc)

echo 'export OPENCLAW_DISABLE_BONJOUR=1' >> ~/.bashrc

source ~/.bashrc

# 验证

env | grep OPENCLAW_DISABLE_BONJOUR

2.4 验证认证生效

# 查看网关状态,确认认证模式

openclaw gateway status

# 测试无Token访问(应被拒绝)

curl -I http://127.0.0.1:18789

# 期望结果:401 Unauthorized

# 带Token访问

openclaw dashboard

# 应正常打开Web界面

三、文件系统权限收紧:锁住敏感目录

3.1 配置目录权限收紧

OpenClaw的所有配置、会话记录和凭据都存储在~/.openclaw目录下。默认权限可能过于宽松,导致其他进程或用户可读取敏感信息-7

# 查看当前权限

ls -la ~ | grep .openclaw

# 若显示 drwxr-xr-x,说明其他用户可读取

# 收紧权限:仅所有者可读/写/执行

chmod 700 ~/.openclaw

# 配置文件仅所有者可读写

chmod 600 ~/.openclaw/openclaw.json

# 凭证目录隔离(如果存在)

chmod 700 ~/.openclaw/credentials

chmod 600 ~/.openclaw/credentials/* 2>/dev/null

# 会话文件(可能包含敏感对话)

chmod 700 ~/.openclaw/agents

chmod 600 ~/.openclaw/agents/**/sessions/*.json 2>/dev/null

# 验证修改

ls -la ~ | grep .openclaw

# 应显示 drwx------

3.2 凭证目录隔离

OpenClaw的认证配置文件位于~/.openclaw/agents/main/agent/auth-profiles.json,可能包含OAuth令牌和API密钥-7

# 创建专门的凭证目录(如果不存在)

mkdir -p ~/.openclaw/credentials

# 将现有认证文件移到凭证目录

mv ~/.openclaw/agents/main/agent/auth-profiles.json ~/.openclaw/credentials/ 2>/dev/null

# 创建软链接(可选)

ln -s ~/.openclaw/credentials/auth-profiles.json ~/.openclaw/agents/main/agent/auth-profiles.json

# 收紧凭证目录权限

chmod 700 ~/.openclaw/credentials

chmod 600 ~/.openclaw/credentials/*

3.3 文件系统权限检查清单

路径 推荐权限 说明
~/.openclaw 700 根目录,禁止其他用户访问
~/.openclaw/openclaw.json 600 主配置文件,含API Key
~/.openclaw/credentials/ 700 凭证目录
~/.openclaw/credentials/* 600 所有凭证文件
~/.openclaw/agents/ 700 代理数据目录
~/.openclaw/workspace/ 700 工作区(含对话历史)

一键收紧脚本

#!/bin/bash

chmod 700 ~/.openclaw

chmod 600 ~/.openclaw/openclaw.json 2>/dev/null

chmod 700 ~/.openclaw/credentials 2>/dev/null

chmod 600 ~/.openclaw/credentials/* 2>/dev/null

chmod 700 ~/.openclaw/agents 2>/dev/null

chmod 600 ~/.openclaw/agents/**/sessions/*.json 2>/dev/null

chmod 700 ~/.openclaw/workspace 2>/dev/null

echo "文件权限已收紧"

四、最小权限账户运行:禁止root/管理员权限

4.1 为什么不能用root运行?

OpenClaw的核心风险在于其"自主决策能力"------具备持续运行、自动执行任务的特性,若被恶意指令诱导,可能在无人干预下完成批量删数据、泄露隐私等操作-1

如果以root权限运行OpenClaw,Agent在解析"清理无用文件"的意图时,由于具备最高系统写权限,极有可能误删关键系统目录(如rm -rf /etc),导致操作系统物理崩溃-5

4.2 创建专用系统账户

Linux系统

# 创建openclaw系统账户(无登录权限)

sudo useradd --system --home /opt/openclaw --shell /bin/false openclaw

# 创建主目录

sudo mkdir -p /opt/openclaw

sudo chown openclaw:openclaw /opt/openclaw

# 将现有配置迁移

sudo mv ~/.openclaw /opt/openclaw/config

sudo chown -R openclaw:openclaw /opt/openclaw

# 设置环境变量(用于systemd服务)

sudo mkdir -p /etc/openclaw

echo "OPENCLAW_STATE_DIR=/opt/openclaw/config" | sudo tee /etc/openclaw/env

macOS系统

# 创建专用用户(需管理员密码)

sudo sysadminctl -addUser openclaw -home /Users/openclaw -shell /bin/bash

# 设置权限

sudo chown -R openclaw:staff /Users/openclaw

Windows系统

powershell

# 创建本地用户

net user openclaw "强密码" /add

# 设置用户为非管理员组

net localgroup Administrators openclaw /delete

4.3 配置systemd服务以openclaw用户运行

创建服务文件/etc/systemd/system/openclaw-gateway.service:

Unit

Description=OpenClaw Gateway (v2026.2.3-1)

After=network.target

Service

Type=simple

User=openclaw

Group=openclaw

WorkingDirectory=/opt/openclaw

EnvironmentFile=/etc/openclaw/env

Environment="OPENCLAW_STATE_DIR=/opt/openclaw/config"

Environment="OPENCLAW_DISABLE_BONJOUR=1"

ExecStart=/usr/bin/openclaw gateway start

ExecStop=/usr/bin/openclaw gateway stop

Restart=on-failure

RestartSec=10

Install

WantedBy=multi-user.target

启用服务

sudo systemctl daemon-reload

sudo systemctl enable openclaw-gateway.service

sudo systemctl start openclaw-gateway.service

sudo systemctl status openclaw-gateway.service

4.4 验证运行账户

# 查看进程所属用户

ps aux | grep openclaw

# 应显示 openclaw 用户,而非 root

# 验证写入权限

sudo -u openclaw touch /opt/openclaw/test.txt

ls -la /opt/openclaw/test.txt

# 应属于 openclaw:openclaw

五、安全配置自动检查与加固脚本

5.1 一键安全体检命令

OpenClaw内置安全审计命令,支持深度扫描与自动修复常见安全隐患-1-6

# 基础安全审计

openclaw security audit

# 深度安全审计(推荐)

openclaw security audit --deep

# 自动修复常见问题

openclaw doctor --fix

5.2 完整安全加固脚本

将以下脚本保存为secure-openclaw.sh,一键执行所有加固操作:

#!/bin/bash

# OpenClaw生产级安全加固脚本

# 适用版本:v2026.2.3-1及以上

set -e

echo "========================================="

echo "OpenClaw 生产级安全加固脚本"

echo "========================================="

# 1. 防火墙配置检查

echo "[1/8] 检查防火墙配置..."

if command -v ufw &> /dev/null; then

sudo ufw status | grep -q "Status: active" || sudo ufw --force enable

sudo ufw default deny incoming

sudo ufw allow from 121.40.82.220 to any port 18789 proto tcp 2>/dev/null

sudo ufw allow from 47.97.73.42 to any port 18789 proto tcp 2>/dev/null

sudo ufw allow from 47.98.226.113 to any port 18789 proto tcp 2>/dev/null

echo "✓ ufw防火墙已配置"

elif command -v iptables &> /dev/null; then

sudo iptables -P INPUT DROP

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -s 121.40.82.220 -p tcp --dport 18789 -j ACCEPT

sudo iptables -A INPUT -s 47.97.73.42 -p tcp --dport 18789 -j ACCEPT

sudo iptables -A INPUT -s 47.98.226.113 -p tcp --dport 18789 -j ACCEPT

echo "✓ iptables防火墙已配置"

fi

# 2. 生成强令牌

echo "[2/8] 生成安全令牌..."

if [ -z "$OPENCLAW_GATEWAY_TOKEN" ]; then

TOKEN=$(openssl rand -hex 16)

echo "export OPENCLAW_GATEWAY_TOKEN=\"$TOKEN\"" >> ~/.bashrc

export OPENCLAW_GATEWAY_TOKEN="$TOKEN"

echo "✓ 已生成新令牌并添加到~/.bashrc"

else

echo "✓ 环境变量OPENCLAW_GATEWAY_TOKEN已存在"

fi

# 3. 禁用mDNS广播

echo "[3/8] 禁用mDNS广播..."

grep -q "OPENCLAW_DISABLE_BONJOUR" ~/.bashrc || echo "export OPENCLAW_DISABLE_BONJOUR=1" >> ~/.bashrc

export OPENCLAW_DISABLE_BONJOUR=1

echo "✓ 已禁用mDNS广播"

# 4. 收紧文件权限

echo "[4/8] 收紧文件权限..."

chmod 700 ~/.openclaw 2>/dev/null || echo "⚠ ~/.openclaw不存在,请先部署OpenClaw"

chmod 600 ~/.openclaw/openclaw.json 2>/dev/null || true

chmod 700 ~/.openclaw/credentials 2>/dev/null || true

chmod 600 ~/.openclaw/credentials/* 2>/dev/null || true

echo "✓ 文件权限已收紧"

# 5. 检查运行账户

echo "[5/8] 检查运行账户..."

if ps aux | grep -q "[o]penclaw.*root"; then

echo "⚠ 警告:OpenClaw以root用户运行!"

echo "建议创建专用账户:sudo useradd --system --home /opt/openclaw openclaw"

else

echo "✓ OpenClaw未以root运行(或未检测到运行实例)"

fi

# 6. 运行安全审计

echo "[6/8] 运行OpenClaw安全审计..."

if command -v openclaw &> /dev/null; then

openclaw security audit --deep

else

echo "⚠ openclaw命令未找到,请先安装"

fi

# 7. 运行自动修复

echo "[7/8] 运行自动修复..."

if command -v openclaw &> /dev/null; then

openclaw doctor --fix

fi

# 8. 重启服务

echo "[8/8] 重启OpenClaw服务..."

if systemctl list-units --type=service | grep -q openclaw; then

sudo systemctl restart openclaw-gateway.service

echo "✓ 服务已重启"

else

echo "⚠ openclaw服务未安装,请手动重启"

fi

echo "========================================="

echo "✅ 安全加固完成!"

echo "请验证:openclaw gateway status"

echo "========================================="

执行脚本

chmod +x secure-openclaw.sh

./secure-openclaw.sh

六、安全配置检查清单

部署完成后,请对照以下清单逐一确认:

检查项 命令/验证方法 期望结果 状态
端口未暴露公网 nmap -p 18789 你的公网IP 端口关闭或过滤
防火墙白名单生效 sudo ufw status verbose 仅白名单IP允许
Token认证开启 curl -I http://127.0.0.1:18789 401 Unauthorized
mDNS已禁用 env | grep DISABLE_BONJOUR 显示1
配置文件权限 ls -la ~/.openclaw/openclaw.json -rw-------
运行账户非root ps aux | grep openclaw 显示openclaw用户
安全审计通过 openclaw security audit 无高危警告
最新版本 openclaw --version ≥ 2026.3.8

结语:从"裸奔"到"筑栏"

2026年春,OpenClaw的热度席卷全网:GitHub星标逼近30万,A股"龙虾概念股"逆势涨停,闲鱼"代装服务"价格从50元飙至1500元-1。热潮之下,安全才是底线。

广东省政务智能联合创新工场研发的"智慧虾栏"系统,正是针对OpenClaw四大核心安全风险的一体化解决方案-10。对于普通开发者而言,本文提供的网络层防护、身份认证强制开启、文件系统权限收紧、最小权限账户运行四大措施,同样能将安全风险降至最低。

正如工信部预警所强调:"信任边界模糊、自主决策、越权操作"------这款具备持久记忆、主动执行能力的AI智能体,若缺乏有效管控,可能被指令诱导或恶意接管-1。但只要我们坚持"环境隔离、公网关闭、权限严控、审计持续"的四大原则,就能在享受AI效率红利的同时,筑牢安全防线。

安全养"虾"四字诀

  • :物理隔离,专用账户
  • :端口封锁,白名单访问
  • :权限最小,文件只读
  • :持续审计,日志追溯

(系列文章第四篇,待续。下一篇预告:运行时安全------Docker沙箱与命令审批机制)

参考文献:

  1. 阿里云开发者社区.OpenClaw养"虾"安全指南:工信部预警下的OpenClaw阿里云/本地部署加固/漏洞防护方案.2026-03-15
  2. 阿里云开发者社区.OpenClaw(Clawdbot)阿里云一键部署,防火墙怎么配置优化?.2026-02-02
  3. Coolify.OpenClaw Documentation.2026-02-10
  4. UISDC.新人养虾必看!这5个OpenClaw设置建议关闭.2026-03-09
  5. 实在RPA.Openclaw需要用管理员权限安装吗?.2026-03-02
  6. 阿里云开发者社区.OpenClaw养虾保命指南:6大必装安全Skill+全平台部署+阿里云百炼安全配置实战手册.2026-03-16
  7. 百度开发者中心.OpenClaw深度部署指南:从环境搭建到生产就绪的全流程实践.2026-02-09
  8. 七牛云.OpenClaw Token配置保姆级教程:省下80% Token费用.2026-02-02
  9. CSDN博客.如何让openclaw控制我的ubuntu电脑可以创建文件.2026-03-07
  10. 南方财经网."养虾"有风险 不如试试"智慧虾栏"------关于政务领域使用OpenClaw类应用的安全提醒.2026-03-11
相关推荐
NikoAI编程2 小时前
Claude Code Skill 实战:从「能用」到「好用」
人工智能·ai编程·claude
人工智能培训咨询叶梓2 小时前
SYNCHECK:提升检索增强型语言模型的可信度
人工智能·深度学习·语言模型·大模型·检索增强·多模态·rag
用户69371750013842 小时前
315曝光AI搜索问题:GEO技术靠内容投喂操控答案,新型营销操作全揭秘
android·前端·人工智能
big_rabbit05022 小时前
网络IO模型?什么是多路复用IO?select和epoll 的差别?
网络
大傻^2 小时前
SpringAI2.0 对话记忆管理:ChatMemory、Advisor 链与长期记忆架构
人工智能·springai·记忆管理
吴彦祖北京分祖2 小时前
OpenClaw爆发背后的安全深渊
人工智能
冰西瓜6002 小时前
深度学习的数学原理(二十)—— 序列建模与词嵌入
人工智能·深度学习
Du_chong_huan2 小时前
6.1 服务器概览
运维·服务器