收集 Cisco DNA Center Platform 記錄
本文說明如何使用兩種不同方法,將 Cisco DNA Center Platform 記錄檔擷取至 Google Security Operations。請選擇最符合環境和需求的選項。剖析器會將 Cisco DNA Center SYSLOG+JSON 記錄轉換為統合資料模型 (UDM)。這項服務會從原始記錄訊息和 JSON 酬載中擷取欄位,將這些欄位對應至相應的 UDM 屬性,並根據事件特徵 (例如嚴重程度和相關實體) 加上標籤和安全環境,進一步豐富資料。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Cisco DNA Center Platform 管理主控台的特殊存取權
- 選擇偏好的整合方式:
- 選項 2:Cisco DNA Center 與 Google SecOps Webhook 端點之間的網路連線
- 選項 1:Windows 2016 以上版本,或具有
systemd
的 Linux 主機,用於安裝 Bindplane 代理程式
選項 1:使用 Bindplane 代理程式整合 Syslog
這個選項會使用 Cisco DNA Center 的系統記錄轉送功能將系統記錄轉送至 Bindplane,然後 Bindplane 會將結構化記錄轉送至 Google SecOps。
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。
Windows 安裝
- 以管理員身分開啟「命令提示字元」或「PowerShell」。
執行下列指令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安裝
- 開啟具有根層級或 sudo 權限的終端機。
執行下列指令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安裝資源
- 如需其他安裝選項,請參閱這份安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
存取設定檔:
- 找出
config.yaml
檔案。通常位於 Linux 的/etc/bindplane-agent/
目錄,或 Windows 的安裝目錄。 - 使用文字編輯器 (例如
nano
、vi
或記事本) 開啟檔案。
- 找出
按照下列方式編輯
config.yaml
檔案:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: YOUR_CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_DNAC' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
重新啟動 Bindplane 代理程式,以套用變更
如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:
sudo systemctl restart bindplane-agent
如要在 Windows 中重新啟動 Bindplane 代理程式,可以使用「服務」控制台,或輸入下列指令:
net stop BindPlaneAgent && net start BindPlaneAgent
在 Cisco DNA Center Platform 上設定 Syslog 轉送
- 登入 Cisco DNA Center Platform。
- 依序前往「System」(系統) >「Settings」(設定) >「External Services」(外部服務) >「Destinations」(目的地) >「Syslog」(系統記錄)。
- 按一下「+ 新增」,建立新的系統記錄目的地。
- 提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
Google SecOps BindPlane
)。 - 主機:輸入 BindPlane 代理程式 IP 位址。
- 通訊埠:輸入
514
(或在 BindPlane 中設定的通訊埠)。 - 通訊協定:根據 BindPlane 設定選取「UDP」或「TCP」。
- 設施:選取適當的設施 (例如「Local0」)。
- 嚴重性:選取「資訊」,擷取所有事件層級。
- 名稱:輸入描述性名稱 (例如
- 按一下 [儲存]。
選項 2:即時 Webhook 整合
這個選項會使用 Cisco DNA Center 的原生 Webhook 功能,將結構化 JSON 事件直接即時傳送至 Google SecOps。
總覽
Cisco DNA Center 原生支援 Webhook 通知,可即時傳送事件。這個選項會提供含有豐富事件背景資訊的結構化 JSON 酬載,並將事件直接傳送至 Google SecOps,不需要 Bindplane 做為中介服務。
設定 Google SecOps Webhook 動態消息
- 在 Google SecOps 中,依序前往「SIEM 設定」>「動態消息」。
- 按一下「+ 新增動態消息」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Cisco DNA Center Webhook
)。 - 選取「Webhook」做為「來源類型」。
- 選取「Cisco DNA Center Platform」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符:選用
\n
。 - 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
- 分割分隔符:選用
- 點選「下一步」。
- 檢查動態饋給設定,然後按一下「提交」。
- 按一下「產生密鑰」,產生驗證這個動態饋給的密鑰。
- 複製並儲存密鑰,因為您無法再次查看這組密鑰。
- 前往「詳細資料」分頁。
- 從「端點資訊」欄位複製動態消息端點網址。
- 按一下 [完成]。
為 Webhook 資訊提供建立 API 金鑰
- 前往 Google Cloud 控制台的「憑證」頁面。
- 按一下「建立」憑證,然後選取「API 金鑰」。
- 將 API 金鑰存取權限制為 Google SecOps API。
在 Cisco DNA Center 中設定 Webhook 目的地
- 登入 Cisco DNA Center Platform。
- 依序前往「系統」>「設定」>「外部服務」>「目的地」>「Webhook」。
- 按一下「+ 新增」,建立新的 Webhook 目的地。
- 提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
Google SecOps Webhook
)。 - 說明:輸入 Webhook 的說明。
- 網址:輸入上一個步驟中的 Google SecOps Webhook 端點網址。
- 方法:選取「POST」。
- 信任憑證:如果使用自行簽署的憑證,請選取「否」。
- 標頭:新增必要標頭:
- Content-Type:
application/json
- X-goog-api-key:您的 Google Cloud API 金鑰
- X-Webhook-Access-Key:Google SecOps 動態消息密鑰
- Content-Type:
- 名稱:輸入描述性名稱 (例如
- 按一下「測試連線」,驗證連線。
- 按一下 [儲存]。
訂閱 Webhook 通知的事件
- 在 Cisco DNA Center 中,依序前往「Platform」>「Developer Toolkit」>「Event Notifications」。
- 按一下「+ 訂閱」。
- 提供下列設定詳細資料:
- 訂閱項目名稱:輸入描述性名稱 (例如
Google SecOps Events
)。 - 連接器類型:選取「REST 端點」。
- 目的地:選取在上一個步驟中建立的 Webhook 目的地。
- 訂閱項目名稱:輸入描述性名稱 (例如
- 選取要監控的事件類型:
- 網路事件:裝置無法連線、介面關閉、設定變更。
- 安全性事件:違反安全性政策、驗證失敗。
- 系統事件:平台事件、軟體更新、維護。
- 保證事件:效能降低、連線問題。
- 視需要設定事件篩選器:
- 嚴重性:選取最低嚴重性等級 (例如 P1、P2)。
- 網域:依特定網域 (例如「連線」、「效能」) 篩選。
- 按一下「訂閱」。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
category | security_result.severity_details | 直接從原始記錄中的 category 欄位對應。 |
ciscoDnaEventLink | target.url | 直接從原始記錄中的 ciscoDnaEventLink 欄位對應。 |
date_time | metadata.event_timestamp | 使用 grok 模式從原始記錄訊息中擷取,並轉換為時間戳記格式。 |
details.Assurance_Issue_Category | security_result.about.resource.attribute.labels[].value | 直接從原始記錄中的 details.Assurance_Issue_Category 欄位對應。這個標籤的鍵為「Assurance_Issue_Category」。 |
details.Assurance_Issue_Details | security_result.summary | 直接從原始記錄中的 details.Assurance_Issue_Details 欄位對應。 |
details.Assurance_Issue_Name | security_result.about.resource.attribute.labels[].value | 直接從原始記錄中的 details.Assurance_Issue_Name 欄位對應。這個標籤的鍵是「Assurance_Issue_Name」。 |
details.Assurance_Issue_Priority | security_result.about.resource.attribute.labels[].value | 直接從原始記錄中的 details.Assurance_Issue_Priority 欄位對應。這個標籤的鍵是「Assurance_Issue_Priority」。 |
details.Assurance_Issue_Status | security_result.about.resource.attribute.labels[].value | 直接從原始記錄中的 details.Assurance_Issue_Status 欄位對應。這個標籤的鍵為「Assurance_Issue_Status」。 |
details.Device | target.ip 或 target.hostname | 對應原始記錄檔中的 details.Device 欄位。如果值是 IP 位址,則會對應至 target.ip ,否則會對應至 target.hostname 。 |
dnacIp | target.ip | 如果原始記錄中的 dnacIp 欄位是 IP 位址,系統會直接對應。 |
網域 | additional.fields[].value.string_value | 直接從原始記錄中的 domain 欄位對應。這個欄位的鍵為「domain」。 |
eventId | metadata.product_event_type | 直接從原始記錄中的 eventId 欄位對應。 |
instanceId | target.resource.product_object_id | 直接從原始記錄中的 instanceId 欄位對應。 |
名稱 | target.resource.attribute.labels[].value | 直接從原始記錄中的 name 欄位對應。這個標籤的鍵是「name」。 |
命名空間 | target.namespace | 直接從原始記錄中的 namespace 欄位對應。 |
network.deviceId | target.asset.asset_id | 直接從原始記錄中的 network.deviceId 欄位對應,並加上「deviceId: 」前置字串。 |
附註 | additional.fields[].value.string_value | 直接從原始記錄中的 note 欄位對應。這個欄位的鍵是「note」。 |
metadata.event_type | 根據 has_principal 、has_target 和 userId 欄位是否存在及值而定。可能的值:NETWORK_CONNECTION、USER_UNCATEGORIZED、STATUS_UPDATE、GENERIC_EVENT。 |
|
is_alert | 如果嚴重程度為 0 或 1,則為 True,否則為 False。 | |
is_significant | 如果嚴重程度為 0 或 1,則為 True,否則為 False。 | |
嚴重性 | 用於判斷 security_result.severity 、is_alert 和 is_significant 的值。 |
|
來源 | target.resource.attribute.labels[].value | 直接從原始記錄中的 source 欄位對應。這個標籤的鍵是「source」。 |
src_ip | principal.ip | 使用 grok 模式從原始記錄訊息中擷取。 |
subDomain | additional.fields[].value.string_value | 直接從原始記錄中的 subDomain 欄位對應。這個欄位的索引鍵是「subDomain」。 |
tntId | target.resource.attribute.labels[].value | 直接從原始記錄中的 tntId 欄位對應。這個標籤的鍵是「tntId」。 |
類型 | target.resource.attribute.labels[].value | 直接從原始記錄中的 type 欄位對應。這個標籤的索引鍵是「type」。 |
userId | target.user.userid | 直接從原始記錄中的 userId 欄位對應。 |
版本 | metadata.product_version | 直接從原始記錄中的 version 欄位對應。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。