Mengumpulkan log DNS Cisco Umbrella

Didukung di:

Dokumen ini menjelaskan cara mengumpulkan log DNS Cisco Umbrella ke feed Google Security Operations menggunakan bucket AWS S3. Parser menangani log berformat JSON dan CSV. Proses ini mengekstrak kolom, mengganti namanya agar cocok dengan UDM, menangani berbagai versi dan format log (termasuk log proxy dan IP), serta melakukan logika khusus untuk identitas, kategori keamanan, dan peristiwa jaringan, yang pada akhirnya menggabungkan data yang diekstrak ke dalam skema UDM.

Sebelum memulai

  • Pastikan Anda memiliki instance Google SecOps.
  • Pastikan Anda memiliki akses istimewa ke AWS IAM dan S3.
  • Pastikan Anda memiliki akses istimewa ke Cisco Umbrella.

Mengonfigurasi bucket Amazon S3 yang dikelola Cisco

  1. Login ke dasbor Cisco Umbrella.
  2. Buka Admin > Pengelolaan log.
  3. Pilih opsi Gunakan bucket Amazon S3 yang dikelola Cisco.
  4. Berikan detail konfigurasi berikut:
    • Pilih region: pilih region yang lebih dekat dengan lokasi Anda untuk latensi yang lebih rendah.
    • Pilih durasi retensi: pilih jangka waktu. Durasi retensi adalah 7, 14, atau 30 hari. Setelah jangka waktu yang dipilih, data akan dihapus dan tidak dapat dipulihkan. Jika siklus penyerapan Anda teratur, gunakan jangka waktu yang lebih singkat. Anda dapat mengubah durasi retensi di lain waktu.
  5. Klik Simpan.
  6. Klik Lanjutkan untuk mengonfirmasi pilihan Anda dan menerima notifikasi aktivasi.
    Di jendela Activation complete yang muncul, nilai Access key dan Secret key ditampilkan.
  7. Salin nilai Access key dan Secret key. Jika Anda kehilangan kunci ini, Anda harus membuatnya ulang.
  8. Klik Oke > Lanjutkan.
  9. Halaman ringkasan menampilkan konfigurasi dan nama bucket Anda. Anda dapat menonaktifkan atau mengaktifkan logging sesuai kebutuhan organisasi Anda. Namun, log dihapus berdasarkan durasi retensi, terlepas dari penambahan data baru.

Opsional: Mengonfigurasi kunci akses pengguna untuk bucket AWS S3 yang dikelola sendiri

  1. Login ke AWS Management Console.
  2. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  3. Pilih Pengguna yang dibuat.
  4. Pilih tab Kredensial keamanan.
  5. Klik Create Access Key di bagian Access Keys.
  6. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  7. Klik Berikutnya.
  8. Opsional: tambahkan tag deskripsi.
  9. Klik Create access key.
  10. Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk digunakan nanti.
  11. Klik Selesai.
  12. Pilih tab Izin.
  13. Klik Tambahkan izin di bagian Kebijakan izin.
  14. Pilih Tambahkan izin.
  15. Pilih Lampirkan kebijakan secara langsung.
  16. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  17. Klik Berikutnya.
  18. Klik Add permissions.

Opsional: Mengonfigurasi bucket Amazon S3 yang dikelola sendiri

  1. Login ke AWS Management Console.

  2. Buka S3.

  3. Klik Create bucket.

  4. Berikan detail konfigurasi berikut:

    • Nama bucket: berikan nama untuk bucket Amazon S3.
    • Region: pilih region.
  5. Klik Buat.

Opsional: Mengonfigurasi kebijakan bucket untuk bucket AWS S3 yang dikelola sendiri

  1. Klik bucket yang baru dibuat untuk membukanya.
  2. Pilih Properti > Izin.
  3. Di daftar Permissions, klik Add bucket policy.
  4. Masukkan kebijakan bucket yang telah dikonfigurasi sebelumnya sebagai berikut:

    {
      "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"
        }
      ]
    }
    
    • Ganti BUCKET_NAME dengan nama bucket Amazon S3 yang Anda berikan.
  5. Klik Simpan.

