windows+wsl+OpenClaw 安装指南(七):系统安全设置 —— 防火墙与敏感信息保护

作者:技术实践派
标签:系统安全 | 防火墙 | 环境变量 | 敏感信息保护 | 密码管理
难度:⭐⭐⭐⭐☆(中高级)
阅读时间:20分钟


一、前言

在前几篇文章中,我们完成了 OpenClaw 的搭建、大模型配置和飞书集成。然而,安全是生产环境的基石——一个暴露在公网且无防护的 AI 网关,可能成为攻击者的入口。

本文将系统性地介绍 OpenClaw 部署环境的安全加固方案:

  • Windows 防火墙:控制主机层面的入站/出站流量
  • WSL + Ubuntu 防火墙:保护 Linux 子系统的网络边界
  • 敏感信息管理:将 API Key、App Secret 等从配置文件迁移到系统环境变量
  • 高阶方案预告:Vaultwarden 自托管密码管理器(后续专文详细介绍)

⚠️ 安全声明:本文面向本地/内网部署场景。如需公网部署,建议增加反向代理(Nginx/Caddy)、HTTPS 证书、DDoS 防护等额外安全措施。


二、Windows 防火墙配置

2.1 当前网络风险评估

在默认安装情况下,OpenClaw 存在以下潜在风险:

风险点 说明 风险等级
Gateway 端口暴露 18789 端口可能被局域网内其他设备扫描
Ollama 端口暴露 11434 端口若绑定 0.0.0.0 则全网可达
配置文件明文存储 API Key、App Secret 以明文保存
无网络隔离 WSL 与 Windows 网络互通,攻击可能横向移动

2.2 配置 Windows Defender 防火墙

步骤 1:查看当前防火墙状态

# 以管理员身份运行 PowerShell
Get-NetFirewallProfile | Select-Object Name, Enabled

预期输出

Name    Enabled
----    -------
Domain     True
Private    True
Public     True

确保所有网络类型的防火墙均已启用。

步骤 2:创建 OpenClaw Gateway 入站规则

# 创建入站规则 - 仅允许本地访问
New-NetFirewallRule `
    -DisplayName "OpenClaw-Gateway-Localhost" `
    -Direction Inbound `
    -LocalPort 18789 `
    -Protocol TCP `
    -RemoteAddress 127.0.0.1 `
    -Action Allow `
    -Profile Any

# 如需允许局域网访问(谨慎使用)
New-NetFirewallRule `
    -DisplayName "OpenClaw-Gateway-LAN" `
    -Direction Inbound `
    -LocalPort 18789 `
    -Protocol TCP `
    -RemoteAddress LocalSubnet `
    -Action Allow `
    -Profile Private

参数说明

参数 说明
RemoteAddress 127.0.0.1 仅本地回环 最安全,仅限本机访问
RemoteAddress LocalSubnet 局域网子网 允许同网段设备访问
RemoteAddress Any 任意地址 不推荐,风险最高

步骤 3:创建 Ollama 防火墙规则

Ollama 默认监听 11434 端口,若配置为 0.0.0.0:11434,必须严格限制访问:

# 仅允许 WSL 访问 Ollama(推荐配置)
# 首先获取 WSL 虚拟网卡的 IP 范围
$wslSubnet = "172.20.0.0/16"  # 根据实际 WSL 子网调整

New-NetFirewallRule `
    -DisplayName "Ollama-WSL-Only" `
    -Direction Inbound `
    -LocalPort 11434 `
    -Protocol TCP `
    -RemoteAddress $wslSubnet `
    -Action Allow `
    -Profile Any

# 阻止其他所有入站连接(显式拒绝规则)
New-NetFirewallRule `
    -DisplayName "Ollama-Block-Others" `
    -Direction Inbound `
    -LocalPort 11434 `
    -Protocol TCP `
    -RemoteAddress Any `
    -Action Block `
    -Profile Any

💡 提示:防火墙规则按优先级匹配,允许规则应在阻止规则之前创建。

步骤 4:验证规则生效

