策略引擎為您的 Guard 代理設備群組提供集中化設定管理。它支援適用於所有代理的全域策略、針對特定端點的個別代理覆蓋,以及搭配廣播佇列的版本控制分發。
策略如何運作
Admin ──> POST /api/policy ──> PolicyEngine ──> Broadcast Queue
|
Agent Poll (每 5 分鐘)
|
┌──────────┬──────────┬──────────┐
Agent 1 Agent 2 Agent 3
- 管理員透過 REST API 或 CLI 建立或更新策略
- PolicyEngine 遞增版本號並儲存策略
- 策略被加入廣播佇列
- 代理每 5 分鐘輪詢更新,並在本地版本過期時下載新策略
策略結構
策略是帶有版本號和設定區段的 JSON 文件:
{
"version": 3,
"scope": "global",
"updatedAt": "2025-01-15T14:23:01Z",
"thresholds": {
"autoRespond": 90,
"notifyAndWait": 70
},
"blocklist": {
"ips": ["203.0.113.50", "198.51.100.0/24"]
},
"allowlist": {
"ips": ["10.0.0.0/8"],
"processes": ["nginx", "postgres"]
},
"monitors": {
"enabled": ["log", "network", "process", "file"],
"advanced": ["falco", "suricata"]
},
"alerting": {
"minimumSeverity": "medium",
"channels": ["slack"]
},
"response": {
"actions": ["block_ip", "notify", "log_only"],
"escalation": {
"repeatThreshold": 3,
"repeatBlockDuration": "24h"
}
}
}
策略設定區段
| 區段 | 欄位 | 描述 |
|---|
| thresholds | autoRespond、notifyAndWait | 自動化回應的信心門檻 |
| blocklist | ips、domains | 推送至所有代理的全設備群組封鎖清單 |
| allowlist | ips、processes | 免於回應的白名單 IP 和處理程序 |
| monitors | enabled、advanced | 每個代理上要啟動的監控器 |
| alerting | channels、severity | 通知的最低嚴重性、管道路由 |
| response | actions、escalation | 允許的回應動作和升級參數 |
| rules | sigma、yara | 自訂規則分發 |
規則類型
| 類型 | 描述 | 值格式 |
|---|
block_ip | 將 IP 或 CIDR 加入全設備群組封鎖清單 | IP 位址或 CIDR 表示法 |
alert_threshold | 設定警報的最低信心值 | 數字(0-100) |
auto_respond | 啟用/停用自動回應 | 布林值 + 信心門檻 |
custom | 自訂鍵值設定 | 字串 |
block_ip
將 IP 位址或 CIDR 範圍加入所有目標代理的封鎖清單:
{
"type": "block_ip",
"value": "203.0.113.50",
"duration": "24h",
"reason": "Cross-agent correlation: scanning 5 agents"
}
auto_respond
控制 RespondAgent 是否可以採取自動化動作。在維護期間很有用:
{
"type": "auto_respond",
"value": false,
"reason": "Maintenance window: disable auto-response"
}
策略範圍
全域策略適用於所有已註冊的代理:panguard manager policies set --global --file policy.json
每個代理在策略輪詢期間都會收到全域策略。 個別代理策略針對特定機器,並覆蓋全域設定:panguard manager policies set --agent srv-01 --file policy.json
個別代理策略與全域策略合併。在衝突的情況下,個別代理規則優先。
策略解析順序
當代理輪詢其策略時,Manager 合併設定:
Defaults ──> Global Policy ──> Per-Agent Policy
後面的值覆蓋前面的值。
版本控制
每次策略變更都會遞增版本號。代理在每次輪詢週期中將其本地版本與 Manager 的目前版本進行比較。
| 事件 | 版本行為 |
|---|
| 新策略建立 | 版本遞增 |
| 策略更新 | 版本遞增 |
| 新增個別代理覆蓋 | 代理特定版本遞增 |
| 代理以目前版本輪詢 | Manager 回傳 304(無變更) |
| 代理以過期版本輪詢 | Manager 回傳新策略 |
廣播佇列
當策略變更需要立即行動時,Manager 立即將更新推送至所有在線代理:
| 傳遞模式 | 觸發條件 | 延遲 |
|---|
| 輪詢 | 非緊急策略變更 | 最多 5 分鐘 |
| 廣播 | block_ip 規則、auto_respond 停用 | 立即(透過下次心跳,約 30 秒) |
緊急策略
當 ThreatAggregator 偵測到跨代理威脅模式時,它會觸發緊急策略推送:
| 觸發條件 | 緊急動作 |
|---|
| 同一 IP 攻擊 3+ 個代理 | 全設備群組 IP 封鎖 |
| 同一惡意軟體雜湊出現在 2+ 個代理 | 全設備群組檔案隔離規則 |
| 偵測到協調攻擊 | 在全設備群組提升自動回應門檻 |
緊急策略繞過正常的輪詢間隔,透過廣播佇列分發。
CLI 參考
panguard manager policies <command> [options]
Commands:
list 顯示目前策略規則
set 新增或更新策略規則
remove 移除策略規則
history 顯示策略版本歷史
broadcast 強制立即策略推送
get 取得特定代理的策略
Options:
--global 適用於所有代理(預設)
--agent <id> 適用於特定代理
--rule <json> 規則定義(JSON)
--file <path> 策略檔案(JSON)
停用 auto_respond 的策略變更透過廣播立即生效。在計畫性維護期間使用此功能,以防止 Guard 採取可能干擾您工作的動作。