Skip to main content

Command Palette

Search for a command to run...

OpenClaw安全部署完整教學:8步加固,別讓你的電腦變成駭客的礦機

Published
5 min readView as Markdown
C
Full-stack solo builder. I ship products with AI that would normally need a team of 10. Sharing the entire journey — code, tools, failures, and wins.

OpenClaw安全部署完整教學:8步加固,別讓你的電腦變成駭客的礦機

Counterintuitive Engineering | 2026年3月 完整教學影片:[YouTube連結待插入] 配套檔案下載:docker-compose.yaml + .env範本 + 8步檢查清單PDF


13萬台OpenClaw伺服器正在公網裸奔。你的是不是其中之一?

欸這不是嚇你齁。Shodan掃描顯示,135,000+ 台OpenClaw以預設配置暴露在網路上——沒有認證、沒有防火牆、什麼防護都沒有。ClawHub上 1,184個外掛被確認是木馬,佔總量的20%。

2026年3月8日和3月10日,中國國家資訊安全漏洞共享平台連續發了兩次安全警告。CVE-2026-25253(CVSS 8.8分)讓攻擊者零成本取得你的完整系統控制權。

這篇文章教你8步把OpenClaw從裸奔變成鐵桶。 每一步都有可以直接複製的指令。做完截圖發留言區,我幫你看。


目錄

  1. 你現在有多危險
  2. 第一步:關門 — 綁定本機
  3. 第二步:上鎖 — API Token認證
  4. 第三步:驗毒 — 外掛安全審查
  5. 第四步:隔離 — Docker容器化部署
  6. 第五步:選腦子 — LLM安全接入
  7. 第六步:備份 — 設定版本管理
  8. 第七步:監控 — 日誌稽核與警報
  9. 完整檢查清單

第1章:你現在有多危險

預設配置 = 完全裸奔

OpenClaw裝完之後的預設配置:

host: 0.0.0.0      # 監聽所有網路介面 = 公網可存取
port: 3000          # 預設埠號,駭客掃描的第一目標
auth: false         # 沒有認證 = 任何人都可以直接操作

意思就是:只要你的機器有公網IP,全世界任何人打 http://你的IP:3000 就能完全控制你的OpenClaw。很可怕齁?

CVE-2026-25253 攻擊鏈

攻擊者用Shodan掃描port 3000
    ↓
找到你的OpenClaw(0.0.0.0沒認證)
    ↓
直接存取API,列舉已安裝外掛
    ↓
注入惡意workflow
    ↓
讀取.env檔 → 拿到你所有的API Key
    ↓
橫向移動到宿主機檔案系統
    ↓
資料外洩 / 挖礦 / 勒索加密

攻擊成本:零。 不需要任何漏洞利用技術,直接裸存取就好了。

自我檢查

# 檢查你的OpenClaw有沒有暴露在公網
# 如果看到 0.0.0.0:3000 → 你正在裸奔
ss -tlnp | grep 3000

# 看看誰在存取你的OpenClaw
journalctl -u openclaw --since "1 hour ago" | grep -v 127.0.0.1

第2章:第一步 — 關門

目標:讓OpenClaw只監聽本機,外網完全無法存取。

2.1 修改監聽位址

# 找到設定檔
find ~ -name "config.json" -path "*openclaw*" 2>/dev/null

# 把host改成127.0.0.1
# 改之前: "host": "0.0.0.0"
# 改之後: "host": "127.0.0.1"

或用環境變數:

export OC_HOST=127.0.0.1

2.2 防火牆規則

# Linux (iptables)
sudo iptables -A INPUT -p tcp --dport 3000 ! -s 127.0.0.1 -j DROP
sudo apt install iptables-persistent -y
sudo netfilter-persistent save

# 或用ufw(比較簡單)
sudo ufw deny 3000
sudo ufw enable

2.3 驗證

# 從本機存取 — 應該成功
curl http://127.0.0.1:3000/healthz

# 從另一台電腦存取 — 應該失敗
curl http://你的IP:3000/healthz
# 預期結果: Connection refused 或 timeout

第3章:第二步 — 上鎖

目標:就算有人繞過防火牆,沒有Token也做不了事。

3.1 產生安全Token

openssl rand -hex 32
# 把輸出的那串東西存好

3.2 設定認證