# 查看所有 OpenClaw 相关规则
Get-NetFirewallRule -DisplayName "*OpenClaw*", "*Ollama*" | 
    Select-Object DisplayName, Direction, Action, Enabled

# 测试端口连通性(从另一台机器)
# telnet <windows-ip> 18789  # 应连接失败或被拒绝

2.3 高级:使用 netsh 命令行

对于脚本化部署,使用 netsh 更简洁:

# 添加入站规则(仅本地)
netsh advfirewall firewall add rule `
    name="OpenClaw-Gateway-Local" `
    dir=in action=allow `
    protocol=TCP localport=18789 `
    remoteip=127.0.0.1

# 删除规则
netsh advfirewall firewall delete rule name="OpenClaw-Gateway-Local"

# 导出防火墙配置(备份)
netsh advfirewall export "$env:USERPROFILE\firewall-backup.wfw"

三、WSL + Ubuntu 防火墙配置

3.1 WSL 网络架构回顾

Windows 主机 (192.168.1.100)
    │
    ├── WSL2 虚拟网卡 (172.20.0.1)
    │       │
    │       └── Ubuntu (172.20.133.41)
    │               └── OpenClaw Gateway (:18789)
    │
    └── Windows 防火墙(控制入站流量)

WSL2 使用虚拟网卡与 Windows 通信,因此需要双层防护

  1. Windows 防火墙控制外部流量进入 WSL
  2. Ubuntu 防火墙(ufw)控制 WSL 内部流量

3.2 安装和配置 UFW

步骤 1:安装 ufw

# 在 WSL Ubuntu 中执行
sudo apt-get update
sudo apt-get install -y ufw

步骤 2:配置默认策略

# 默认拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH(如需要远程管理 WSL)
sudo ufw allow 22/tcp

步骤 3:配置 OpenClaw 规则

# 允许本地回环访问(Dashboard 使用)
sudo ufw allow from 127.0.0.1 to any port 18789

# 允许 Windows 主机访问(通过 WSL 虚拟网卡)
# 172.20.0.1 是 Windows 在 WSL 网络中的 IP
sudo ufw allow from 172.20.0.1 to any port 18789

# 如需允许特定网段(例如 Docker 网络)
sudo ufw allow from 172.17.0.0/16 to any port 18789

步骤 4:启用防火墙

# 检查规则(试运行,不实际阻断)
sudo ufw show added

# 启用防火墙(会提示确认)
sudo ufw enable

# 查看状态
sudo ufw status verbose

预期输出

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
18789                      ALLOW IN    127.0.0.1
18789                      ALLOW IN    172.20.0.1

3.3 WSL 特定注意事项

问题 1:WSL IP 地址动态变化

WSL 重启后 IP 可能变化,硬编码 IP 不可靠。

解决方案:使用脚本自动更新规则

#!/bin/bash
# /usr/local/bin/update-ufw-wsl.sh

# 获取当前 Windows IP(WSL 视角的网关)
WINDOWS_IP=$(ip route show default | grep -oP '(?<=via )\d+\.\d+\.\d+\.\d+')

# 删除旧规则(保留注释标识)
sudo ufw delete allow from any to any port 18789 comment 'windows-host' 2>/dev/null

# 添加新规则
sudo ufw allow from $WINDOWS_IP to any port 18789 comment 'windows-host'

echo "UFW 规则已更新: $WINDOWS_IP -> :18789"

添加到启动脚本:

# 编辑 .bashrc 或创建 systemd 服务
echo "/usr/local/bin/update-ufw-wsl.sh" >> ~/.bashrc

问题 2:WSL 与 Windows 防火墙的交互

WSL2 的虚拟网卡绕过了部分 Windows 防火墙规则。

解决方案:在 Windows 侧控制 WSL 虚拟网卡

# 获取 WSL 虚拟网卡名称
Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "*WSL*" }

# 为 WSL 网卡配置专用防火墙配置文件
Set-NetConnectionProfile -InterfaceAlias "vEthernet (WSL)" -NetworkCategory Private

