🔰 引言
隨著 Proxmox 在企業內部逐漸取代傳統虛擬化平台,
其開源特性雖帶來靈活性與可控性,但也意味著 安全防護必須由管理者自行建立與維護。
傳統「內部網路即信任」的安全思維已不再適用於現代環境:
遠端辦公、雲端同步、API 自動化存取、跨站管理等都讓邊界變得模糊。
因此,建構一套 零信任 (Zero Trust) 的安全架構,
已成為保障 Proxmox 叢集安全與維運穩定的核心策略。
🧩 一、零信任架構的核心理念
| 核心原則 | 說明 |
|---|---|
| 不預設信任任何裝置或使用者 | 無論內部或外部連線,都需通過驗證與授權。 |
| 最小權限原則 (Least Privilege) | 僅授予完成任務所需的最低存取權限。 |
| 持續驗證與監控 | 即使已登入,也持續評估風險並重新驗證。 |
| 明確資安邊界 | 將叢集內的 API、Web、SSH、儲存通訊各自隔離與監控。 |
🧰 二、Proxmox 安全加固建議總覽
| 安全面向 | 建議措施 | 工具 / 設定方式 |
|---|---|---|
| 登入驗證 | 啟用 雙因素認證 (TOTP) | Web GUI → Datacenter → Permissions → Two Factor |
| 帳號權限 | 使用 Role-Based Access Control (RBAC) | 建立不同角色,如 Admin、Ops、Backup |
| API 存取 | 採用 API Token + IP 限制 | 設定 Token 並在防火牆中限制來源 |
| SSH 登入 | 禁用 root 密碼登入、使用金鑰驗證 | /etc/ssh/sshd_config 中設定 PermitRootLogin no |
| 備份加密 | 啟用 PBS 備份加密金鑰 | PBS → Datastore → Encryption |
| 網路隔離 | 使用 VLAN / 防火牆規則區隔管理網與業務網 | Proxmox 防火牆或外部防火牆設定 |
| 日誌與監控 | 整合 Syslog / Wazuh / ELK / Prometheus | 實作集中式監控與告警 |
🧠 三、帳號與權限管理 (RBAC)
Proxmox 提供完整的 RBAC 權限分層模型。
透過角色 (Roles) 與權限 (Privileges),可以將使用者操作範圍精確劃分。
1️⃣ 建立角色與群組
pveum roleadd BackupAdmin -privs "Datastore.AllocateSpace Datastore.Audit VM.Backup"
pveum groupadd backup-team
2️⃣ 指派權限給群組
pveum aclmod / -group backup-team -role BackupAdmin
3️⃣ 新增使用者
pveum useradd backup1@pve --password secure123
pveum usermod backup1@pve -group backup-team
如此即可限制該使用者只能執行備份相關操作,
達到「最小權限原則」(Least Privilege Principle)。
⚙️ 四、API 安全管理
1️⃣ 建立 API Token
在 Web GUI:
- 進入 Datacenter → Permissions → API Tokens
- 為指定帳號產生 Token,例如:
root@pam!automation
CLI 範例:
pveum user token add root@pam automation --privs "VM.PowerMgmt Datastore.Audit"
取得後可搭配 Authorization: PVEAPIToken= 驗證。
建議:
- Token 權限最小化
- 不存於明碼腳本
- 結合 IP 白名單 或 Nginx Proxy 來源限制
2️⃣ 保護 API 通訊
- 強制使用 HTTPS (Port 8006)
- 禁用 HTTP 明碼存取
- 更新 TLS 憑證(可使用 Let’s Encrypt 或自簽)
pvecm updatecerts --force
systemctl restart pveproxy
🔒 五、SSH 與節點安全強化
1️⃣ 停用 root 密碼登入
編輯 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
重新啟動 SSH:
systemctl restart ssh
2️⃣ 使用金鑰登入
產生金鑰:
ssh-keygen -t ed25519
ssh-copy-id root@pve-node01
3️⃣ 設定 Fail2Ban 防爆破
apt install fail2ban
systemctl enable fail2ban --now
4️⃣ 系統安全更新自動化
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
🧰 六、網路隔離與零信任存取設計
1️⃣ 建立多層網路區域
[管理網] → 僅允許內部 IT 人員
[業務網] → VM 與內部服務
[備份網] → PBS / Ceph 複寫
[外部網] → 防火牆隔離與 Reverse Proxy
建議:
- 透過 VLAN 或多網卡區隔
- 使用防火牆規則阻擋交叉流量
- PBS、Ceph Sync、API 伺服器各自使用獨立介面
2️⃣ 導入 Zero Trust VPN
可使用:
- WireGuard(輕量快速)
- Tailscale / ZeroTier(具零信任網路拓樸)
實作方式:
- 建立私有節點身份 (Identity)
- 由中心控制平面 (Coordinator) 驗證每次連線
- 每個節點僅能與授權對象通訊
3️⃣ 設置 Jump Host / Bastion Server
集中管理遠端 SSH 登入:
外部使用者 → Bastion (MFA) → Proxmox Node
結合:
- Google Authenticator / YubiKey
- PAM 模組驗證 (libpam-google-authenticator)
🧮 七、日誌集中與安全監控
可將所有 Proxmox 節點的日誌導入集中式平台:
- Wazuh / ELK Stack → 分析登入異常、檔案變更
- Prometheus + Grafana → 監控節點負載
- Graylog / Loki → 搜尋與報表
範例設定:
*.* @10.0.0.50:514
(在 /etc/rsyslog.d/90-central.conf)
🧠 八、實作架構圖
┌────────────────────────────┐
│ Zero Trust Gateway │
│ (WireGuard / Tailscale) │
└────────────┬───────────────┘
│
MFA + Policy Engine
│
┌────────────────────────────────┐
│ Bastion Host │
│ (SSH / API Access Control) │
└────────────┬───────────────────┘
│
┌──────────────────────────────────────────────┐
│ Proxmox Cluster │
│ ├─ pve1 (Mgmt Network) │
│ ├─ pve2 (Backup Network) │
│ └─ pve3 (Production Network) │
└──────────────────────────────────────────────┘
✅ 結語
在現今的分散式與混合雲環境中,
安全不再只是邊界防禦,而是一種 持續驗證的過程。
透過在 Proxmox 架構中導入:
- RBAC 權限控管
- API Token 安全存取
- 加密傳輸與網路隔離
- 零信任登入與集中審核
- 日誌與行為監控
可讓企業建構出 防護、偵測、回應 三位一體的安全生態。
💬 下一篇將延伸介紹:
「Proxmox 混合雲下的備援與災難復原實作 (Proxmox + PBS + Cloud DR)」,
聚焦於異地同步、跨站備援與自動化復原流程。