安全與部署
Hermes 能執行指令、讀寫檔案、上網,還能被聊天軟體裡的人呼叫。能力越大,設定越要謹慎。官方採用「多層防禦」:任何一層被突破,還有其他層擋著。本頁整理最需要知道的幾層,並附上線前的檢查表。
八層防禦
| 層 | 做什麼 |
|---|---|
| 1. 使用者授權 | 允許名單與 DM 配對,決定誰能用 |
| 2. 危險指令核准 | 破壞性操作要人工同意 |
| 3. 檔案寫入保護 | 黑名單路徑,並可限制在沙箱目錄內 |
| 4. 容器隔離 | Docker/Singularity/Modal,含強化設定 |
| 5. MCP 憑證過濾 | 子程序只拿到安全的環境變數 |
| 6. 情境檔掃描 | 偵測專案檔中的提示注入 |
| 7. 跨對話隔離 | 對話之間不能讀取彼此的資料 |
| 8. 輸入淨化 | 終端機工具的參數要通過白名單檢查 |
危險指令核准
在 ~/.hermes/config.yaml 設定:
approvals:
mode: smart # smart | manual | off
timeout: 300 # 等你回應的秒數
cron_mode: deny # 無人值守的排程遇到危險指令:deny | approve
| 模式 | 行為 |
|---|---|
smart(預設) |
輔助 LLM 評估風險:低風險自動通過、危險自動拒絕、不確定的才問你 |
manual |
一律詢問 |
off |
關閉所有檢查(等同 --yolo) |
除了模式,還有兩種規則:
command_allowlist: # 永久放行
- git push *
approvals:
deny: # 無條件封鎖,連 --yolo 與 mode: off 都擋不掉
- "git push --force*"
- "*curl*|*sh*"
另外有一份寫死的硬性封鎖清單,不論設定為何都會擋:rm -rf / 及其變體、fork bomb、格式化已掛載的裝置、用 dd 清零磁碟等不可逆操作。
誰可以使用 Gateway
預設拒絕所有人,只放行允許名單或已配對的使用者。設定方式見 Gateway 與聊天軟體。
DM 配對有額外保護:配對碼一小時失效、每位使用者每 10 分鐘只能申請一次、錯誤 5 次後鎖定。
用 Docker 隔離
terminal.backend: docker 時,每個容器都套用強化設定:丟棄所有 capabilities(只加回必要的三項)、禁止提權(no-new-privileges)、限制程序數(--pids-limit 256)、/tmp 與 /var/tmp 使用有大小上限的 tmpfs。
| 後端 | 隔離程度 | 危險指令檢查 | 適合 |
|---|---|---|---|
local |
無 | 有 | 開發、信任的使用者 |
ssh |
遠端主機 | 有 | 在另一台伺服器執行 |
docker |
容器 | 略過(以容器為邊界) | 對外的 Gateway |
modal、daytona |
雲端沙箱 | 略過 | 可擴展的雲端隔離 |
檔案與憑證
- 永遠禁止寫入:
~/.ssh/、~/.aws/、~/.kube/、/etc/sudoers,以及 Hermes 自己的祕密檔(如.env)。 - 可用環境變數
HERMES_WRITE_SAFE_ROOT把write_file與patch限制在指定目錄內。 - MCP 子程序預設只拿到
PATH、HOME、USER、LANG等安全變數,API 金鑰與 token 會被剝除。
上線檢查表
- 設定明確的允許名單,不要開
GATEWAY_ALLOW_ALL_USERS=true - 使用容器後端(
terminal.backend: docker) - 限制 CPU、記憶體、磁碟
~/.hermes/.env用chmod 600保護- 優先用 DM 配對,而非手寫使用者 ID
- 定期檢視
command_allowlist - 設定
terminal.cwd限制工作目錄 - 以非 root 使用者執行 Gateway
- 監看
~/.hermes/logs/ - 保持更新(
hermes update),並用hermes doctor查看供應鏈安全公告
不要把個人電腦當成公開機器人的主機
如果 bot 會開放給團隊或群組使用,請放在獨立的 VPS 或容器,而不是放著你的私人金鑰與文件的電腦。官方另有一篇 Running Hermes on a Personal or Work Machine。
推薦影音
上線前先聽的風險說明
簡述:Tech With Tim 的完整入門課中有一段「Security Disclosure & Risks」(約 10:14 起),以專章說明讓代理 24 小時跑在 VPS 上要留意的風險。此處直接從該段開始播放。
完整說明見官方 Security。