Mengumpulkan log Akamai WAF

Didukung di:

Dokumen ini menjelaskan cara mengekspor dan menyerap log Akamai WAF ke Google Security Operations menggunakan Google Cloud Storage atau AWS S3. Parser menangani log, mendukung format syslog dan CEF. Parser ini mengekstrak kolom seperti alamat IP, URL, metode HTTP, kode respons, agen pengguna, dan informasi aturan keamanan, lalu memetakannya ke Model Data Terpadu (UDM) untuk representasi yang konsisten. Parser juga menangani kolom Akamai tertentu seperti attackData dan clientReputation, melakukan transformasi data yang diperlukan dan memperkaya output UDM.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps
  • Akses istimewa ke Google Cloud atau AWS
  • Akses istimewa ke Akamai

Mengekspor dan menyerap log Akamai WAF dari Cloud Storage

Bagian ini menguraikan langkah awal dalam proses: menyiapkan penyimpanan yang diperlukan untuk log WAF Akamai Anda.

Membuat Google Cloud Bucket Storage

  1. Login ke konsol Google Cloud .
  2. Buka halaman Cloud Storage Buckets.

    Buka Buckets

  3. Klik Buat.

  4. Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah setiap langkah berikut, klik Lanjutkan untuk melanjutkan ke langkah berikutnya:

    1. Di bagian Mulai, lakukan tindakan berikut:

      • Masukkan nama unik yang memenuhi persyaratan nama bucket (misalnya, akamai-waf-logs).
      • Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan bagian Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan namespace Hierarkis di bucket ini.
      • Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Label.
      • Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.
    2. Di bagian Pilih lokasi untuk menyimpan data Anda, lakukan hal berikut:

      • Pilih Jenis lokasi.
      • Gunakan menu drop-down jenis lokasi untuk memilih Lokasi tempat data objek dalam bucket Anda akan disimpan secara permanen.
      • Untuk menyiapkan replikasi lintas bucket, luaskan bagian Siapkan replikasi lintas bucket.
    3. Di bagian Pilih kelas penyimpanan untuk data Anda, pilih kelas penyimpanan default untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.

    4. Di bagian Pilih cara mengontrol akses ke objek, pilih tidak untuk menerapkan pencegahan akses publik, dan pilih model kontrol akses untuk objek bucket Anda.

    5. Di bagian Pilih cara melindungi data objek, lakukan tindakan berikut:

      • Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
      • Untuk memilih cara mengenkripsi data objek Anda, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
  5. Klik Buat.

Mengonfigurasi Izin untuk Cloud Storage

  1. Buka halaman Buat akun layanan.

    Buka Create service account

  2. Pilih project Google Cloud.

  3. Masukkan nama akun layanan untuk ditampilkan di konsol Google Cloud .

  4. Klik Buat dan lanjutkan.

  5. Berikan roles/storage.admin pada bucket.

  6. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

Buat dan Download File Kunci Akun Layanan Google Cloud

  1. Buka halaman Akun layanan.

    Buka halaman Service accounts

  2. Pilih project Google Cloud.

  3. Klik alamat email akun layanan yang baru dibuat.

  4. Klik tab Kunci.

  5. Klik menu Tambahkan kunci, lalu pilih Buat kunci baru.

  6. Pilih JSON sebagai Jenis kunci, lalu klik Buat.

    • Mengklik Buat akan mendownload file kunci akun layanan. Setelah mendownload file kunci, Anda tidak dapat mendownloadnya lagi.
    • Kunci yang didownload memiliki format berikut, dengan PRIVATE_KEY adalah bagian pribadi dari pasangan kunci publik-pribadi.

