收集 Akamai Guardicore Segmentation (舊稱 Guardicore Centra) 記錄

支援的國家/地區:

本文說明如何設定 Akamai Guardicore Segmentation (舊稱 Guardicore Centra),透過 Akamai Unified Log Streamer (ULS) 和 HTTP 輸出,將記錄檔推送至 Google Security Operations。

Guardicore Centra 是一種微區隔平台,可為資料中心、雲端環境和端點提供零信任網路安全。這項解決方案可讓您掌握應用程式依附元件、透過欺騙技術偵測入侵行為,並提供精細的區隔控制項,防止橫向移動並遏止威脅。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Guardicore Centra 執行個體 (雲端或地端部署)
  • 執行 Akamai ULS 的 Linux 伺服器 (最低規格:1 個 vCPU、1 GB RAM、500 MB 磁碟空間)
  • ULS 伺服器已安裝 Python 3.9 以上版本
  • 具備 Guardicore Centra 的管理員存取權,可建立唯讀 API 使用者
  • 從 ULS 伺服器到 Google SecOps 擷取端點的輸出 HTTPS 存取權
  • Google Cloud 控制台存取權 (用於建立 API 金鑰)

在 Google SecOps 中建立動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「動態饋給名稱」欄位中,輸入動態饋給名稱。例如:Guardicore Centra Logs。
  5. 選取「Webhook」做為「來源類型」。
  6. 選取「Guardicore Centra」做為「記錄類型」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符號:輸入 \n,即可分割多行事件 (ULS 會傳送以換行符號分隔的 JSON)。
    • 資產命名空間:資產命名空間。
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

建立動態饋給後,請按照下列步驟產生用於驗證的密鑰:

  1. 在動態饋給詳細資料頁面,按一下「產生 Secret Key」。
  2. 對話方塊會顯示密鑰。
  3. 複製並妥善儲存密鑰。

取得動態饋給端點網址

  1. 前往動態饋給的「詳細資料」分頁。
  2. 在「端點資訊」部分,複製「動態消息端點網址」。
  3. 網址格式如下:

    https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs
    

    或

    https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs
    
  4. 請儲存這個網址,以利進行後續步驟。

  5. 按一下「完成」。

建立 Google Cloud API 金鑰

Google SecOps 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限的 API 金鑰。

建立 API 金鑰

  1. 前往Google Cloud 控制台的「Credentials」(憑證) 頁面。
  2. 選取專案。這是與 Google SecOps 執行個體相關聯的專案。
  3. 依序點選「建立憑證」 > 「API 金鑰」。
  4. 系統會建立 API 金鑰,並在對話方塊中顯示。
  5. 按一下「編輯 API 金鑰」即可限制金鑰。

限制 API 金鑰

  1. 在「API 金鑰」設定頁面中:
    • 名稱:輸入描述性名稱 (例如 Google SecOps Guardicore Webhook API Key)。
  2. 在「API 限制」下方:
    1. 選取「Restrict key」(限制金鑰)。
    2. 在「選取 API」下拉式選單中,搜尋並選取「Chronicle API」。
  3. 按一下 [儲存]。
  4. 從頁面頂端的「API 金鑰」欄位複製 API 金鑰值。
  5. 安全儲存 API 金鑰。

設定 Guardicore Centra 憑證

在 Guardicore Centra 中建立唯讀 API 使用者

