Mengumpulkan log IOC DHS
Parser Version: 1.0
Dokumen ini menjelaskan cara menyerap log IOC Department of Homeland Security (DHS) ke Google Security Operations menggunakan Google Cloud Storage V2.
DHS mendistribusikan threat intelligence melalui program Automated Indicator Sharing (AIS), yang menyediakan indikator penyusupan seperti alamat IP, domain, URL, dan hash file berbahaya dalam format STIX/TAXII. Karena AIS mengirimkan data IOC sebagai paket STIX yang dapat didownload, Anda harus mengekspor file tersebut ke bucket Google Cloud Storage (GCS), lalu mengonfigurasi feed Google SecOps untuk menyerapnya.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Project Google Cloud dengan Cloud Storage API diaktifkan
- Izin untuk membuat dan mengelola bucket GCS
- Izin untuk mengelola kebijakan IAM di bucket GCS
- Akun peserta aktif DHS AIS dengan akses ke server TAXII atau portal AIS
- File kunci pribadi dan sertifikat klien AIS untuk autentikasi server TAXII
Buat bucket Google Cloud Storage
- Buka Konsol Google Cloud.
- Pilih project Anda atau buat project baru.
- Di menu navigasi, buka Cloud Storage > Buckets.
- Klik Create bucket.
Berikan detail konfigurasi berikut:
Setelan Nilai Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, dhs-ioc-logs)Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region) Location Pilih lokasi yang paling dekat dengan instance Google SecOps Anda (misalnya, us-central1)Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses) Kontrol akses Seragam (direkomendasikan) Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi Klik Create.
Mengonfigurasi ekspor otomatis data IOC DHS ke GCS
DHS mendistribusikan data IOC berformat STIX melalui server TAXII AIS-nya. Konfigurasi pipeline otomatis untuk menarik indikator sesuai jadwal dan menuliskannya langsung ke GCS.
Opsi 1: Cloud Scheduler dengan Cloud Build (direkomendasikan)
Gunakan Cloud Build yang dipicu oleh Cloud Scheduler untuk menjalankan tugas dalam container yang mengambil paket STIX dari server TAXII AIS dan menuliskannya ke GCS.
Simpan sertifikat dan kunci klien AIS di Secret Manager:
- Di GCP Console, buka Security > Secret Manager.
- Klik Buat Secret.
- Buat dua secret:
- Name:
ais-client-cert, Value: Isi file PEM sertifikat klien AIS Anda. - Name:
ais-client-key, Value: Isi file PEM kunci pribadi klien AIS Anda.
- Name:
Buat akun layanan untuk tugas ekspor:
- Di Konsol GCP, buka IAM & Admin > Service Accounts.
- Klik Create Service Account.
- Berikan detail konfigurasi berikut:
- Nama akun layanan: Masukkan
dhs-ioc-export-sa - Deskripsi akun layanan: Masukkan
Service account for automated DHS IOC export to GCS
- Nama akun layanan: Masukkan
- Klik Create and Continue.
- Tambahkan peran berikut:
- Storage Object Admin (untuk menulis file ke GCS)
- Cloud Build Editor (untuk menjalankan tugas Cloud Build)
- Secret Manager Secret Accessor (untuk membaca sertifikat AIS)
- Klik Done.
Buat file konfigurasi Cloud Build (
cloudbuild.yaml):steps: - name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | apt-get update && apt-get install -y curl # Retrieve AIS certificates from Secret Manager gcloud secrets versions access latest --secret=ais-client-cert > /tmp/ais-cert.pem gcloud secrets versions access latest --secret=ais-client-key > /tmp/ais-key.pem # Fetch IOC data from AIS TAXII server TIMESTAMP=$(date -u +%Y%m%d_%H%M%S) FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ") curl -s --cert /tmp/ais-cert.pem --key /tmp/ais-key.pem \ -H "Accept: application/taxii+json;version=2.1" \ "https://ais2.cisa.dhs.gov/taxii2/ais2/collections/${_COLLECTION_ID}/objects?added_after=$${FROM}" \ -o /workspace/dhs_ioc_$${TIMESTAMP}.json # Upload to GCS gcloud storage cp /workspace/dhs_ioc_$${TIMESTAMP}.json \ gs://${_BUCKET_NAME}/ioc-data/ # Clean up certificates rm -f /tmp/ais-cert.pem /tmp/ais-key.pem substitutions: _BUCKET_NAME: 'dhs-ioc-logs' _COLLECTION_ID: 'YOUR_AIS_COLLECTION_ID'Buat tugas Cloud Scheduler untuk memicu build:
- Di Konsol GCP, buka Cloud Scheduler.
- Klik Create Job.
Berikan detail konfigurasi berikut:
Setelan Nilai Nama dhs-ioc-export-hourlyRegion Pilih region yang sama dengan bucket GCS Anda Frekuensi 0 * * * *(setiap jam)Zona Waktu UTC (direkomendasikan) Jenis target HTTP URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/buildsMetode HTTP POST Header otorisasi Tambahkan token OAuth Service account dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.comKlik Create.
Opsi 2: VM Compute Engine dengan cron (alternatif)
Jika Cloud Build tidak tersedia, gunakan VM Compute Engine kecil dengan cron job untuk menarik data IoC dan menulis ke GCS.
Membuat VM Compute Engine:
- Di GCP Console, buka Compute Engine > VM instances.
- Klik Create instance.
- Pilih jenis mesin kecil (misalnya,
e2-micro). - Di bagian Identity and API access, pilih akun layanan dengan peran Storage Object Admin.
- Klik Create.
Gunakan SSH untuk mengakses VM dan buat skrip ekspor (
/opt/dhs-ioc/export.sh):#!/usr/bin/env bash set -euo pipefail TAXII_URL="https://ais2.cisa.dhs.gov/taxii2" API_ROOT="ais2" COLLECTION_ID="YOUR_AIS_COLLECTION_ID" CERT="/etc/ais/client-cert.pem" KEY="/etc/ais/client-key.pem" BUCKET="dhs-ioc-logs" TIMESTAMP=$(date -u +%Y%m%d_%H%M%S) FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ") curl -s --cert "$CERT" --key "$KEY" \ -H "Accept: application/taxii+json;version=2.1" \ "${TAXII_URL}/${API_ROOT}/collections/${COLLECTION_ID}/objects?added_after=${FROM}" \ -o "/tmp/dhs_ioc_${TIMESTAMP}.json" gcloud storage cp "/tmp/dhs_ioc_${TIMESTAMP}.json" "gs://${BUCKET}/ioc-data/" rm -f "/tmp/dhs_ioc_${TIMESTAMP}.json"Buat agar skrip dapat dieksekusi dan jadwalkan dengan cron:
chmod +x /opt/dhs-ioc/export.sh (crontab -l ; echo "0 * * * * /opt/dhs-ioc/export.sh >> /var/log/dhs-ioc-export.log 2>&1") | crontab -
Mengambil akun layanan Google SecOps
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
DHS IOC Feed). - Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih Department of Homeland Security sebagai Log type.
- Klik Get Service Account.
Email akun layanan yang unik akan ditampilkan, misalnya:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comSalin alamat email ini untuk digunakan di langkah berikutnya.
Memberikan izin IAM ke akun layanan Google SecOps
Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda (misalnya,
dhs-ioc-logs). - Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Add principals: Tempel email akun layanan Google SecOps (misalnya,
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com). - Tetapkan peran: Pilih Storage Object Viewer.
- Add principals: Tempel email akun layanan Google SecOps (misalnya,
Klik Simpan.
Mengonfigurasi feed Google SecOps
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
DHS IOC Feed). - Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih Department of Homeland Security sebagai Log type.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
URL bucket penyimpanan: Masukkan URI bucket GCS:
gs://dhs-ioc-logs/ioc-data/- Ganti
dhs-ioc-logsdengan nama bucket GCS Anda. - Ganti
ioc-datadengan jalur awalan yang dikonfigurasi.
- Ganti
Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
- Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
Usia File Maksimum: Sertakan file yang diubah dalam beberapa hari terakhir (defaultnya adalah 180 hari).
Namespace aset: Namespace aset.
Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| entity.application | Nama atau ID aplikasi | |
| observable_id | entity.asset.asset_id | ID aset |
| object_id | entity.asset.product_object_id | ID objek produk |
| hash_value | entity.file.md5 | Hash MD5 file |
| hash_value | entity.file.sha1 | Hash SHA1 file |
| hash_value | entity.file.sha256 | Hash SHA256 file |
| file_size | entity.file.size | Ukuran file dalam byte |
| fuzzy_hash_value | entity.file.ssdeep | Hash SSDEEP file |
| file_path | entity.file.full_path | Jalur file lengkap |
| ip_address_value | entity.ip | Alamat IP |
| country | entity.location.country_or_region | Negara atau region |
| administrativeArea | entity.location.state | Negara bagian atau provinsi |
| port | entity.port | Nomor port |
| file_name_label | entity.resource.attribute.labels | Label atribut untuk resource |
| url | entity.url | URL |
| organisationInfo | entity.user.department | Departemen |
| email_address, email | entity.user.email_addresses | Alamat email |
| organisationName | entity.user.userid | ID Pengguna |
| ioc.domain_and_ports.domain | Nama domain | |
| indicator_type, confidence_value | ioc.feed_name | Nama feed |
| ip_address_value, target_ip | ioc.ip_and_ports.ip_address | Alamat IP |
| port | ioc.ip_and_ports.ports | Port |
| description, desc1, ttp_description | metadata.description | Deskripsi |
| entity_type | metadata.entity_type | Jenis entitas |
| start_time | metadata.interval.start_time | Waktu mulai interval |
| object_id | metadata.product_entity_id | ID entity produk |
| sightings_count_label | metadata.source_labels | Label sumber |
| security_result_data, ttp_security_result | metadata.threat | Informasi ancaman |
| metadata.vendor_name | Nama vendor atau perusahaan | |
| metadata.product_name | Nama produk | |
| address_label, subject_label, file_label | security_result.about.labels | Label tentang hasil keamanan |
| indicator_type | security_result_data.category_details | Detail kategori |
| desc1 | security_result_data.description | Deskripsi |
| confidence_value | security_result_data.severity | Tingkat keparahan |
| host, domain_name | target.hostname | Nama host target |
| target_ip | target.ip | Alamat IP target |
| domain_name | target.url | URL Target |
| malware_category | ttp_security_result.category_details | Detail kategori untuk TTP |
| ttp_id_label | ttp_security_result.detection_fields | Kolom deteksi untuk TTP |
| ttp_description | ttp_security_result.description | Deskripsi untuk TTP |
| ttp_summary | ttp_security_result.summary | Ringkasan untuk TTP |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.