收集 Cisco Umbrella DNS 記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何使用 AWS S3 值區,將 Cisco Umbrella DNS 記錄收集到 Google Security Operations 資訊提供。剖析器會處理 JSON 和 CSV 格式的記錄。這項擴充功能會擷取欄位、重新命名欄位以符合 UDM 格式、處理不同版本的記錄檔和格式 (包括 Proxy 和 IP 記錄檔),並針對身分、安全性類別和網路事件執行特定邏輯,最終將擷取的資料合併至 UDM 結構定義。
事前準備
- 確認您擁有 Google SecOps 執行個體。
- 確認您有權存取 AWS IAM 和 S3。
- 確認您具備 Cisco Umbrella 的特殊權限。
設定 Cisco 管理的 Amazon S3 儲存空間
- 登入 Cisco Umbrella 資訊主頁。
- 依序前往「管理」>「記錄管理」。
- 選取「Use a Cisco-managed Amazon S3 bucket」(使用 Cisco 管理的 Amazon S3 bucket) 選項。
- 提供下列設定詳細資料:
- 選取區域:選取離您較近的區域,以降低延遲。
- 選取保留期限:選取時間範圍。保留時間為 7 天、14 天或 30 天。超過所選時間範圍後,系統就會刪除資料,且無法復原。如果擷取週期規律,請使用較短的時間範圍。您日後可以變更保留期限。
- 按一下 [儲存]。
- 按一下「繼續」,確認所選項目並接收啟用通知。
在隨即顯示的「Activation complete」(啟用完成) 視窗中,會顯示「Access key」(存取金鑰) 和「Secret key」(私密金鑰) 值。 - 複製「存取金鑰」和「私密金鑰」值。如果遺失這些金鑰,就必須重新產生。
- 依序點選「我知道了」>「繼續」。
- 摘要頁面會顯示設定和 bucket 名稱。您可以視貴機構的需求開啟或關閉記錄功能。不過,系統會根據保留期限清除記錄,不會因為新增資料而有所不同。
選用:為自行管理的 AWS S3 值區設定使用者存取金鑰
- 登入 AWS 管理主控台。
- 請按照這份使用者指南建立使用者:建立 IAM 使用者。
- 選取建立的「使用者」。
- 選取「安全憑證」分頁標籤。
- 在「Access Keys」部分中,按一下「Create Access Key」。
- 選取「第三方服務」做為「用途」。
- 點選「下一步」。
- 選用:新增說明標記。
- 按一下「建立存取金鑰」。
- 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
- 按一下 [完成]。
- 選取 [權限] 分頁標籤。
- 在「Permissions policies」(權限政策) 區段中,按一下「Add permissions」(新增權限)。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋並選取 AmazonS3FullAccess 政策。
- 點選「下一步」。
- 按一下「Add permissions」。
選用:設定自行管理的 Amazon S3 值區
登入 AWS 管理主控台。
前往 S3。
點選「建立值區」。
請提供下列設定詳細資料:
- 「Bucket name」(儲存桶名稱):提供 Amazon S3 儲存桶的名稱。
- 「Region」(區域):選取區域。
點選「建立」。
選用:為自行管理的 AWS S3 值區設定值區政策
- 按一下新建立的 bucket 開啟。
- 依序選取「內容」> 權限。
- 在「Permissions」(權限) 清單中,按一下「Add bucket policy」(新增 bucket 政策)。
輸入預先設定的值區政策,如下所示:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*" }, { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*"}, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::BUCKET_NAME" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BUCKET_NAME" } ] }
- 將
BUCKET_NAME
替換成您提供的 Amazon S3 bucket 名稱。
- 將
按一下 [儲存]。
選用:自行管理的 Amazon S3 儲存貯體必須通過驗證
- 在 Cisco Umbrella 資訊主頁中,依序選取「Admin」>「Log management」>「Amazon S3」。
- 在「Bucket name」欄位中,指定確切的 Amazon S3 值區名稱,然後按一下「Verify」。
- 在驗證過程中,系統會將名為
README_FROM_UMBRELLA.txt
的檔案從 Cisco Umbrella 上傳至 Amazon S3 值區。上傳讀我檔案後,可能需要重新整理瀏覽器才能看到。 - 下載
README_FROM_UMBRELLA.txt
檔案,然後使用文字編輯器開啟。 - 複製並儲存檔案中的專屬 Cisco Umbrella 權杖。
- 前往 Cisco Umbrella 資訊主頁。
- 在「權杖號碼」欄位中指定權杖,然後按一下「儲存」。
- 如果驗證成功,資訊主頁會顯示確認訊息,指出儲存空間已通過驗證。如果收到錯誤訊息,指出無法驗證儲存空間,請重新檢查儲存空間名稱的語法,並檢查設定。
在 Google SecOps 中設定資訊提供,擷取 Cisco Umbrella DNS 記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「Cisco Umbrella DNS Logs」。
- 選取「Amazon S3 V2」做為「來源類型」。
- 選取「Cisco Umbrella DNS」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- S3 URI:值區 URI。
s3:/BUCKET_NAME/
- 請將
BUCKET_NAME
替換為實際值區名稱。
- 請將
- 來源刪除選項:根據偏好設定選取刪除選項。
- S3 URI:值區 URI。
點選「下一步」。
在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
action |
security_result.action_details |
如果 JSON 記錄中存在 action 欄位,系統會從該欄位擷取值;如果 CSV 記錄中存在 column6 或 column7 欄位,系統會從這些欄位擷取值,並轉換為大寫 (ALLOW 或 BLOCK)。 |
amp.disposition |
security_result.detection_fields[].key |
值為 ampDisposition 。 |
amp.disposition |
security_result.detection_fields[].value |
這個值取自 amp.disposition 欄位。 |
amp.malware |
security_result.detection_fields[].key |
值為 ampMalware 。 |
amp.malware |
security_result.detection_fields[].value |
這個值取自 amp.malware 欄位。 |
amp.score |
security_result.detection_fields[].key |
值為 ampScore 。 |
amp.score |
security_result.detection_fields[].value |
這個值取自 amp.score 欄位。 |
blocked_categories |
security_result.category_details |
這個值取自 blocked_categories 欄位。 |
blockedfiletype |
security_result.detection_fields[].key |
值為 egress type 。 |
blockedfiletype |
security_result.detection_fields[].value |
這個值取自 blockedfiletype 欄位。 |
bundleid |
additional.fields[].key |
值為 bundleid 。 |
bundleid |
additional.fields[].value.string_value |
這個值取自 bundleid 欄位。 |
categories[] |
security_result.category_details |
這個值取自 categories[].label 欄位。 |
column1 |
metadata.event_timestamp.seconds |
系統會從 column1 欄位剖析值,並將其視為時間戳記。如果是 Proxy 記錄,如果存在 date 和 time 欄位,系統會合併並剖析為時間戳記。 |
column10 |
network.http.user_agent |
這個值取自 column10 欄位。 |
column10 |
additional.fields[].value.string_value |
這個值取自 column10 欄位。 |
column11 |
target.port |
這個值取自 column11 欄位。 |
column12 |
principal.resource.name |
這個值取自 column12 欄位。 |
column13 |
security_result.rule_id |
這個值取自 column13 欄位。 |
column14 |
security_result.action_details |
這個值取自 column14 欄位。 |
column2 |
principal.user.user_display_name |
這個值取自 column2 欄位。 |
column2 |
principal.user.userid |
這個值取自 column2 欄位。 |
column2 |
principal.location.name |
這個值取自 column2 欄位。 |
column3 |
principal.hostname |
這個值取自 column3 欄位。 |
column3 |
principal.user.product_object_id |
這個值取自 column3 欄位。 |
column3 |
principal.location.city |
這個值取自 column3 欄位。 |
column3 |
additional.fields[].value.string_value |
這個值取自 column3 欄位。 |
column4 |
principal.asset.ip |
這個值取自 column4 欄位。 |
column4 |
principal.ip |
這個值取自 column4 欄位。 |
column4 |
principal.port |
這個值取自 column4 欄位。 |
column5 |
principal.asset.ip |
這個值取自 column5 欄位。 |
column5 |
principal.ip |
這個值取自 column5 欄位。 |
column5 |
target.asset.ip |
這個值取自 column5 欄位。 |
column5 |
target.ip |
這個值取自 column5 欄位。 |
column6 |
security_result.action_details |
這個值取自 column6 欄位。 |
column6 |
target.port |
這個值取自 column6 欄位。 |
column7 |
network.received_bytes |
這個值取自 column7 欄位。 |
column7 |
additional.fields[].value.string_value |
這個值取自 column7 欄位。 |
column8 |
principal.asset.ip |
這個值取自 column8 欄位。 |
column8 |
principal.ip |
這個值取自 column8 欄位。 |
column8 |
target.url |
這個值取自 column8 欄位。 |
column9 |
principal.port |
這個值取自 column9 欄位。 |
column9 |
network.http.referral_url |
這個值取自 column9 欄位。 |
data_center_name |
principal.resource.name |
這個值取自 data_center_name 欄位。 |
datacenter.label |
security_result.detection_fields[].key |
值為 datacenter label 。 |
datacenter.label |
security_result.detection_fields[].value |
這個值取自 datacenter.label 欄位。 |
destinationip |
target.asset.ip |
這個值取自 destinationip 欄位。 |
destinationip |
target.ip |
這個值取自 destinationip 欄位。 |
direction |
network.direction |
這個值取自 direction 欄位,並會轉換為大寫。 |
domain |
network.dns.questions[].name |
值取自 domain 欄位,並移除結尾的點 (如有)。 |
dstPort |
target.port |
這個值取自 dstPort 欄位。 |
dstip |
target.asset.ip |
這個值取自 dstip 欄位。 |
dstip |
target.ip |
這個值取自 dstip 欄位。 |
egress.ip |
security_result.detection_fields[].key |
值為 egress ip 。 |
egress.ip |
security_result.detection_fields[].value |
這個值取自 egress.ip 欄位。 |
egress.type |
security_result.detection_fields[].key |
值為 egress type 。 |
egress.type |
security_result.detection_fields[].value |
這個值取自 egress.type 欄位。 |
externalip |
principal.asset.ip |
這個值取自 externalip 欄位。 |
externalip |
principal.ip |
這個值取自 externalip 欄位。 |
forwardingmethod |
additional.fields[].key |
值為 forwardingmethod 。 |
forwardingmethod |
additional.fields[].value.string_value |
這個值取自 forwardingmethod 欄位。 |
granular_identity |
principal.user.user_display_name |
如果同時存在 granular_identity 和 most_granular_identity ,則值取自 granular_identity 欄位。否則,系統會從 _policy_identity 欄位衍生,並根據 identityType 進一步剖析。 |
granular_identity |
principal.user.email_addresses |
系統會使用規則運算式,從 granular_identity 欄位擷取值。 |
granular_identity |
principal.user.first_name |
系統會使用規則運算式,從 granular_identity 欄位擷取值。 |
granular_identity |
principal.user.last_name |
系統會使用規則運算式,從 granular_identity 欄位擷取值。 |
granular_identity |
principal.user.userid |
系統會使用規則運算式,從 granular_identity 欄位擷取值。 |
granular_identity |
principal.hostname |
這個值取自 granular_identity 欄位。 |
granular_identity |
principal.location.name |
這個值取自 granular_identity 欄位。 |
identity_types |
additional.fields[].value.string_value |
這個值取自 identity_types 欄位。 |
identities[] |
principal.user.product_object_id |
這個值取自 identities[] 欄位。 |
identities |
principal.user.product_object_id |
這個值取自 identities 欄位。 |
internalip |
principal.asset.ip |
這個值取自 internalip 欄位。 |
internalip |
principal.ip |
這個值取自 internalip 欄位。 |
isolated.fileaction |
security_result.detection_fields[].key |
值為 isolated fileaction 。 |
isolated.fileaction |
security_result.detection_fields[].value |
這個值取自 isolated.fileaction 欄位。 |
isolated.state |
security_result.detection_fields[].key |
值為 isolated state 。 |
isolated.state |
security_result.detection_fields[].value |
這個值取自 isolated.state 欄位。 |
most_granular_identity |
principal.user.identityType |
如果同時存在 granular_identity 和 most_granular_identity ,則值取自 most_granular_identity 欄位。否則會從 _policy_identity_type 欄位擷取。 |
nat_destination_ip |
principal.asset.ip |
這個值取自 nat_destination_ip 欄位。 |
nat_destination_ip |
principal.ip |
這個值取自 nat_destination_ip 欄位。 |
odns_categories |
security_result.category_details |
這個值取自 odns_categories 欄位。 |
policy.ruleid |
security_result.rule_id |
這個值取自 policy.ruleid 欄位。 |
policy.rulesetid |
security_result.detection_fields[].key |
值為 rulesetid 。 |
policy.rulesetid |
security_result.detection_fields[].value |
這個值取自 policy.rulesetid 欄位。 |
policy.timebasedrule |
security_result.detection_fields[].key |
值為 timebasedrule 。 |
policy.timebasedrule |
security_result.detection_fields[].value |
這個值取自 policy.timebasedrule 欄位。 |
port |
target.port |
這個值取自 port 欄位。 |
query_type_name |
network.dns.questions[].type |
系統會使用規則運算式從 query_type_name 欄位擷取數字部分,並轉換為整數。 |
query_type_name |
additional.fields[].value.string_value |
系統會使用規則運算式,從 query_type_name 欄位中擷取括號內的字串部分。 |
querytype |
network.dns.questions[].type |
這個值取自 querytype 欄位,並根據 DNS 記錄類型對應至數值。 |
referer |
network.http.referral_url |
這個值取自 referer 欄位。 |
requestmethod |
network.http.method |
這個值取自 requestmethod 欄位。 |
requestsize |
network.sent_bytes |
這個值取自 requestsize 欄位,並轉換為無正負號整數。 |
response |
additional.fields[].value.string_value |
這個值取自 response 欄位。 |
responsecode |
network.http.response_code |
這個值取自 responsecode 欄位。 |
responsefilename |
target.file.names |
這個值取自 responsefilename 欄位。 |
responsesize |
network.received_bytes |
這個值取自 responsesize 欄位,並轉換為無正負號整數。 |
returncode |
network.dns.response_code |
這個值取自 returncode 欄位,並轉換為無正負號整數。 |
securityoverridden |
additional.fields[].key |
值為 securityoverridden 。 |
securityoverridden |
additional.fields[].value.string_value |
這個值取自 securityoverridden 欄位。 |
sha256 |
target.file.sha256 |
這個值取自 sha256 欄位。 |
source_ip |
principal.asset.ip |
如果 JSON 記錄中存在 source_ip 欄位,系統會從該欄位擷取值;如果是 CSV 記錄,則會從 column3 擷取值。 |
source_ip |
principal.ip |
如果 JSON 記錄中存在 source_ip 欄位,系統會從該欄位擷取值;如果是 CSV 記錄,則會從 column3 擷取值。 |
srcPort |
principal.port |
這個值取自 srcPort 欄位。 |
statuscode |
network.http.response_code |
這個值取自 statuscode 欄位。 |
tenantcontrols |
additional.fields[].key |
值為 tenantcontrols 。 |
tenantcontrols |
additional.fields[].value.string_value |
這個值取自 tenantcontrols 欄位。 |
timestamp |
metadata.event_timestamp.seconds |
系統會從 timestamp 欄位剖析值,並將其視為時間戳記。 |
tunnel_name |
additional.fields[].key |
值為 tunnel_name 。 |
tunnel_name |
additional.fields[].value.string_value |
這個值取自 tunnel_name 欄位。 |
tunnel_type |
metadata.product_event_type |
這個值取自 tunnel_type 欄位。 |
type |
additional.fields[].key |
值為 type 。 |
type |
additional.fields[].value.string_value |
這個值取自 type 欄位。 |
url |
target.url |
這個值取自 url 欄位。 |
useragent |
network.http.user_agent |
這個值取自 useragent 欄位。 |
verdict |
security_result.action_details |
這個值取自 verdict 欄位。 |
warnstatus |
security_result.detection_fields[].key |
值為 warnstatus 。 |
warnstatus |
security_result.detection_fields[].value |
這個值取自 warnstatus 欄位。值為 DNS Lookup Type 。系統會使用規則運算式,從 query_type_name 欄位中擷取括號內的字串部分,如果該欄位不存在,則為空字串。值為 DNS request and response were made. ,取決於特定欄位是否存在:如果存在 question.name ,則為 NETWORK_DNS;如果存在 principal.ip 和 target.ip ,則為 NETWORK_CONNECTION;如果只存在 principal.ip ,則為 STATUS_UPDATE;否則為 GENERIC_EVENT。值為 UMBRELLA_DNS 。值為 Umbrella DNS 。值為 Cisco 。值最初設為 DNS 。如果 requestmethod 是有效的 HTTP 方法,系統會將其變更為 HTTP 。系統會使用規則運算式從 query_type_name 欄位擷取數值部分,並轉換為整數,或是從 querytype 欄位衍生,然後根據 DNS 記錄類型對應至數值。該值是使用 parseduseragent 篩選器,從 useragent 或 column10 欄位衍生而來。這個值是從以半形逗號分隔的 column3 欄位最後一部分取得,如果該欄位不存在,則為空字串。系統會從以半形逗號分隔的 column3 欄位第一部分取得值,如果沒有 column3 ,則從 column2 欄位取得值。系統會使用規則運算式,從 column2 或 column3 欄位擷取值。系統會使用規則運算式,從 column2 或 column3 欄位擷取值。系統會使用規則運算式,從 column2 或 column3 欄位擷取值。系統會使用規則運算式,從 column2 或 column3 欄位擷取值。這個值衍生自 action 、column6 、column7 或 verdict 欄位,並轉換為大寫 (ALLOW 或 BLOCK)。如果 _categories 包含 Malware ,值會設為 NETWORK_MALICIOUS ;如果 _categories 包含 Potentially Harmful ,值會設為 NETWORK_SUSPICIOUS 。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。