ULS 會透過入口網站使用者向 Centra API 驗證身分。請建立具備唯讀權限的專屬使用者,而非使用管理員帳戶,方法如下:

  1. 登入 Guardicore Centra 管理控制台。
  2. 依序前往 「Administration」 > 「Users」。
  3. 按一下「Create User」。
  4. 提供下列設定詳細資料:
    • 使用者名稱:輸入整合使用者的名稱 (例如 secops-uls)。
    • 密碼:輸入密碼。
    • 權限配置:選取「支援」 (唯讀存取權)。
  5. 按一下 [儲存]。
  6. 登出,然後以新使用者身分登入,並完成強制變更密碼的程序。
  7. 記下 Centra 管理控制台的主機名稱 (不含 https://)。ULS 會將這個名稱做為 API 主機名稱。

建立 Guardicore 驗證所需的 .edgerc 檔案

Akamai ULS 會從 .edgerc 檔案、gc_hostname、gc_username 和 gc_password 金鑰讀取 Guardicore 憑證。

  1. 在 ULS 伺服器上,於主目錄中建立 .edgerc 檔案,如下所示:

    nano ~/.edgerc
    
  2. 新增下列設定:

    [default]
    gc_hostname = your-instance.cloud.guardicore.com
    gc_username = your_username
    gc_password = your_password
    

    替換下列值:

    • your-instance.cloud.guardicore.com:Guardicore Centra 管理主機名稱 (不含 https://)
    • your_username:上一節建立的唯讀 API 使用者名稱
    • your_password - 該使用者的密碼

    範例:

    [default]
    gc_hostname = cus-1234.cloud.guardicore.com
    gc_username = secops-uls
    gc_password = MySecurePassword123
    
  3. 儲存並關閉檔案。

  4. 請按照下列步驟設定適當權限:

    chmod 600 ~/.edgerc
    

安裝 Akamai ULS

從 GitHub 安裝 ULS

  1. 在 ULS 伺服器上,複製 ULS 存放區,如下所示:

    git clone https://github.com/akamai/uls.git
    cd uls
    
  2. 安裝 Python 依附元件:

    pip3 install -r requirements.txt
    
  3. 將 Guardicore 記錄擷取器模組 (gc-logs) 安裝到 ULS 簽出的 ext 目錄:

    git clone -q --depth 1 -b v0.0.8 --single-branch https://github.com/MikeSchiessl/gc-logs.git ext/cli-gc
    pip3 install -r ext/cli-gc/bin/requirements.txt
    
  4. 驗證安裝項目:

    python3 bin/uls.py --help
    

設定 ULS,將記錄傳送至 Google SecOps

建構 Google SecOps Webhook 網址

  • 按照下列方式,合併 Google SecOps 端點網址和 API 金鑰:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • 範例:

    https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=AIzaSyD...
    

針對 Guardicore NETLOG 動態饋給執行 ULS

NETLOG 動態饋給包含 Guardicore 代理的網路流量記錄。

  1. 使用下列指令執行 ULS:

    python3 bin/uls.py \
        --input gc \
        --feed NETLOG \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s'
    
    • 替換下列值:
      • YOUR_API_KEY:先前建立的 Google Cloud API 金鑰
      • YOUR_SECRET_KEY - 先前產生的 Google SecOps 密鑰
  2. ULS 開始將NETLOG事件串流至 Google SecOps。

執行 Guardicore INCIDENT 動態饋給的 ULS

INCIDENT 動態饋給包含 Guardicore 偵測到的安全性事件。

  1. 使用下列指令執行 ULS:

    python3 bin/uls.py \
        --input gc \
        --feed INCIDENT \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s'
    
    • 替換下列值:
      • YOUR_API_KEY - 先前建立的 Google Cloud API 金鑰
      • YOUR_SECRET_KEY - 先前產生的 Google SecOps 密鑰
  2. ULS 開始將INCIDENT事件串流至 Google SecOps。

執行 Guardicore AGENT 動態饋給的 ULS

AGENT 動態饋給包含代理程式狀態和健康資訊。

  1. 使用下列指令執行 ULS:

    python3 bin/uls.py \
        --input gc \
        --feed AGENT \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s'
    
    • 替換下列值:
      • YOUR_API_KEY - 先前建立的 Google Cloud API 金鑰
      • YOUR_SECRET_KEY - 先前產生的 Google SecOps 密鑰
  2. ULS 會開始將 AGENT 事件串流至 Google SecOps。

執行 Guardicore SYSTEM 動態饋給的 ULS

SYSTEM動態消息會顯示系統快訊和事件。

  1. 使用下列指令執行 ULS:

    python3 bin/uls.py \
        --input gc \
        --feed SYSTEM \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s'
    
    • 替換下列值:
      • YOUR_API_KEY:先前建立的 Google Cloud API 金鑰
      • YOUR_SECRET_KEY - 先前產生的 Google SecOps 密鑰
  2. ULS 會開始將 SYSTEM 事件串流至 Google SecOps。

執行 Guardicore AUDIT 動態饋給的 ULS

稽核動態饋給包含管理動作的稽核記錄。

  1. 使用下列指令執行 ULS:

    python3 bin/uls.py \
        --input gc \
        --feed AUDIT \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s'
    
    • 替換下列值:
      • YOUR_API_KEY - 先前建立的 Google Cloud API 金鑰
      • YOUR_SECRET_KEY - 先前產生的 Google SecOps 密鑰
  2. ULS 會開始將 AUDIT 事件串流至 Google SecOps。

以背景服務形式執行 ULS

為確保 ULS 持續執行,請將其設為 systemd 服務。

為 NETLOG 饋給建立 systemd 服務檔案

  1. 建立服務檔案:

    sudo nano /etc/systemd/system/uls-guardicore-netlog.service
    
  2. 新增下列內容:

    [Unit]
    Description=Akamai ULS - Guardicore NETLOG
    After=network.target
    
    [Service]
    Type=simple
    User=root
    WorkingDirectory=/root/uls
    ExecStart=/usr/bin/python3 /root/uls/bin/uls.py --input gc --feed NETLOG --output http --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' --httpformat '%%s'
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
    • 替換下列值:
      • /root/uls:複製 ULS 存放區的路徑
      • YOUR_API_KEY - API 金鑰 Google Cloud
      • YOUR_SECRET_KEY - Google SecOps 密鑰
  3. 儲存並關閉檔案。

  4. 啟用並啟動服務:

    sudo systemctl daemon-reload
    sudo systemctl enable uls-guardicore-netlog.service
    sudo systemctl start uls-guardicore-netlog.service
    
  5. 確認服務狀態:

    sudo systemctl status uls-guardicore-netlog.service
    

為其他動態饋給建立額外服務

針對要收集的每個動態饋給重複上述步驟 (INCIDENT, AGENT, SYSTEM, AUDIT),並建立個別的服務檔案,如下所示:

  • /etc/systemd/system/uls-guardicore-incident.service
  • /etc/systemd/system/uls-guardicore-agent.service
  • /etc/systemd/system/uls-guardicore-system.service
  • /etc/systemd/system/uls-guardicore-audit.service

在每個檔案中,相應變更 --feed 參數和服務名稱。

驗證記錄擷取

  1. 等待 5 到 10 分鐘,讓系統擷取及處理記錄。
  2. 前往 Google SecOps 控制台的「Search」頁面。
  3. 執行下列 UDM 搜尋查詢:

    metadata.vendor_name = "Guardicore"
    
  4. 如果記錄檔擷取成功,搜尋結果中應會顯示 Guardicore 事件。

  5. 你也可以搜尋特定動態消息類型:

    metadata.vendor_name = "Guardicore" AND metadata.product_name = "Centra"
    

疑難排解

ULS 連線錯誤

如果 ULS 無法連線至 Guardicore,請按照下列步驟操作:

  1. 確認 .edgerc 檔案包含正確的主機名稱和憑證。
  2. 請按照下列步驟,測試與 Guardicore 執行個體的連線能力:

    curl -u "username:password" https://your-instance.cloud.guardicore.com/api/v3.0/visibility
    
  3. 確認 ULS 伺服器可存取 Guardicore 執行個體。

ULS HTTP 輸出錯誤

如果 ULS 無法將記錄傳送至 Google SecOps,請按照下列步驟操作:

  1. 確認 API 金鑰和密鑰正確無誤。
  2. 確認 Google SecOps 端點網址適用於您所在的區域。
  3. 驗證 ULS 伺服器的傳出 HTTPS 連線:

    curl -I https://malachiteingestion-pa.googleapis.com
    
  4. 查看 ULS 記錄檔中的錯誤訊息:

    sudo journalctl -u uls-guardicore-netlog.service -f
    

平台未顯示記錄

如果 Google SecOps 未顯示記錄,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態饋給」,確認 Webhook 動態饋給處於「有效」狀態。
  2. 檢查動態饋給的「健康狀態」分頁,查看擷取錯誤。
  3. 確認動態饋給設定中的分割分隔符號設為 \n。
  4. 確認記錄類型已設為「Guardicore Centra」。

自行簽署的憑證錯誤

如果 Guardicore 執行個體使用自行簽署的憑證,ULS 可能會因 SSL 驗證錯誤而失敗。如要略過 SSL 驗證 (不建議用於實際工作環境),請按照下列步驟操作:

  • 在 ULS 指令中新增 --httpinsecure 旗標:

    python3 bin/uls.py \
        --input gc \
        --feed NETLOG \
        --output http \
        --httpurl "https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=YOUR_API_KEY" \
        --httpauthheader '{"X-Webhook-Access-Key": "YOUR_SECRET_KEY"}' \
        --httpformat '%s' \
        --httpinsecure
    

可用的 Guardicore 資訊提供

Akamai ULS 支援下列 Guardicore 資訊提供:

動態饋給名稱 說明 ULS 動態饋給參數
NETLOG Guardicore 代理程式的網路流量記錄 NETLOG
INCIDENT Guardicore 偵測到的安全事件 INCIDENT
AGENT 代理程式狀態和健康資訊 AGENT
SYSTEM 系統警示** 系統層級警示和事件
AUDIT Logs 管理動作和設定變更 AUDIT

驗證方式參考資料

Google SecOps Webhook 動態饋給支援多種驗證方式。Akamai ULS 採用混合式方法,網址中包含 API 金鑰,標頭中則包含密鑰。

ULS 使用的方法:混合 (網址 + 標頭)

  • 要求格式:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    X-Webhook-Access-Key: <SECRET_KEY>
    
    {"event": "data", "timestamp": "2025-01-15T10:30:00Z"}
    
  • ULS 指令格式:

    --httpurl "<ENDPOINT_URL>?key=<API_KEY>"
    --httpauthheader '{"X-Webhook-Access-Key": "<SECRET_KEY>"}'
    

驗證標頭名稱

Google SecOps 接受下列驗證標頭名稱:

API 金鑰:

  • X-goog-api-key (建議)
  • X-goog-api-key (不區分大小寫)

密鑰:

  • X-Webhook-Access-Key (建議)
  • X-Webhook-Access-Key (不區分大小寫)

Webhook 限制和最佳做法

要求限制

限制 值
單一記錄行長度上限 1 MB
每秒查詢次數 (QPS) 上限 15,000
要求逾時 90 秒
重試行為 由寄件者管理。如果超過爆量限制,Google SecOps 會傳回 HTTP 429,傳送系統必須緩衝處理並重試。

最佳做法

  • 為每種動態饋給類型執行獨立的 ULS 執行個體,提高可靠性並方便排解問題。
  • 使用 systemd 監控 ULS 服務狀態,並設定服務失敗快訊。
  • 定期輪替 Guardicore 憑證,並更新 .edgerc 檔案。
  • 在 Guardicore 中使用專用服務帳戶,並具備 API 唯讀存取權。
  • 設定 ULS 記錄檔的記錄輪替,避免磁碟空間問題。
  • 在多部伺服器上執行 ULS 並進行負載平衡,測試容錯移轉情境。

UDM 對應表

下表列出 Guardicore Centra 記錄的記錄欄位,以及對應的 UDM 欄位。

記錄欄位 UDM 欄位 說明
timestamp metadata.event_timestamp 事件時間戳記
source_ip principal.ip 來源 IP 位址
destination_ip target.ip 目的地 IP 位址
source_port principal.port 來源通訊埠號碼
destination_port target.port 目的地通訊埠編號
protocol network.ip_protocol 網路通訊協定
action security_result.action 採取的安全性措施
severity security_result.severity 事件嚴重程度
user principal.user.userid 使用者名稱
hostname principal.hostname 來源主機名稱
process_name principal.process.file.full_path 程序名稱
incident_id security_result.detection_fields.key 事件 ID
description security_result.description 活動說明

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。