收集 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 中建立動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態饋給」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給名稱。例如:
Guardicore Centra Logs。 - 選取「Webhook」做為「來源類型」。
- 選取「Guardicore Centra」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號:輸入
\n,即可分割多行事件 (ULS 會傳送以換行符號分隔的 JSON)。 - 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
- 分割分隔符號:輸入
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,請按照下列步驟產生用於驗證的密鑰:
- 在動態饋給詳細資料頁面,按一下「產生 Secret Key」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
取得動態饋給端點網址
- 前往動態饋給的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
網址格式如下:
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請儲存這個網址,以利進行後續步驟。
按一下「完成」。
建立 Google Cloud API 金鑰
Google SecOps 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限的 API 金鑰。
建立 API 金鑰
- 前往Google Cloud 控制台的「Credentials」(憑證) 頁面。
- 選取專案。這是與 Google SecOps 執行個體相關聯的專案。
- 依序點選「建立憑證」 > 「API 金鑰」。
- 系統會建立 API 金鑰,並在對話方塊中顯示。
- 按一下「編輯 API 金鑰」即可限制金鑰。
限制 API 金鑰
- 在「API 金鑰」設定頁面中:
- 名稱:輸入描述性名稱 (例如
Google SecOps Guardicore Webhook API Key)。
- 名稱:輸入描述性名稱 (例如
- 在「API 限制」下方:
- 選取「Restrict key」(限制金鑰)。
- 在「選取 API」下拉式選單中,搜尋並選取「Chronicle API」。
- 按一下 [儲存]。
- 從頁面頂端的「API 金鑰」欄位複製 API 金鑰值。
- 安全儲存 API 金鑰。
設定 Guardicore Centra 憑證
在 Guardicore Centra 中建立唯讀 API 使用者
ULS 會透過入口網站使用者向 Centra API 驗證身分。請建立具備唯讀權限的專屬使用者,而非使用管理員帳戶,方法如下:
- 登入 Guardicore Centra 管理控制台。
- 依序前往 「Administration」 > 「Users」。
- 按一下「Create User」。
- 提供下列設定詳細資料:
- 使用者名稱:輸入整合使用者的名稱 (例如
secops-uls)。 - 密碼:輸入密碼。
- 權限配置:選取「支援」 (唯讀存取權)。
- 使用者名稱:輸入整合使用者的名稱 (例如
- 按一下 [儲存]。
- 登出,然後以新使用者身分登入,並完成強制變更密碼的程序。
- 記下 Centra 管理控制台的主機名稱 (不含
https://)。ULS 會將這個名稱做為 API 主機名稱。
建立 Guardicore 驗證所需的 .edgerc 檔案
Akamai ULS 會從 .edgerc 檔案、gc_hostname、gc_username 和 gc_password 金鑰讀取 Guardicore 憑證。
在 ULS 伺服器上,於主目錄中建立
.edgerc檔案,如下所示:nano ~/.edgerc新增下列設定:
[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儲存並關閉檔案。
請按照下列步驟設定適當權限:
chmod 600 ~/.edgerc
安裝 Akamai ULS
從 GitHub 安裝 ULS
在 ULS 伺服器上,複製 ULS 存放區,如下所示:
git clone https://github.com/akamai/uls.git cd uls安裝 Python 依附元件:
pip3 install -r requirements.txt將 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驗證安裝項目:
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 代理的網路流量記錄。
使用下列指令執行 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 密鑰
- 替換下列值:
ULS 開始將
NETLOG事件串流至 Google SecOps。
執行 Guardicore INCIDENT 動態饋給的 ULS
INCIDENT 動態饋給包含 Guardicore 偵測到的安全性事件。
使用下列指令執行 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 密鑰
- 替換下列值:
ULS 開始將
INCIDENT事件串流至 Google SecOps。
執行 Guardicore AGENT 動態饋給的 ULS
AGENT 動態饋給包含代理程式狀態和健康資訊。
使用下列指令執行 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 密鑰
- 替換下列值:
ULS 會開始將
AGENT事件串流至 Google SecOps。
執行 Guardicore SYSTEM 動態饋給的 ULS
SYSTEM動態消息會顯示系統快訊和事件。
使用下列指令執行 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 密鑰
- 替換下列值:
ULS 會開始將
SYSTEM事件串流至 Google SecOps。
執行 Guardicore AUDIT 動態饋給的 ULS
稽核動態饋給包含管理動作的稽核記錄。
使用下列指令執行 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 密鑰
- 替換下列值:
ULS 會開始將
AUDIT事件串流至 Google SecOps。
以背景服務形式執行 ULS
為確保 ULS 持續執行,請將其設為 systemd 服務。
為 NETLOG 饋給建立 systemd 服務檔案
建立服務檔案:
sudo nano /etc/systemd/system/uls-guardicore-netlog.service新增下列內容:
[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 CloudYOUR_SECRET_KEY- Google SecOps 密鑰
- 替換下列值:
儲存並關閉檔案。
啟用並啟動服務:
sudo systemctl daemon-reload sudo systemctl enable uls-guardicore-netlog.service sudo systemctl start uls-guardicore-netlog.service確認服務狀態:
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 參數和服務名稱。
驗證記錄擷取
- 等待 5 到 10 分鐘,讓系統擷取及處理記錄。
- 前往 Google SecOps 控制台的「Search」頁面。
執行下列 UDM 搜尋查詢:
metadata.vendor_name = "Guardicore"如果記錄檔擷取成功,搜尋結果中應會顯示 Guardicore 事件。
你也可以搜尋特定動態消息類型:
metadata.vendor_name = "Guardicore" AND metadata.product_name = "Centra"
疑難排解
ULS 連線錯誤
如果 ULS 無法連線至 Guardicore,請按照下列步驟操作:
- 確認
.edgerc檔案包含正確的主機名稱和憑證。 請按照下列步驟,測試與 Guardicore 執行個體的連線能力:
curl -u "username:password" https://your-instance.cloud.guardicore.com/api/v3.0/visibility確認 ULS 伺服器可存取 Guardicore 執行個體。
ULS HTTP 輸出錯誤
如果 ULS 無法將記錄傳送至 Google SecOps,請按照下列步驟操作:
- 確認 API 金鑰和密鑰正確無誤。
- 確認 Google SecOps 端點網址適用於您所在的區域。
驗證 ULS 伺服器的傳出 HTTPS 連線:
curl -I https://malachiteingestion-pa.googleapis.com查看 ULS 記錄檔中的錯誤訊息:
sudo journalctl -u uls-guardicore-netlog.service -f
平台未顯示記錄
如果 Google SecOps 未顯示記錄,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態饋給」,確認 Webhook 動態饋給處於「有效」狀態。
- 檢查動態饋給的「健康狀態」分頁,查看擷取錯誤。
- 確認動態饋給設定中的分割分隔符號設為
\n。 - 確認記錄類型已設為「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 專業人員尋求解答。