四、敏感信息管理:配置文件 → 环境变量

4.1 为什么需要迁移?

当前风险

# config.env - 明文存储敏感信息
TENCENT_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 版本控制风险:容易误提交到 Git
  • 文件权限风险:配置文件可能被其他用户读取
  • 备份风险:备份文件可能包含明文密钥

4.2 Windows 系统环境变量配置

步骤 1:设置用户级环境变量

# 设置腾讯混元 API Key
[Environment]::SetEnvironmentVariable(
    "OPENCLAW_TENCENT_API_KEY", 
    "sk-your-api-key-here", 
    "User"
)

# 设置飞书 App Secret
[Environment]::SetEnvironmentVariable(
    "OPENCLAW_FEISHU_APP_SECRET", 
    "your-app-secret-here", 
    "User"
)

# 设置 Gateway Token
[Environment]::SetEnvironmentVariable(
    "OPENCLAW_GATEWAY_TOKEN", 
    "your-secure-token", 
    "User"
)

# 验证设置
[Environment]::GetEnvironmentVariable("OPENCLAW_TENCENT_API_KEY", "User")

步骤 2:配置 config.env 读取环境变量

修改 config.env 使用变量引用:

# ============================================
# OpenClaw 配置 - 使用环境变量
# ============================================

# 基础配置
GATEWAY_PORT=18789
GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
WSL_DISTRO=Ubuntu-24.04
WSL_USER=demo

# 腾讯混元配置
USE_TENCENT_HUNYUAN=true
TENCENT_API_KEY=${OPENCLAW_TENCENT_API_KEY}
TENCENT_MODEL=hunyuan-turbos

# 飞书配置
ENABLE_FEISHU=true
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=${OPENCLAW_FEISHU_APP_SECRET}
FEISHU_CONNECTION_MODE=websocket
FEISHU_DM_POLICY=open

4.3 PowerShell 安装脚本读取环境变量

修改自动化脚本,优先从环境变量读取:

# auto-install-openclaw.ps1 片段

function Get-ConfigValue {
    param(
        [string]$Key,
        [string]$EnvVarName,
        [string]$DefaultValue = ""
    )
    
    # 优先从环境变量读取
    $envValue = [Environment]::GetEnvironmentVariable($EnvVarName, "User")
    if ($envValue) {
        Write-Log "从环境变量读取 $Key" "INFO"
        return $envValue
    }
    
    # 其次从配置文件读取
    if ($config[$Key]) {
        return $config[$Key]
    }
    
    # 最后使用默认值
    return $DefaultValue
}

# 使用示例
$TencentApiKey = Get-ConfigValue -Key "TENCENT_API_KEY" -EnvVarName "OPENCLAW_TENCENT_API_KEY"
$FeishuSecret = Get-ConfigValue -Key "FEISHU_APP_SECRET" -EnvVarName "OPENCLAW_FEISHU_APP_SECRET"

4.4 WSL 环境变量传递

方式 1:通过 wsl.conf 传递

# /etc/wsl.conf
[interop]
appendWindowsPath = true

[boot]
systemd = true

方式 2:在 WSL 脚本中读取 Windows 环境变量

#!/bin/bash
# wsl-install.sh 片段

# 从 Windows 注册表读取环境变量(需安装 powershell 或 cmd 工具)
get_windows_env() {
    local var_name=$1
    cmd.exe /c "echo %$var_name%" 2>/dev/null | tr -d '\r'
}

# 读取 Windows 环境变量
TENCENT_API_KEY=$(get_windows_env "OPENCLAW_TENCENT_API_KEY")
FEISHU_APP_SECRET=$(get_windows_env "OPENCLAW_FEISHU_APP_SECRET")
GATEWAY_TOKEN=$(get_windows_env "OPENCLAW_GATEWAY_TOKEN")

# 验证读取成功
if [ -z "$TENCENT_API_KEY" ] || [ "$TENCENT_API_KEY" = "%OPENCLAW_TENCENT_API_KEY%" ]; then
    echo "[ERROR] 无法从 Windows 环境变量读取 API Key"
    exit 1
