每個連接至 Manager 伺服器的 Panguard Guard 代理都遵循一個定義好的生命週期,包含 5 個階段:註冊、心跳維護、威脅報告、策略輪詢和取消註冊。
生命週期概覽
Register ──> Heartbeat Loop ──> Threat Reports ──> Policy Polls ──> Deregister
(一次) (每 30 秒) (即時) (每 5 分鐘) (停止時)
階段 1:註冊
當 Guard 代理使用 --manager 旗標啟動時,它會發送 POST /api/agents/register 請求:
panguard guard start --manager http://manager-host:8443
註冊載荷
| 欄位 | 描述 |
|---|
hostname | 系統主機名稱 |
os | 作業系統類型和版本 |
arch | 系統架構(x64, arm64) |
version | Panguard CLI 版本 |
organizationId | 可選的組織識別碼 |
註冊回應
Manager 指定一個唯一的 agentId 並回傳給代理。如果具有相同主機名稱和組織的代理已存在,該註冊會被視為重新連線。
階段 2:心跳
代理每 30 秒透過 POST /api/agents/:id/heartbeat 發送心跳信號,以確認它們存活且運作正常。
| 參數 | 值 |
|---|
| 間隔 | 每 30 秒 |
| 過期門檻 | 90 秒(3 次錯過心跳) |
| 檢查頻率 | Manager 每 30 秒檢查一次 |
心跳載荷
| 欄位 | 描述 |
|---|
cpu | 目前 CPU 使用百分比 |
memory | 目前記憶體使用百分比 |
eventsProcessed | 自上次心跳以來處理的事件數 |
mode | 目前運作模式(learning / protection) |
uptime | 代理運行時間(秒) |
過期偵測
Manager 每 30 秒執行一次過期檢查:
正常: 30 秒內收到心跳
過期: 90 秒無心跳(3 次錯過)
過期的代理在註冊表中被標記,但不會被移除。這允許暫時失去網路連線的代理重新連線而無需重新註冊。
階段 3:威脅報告
當 Guard 代理透過 DARE 管線偵測到威脅時,它會透過 POST /api/agents/:id/events 發送威脅資料。
| 欄位 | 描述 |
|---|
agentId | 報告代理的識別碼 |
threat | 完整的威脅裁決(類型、信心值、證據) |
response | 採取的動作(block_ip、kill_process 等) |
timestamp | 偵測時間 |
跨代理關聯
ThreatAggregator 在 5 分鐘滑動視窗內跨所有代理關聯傳入的威脅,資料保留 24 小時:
| 關聯類型 | 偵測邏輯 |
|---|
| 來源 IP | 同一 IP 針對 2+ 個代理表示橫向移動或大規模掃描 |
| 惡意軟體雜湊 | 同一檔案雜湊出現在 2+ 個代理表示蠕蟲傳播 |
| 攻擊模式 | 同一 MITRE 技術出現在 2+ 個代理表示協調攻擊活動 |
當偵測到跨代理模式時,Manager 向所有受影響的代理推送緊急策略。
階段 4:策略輪詢
代理每 5 分鐘輪詢 GET /api/policy/agent/:id 以檢查策略更新。
| 參數 | 值 |
|---|
| 輪詢間隔 | 每 5 分鐘 |
| 機制 | 代理發送其目前策略版本,Manager 回傳新策略或 304(無變更) |
Agent (v2) ──> GET /api/policy/agent/:id ──> Manager
|
version=3? ──> 回傳新策略
version=2? ──> 回傳 304(無變更)
策略變更可以調整:
- 動作門檻(自動回應信心等級)
- IP 封鎖清單(全設備群組封鎖)
- 警報規則和通知偏好
- 監控器設定
請參閱策略引擎了解策略格式和分發詳情。
階段 5:取消註冊
當 Guard 代理正常停止時,它會發送 DELETE /api/agents/:id:
Manager 將代理標記為離線並保留其註冊資料。如果代理稍後重新連線,它會使用現有的身份恢復。
強制移除
要從註冊表中永久移除代理:
panguard manager agents remove --machine-id srv-01
如果代理當機或失去網路連線,它無法發送取消註冊請求。Manager 透過錯過的心跳偵測此情況,並在 90 秒後將代理標記為過期。