Opsional: Verifikasi yang Diperlukan untuk bucket Amazon S3 yang dikelola sendiri

  1. Di dasbor Cisco Umbrella, pilih Admin > Log management > Amazon S3.
  2. Di kolom Bucket name, tentukan nama bucket Amazon S3 Anda yang tepat, lalu klik Verify.
  3. Sebagai bagian dari proses verifikasi, file bernama README_FROM_UMBRELLA.txt diupload dari Cisco Umbrella ke bucket Amazon S3 Anda. Anda mungkin perlu memuat ulang browser untuk melihat file readme saat diupload.
  4. Download file README_FROM_UMBRELLA.txt, lalu buka menggunakan editor teks.
  5. Salin dan simpan token Cisco Umbrella unik dari file.
  6. Buka dasbor Cisco Umbrella.
  7. Di kolom Token number, tentukan token, lalu klik Save.
  8. Jika berhasil, Anda akan menerima pesan konfirmasi di dasbor yang menunjukkan bahwa bucket telah berhasil diverifikasi. Jika Anda menerima error yang menunjukkan bahwa bucket Anda tidak dapat diverifikasi, periksa kembali sintaks nama bucket dan tinjau konfigurasi.

Mengonfigurasi feed di Google SecOps untuk menyerap log DNS Cisco Umbrella

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Feed name, masukkan nama untuk feed; misalnya, Cisco Umbrella DNS Logs.
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih Cisco Umbrella DNS sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:

    • URI S3: URI bucket.
      • s3:/BUCKET_NAME/
        • Ganti BUCKET_NAME dengan nama bucket yang sebenarnya.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
  8. Klik Berikutnya.

  9. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