.env 裡加:

OC_ENABLE_AUTH=true
OC_API_TOKEN=你產生的那串Token

3.3 .env檔案安全

# 設定檔案權限 — 只有你自己可以讀
chmod 600 .env

# 確認.gitignore有包含.env
echo ".env" >> .gitignore

# 千萬不要做的事:
# ✗ 不要在指令列直接打API Key(會記錄在~/.bash_history)
# ✗ 不要把.env commit到git
# ✗ 不要在docker-compose.yaml裡寫死密鑰

3.4 驗證

# 不帶Token — 預期401
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/api/workflows

# 帶Token — 預期200
curl -s -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer 你的Token" \
  http://127.0.0.1:3000/api/workflows

第4章:第三步 — 驗毒

目標:清除已安裝的惡意外掛,建立安全白名單。

4.1 為什麼要驗毒

ClawHub上有 1,184個已確認的木馬外掛,佔總量的20%。惡意外掛會:

  • 偷你的 .env 檔(裡面有你所有的API Key)
  • 偷瀏覽器Cookie和SSH金鑰
  • 透過DNS隧道偷偷把資料傳出去(繞過防火牆)
  • 裝挖礦程式吃你的CPU

4.2 審查已安裝外掛

# 列出所有已安裝外掛
ls -la ~/.openclaw/plugins/

