收集 Cisco Umbrella DNS 記錄

支援的國家/地區:

本文說明如何使用 AWS S3 值區,將 Cisco Umbrella DNS 記錄收集到 Google Security Operations 資訊提供。剖析器會處理 JSON 和 CSV 格式的記錄。這項擴充功能會擷取欄位、重新命名欄位以符合 UDM 格式、處理不同版本的記錄檔和格式 (包括 Proxy 和 IP 記錄檔),並針對身分、安全性類別和網路事件執行特定邏輯,最終將擷取的資料合併至 UDM 結構定義。

事前準備

  • 確認您擁有 Google SecOps 執行個體。
  • 確認您有權存取 AWS IAM 和 S3。
  • 確認您具備 Cisco Umbrella 的特殊權限。

設定 Cisco 管理的 Amazon S3 儲存空間

  1. 登入 Cisco Umbrella 資訊主頁。
  2. 依序前往「管理」>「記錄管理」
  3. 選取「Use a Cisco-managed Amazon S3 bucket」(使用 Cisco 管理的 Amazon S3 bucket) 選項。
  4. 提供下列設定詳細資料:
    • 選取區域:選取離您較近的區域,以降低延遲。
    • 選取保留期限:選取時間範圍。保留時間為 7 天、14 天或 30 天。超過所選時間範圍後,系統就會刪除資料,且無法復原。如果擷取週期規律,請使用較短的時間範圍。您日後可以變更保留期限。
  5. 按一下 [儲存]
  6. 按一下「繼續」,確認所選項目並接收啟用通知。
    在隨即顯示的「Activation complete」(啟用完成) 視窗中,會顯示「Access key」(存取金鑰) 和「Secret key」(私密金鑰) 值。
  7. 複製「存取金鑰」和「私密金鑰」值。如果遺失這些金鑰,就必須重新產生。
  8. 依序點選「我知道了」>「繼續」
  9. 摘要頁面會顯示設定和 bucket 名稱。您可以視貴機構的需求開啟或關閉記錄功能。不過,系統會根據保留期限清除記錄,不會因為新增資料而有所不同。

選用:為自行管理的 AWS S3 值區設定使用者存取金鑰

  1. 登入 AWS 管理主控台
  2. 請按照這份使用者指南建立使用者建立 IAM 使用者
  3. 選取建立的「使用者」
  4. 選取「安全憑證」分頁標籤。
  5. 在「Access Keys」部分中,按一下「Create Access Key」
  6. 選取「第三方服務」做為「用途」
  7. 點選「下一步」
  8. 選用:新增說明標記。
  9. 按一下「建立存取金鑰」
  10. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
  11. 按一下 [完成]
  12. 選取 [權限] 分頁標籤。
  13. 在「Permissions policies」(權限政策) 區段中,按一下「Add permissions」(新增權限)
  14. 選取「新增權限」
  15. 選取「直接附加政策」
  16. 搜尋並選取 AmazonS3FullAccess 政策。
  17. 點選「下一步」
  18. 按一下「Add permissions」。

選用:設定自行管理的 Amazon S3 值區

  1. 登入 AWS 管理主控台

  2. 前往 S3

  3. 點選「建立值區」

  4. 請提供下列設定詳細資料:

    • 「Bucket name」(儲存桶名稱):提供 Amazon S3 儲存桶的名稱。
    • 「Region」(區域):選取區域。
  5. 點選「建立」

選用:為自行管理的 AWS S3 值區設定值區政策

  1. 按一下新建立的 bucket 開啟。
  2. 依序選取「內容」> 權限
  3. 在「Permissions」(權限) 清單中,按一下「Add bucket policy」(新增 bucket 政策)
  4. 輸入預先設定的值區政策,如下所示:

    {
      "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 名稱。
  5. 按一下 [儲存]

選用:自行管理的 Amazon S3 儲存貯體必須通過驗證

  1. Cisco Umbrella 資訊主頁中,依序選取「Admin」>「Log management」>「Amazon S3」
  2. 在「Bucket name」欄位中,指定確切的 Amazon S3 值區名稱,然後按一下「Verify」
  3. 在驗證過程中,系統會將名為 README_FROM_UMBRELLA.txt 的檔案從 Cisco Umbrella 上傳至 Amazon S3 值區。上傳讀我檔案後,可能需要重新整理瀏覽器才能看到。
  4. 下載 README_FROM_UMBRELLA.txt 檔案,然後使用文字編輯器開啟。
  5. 複製並儲存檔案中的專屬 Cisco Umbrella 權杖。
  6. 前往 Cisco Umbrella 資訊主頁。
  7. 在「權杖號碼」欄位中指定權杖,然後按一下「儲存」
  8. 如果驗證成功,資訊主頁會顯示確認訊息,指出儲存空間已通過驗證。如果收到錯誤訊息,指出無法驗證儲存空間,請重新檢查儲存空間名稱的語法,並檢查設定。

在 Google SecOps 中設定資訊提供,擷取 Cisco Umbrella DNS 記錄

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增」
  3. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「Cisco Umbrella DNS Logs」
  4. 選取「Amazon S3 V2」做為「來源類型」
  5. 選取「Cisco Umbrella DNS」做為「記錄類型」
  6. 點選「下一步」
  7. 指定下列輸入參數的值:

    • S3 URI:值區 URI。
      • s3:/BUCKET_NAME/
        • 請將 BUCKET_NAME 替換為實際值區名稱。
    • 來源刪除選項:根據偏好設定選取刪除選項。
  8. 點選「下一步」

  9. 在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」

UDM 對應表

記錄欄位 UDM 對應 邏輯
action security_result.action_details 如果 JSON 記錄中存在 action 欄位,系統會從該欄位擷取值;如果 CSV 記錄中存在 column6column7 欄位,系統會從這些欄位擷取值,並轉換為大寫 (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 記錄,如果存在 datetime 欄位,系統會合併並剖析為時間戳記。
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_identitymost_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_identitymost_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.iptarget.ip,則為 NETWORK_CONNECTION;如果只存在 principal.ip,則為 STATUS_UPDATE;否則為 GENERIC_EVENT。值為 UMBRELLA_DNS。值為 Umbrella DNS。值為 Cisco。值最初設為 DNS。如果 requestmethod 是有效的 HTTP 方法,系統會將其變更為 HTTP。系統會使用規則運算式從 query_type_name 欄位擷取數值部分,並轉換為整數,或是從 querytype 欄位衍生,然後根據 DNS 記錄類型對應至數值。該值是使用 parseduseragent 篩選器,從 useragentcolumn10 欄位衍生而來。這個值是從以半形逗號分隔的 column3 欄位最後一部分取得,如果該欄位不存在,則為空字串。系統會從以半形逗號分隔的 column3 欄位第一部分取得值,如果沒有 column3,則從 column2 欄位取得值。系統會使用規則運算式,從 column2column3 欄位擷取值。系統會使用規則運算式,從 column2column3 欄位擷取值。系統會使用規則運算式,從 column2column3 欄位擷取值。系統會使用規則運算式,從 column2column3 欄位擷取值。這個值衍生自 actioncolumn6column7verdict 欄位,並轉換為大寫 (ALLOW 或 BLOCK)。如果 _categories 包含 Malware,值會設為 NETWORK_MALICIOUS;如果 _categories 包含 Potentially Harmful,值會設為 NETWORK_SUSPICIOUS

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