Cisco Umbrella DNS ログを収集する

以下でサポートされています。

このドキュメントでは、AWS S3 バケットを使用して Cisco Umbrella DNS ログを Google Security Operations フィードに収集する方法について説明します。パーサーは、JSON 形式と CSV 形式の両方のログを処理します。フィールドを抽出し、UDM に一致するように名前を変更し、さまざまなログ バージョンと形式(プロキシログや IP ログなど)を処理し、ID、セキュリティ カテゴリ、ネットワーク イベントに関する特定のロジックを実行して、最終的に抽出されたデータを UDM スキーマに統合します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • AWS IAM と S3 への特権アクセス権があることを確認します。
  • Cisco Umbrella に対する特権アクセス権があることを確認します。

Cisco 管理の Amazon S3 バケットを構成する

  1. Cisco Umbrella ダッシュボードにログインします。
  2. [管理者] > [ログ管理] に移動します。
  3. [Use a Cisco-managed Amazon S3 bucket] オプションを選択します。
  4. 次の構成の詳細を入力します。
    • リージョンを選択: レイテンシを低減するため、ロケーションに近いリージョンを選択します。
    • 保持期間を選択する: 期間を選択します。保持期間は 7 日、14 日、30 日のいずれかです。選択した期間が過ぎると、データは削除され、復元できなくなります。取り込みサイクルが定期的な場合は、期間を短くします。保持期間は後で変更できます。
  5. [保存] をクリックします。
  6. [続行] をクリックして選択内容を確定し、有効化の通知を受け取ります。
    表示された [Activation complete] ウィンドウに、[Access key] と [Secret key] の値が表示されます。
  7. [アクセスキー] と [シークレット キー] の値をコピーします。これらのキーを紛失した場合は、再生成する必要があります。
  8. [OK > 続行] をクリックします。
  9. 概要ページに、構成とバケット名が表示されます。ロギングは、組織の要件に応じて無効または有効にできます。ただし、新しいデータが追加されても、ログは保持期間に基づいて削除されます。

省略可: セルフマネージド AWS S3 バケットのユーザー アクセスキーを構成する

  1. AWS Management Console にログインします。
  2. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  3. 作成したユーザーを選択します。
  4. [セキュリティ認証情報] タブを選択します。
  5. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  6. [ユースケース] で [サードパーティ サービス] を選択します。
  7. [次へ] をクリックします。
  8. 省略可: 説明タグを追加します。
  9. [アクセスキーを作成] をクリックします。
  10. [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、後で使用できるようにします。
  11. [完了] をクリックします。
  12. [権限] タブを選択します。
  13. [権限ポリシー] セクションで、[権限を追加] をクリックします。
  14. [権限を追加] を選択します。
  15. [ポリシーを直接アタッチする] を選択します。
  16. AmazonS3FullAccess ポリシーを検索して選択します。
  17. [次へ] をクリックします。
  18. [権限を追加] をクリックします。

省略可: セルフマネージド Amazon S3 バケットを構成する

  1. AWS Management Console にログインします。

  2. S3 に移動します。

  3. [バケットを作成] をクリックします。

  4. 次の構成情報を提供してください。

    • バケット名: Amazon S3 バケットの名前を指定します。
    • リージョン: リージョンを選択します。
  5. [作成] をクリックします。

省略可: セルフマネージド AWS S3 バケットのバケット ポリシーを構成する

  1. 新しく作成されたバケットをクリックして開きます。
  2. [プロパティ> 権限] を選択します。
  3. [権限] リストで、[バケット ポリシーを追加] をクリックします。
  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 バケット名に置き換えます。
  5. [保存] をクリックします。

省略可: セルフマネージド Amazon S3 バケットに必要な検証

  1. Cisco Umbrella ダッシュボードで、[Admin] > [Log management] > [Amazon S3] を選択します。
  2. [バケット名] フィールドに Amazon S3 バケット名を正確に指定し、[確認] をクリックします。
  3. 確認プロセスの一環として、README_FROM_UMBRELLA.txt という名前のファイルが Cisco Umbrella から Amazon S3 バケットにアップロードされます。アップロードされた README ファイルを表示するには、ブラウザの更新が必要になることがあります。
  4. README_FROM_UMBRELLA.txt ファイルをダウンロードし、テキスト エディタで開きます。
  5. ファイルから一意の Cisco Umbrella トークンをコピーして保存します。
  6. Cisco Umbrella ダッシュボードに移動します。
  7. [トークン番号] フィールドでトークンを指定し、[保存] をクリックします。
  8. 成功すると、バケットが正常に検証されたことを示す確認メッセージがダッシュボードに表示されます。バケットを検証できないことを示すエラーが表示された場合は、バケット名の構文を再確認し、構成を見直してください。

Cisco Umbrella DNS ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Cisco Umbrella DNS Logs)。
  4. [ソースタイプ] として [Amazon S3 V2] を選択します。
  5. [Log type] として [Cisco Umbrella DNS] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。

    • S3 URI: バケット URI。
      • s3:/BUCKET_NAME/
        • BUCKET_NAME は、バケットの実際の名前に置き換えます。
    • Source deletion options: 必要に応じて削除オプションを選択します。
  8. [次へ] をクリックします。

  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

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 フィールドからタイムスタンプとして解析されます。プロキシログの場合、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_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 フィルタを使用して useragent フィールドまたは column10 フィールドから導出されます。値は、column3 フィールドの最後の部分をカンマで分割した後に取得されます。フィールドが存在しない場合は、空の文字列になります。値は、カンマで分割した後の column3 フィールドの最初の部分から取得されます。column3 が存在しない場合は、column2 フィールドから取得されます。値は、正規表現を使用して column2 フィールドまたは column3 フィールドから抽出されます。値は、正規表現を使用して column2 フィールドまたは column3 フィールドから抽出されます。値は、正規表現を使用して column2 フィールドまたは column3 フィールドから抽出されます。値は、正規表現を使用して column2 フィールドまたは column3 フィールドから抽出されます。値は actioncolumn6column7verdict フィールドから取得され、大文字(ALLOW または BLOCK)に変換されます。_categoriesMalware が含まれている場合は NETWORK_MALICIOUS に、_categoriesPotentially Harmful が含まれている場合は NETWORK_SUSPICIOUS に設定されます。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。