fi

echo "[OK] 已从 Windows 环境变量读取配置"

方式 3:使用 .env 文件(推荐开发环境)

# 在 WSL 中创建 .env 文件(设置严格权限)
touch ~/.openclaw/.env
chmod 600 ~/.openclaw/.env

# 写入环境变量
cat > ~/.openclaw/.env << EOF
OPENCLAW_TENCENT_API_KEY=sk-xxx
OPENCLAW_FEISHU_APP_SECRET=xxx
EOF

# 在启动脚本中加载
source ~/.openclaw/.env

4.5 安全最佳实践

实践 说明 优先级
环境变量优先 脚本优先从环境变量读取敏感信息 ⭐⭐⭐⭐⭐
配置文件脱敏 config.env 中不存放真实密钥 ⭐⭐⭐⭐⭐
权限控制 敏感文件设置 600 权限 ⭐⭐⭐⭐
定期轮换 API Key 每 90 天更换一次 ⭐⭐⭐⭐
审计日志 记录敏感操作(访问、修改) ⭐⭐⭐

五、高阶方案:Vaultwarden 自托管密码管理(预告)

5.1 为什么需要密码管理器?

对于团队部署,面临更多挑战:

  • 多人共享:API Key 需要安全地在团队内共享
  • 权限分级:不同成员访问不同级别的密钥
  • 离职交接:员工离职时快速回收和轮换密钥
  • 审计追踪:谁访问了什么密钥,何时访问的

5.2 Vaultwarden 简介

Vaultwarden 是 Bitwarden 的轻量级自托管替代品:

  • 开源免费:基于 Rust 实现,资源占用低
  • 功能完整:支持密码库、组织/集合、访问控制
  • API 支持:可通过 API 获取机密,实现自动化
  • 自托管:数据完全掌控在自己手中

5.3 架构预览

┌─────────────────────────────────────────────────────────────────┐
│                      Windows 宿主机                              │
│  ┌──────────────────────┐      ┌─────────────────────────────┐ │
│  │   OpenClaw Gateway   │◄────►│   Vaultwarden (Docker/WSL)  │ │
│  │   (读取 API Key)     │      │   (密码/机密存储)            │ │
│  └──────────────────────┘      └─────────────────────────────┘ │
│                                         │                      │
│                              ┌──────────▼──────────┐          │
│                              │   团队密码库         │          │
│                              │   - API Keys        │          │
│                              │   - App Secrets     │          │
│                              │   - Certificates    │          │
│                              └─────────────────────┘          │
└─────────────────────────────────────────────────────────────────┘

5.4 后续专文预告

我们将在后续文章中详细介绍:

  • Vaultwarden 部署:Docker Compose 一键部署
  • 组织架构配置:团队、集合、权限分级
  • API 集成:OpenClaw 通过 API 动态获取密钥
  • 安全加固:2FA、主密码策略、会话管理
  • 备份恢复:机密数据的备份与灾难恢复

📌 关注博主,不错过 Vaultwarden 专文更新!


六、安全加固检查清单

6.1 部署前检查

□ Windows 防火墙已启用(所有网络类型)
□ OpenClaw Gateway 端口限制为本地/局域网访问
□ Ollama 端口严格限制为 WSL 访问
□ UFW 已在 WSL 中启用并配置规则
□ 敏感信息已从 config.env 迁移到环境变量
□ config.env 已添加到 .gitignore
□ API Key 已设置轮换提醒(建议 90 天)

6.2 定期审计命令

# Windows 侧
# 查看 OpenClaw 相关防火墙规则
Get-NetFirewallRule -DisplayName "*OpenClaw*", "*Ollama*" | 
    Format-Table DisplayName, Direction, Action, Enabled

# 检查环境变量设置
Get-ChildItem Env: | Where-Object { $_.Name -like "*OPENCLAW*" }

# WSL 侧
# 检查 UFW 状态
sudo ufw status numbered

