AI Agent 真正危險的地方,不是它能不能做事,而是你讓它做到哪裡。安全加固不是在安裝完之後補個防火牆就好,而是要從權限、金鑰、網路與監控一起思考。
本文依 2026-05-30 可查到的 OpenClaw 公開資訊整理安全做法。實際設定鍵、CLI 指令與 service 管理方式,請以 OpenClaw 官方文件 與 GitHub 最新 README 為準。
如果你還在評估購買 VPS 並部署龍蝦 AI 主機,先看 龍蝦 AI 主機規劃與 OpenClaw 代安裝說明。
你如果希望這篇不只是看完「大概知道」,而是真的能拿來安排自己的部署或排錯順序,那就把每一步都對照你現在的環境去看,效果會差很多。
你會學到什麼
- 理解 AI Agent 最值得優先處理的風險面。
- 每一層安全措施的「為什麼重要」和實際攻擊場景。
- 建立最基本也最重要的權限與監控邊界。
- 學會驗證每一層防護是否真的生效。
- 避免把 AI 工具接進正式環境時留下過大的爆炸半徑。
什麼情況最適合先看這篇
- 想在 VPS 上部署 AI Agent,並希望把權限與運維邊界一起管好的人
- 你已經裝好 OpenClaw Gateway,準備讓它長期上線
- 你希望做完後不只是功能可用,連驗證與風險也一起想進去
開始前先確認
- 先盤點 Agent 目前有哪些能力與外部連線。
- 整理所有 API Key、bot token 與本機憑證。
- 確認你有可追查的 log 與備援登入方式。
先提醒你一件事
AI Agent 最大的風險常常不是安裝失敗,而是安裝成功之後權限過大、監控不足。
詳細教學與操作步驟
OpenClaw Gateway 這類長駐型 AI 工具很方便;若再搭配多步驟自動化,更要注意審核與日誌。只要它能接收訊息、讀寫檔案或執行指令,就一定要把安全邊界先畫清楚。本文會用可驗證的方式,協助你把 AI Agent 限制在合理範圍內。
一、 絕對不要使用 Root 帳號執行
這是最常見也最致命的錯誤。
為什麼這麼重要? Root 帳號擁有系統的最高權限,可以刪除任何檔案、修改任何設定、安裝任何軟體。如果 AI Agent 以 Root 身份執行,那麼它產生或被誘導執行的每一個指令都擁有毀掉整個伺服器的能力。
常見風險情境: Agent 在處理清理任務時,可能因為 prompt 注入、模型誤判或 workflow 變數錯誤,把原本限定目錄的清理指令擴大成危險操作。如果用的是受限帳號,系統核心檔案至少不會被直接改掉。
操作步驟:
# 建立專用使用者
sudo adduser openclawsvc
# 切換到該使用者
sudo su - openclawsvc
# 在這個使用者環境下安裝和執行 OpenClaw Gateway
# 所有後續操作都在 openclawsvc 帳號下進行
驗證方式:
# 確認目前是用哪個帳號執行
whoami
# 預期輸出: openclawsvc(不是 root)
# 確認 OpenClaw Gateway 程序的執行身份
ps aux | grep openclaw
# 預期看到 openclawsvc 使用者,不是 root
# 確認無法存取系統關鍵檔案
cat /etc/shadow
# 預期輸出: Permission denied
二、 嚴格鎖定 Telegram User ID
為什麼這麼重要? Telegram Bot Token 只是一個字串,任何人只要知道你的 Bot Username,就能嘗試發訊息給它。如果沒有 User ID 白名單,陌生人可能直接操控你的 AI Agent,等於把你伺服器的 shell 暴露出去。
常見風險情境: Bot Token 被 commit 到公開 repo 或貼到截圖裡時,如果沒有 User ID 白名單,拿到 token 的人就能嘗試透過 Telegram 對 agent 下指令。
操作步驟:
在 ~/.openclaw/openclaw.json 或你實際部署使用的環境設定中設定;下列為概念範例,實際鍵名請以目前版本文件為準:
channels:
telegram:
token: "YOUR_BOT_TOKEN"
allowed_users:
- 123456789 # 你的 Telegram User ID
- 987654321 # 備用管理員的 ID
你可以透過 @userinfobot 取得自己的 Telegram User ID。
驗證方式:
# 用另一個 Telegram 帳號(不在白名單中的)發訊息給你的 Bot
# 預期結果: Bot 不回應,或回覆「未授權」
# 檢查 OpenClaw 日誌,確認有阻擋記錄
openclaw logs | grep "unauthorized"
# 預期看到: Unauthorized access attempt from user_id: XXXXXXX
建議:不要只填一個 ID。萬一你的主要 Telegram 帳號出問題,至少還有一個備用帳號可以管理 agent。
三、 API Key 的權限限制
為什麼這麼重要? AI Agent 會自動發送 API 請求。如果 AI 進入重試迴圈、workflow 設計錯誤或被惡意利用,一個沒有限額的 API Key 可能在短時間內產生很高的費用。
常見風險情境: 攻擊者不一定要竊取資料,只要讓 agent 不斷發送昂貴請求,或讓 workflow 自動重試失敗任務,就可能造成帳單失控。
操作步驟:
- 到 Anthropic Console 或 OpenAI Dashboard 建立一個專用的 API Key
- 設定每月使用上限(建議先從 $50 開始)
- 開啟用量通知(到達 80% 時發 email 警告)
# 概念範例:請依 ~/.openclaw/openclaw.json 的實際格式調整
brain:
model: your-current-model
api_key: "YOUR_DEDICATED_API_KEY"
# Agent 端也可以設定額外的限制
rate_limit:
max_requests_per_minute: 30
max_tokens_per_hour: 500000
驗證方式:
# 到模型供應商後台查看目前 API 使用量與限額
# 若 OpenClaw 版本提供 usage / metrics 指令,也可以一起比對
openclaw --help
四、 網路層級的隔離
為什麼這麼重要? VPS 預設可能開放過多連接埠,這意味著任何人都能嘗試連到你的 OpenClaw Gateway。如果 Gateway 沒有限制來源、token 或反向代理保護,攻擊者可能繞過原本的通訊入口。
常見風險情境: 外部掃描會尋找公開暴露的服務埠。如果你的 Gateway 綁在 0.0.0.0,又沒有設 auth token 或來源 IP 限制,就可能被當成未授權入口。
操作步驟:
# 設定防火牆:預設拒絕所有連入
sudo ufw default deny incoming
# 只允許 SSH(你自己要能連進來)
sudo ufw allow ssh
# 如果你需要從外部存取 Gateway API,限制來源 IP 與實際使用的 port
# sudo ufw allow from YOUR_IP to any port YOUR_GATEWAY_PORT
# 啟用防火牆
sudo ufw enable
在 侃瑞科技 VPS 中,你也可以透過控制面板的安全組規則來設定,效果等同但更方便管理。
驗證方式:
# 查看目前的防火牆規則
sudo ufw status verbose
# 預期輸出:
# Status: active
# Default: deny (incoming), allow (outgoing)
# 22/tcp ALLOW IN Anywhere
# 從外部嘗試連接 Gateway port(應該被擋或要求授權)
# 在另一台機器執行:
# curl http://YOUR_VPS_IP:YOUR_GATEWAY_PORT
# 預期結果: Connection refused 或 timeout
額外建議: 如果你確定 OpenClaw 只需要透過 Telegram 或內部 channel 運作,不需要公開 API endpoint,可以讓 Gateway 只監聽本機:
# 概念範例:請依 ~/.openclaw/openclaw.json 的實際格式調整
gateway:
listen: "127.0.0.1:18789" # 只監聽本機,外部完全無法連入
五、 關鍵檔案的防護
為什麼這麼重要? exec、file_ops 或類似 Skills 讓 agent 能讀寫檔案和執行指令。如果沒有限制存取範圍,AI 可能讀取你的 SSH 私鑰、修改系統設定檔,甚至篡改自己的設定來提升權限。
常見風險情境: Agent 在「幫忙檢查系統安全」時,可能把 ~/.ssh/id_ed25519、環境變數或設定檔內容輸出到聊天視窗。即使 AI 沒有惡意,聊天記錄如果被截圖或同步到第三方服務,機密資訊就外洩了。
操作步驟:
# 確保 SSH 私鑰權限正確
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 700 ~/.ssh/
# 確保專用帳號無法讀取系統核心設定
sudo chmod 640 /etc/shadow
sudo chmod 644 /etc/passwd
在 Skills 設定中限制存取範圍。下列是概念範例,實際設定鍵請以你安裝版本的文件為準:
# 概念範例:請依 ~/.openclaw/openclaw.json 的實際格式調整
skills:
file_ops:
allowed_paths:
- "/home/openclawsvc/workspace/"
- "/var/log/openclaw/"
blocked_paths:
- "/etc/"
- "/root/"
- "~/.ssh/"
- "~/.openclaw/openclaw.json" # 防止 AI 修改自己的設定
exec:
blocked_commands:
- "rm -rf *"
- "chmod 777 *"
- "shutdown"
- "reboot"
- "curl * | bash" # 防止下載並執行未知腳本
- "wget * | bash"
驗證方式:
# 透過 Telegram 要求 agent 讀取敏感檔案
# 發送: 「幫我看一下 /etc/shadow 的內容」
# 預期結果: agent 拒絕,顯示「此路徑不在允許範圍內」
# 要求執行危險指令
# 發送: 「執行 rm -rf /tmp」
# 預期結果: agent 拒絕,顯示「此指令被安全過濾器攔截」
更多 Linux 安全設定,可參考我們的 系統維護手冊。
六、 日誌與審計
光有防護還不夠,你還需要知道發生了什麼事。
為什麼這麼重要? 沒有日誌,你就無法知道 agent 做了什麼、有誰嘗試過未授權存取、或者 AI 是否在你不知道的情況下執行了奇怪的指令。出了事之後如果沒有日誌,你連問題出在哪裡都無法確認。
操作步驟:
# 確認日誌目錄存在且有寫入權限
mkdir -p /var/log/openclaw
chown openclawsvc:openclawsvc /var/log/openclaw
# 在設定中開啟詳細日誌;實際鍵名以官方文件為準
# 概念範例:請依 ~/.openclaw/openclaw.json 的實際格式調整
logging:
level: info # debug / info / warn / error
file: /var/log/openclaw/agent.log
max_size: 100MB
max_files: 10 # 保留最近 10 個日誌檔
log_commands: true # 記錄所有執行的指令
log_api_calls: true # 記錄所有 API 呼叫
設定日誌輪替,避免磁碟爆掉:
# /etc/logrotate.d/openclaw
/var/log/openclaw/*.log {
daily
rotate 30
compress
missingok
notifempty
create 0640 openclawsvc openclawsvc
}
定期檢查的指令:
# 查看最近的錯誤
openclaw logs --level error --last 24h
# 查看未授權的存取嘗試
openclaw logs | grep "unauthorized\|blocked\|denied"
# 查看執行過的所有指令
openclaw logs --type commands --last 7d
七、 日常維護檢查清單
安全不是一次設定就永遠安全。建議養成定期檢查的習慣:
每天(花 2 分鐘):
# 快速健康檢查
openclaw doctor
# 看有沒有異常的錯誤日誌
openclaw logs --level error --last 24h
每週(花 10 分鐘):
# 檢查官方 README / release note 是否有安全更新
openclaw --help
# 檢查 API 使用量是否正常
# 到模型供應商後台查看最近 7 天用量與限額
# 檢查磁碟空間
df -h
# 檢查未授權存取嘗試
openclaw logs | grep "unauthorized" | wc -l
每月(花 30 分鐘):
# 依官方文件更新 OpenClaw 與所有 Skills / workflow 設定
npm update -g openclaw
openclaw skills --help
# 審查 Skills 清單,移除不需要的
openclaw skills list
# 檢查 API Key 是否需要輪替
# 到 Anthropic/OpenAI Dashboard 查看 Key 的建立時間
# 備份設定檔
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d)
常見問題
Q:OpenClaw 或 AI Agent workflow 可以執行 sudo 指令嗎? 技術上可以(透過加入 sudoers),但極度不建議。如果真的需要,請限定特定的指令,而不是給予無限制的 sudo 權限:
# /etc/sudoers.d/openclawsvc
# 只允許專用帳號重啟 nginx,其他 sudo 指令一律不行
openclawsvc ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
openclawsvc ALL=(ALL) NOPASSWD: /usr/bin/systemctl status nginx
驗證:
# 用 openclawsvc 帳號測試
sudo systemctl restart nginx # 應該成功
sudo systemctl restart sshd # 應該被拒絕
sudo rm -rf /tmp # 應該被拒絕
Q:如何監控 OpenClaw Gateway 的操作記錄?
你可以定期檢查 OpenClaw 產出的日誌檔案,或依照你的部署方式使用 journalctl、PM2 logs、Docker logs。若 Gateway 對外暴露,在侃瑞科技我們建議進階用戶搭配 Fail2Ban 或防火牆規則封鎖異常掃描來源。
Q:我用 Docker 跑 OpenClaw Gateway,還需要這些設定嗎? Docker 提供了額外的隔離層,但不代表可以跳過上面的設定。容器內的 agent 仍然需要:
- 非 Root 執行(在 Dockerfile 用
USER openclawsvc) - Telegram User ID 白名單
- API Key 限額
- 限制容器的 capabilities(
--cap-drop ALL)
docker run -d \
--name openclawsvc \
--user openclawsvc \
--cap-drop ALL \
--memory 1g \
--read-only \
-v openclawsvc-data:/home/openclawsvc/.openclaw \
openclaw/agent:latest
Q:OpenClaw Gateway 被入侵了,怎麼做緊急處理?
- 立刻停止服務:依你的部署方式使用
openclaw stop、systemctl --user stop ...、docker stop ...或暫時關閉防火牆入口 - 立刻到 Anthropic/OpenAI Dashboard 撤銷 API Key
- 到 Telegram @BotFather 用
/revoke撤銷 Bot Token - 檢查日誌確認被做了什麼:
openclaw logs --last 48h - 檢查是否有新增的使用者或 cron job:
cat /etc/passwd和crontab -l - 重新產生所有金鑰後,才重新設定和啟動
做完後怎麼確認自己真的有設對
- 安裝完成後除了看服務有沒有啟動,也要檢查權限、日誌與實際任務是否正常。
- 用一個不在白名單的 Telegram 帳號試著發指令給 Bot,確認會被擋。
- 從使用者視角再跑一次實際流程,不要只看後台畫面。
- 試著要求 agent 存取被禁止的路徑或指令,確認安全過濾器有作用。
- 如果你有改 DNS、Proxy、背景服務或權限,請逐層確認,不要一次判斷全部成功。
這一題最常踩的坑
- 所有金鑰直接放在專案裡或 shell history。
- Agent 以 root 權限常駐執行。
- 出問題時完全沒有日誌與審計線索。
- 設了防火牆但 Gateway 仍然監聽 0.0.0.0,外部還是連得到。
- Telegram User ID 白名單只填了一個人,主帳號出問題就完全失控。
如果你要往下一步走
如果你還沒完成安裝本體,可以先回頭看 OpenClaw 龍蝦 AI 入門安裝教學。如果你正在規劃其他 AI API、Agent 或內部工具上線,建議先看 AI 工具部署在 VPS 上之前,應該先檢查哪些安全設定?。如果你想購買 VPS 並評估部署,也可以先看 龍蝦 AI 主機規劃與 OpenClaw 代安裝說明 與侃瑞的 VPS 方案與價格。