Mengonfigurasi Akamai WAF untuk mengirim log ke Cloud Storage

  1. Login ke Akamai Control Center.
  2. Buka bagian Keamanan.
  3. Pilih Log.
  4. Konfigurasi Pengiriman Log baru:
    • Sumber Log: Pilih konfigurasi WAF Anda.
    • Tujuan: Pilih Google Cloud Storage.
    • Nama tampilan: Masukkan deskripsi nama unik.
    • Bucket: Tentukan nama bucket Cloud Storage yang Anda buat (misalnya, gs://akamai-waf-logs).
    • Project ID: Masukkan ID unik project Google Cloud Anda.
    • Nama Akun Layanan: Masukkan nama akun layanan yang Anda buat sebelumnya.
    • Private Key: Masukkan nilai private_key dari kunci JSON yang Anda buat dan download sebelumnya. (Anda harus memasukkan kunci pribadi dalam format PEM dengan simbol jeda baris (\n), misalnya -----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n)
    • Format Log: Pilih format log yang Anda inginkan (misalnya, JSON).
    • Frekuensi Push: Pilih frekuensi yang Anda inginkan untuk pengiriman log (misalnya, every 60 seconds).
  5. Klik Validasi & Simpan untuk memvalidasi koneksi ke tujuan, dan menyimpan detail yang Anda berikan.

  6. Klik Berikutnya untuk membuka tab Ringkasan.

Menyiapkan feed

Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:

  • Setelan SIEM > Feed
  • Hub Konten > Paket Konten

Siapkan feed dari Setelan SIEM > Feed menggunakan Google Cloud Penyimpanan

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Feed name, masukkan nama untuk feed (misalnya, Akamai WAF Logs).
  5. Pilih Google Cloud Storage sebagai Jenis sumber.
  6. Pilih Akamai WAF sebagai Jenis log.
  7. Klik Dapatkan Akun Layanan sebagai Akun Layanan Chronicle.
  8. Klik Berikutnya.
  9. Tentukan nilai untuk parameter input berikut:

    • URI Bucket Penyimpanan: Google Cloud URL bucket penyimpanan (misalnya, gs://akamai-waf-logs).
    • URI Adalah: Pilih Direktori yang menyertakan subdirektori.
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
  10. Klik Berikutnya.

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

Menyiapkan feed dari Hub Konten

Tentukan nilai untuk kolom berikut:

  • URI Bucket Penyimpanan: Google Cloud URL bucket penyimpanan (misalnya, gs://akamai-waf-logs).
  • URI Adalah: Pilih Direktori yang menyertakan subdirektori.
  • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.

Opsi lanjutan

  • Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
  • Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
  • Namespace Aset: Namespace yang terkait dengan feed.
  • Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.

Mengekspor dan menyerap log Akamai WAF dari AWS S3

Bagian ini menjelaskan langkah-langkah awal untuk menyiapkan bucket Amazon S3 Anda guna menerima dan menyimpan log Akamai WAF.

Mengonfigurasi bucket Amazon S3

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Nama dan Region bucket untuk referensi di masa mendatang.
  3. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  4. Pilih Pengguna yang dibuat.
  5. Pilih tab Kredensial keamanan.
  6. Klik Create Access Key di bagian Access Keys.
  7. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  8. Klik Berikutnya.
  9. Opsional: Tambahkan tag deskripsi.
  10. Klik Create access key.
  11. Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  12. Klik Selesai.
  13. Pilih tab Permissions.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Lampirkan kebijakan secara langsung.
  17. Cari kebijakan AmazonS3FullAccess.
  18. Pilih kebijakan.
  19. Klik Berikutnya.
  20. Klik Tambahkan izin.

Mengonfigurasi Akamai WAF untuk mengirim log ke Amazon S3

  1. Login ke Akamai Control Center.
  2. Buka bagian Keamanan.
  3. Pilih Log.
  4. Konfigurasi Pengiriman Log baru:

    • Sumber Log: Pilih konfigurasi WAF Anda.
    • Tujuan: Pilih Amazon S3.
    • Bucket S3: Tentukan nama bucket S3 yang Anda buat.
    • Region: Pilih region AWS tempat bucket S3 Anda berada.
    • ID Kunci Akses dan Kunci Akses Rahasia: Berikan kredensial yang Anda buat.
    • Format Log: Pilih format log yang Anda inginkan (misalnya, JSON).
    • Frekuensi Pengiriman: Pilih frekuensi yang Anda inginkan untuk pengiriman log (misalnya, setiap 5 menit).

  5. Verifikasi pengiriman log:

    • Setelah mengonfigurasi LDS, pantau bucket S3 untuk file log yang masuk.

Menyiapkan feed dari Setelan SIEM > Feed menggunakan AWS S3

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Feed name, masukkan nama untuk feed (misalnya, Akamai WAF Logs).
  5. Pilih Amazon S3 sebagai Jenis sumber.
  6. Pilih Akamai WAF sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • Region: region tempat bucket Amazon S3 berada.
    • URI S3: URI bucket. s3:/BUCKET_NAME Ganti kode berikut:
      • BUCKET_NAME: nama bucket.
    • URI adalah: pilih JENIS URI sesuai dengan konfigurasi aliran log: File tunggal | Direktori | Direktori yang mencakup subdirektori.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • Access Key ID: Kunci akses pengguna dengan akses ke bucket s3.
    • Secret Access Key: kunci rahasia Pengguna dengan akses ke bucket s3.
  9. Klik Berikutnya.

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

Tabel pemetaan UDM

Kolom Log (Menaik) Pemetaan UDM Logika
attackData.clientIP principal.ip, principal.asset.ip Alamat IP klien yang memulai permintaan. Diekstrak dari kolom attackData.clientIP di log akamai_siem.
attackData.configId metadata.product_log_id ID konfigurasi keamanan. Diekstrak dari kolom attackData.configId di log akamai_siem. Juga ditambahkan sebagai detection_field dalam objek security_result.
attackData.policyId T/A Digunakan dalam logika parser untuk mengisi security_result.summary dengan nilai PolicyId:[value].
attackData.ruleActions security_result.action, security_result.action_details Tindakan yang diambil berdasarkan aturan yang dipicu. Diekstrak dari kolom attackData.ruleActions di log akamai_siem. "deny" dipetakan ke BLOCK, nilai lainnya ("alert", "monitor", "allow", "tarpit") dipetakan ke ALLOW. Nilai asli juga disimpan di action_details.
attackData.ruleData security_result.detection_fields Data yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleData di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "RuleData".
attackData.ruleMessages security_result.threat_name Pesan yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleMessages di log akamai_siem.
attackData.ruleSelectors security_result.detection_fields Pemilih yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleSelectors di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "RuleSelector".
attackData.ruleTags security_result.category_details Tag yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleTags di log akamai_siem.
attackData.ruleVersions security_result.detection_fields Versi aturan yang dipicu. Diekstrak dari kolom attackData.ruleVersions di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "Rule Version".
clientReputation principal.labels Informasi reputasi klien. Diekstrak dari kolom clientReputation di log akamai_siem. Ditambahkan sebagai label ke prinsipal dengan kunci "reputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Alamat IP klien. Diekstrak dari cliIP atau cli_ip atau principal_ip, bergantung pada format log.
cp additional.fields Kode CP. Diekstrak dari kolom cp. Ditambahkan ke additional.fields dengan kunci "cp".
eventId metadata.product_log_id ID Acara. Diekstrak dari kolom eventId.
eventTime, log_date metadata.event_timestamp Stempel waktu peristiwa. Diekstrak dari eventTime atau diuraikan dari log_date, bergantung pada format log.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID definisi peristiwa. Diekstrak dari eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Deskripsi acara. Diekstrak dari eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nama acara. Diekstrak dari eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID jenis peristiwa. Diekstrak dari eventType.eventTypeId. Ditambahkan ke additional.fields dengan kunci "eventTypeId".
eventType.eventTypeName additional.fields Nama jenis acara. Diekstrak dari eventType.eventTypeName. Ditambahkan ke additional.fields dengan kunci "eventTypeName".
format T/A Digunakan oleh parser untuk menentukan format log.
geo.asn principal.location.name Autonomous System Number (ASN). Diekstrak dari geo.asn atau AkamaiSiemASN, bergantung pada format log. Nilai diawali dengan "ASN ".
geo.city principal.location.city Kota. Diekstrak dari geo.city atau AkamaiSiemCity, bergantung pada format log.
geo.country principal.location.country_or_region Negara. Diekstrak dari geo.country atau AkamaiSiemContinent, bergantung pada format log.
httpMessage.bytes network.sent_bytes Byte yang dikirim dalam pesan HTTP. Diekstrak dari httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nama host. Diekstrak dari httpMessage.host atau reqHost, bergantung pada format log.
httpMessage.method network.http.method Metode HTTP. Diekstrak dari httpMessage.method atau network_http_method atau reqMethod, bergantung pada format log. Dikonversi menjadi huruf besar.
httpMessage.path target.url Jalur permintaan. Diekstrak dari httpMessage.path atau target_url atau reqPath, bergantung pada format log. Jika ada, httpMessage.query ditambahkan ke jalur dengan pemisah "?".
httpMessage.port target.port Port. Diekstrak dari httpMessage.port atau reqPort, bergantung pada format log.
httpMessage.protocol T/A Digunakan oleh parser untuk menentukan protokol.
httpMessage.query T/A Digunakan dalam logika parser untuk ditambahkan ke httpMessage.path jika ada.
httpMessage.requestId network.session_id ID Permintaan. Diekstrak dari httpMessage.requestId atau reqId, bergantung pada format log.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Header permintaan. Diekstrak dari httpMessage.requestHeaders atau AkamaiSiemRequestHeaders, bergantung pada format log. Ditambahkan ke additional.fields dengan kunci "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Header respons. Diekstrak dari httpMessage.responseHeaders atau AkamaiSiemResponseHeaders, bergantung pada format log. Ditambahkan ke additional.fields dengan kunci "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Kode respons HTTP. Diekstrak dari httpMessage.status atau AkamaiSiemResponseStatus atau network_http_response_code atau statusCode, bergantung pada format log.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versi TLS. Diekstrak dari httpMessage.tls atau AkamaiSiemTLSVersion atau tlsVersion, bergantung pada format log.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent Agen pengguna. Diekstrak dari httpMessage.useragent atau network_http_user_agent atau UA atau useragent, bergantung pada format log.
log_description metadata.description Deskripsi log. Diekstrak dari log_description.
log_rule security_result.rule_name Aturan log. Diekstrak dari log_rule.
message T/A Pesan log mentah. Digunakan oleh parser untuk berbagai ekstraksi.
network_http_referral_url network.http.referral_url URL rujukan HTTP. Diekstrak dari network_http_referral_url.
proto T/A Digunakan dalam logika parser untuk mengisi security_result.summary jika attackData.policyId tidak ada.
reqHost target.hostname, target.asset.hostname Minta host. Diekstrak dari reqHost.
reqId metadata.product_log_id, network.session_id ID Permintaan. Diekstrak dari reqId.
reqMethod network.http.method Metode permintaan. Diekstrak dari reqMethod.
reqPath target.url Jalur permintaan. Diekstrak dari reqPath.
reqPort target.port Minta port. Diekstrak dari reqPort.
rspContentType target.file.mime_type Jenis konten respons. Diekstrak dari rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Aturan keamanan. Diekstrak dari securityRules. Bagian pertama dipetakan ke rule_name, dan sisanya ditambahkan sebagai label dengan kunci "non_deny_rules" dan "deny_rule_format".
statusCode network.http.response_code Kode status. Diekstrak dari statusCode.
state principal.location.state, target.user.personal_address.state Negara bagian/provinsi. Diekstrak dari state.
tlsVersion network.tls.version Versi TLS. Diekstrak dari tlsVersion.
type metadata.product_event_type Jenis peristiwa. Diekstrak dari type.
UA network.http.user_agent Agen pengguna. Diekstrak dari UA.
version metadata.product_version, principal.asset.software.version Versi. Diekstrak dari version.
T/A metadata.event_timestamp Stempel waktu peristiwa berasal dari kolom _ts di log akamai_lds, kolom httpMessage.start di log akamai_siem, atau kolom log_date dalam format lain.
T/A metadata.vendor_name Dikodekan secara permanen ke "Akamai".
T/A metadata.product_name Hardcode ke "Kona".
T/A metadata.log_type Dikodekan secara permanen ke "AKAMAI_WAF".
T/A network.application_protocol Tetapkan ke "HTTP" untuk log akamai_siem dan akamai_lds, atau "DNS" untuk format lainnya.
T/A security_result.severity Setel ke MEDIUM untuk tindakan "alert", CRITICAL untuk tindakan "deny", dan HIGH untuk tindakan lainnya.
T/A event.idm.read_only_udm.metadata.event_type Tetapkan ke "NETWORK_HTTP" untuk sebagian besar format log, "GENERIC_EVENT" untuk peristiwa dengan kolom eventId atau eventData, atau "STATUS_UPDATE" untuk peristiwa dengan cli_ip atau p_ip, tetapi tanpa reqHost.

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