action security_result.action_details Nilai diambil dari kolom action jika ada di log JSON, atau dari column6 atau column7 di log CSV, dan dikonversi menjadi huruf besar (ALLOW atau BLOCK).
amp.disposition security_result.detection_fields[].key Nilainya adalah ampDisposition.
amp.disposition security_result.detection_fields[].value Nilai diambil dari kolom amp.disposition.
amp.malware security_result.detection_fields[].key Nilainya adalah ampMalware.
amp.malware security_result.detection_fields[].value Nilai diambil dari kolom amp.malware.
amp.score security_result.detection_fields[].key Nilainya adalah ampScore.
amp.score security_result.detection_fields[].value Nilai diambil dari kolom amp.score.
blocked_categories security_result.category_details Nilai diambil dari kolom blocked_categories.
blockedfiletype security_result.detection_fields[].key Nilainya adalah egress type.
blockedfiletype security_result.detection_fields[].value Nilai diambil dari kolom blockedfiletype.
bundleid additional.fields[].key Nilainya adalah bundleid.
bundleid additional.fields[].value.string_value Nilai diambil dari kolom bundleid.
categories[] security_result.category_details Nilai diambil dari kolom categories[].label.
column1 metadata.event_timestamp.seconds Nilai diuraikan dari kolom column1 sebagai stempel waktu. Untuk log proxy, jika ada kolom date dan time, kolom tersebut digabungkan dan diuraikan sebagai stempel waktu.
column10 network.http.user_agent Nilai diambil dari kolom column10.
column10 additional.fields[].value.string_value Nilai diambil dari kolom column10.
column11 target.port Nilai diambil dari kolom column11.
column12 principal.resource.name Nilai diambil dari kolom column12.
column13 security_result.rule_id Nilai diambil dari kolom column13.
column14 security_result.action_details Nilai diambil dari kolom column14.
column2 principal.user.user_display_name Nilai diambil dari kolom column2.
column2 principal.user.userid Nilai diambil dari kolom column2.
column2 principal.location.name Nilai diambil dari kolom column2.
column3 principal.hostname Nilai diambil dari kolom column3.
column3 principal.user.product_object_id Nilai diambil dari kolom column3.
column3 principal.location.city Nilai diambil dari kolom column3.
column3 additional.fields[].value.string_value Nilai diambil dari kolom column3.
column4 principal.asset.ip Nilai diambil dari kolom column4.
column4 principal.ip Nilai diambil dari kolom column4.
column4 principal.port Nilai diambil dari kolom column4.
column5 principal.asset.ip Nilai diambil dari kolom column5.
column5 principal.ip Nilai diambil dari kolom column5.
column5 target.asset.ip Nilai diambil dari kolom column5.
column5 target.ip Nilai diambil dari kolom column5.
column6 security_result.action_details Nilai diambil dari kolom column6.
column6 target.port Nilai diambil dari kolom column6.
column7 network.received_bytes Nilai diambil dari kolom column7.
column7 additional.fields[].value.string_value Nilai diambil dari kolom column7.
column8 principal.asset.ip Nilai diambil dari kolom column8.
column8 principal.ip Nilai diambil dari kolom column8.
column8 target.url Nilai diambil dari kolom column8.
column9 principal.port Nilai diambil dari kolom column9.
column9 network.http.referral_url Nilai diambil dari kolom column9.
data_center_name principal.resource.name Nilai diambil dari kolom data_center_name.
datacenter.label security_result.detection_fields[].key Nilainya adalah datacenter label.
datacenter.label security_result.detection_fields[].value Nilai diambil dari kolom datacenter.label.
destinationip target.asset.ip Nilai diambil dari kolom destinationip.
destinationip target.ip Nilai diambil dari kolom destinationip.
direction network.direction Nilai diambil dari kolom direction dan dikonversi menjadi huruf besar.
domain network.dns.questions[].name Nilai diambil dari kolom domain, dengan titik di akhir dihapus jika ada.
dstPort target.port Nilai diambil dari kolom dstPort.
dstip target.asset.ip Nilai diambil dari kolom dstip.
dstip target.ip Nilai diambil dari kolom dstip.
egress.ip security_result.detection_fields[].key Nilainya adalah egress ip.
egress.ip security_result.detection_fields[].value Nilai diambil dari kolom egress.ip.
egress.type security_result.detection_fields[].key Nilainya adalah egress type.
egress.type security_result.detection_fields[].value Nilai diambil dari kolom egress.type.
externalip principal.asset.ip Nilai diambil dari kolom externalip.
externalip principal.ip Nilai diambil dari kolom externalip.
forwardingmethod additional.fields[].key Nilainya adalah forwardingmethod.
forwardingmethod additional.fields[].value.string_value Nilai diambil dari kolom forwardingmethod.
granular_identity principal.user.user_display_name Nilai diambil dari kolom granular_identity jika granular_identity dan most_granular_identity ada. Jika tidak, nilai ini berasal dari kolom _policy_identity dan selanjutnya diuraikan berdasarkan identityType.
granular_identity principal.user.email_addresses Nilai diekstrak dari kolom granular_identity menggunakan ekspresi reguler.
granular_identity principal.user.first_name Nilai diekstrak dari kolom granular_identity menggunakan ekspresi reguler.
granular_identity principal.user.last_name Nilai diekstrak dari kolom granular_identity menggunakan ekspresi reguler.
granular_identity principal.user.userid Nilai diekstrak dari kolom granular_identity menggunakan ekspresi reguler.
granular_identity principal.hostname Nilai diambil dari kolom granular_identity.
granular_identity principal.location.name Nilai diambil dari kolom granular_identity.
identity_types additional.fields[].value.string_value Nilai diambil dari kolom identity_types.
identities[] principal.user.product_object_id Nilai diambil dari kolom identities[].
identities principal.user.product_object_id Nilai diambil dari kolom identities.
internalip principal.asset.ip Nilai diambil dari kolom internalip.
internalip principal.ip Nilai diambil dari kolom internalip.
isolated.fileaction security_result.detection_fields[].key Nilainya adalah isolated fileaction.
isolated.fileaction security_result.detection_fields[].value Nilai diambil dari kolom isolated.fileaction.
isolated.state security_result.detection_fields[].key Nilainya adalah isolated state.
isolated.state security_result.detection_fields[].value Nilai diambil dari kolom isolated.state.
most_granular_identity principal.user.identityType Nilai diambil dari kolom most_granular_identity jika granular_identity dan most_granular_identity ada. Jika tidak, nilai diambil dari kolom _policy_identity_type.
nat_destination_ip principal.asset.ip Nilai diambil dari kolom nat_destination_ip.
nat_destination_ip principal.ip Nilai diambil dari kolom nat_destination_ip.
odns_categories security_result.category_details Nilai diambil dari kolom odns_categories.
policy.ruleid security_result.rule_id Nilai diambil dari kolom policy.ruleid.
policy.rulesetid security_result.detection_fields[].key Nilainya adalah rulesetid.
policy.rulesetid security_result.detection_fields[].value Nilai diambil dari kolom policy.rulesetid.
policy.timebasedrule security_result.detection_fields[].key Nilainya adalah timebasedrule.
policy.timebasedrule security_result.detection_fields[].value Nilai diambil dari kolom policy.timebasedrule.
port target.port Nilai diambil dari kolom port.
query_type_name network.dns.questions[].type Bagian numerik diekstrak dari kolom query_type_name menggunakan ekspresi reguler dan dikonversi menjadi bilangan bulat.
query_type_name additional.fields[].value.string_value Bagian string dalam tanda kurung diekstrak dari kolom query_type_name menggunakan ekspresi reguler.
querytype network.dns.questions[].type Nilai diambil dari kolom querytype dan dipetakan ke nilai numerik berdasarkan jenis data DNS.
referer network.http.referral_url Nilai diambil dari kolom referer.
requestmethod network.http.method Nilai diambil dari kolom requestmethod.
requestsize network.sent_bytes Nilai diambil dari kolom requestsize dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
response additional.fields[].value.string_value Nilai diambil dari kolom response.
responsecode network.http.response_code Nilai diambil dari kolom responsecode.
responsefilename target.file.names Nilai diambil dari kolom responsefilename.
responsesize network.received_bytes Nilai diambil dari kolom responsesize dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
returncode network.dns.response_code Nilai diambil dari kolom returncode dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
securityoverridden additional.fields[].key Nilainya adalah securityoverridden.
securityoverridden additional.fields[].value.string_value Nilai diambil dari kolom securityoverridden.
sha256 target.file.sha256 Nilai diambil dari kolom sha256.
source_ip principal.asset.ip Nilai diambil dari kolom source_ip jika ada di log JSON, atau dari column3 di log CSV.
source_ip principal.ip Nilai diambil dari kolom source_ip jika ada di log JSON, atau dari column3 di log CSV.
srcPort principal.port Nilai diambil dari kolom srcPort.
statuscode network.http.response_code Nilai diambil dari kolom statuscode.
tenantcontrols additional.fields[].key Nilainya adalah tenantcontrols.
tenantcontrols additional.fields[].value.string_value Nilai diambil dari kolom tenantcontrols.
timestamp metadata.event_timestamp.seconds Nilai diuraikan dari kolom timestamp sebagai stempel waktu.
tunnel_name additional.fields[].key Nilainya adalah tunnel_name.
tunnel_name additional.fields[].value.string_value Nilai diambil dari kolom tunnel_name.
tunnel_type metadata.product_event_type Nilai diambil dari kolom tunnel_type.
type additional.fields[].key Nilainya adalah type.
type additional.fields[].value.string_value Nilai diambil dari kolom type.
url target.url Nilai diambil dari kolom url.
useragent network.http.user_agent Nilai diambil dari kolom useragent.
verdict security_result.action_details Nilai diambil dari kolom verdict.
warnstatus security_result.detection_fields[].key Nilainya adalah warnstatus.
warnstatus security_result.detection_fields[].value Nilai diambil dari kolom warnstatus. Nilainya adalah DNS Lookup Type. Bagian string dalam tanda kurung diekstrak dari kolom query_type_name menggunakan ekspresi reguler, atau berupa string kosong jika kolom tidak ada. Nilainya adalah DNS request and response were made. Ditentukan berdasarkan keberadaan kolom tertentu: NETWORK_DNS jika question.name ada, NETWORK_CONNECTION jika principal.ip dan target.ip ada, STATUS_UPDATE jika hanya principal.ip yang ada, atau GENERIC_EVENT jika tidak ada. Nilainya adalah UMBRELLA_DNS. Nilainya adalah Umbrella DNS. Nilainya adalah Cisco. Nilai awalnya ditetapkan ke DNS. Jika requestmethod adalah metode HTTP yang valid, metode tersebut akan diubah menjadi HTTP. Bagian numerik diekstrak dari kolom query_type_name menggunakan ekspresi reguler dan dikonversi menjadi bilangan bulat, atau berasal dari kolom querytype dan dipetakan ke nilai numerik berdasarkan jenis data DNS. Nilai ini berasal dari kolom useragent atau column10 menggunakan filter parseduseragent. Nilai diambil dari bagian terakhir kolom column3 setelah dibagi dengan koma, atau berupa string kosong jika kolom tidak ada. Nilai diambil dari bagian pertama kolom column3 setelah dibagi dengan koma, atau diambil dari kolom column2 jika column3 tidak ada. Nilai diekstrak dari kolom column2 atau column3 menggunakan ekspresi reguler. Nilai diekstrak dari kolom column2 atau column3 menggunakan ekspresi reguler. Nilai diekstrak dari kolom column2 atau column3 menggunakan ekspresi reguler. Nilai diekstrak dari kolom column2 atau column3 menggunakan ekspresi reguler. Nilai ini berasal dari kolom action, column6, column7, atau verdict dan dikonversi menjadi huruf besar (ALLOW atau BLOCK). Nilai disetel ke NETWORK_MALICIOUS jika _categories berisi Malware, atau NETWORK_SUSPICIOUS jika _categories berisi Potentially Harmful.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.