# 检查敏感文件权限
ls -la ~/.openclaw/
# 应显示:-rw------- (600) 权限

# 查看当前监听端口
ss -tlnp | grep -E "(18789|11434)"

6.3 应急响应

发现 API Key 泄露时

  1. 立即撤销:在腾讯云控制台吊销 API Key
  2. 快速轮换:生成新 Key 并更新环境变量
  3. 审计日志:检查异常调用记录
  4. 重启服务:使新配置生效
  5. 复盘改进:分析泄露原因,加强安全措施
# 快速轮换脚本示例
$newKey = "sk-new-api-key-here"
[Environment]::SetEnvironmentVariable("OPENCLAW_TENCENT_API_KEY", $newKey, "User")
wsl -d Ubuntu-24.04 -e systemctl --user restart openclaw-gateway.service

七、总结

本文系统介绍了 OpenClaw 部署环境的安全加固方案:

层级 措施 效果
Windows 防火墙 限制 18789/11434 端口入站 阻止外部扫描和访问
WSL UFW 仅允许 Windows 主机访问 双层网络隔离
环境变量 敏感信息脱离配置文件 防止版本控制泄露
权限控制 文件 600、定期轮换 最小权限原则
高阶方案 Vaultwarden 自托管 团队级机密管理

安全是一个持续的过程,而非一次性任务。建议每季度进行一次安全审计,及时更新防火墙规则和轮换密钥。

下篇预告

《windows+wsl+OpenClaw 安装指南(八):VS Code 自动化安装实战》—— IDE 集成、远程开发、DevContainer 配置,打造一站式开发体验。


参考文献

Windows 安全

[1] Microsoft. Windows Defender 防火墙文档. https://docs.microsoft.com/zh-cn/windows/security/threat-protection/windows-firewall/windows-firewall-with-advanced-security [EB/OL]. 2024.

[2] Microsoft. PowerShell 网络安全模块. https://docs.microsoft.com/zh-cn/powershell/module/netsecurity/ [EB/OL]. 2024.

[3] Microsoft. netsh 命令参考. https://docs.microsoft.com/zh-cn/windows-server/networking/technologies/netsh/netsh-contexts [EB/OL]. 2024.

Linux 防火墙

[4] Ubuntu Wiki. UFW - Uncomplicated Firewall. https://help.ubuntu.com/community/UFW [EB/OL]. 2024.

[5] Ubuntu Manpages. ufw(8). https://manpages.ubuntu.com/manpages/jammy/en/man8/ufw.8.html [EB/OL]. 2024.

环境变量与配置管理

[6] 12-Factor App 方法论(中文). https://12factor.net/zh_cn/config [EB/OL]. 2024.

[7] Microsoft. 环境变量管理. https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_environment_variables [EB/OL]. 2024.

[8] OWASP. Secrets Management Cheat Sheet. https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html [EB/OL]. 2024.

密码管理器

[9] Vaultwarden GitHub Repository. https://github.com/dani-garcia/vaultwarden [EB/OL]. 2024.

[10] Bitwarden API Documentation. https://bitwarden.com/help/api/ [EB/OL]. 2024.

安全最佳实践

[11] NIST. Security and Privacy Controls. SP 800-53 Rev. 5. https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final [EB/OL]. 2020.

[12] CIS. Windows 10 Benchmark. https://www.cisecurity.org/benchmark/windows [EB/OL]. 2024.

[13] OWASP. Top 10 Web Application Security Risks. https://owasp.org/www-project-top-ten/ [EB/OL]. 2021.


本文完,敬请期待下篇。


系列文章导航:

  • 📎 上一篇:06-飞书集成与企业部署(待上传后添加链接)
  • 📎 下一篇:08-VS Code 自动化安装实战(待上传后添加链接)
  • 📂 系列目录:windows+wsl+OpenClaw 安装指南

觉得有帮助?

  • 👍 点个赞支持一下
  • ⭐ 收藏备用
  • ✅ 关注博主,不错过后续更新
  • 💬 有问题欢迎在评论区留言
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