# 檢查每個外掛
for plugin in ~/.openclaw/plugins/*/; do
  echo "=== $(basename $plugin) ==="
  cat "$plugin/package.json" 2>/dev/null | grep -E '"name"|"author"|"repository"'
  stat -c '%y' "$plugin"
  echo ""
done

4.3 木馬特徵辨識

cd ~/.openclaw/plugins/

# 特徵1: 讀取環境變數或.env檔
grep -rl "process\.env\|dotenv\|\.env" . --include="*.js"

# 特徵2: 可疑的網路請求
grep -rl "fetch\|axios\|http\.request\|net\.connect" . --include="*.js" \
  | xargs grep -l "dns\|webhook\|ngrok\|burp"

# 特徵3: 檔案系統遍歷
grep -rl "readFileSync\|readdirSync\|\.ssh\|\.gnupg\|\.aws" . --include="*.js"

# 特徵4: 程式碼混淆
grep -rl "eval\|Function(\|atob\|Buffer\.from.*base64" . --include="*.js"

4.4 處置

# 刪除可疑外掛
rm -rf ~/.openclaw/plugins/可疑外掛名/

# 設定白名單
OC_PLUGIN_WHITELIST=plugin-a,plugin-b
OC_PLUGIN_NETWORK=false
OC_PLUGIN_ENV_ACCESS=false

第5章:第四步 — 隔離

目標:用Docker把OpenClaw關進沙盒,就算被打穿也影響不到你的電腦。

5.1 完整docker-compose.yaml

services:
  openclaw:
    image: openclaw/openclaw:latest
    user: "1000:1000"                              # 非root執行
    ports:
      - "127.0.0.1:3000:3000"                     # 只綁本機
    env_file: [.env]
    volumes:
      - openclaw_data:/home/openclaw/.openclaw      # 資料(可寫)
      - ./plugins:/home/openclaw/.openclaw/plugins:ro  # 外掛(唯讀!)
      - ./backups:/backups
    cap_drop: [ALL]
    cap_add: [NET_BIND_SERVICE]
    read_only: true
    tmpfs: ["/tmp:size=100M,noexec,nosuid"]
    security_opt: ["no-new-privileges:true"]
    deploy:
      resources:
        limits:
          cpus: "2.0"
          memory: 2G

5.2 部署指令

mkdir -p ~/openclaw-secure && cd ~/openclaw-secure
cp .env.example .env
nano .env  # 填入你的Token和LLM API Key
mkdir -p plugins backups
chmod 600 .env
chown -R 1000:1000 plugins backups
docker compose up -d
docker compose logs -f --tail=50

第6章:第五步 — 選腦子(LLM設定)

目標:安全設定AI大語言模型API。

6.1 OpenAI(推薦)

OC_LLM_PROVIDER=openai
OC_LLM_API_KEY=sk-你的OpenAI-Key
OC_LLM_MODEL=gpt-4o

6.2 Anthropic Claude

OC_LLM_PROVIDER=anthropic
OC_LLM_API_KEY=sk-ant-你的Claude-Key
OC_LLM_MODEL=claude-sonnet-4-6-20250514

6.3 本機Ollama(完全離線)

curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3:8b
OC_LLM_PROVIDER=ollama
OC_LLM_BASE_URL=http://host.docker.internal:11434
OC_LLM_MODEL=llama3:8b

Ollama好處:零成本、完全隱私、資料不會離開你的電腦。

6.4 混合方案(推薦)

主力用雲端(OpenAI/Claude),重要或機密工作用本機Ollama,兩全其美。


第7章:第六步 — 備份

cd ~/openclaw-secure
git init

cat > .gitignore << 'EOF'
.env
*.log
backups/
openclaw_data/
EOF

git add docker-compose.yaml .env.example plugins/ .gitignore
git commit -m "初始安全設定"

自動備份腳本

cat > backup.sh << 'SCRIPT'
#!/bin/bash
BACKUP_DIR=~/openclaw-secure/backups
DATE=$(date +%Y%m%d_%H%M%S)
docker compose exec openclaw tar czf /backups/data_${DATE}.tar.gz \
  -C /home/openclaw .openclaw --exclude='.openclaw/plugins'
cp docker-compose.yaml ${BACKUP_DIR}/docker-compose_${DATE}.yaml
find ${BACKUP_DIR} -name "data_*.tar.gz" -mtime +7 -delete
SCRIPT
chmod +x backup.sh

# 每天凌晨3點自動備份
(crontab -l 2>/dev/null; echo "0 3 * * * ~/openclaw-secure/backup.sh >> ~/openclaw-secure/backups/backup.log 2>&1") | crontab -

第8章:第七步 — 監控

# 查看日誌
docker compose logs --tail=100

# 即時監控
docker compose logs -f

# 找可疑存取
docker compose logs | grep -v "127.0.0.1" | grep -E "GET|POST|PUT|DELETE"

# 找認證失敗
docker compose logs | grep -i "401\|unauthorized\|forbidden"

監控腳本

cat > monitor.sh << 'SCRIPT'
#!/bin/bash
LOG_FILE=~/openclaw-secure/backups/monitor.log

if ! docker compose ps | grep -q "running"; then
  echo "[警報 $(date)] OpenClaw容器掛了!" | tee -a $LOG_FILE
  exit 1
fi

HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/healthz)
if [ "$HTTP_CODE" != "200" ]; then
  echo "[警報 $(date)] 健康檢查失敗: HTTP $HTTP_CODE" | tee -a $LOG_FILE
fi

SUSPICIOUS=$(docker compose logs --since 5m 2>/dev/null | grep -cv "127.0.0.1")
if [ "$SUSPICIOUS" -gt 10 ]; then
  echo "[警報 $(date)] 偵測到 $SUSPICIOUS 次非本機存取!" | tee -a $LOG_FILE
fi
SCRIPT
chmod +x monitor.sh
(crontab -l 2>/dev/null; echo "*/5 * * * * ~/openclaw-secure/monitor.sh") | crontab -

完整8步安全檢查清單

#步驟驗證指令預期結果
1關門`ss -tlnp \grep 3000`只看到 127.0.0.1:3000
2上鎖curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/api/workflows401
3驗毒`grep -rl "eval\atob" ~/.openclaw/plugins/ --include="*.js"`沒有輸出
4隔離docker compose psrunning (healthy)
5選腦子在OpenClaw裡發測試訊息LLM正常回覆
6備份ls ~/openclaw-secure/backups/data_*.tar.gz至少1個備份檔
7監控`crontab -l \grep monitor`有排程任務
8權限stat -c '%a' .env600

下載配套檔案

  • docker-compose.yaml — 生產環境安全設定
  • .env.example — 環境變數範本
  • 8步安全檢查清單PDF — 一頁紙列印版

留言區留"安全指南"或私訊"OpenClaw"取得下載連結。


做完了嗎?

截圖發留言區,把你的檢查清單結果貼出來,我幫你看有沒有漏掉的。

完整教學影片 在YouTube搜尋"Counterintuitive Engineering OpenClaw",一步一步帶你做。


Counterintuitive Engineering — 用程式碼解決一切問題 資料來源:Shodan、NVD、CNCERT,截至2026年3月