Mengumpulkan log Akamai WAF

Didukung di:

Ringkasan

Parser ini menangani log Firewall Aplikasi Web (WAF) Akamai, yang mendukung format syslog dan CEF. Alat ini mengekstrak kolom seperti alamat IP, URL, metode HTTP, kode respons, agen pengguna, dan informasi aturan keamanan, serta memetakan kolom tersebut ke 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 memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke AWS IAM dan S3.
  • Pastikan Anda memiliki akses dengan hak istimewa ke Akamai.

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 file .csv. (Simpan Access Key dan Secret Access Key untuk referensi di masa mendatang).
  12. Klik Done.
  13. Pilih tab Izin.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Lampirkan kebijakan secara langsung.
  17. Telusuri 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 Logs.
  4. Konfigurasikan Pengiriman Log baru:

    • Sumber Log: Pilih konfigurasi WAF Anda.
    • Delivery Target: Pilih Amazon S3.
    • S3 Bucket: Tentukan nama bucket S3 yang Anda buat.
    • Region: Pilih region AWS tempat bucket S3 Anda berada.
    • Access Key ID dan Secret Access Key: Berikan kredensial yang Anda buat.
    • Format Log: Pilih format log yang relevan (misalnya, JSON).
    • Frekuensi Pengiriman: Pilih frekuensi yang sesuai untuk pengiriman log (misalnya, setiap 5 menit).
  5. Verifikasi pengiriman log:

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

Mengonfigurasi feed di Google SecOps untuk menyerap log Akamai WAF

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Akamai WAF Logs).
  4. Pilih Amazon S3 sebagai Source type.
  5. Pilih Akamai WAF sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:

    • Region: region tempat bucket Amazon S3 berada.
    • S3 URI: 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 menyertakan subdirektori.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • Access Key ID: Kunci akses pengguna dengan akses ke bucket s3.
    • Kunci Akses Rahasia: kunci rahasia Pengguna dengan akses ke bucket s3.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang akan diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.

  9. Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.

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 lain ("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 akun utama dengan kunci "reputasi".
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 Peristiwa. 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 peristiwa. Diekstrak dari eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nama peristiwa. 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 peristiwa. 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 ke 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 akan 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 Status. 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 dalam log akamai_lds, kolom httpMessage.start dalam log akamai_siem, atau kolom log_date dalam format lain.
T/A metadata.vendor_name Di-hardcode ke "Akamai".
T/A metadata.product_name Di-hardcode ke "Kona".
T/A metadata.log_type Di-hardcode 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 Tetapkan 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 tidak ada reqHost.

Perubahan

2024-05-21

  • Penyempurnaan
  • Memetakan "rules.data" ke "security_result.detection_fields".
  • Memetakan "rules.action", "rules.selector", dan "rules.version" ke "security_result.action_details".
  • Memetakan "rules.id" ke "security_result.rule_id",
  • Memetakan "rules.tag" ke "security_result.category_details".
  • Memetakan "rules.message" ke "security_result.threat_name".

2024-03-01

  • Penyempurnaan
  • Memetakan "attackData.configId" ke "metadata.product_log_id" dan "security_result.detection_fields".

2023-10-27

  • Penyempurnaan
  • Memetakan "rule.id" ke "security_result.rule_id".
  • Jika "httpMessage.host" tidak ada, ubah nilai yang ditetapkan di "metadata.event_type" dari "NETWORK_HTTP" menjadi "GENERIC_EVENT".
  • Menambahkan dukungan untuk mengurai "attackData" saat "attackData.rules" adalah array.

2023-04-24

  • Penyempurnaan
  • Log yang diuraikan dan diserap dalam format CEF.

2023-04-04

  • Penyempurnaan
  • Memetakan 'reqHost' ke 'target.hostname'.
  • Memetakan 'reqPort' ke 'target.port'.
  • Memetakan 'reqPath' ke 'target.url'.
  • Memetakan 'reqId' ke 'network.session_id'.
  • Memetakan 'statusCode' ke 'network.http.response_code'.
  • Memetakan 'reqMethod' ke 'network.http.method'.
  • Memetakan 'UA' ke 'network.http.user_agent'.
  • Memetakan 'byte' ke 'network.sent_bytes'.
  • Memetakan 'reqMethod' ke 'network.http.method'.
  • Log yang gagal diuraikan dalam format syslog.
  • Menambahkan pemeriksaan kondisi untuk 'attackData.rules' untuk penguraian yang tepat.
  • Mengubah 'metadata.event_type' menjadi 'NETWORK_HTTP' dari 'STATUS_UPDATE' jika memungkinkan.

2022-08-12

  • Penyempurnaan
  • Memetakan "security_policy_id" ke security_result.rule_name.
  • Memetakan "non_deny_rules" ke security_result.about.resource.attribute.labels.
  • Memetakan "deny_rule_format" ke security_result.about.resource.attribute.labels.

2022-11-07

  • Penyempurnaan
  • memperbarui SecurityRules untuk memeriksa ["-"] juga dalam data.

2022-06-14

  • Penyempurnaan
  • Memetakan security_rules ke security_result.rule_name.
  • Kota yang dipetakan ke principal.location.city.
  • Negara yang dipetakan ke principal.location.country_or_region.
  • Memetakan cli_ip ke principal.ip.
  • Status yang dipetakan ke target.user.personal_address.state.
  • Versi yang dipetakan ke metadata.product_version.
  • Memetakan useragent ke network.http.user_agent.

2022-06-14

  • Enhancement-
  • Memetakan proto ke security_result.summary.
  • Memetakan securityRules ke security_result.rule_name.
  • Kota yang dipetakan ke principal.location.city.
  • Negara yang dipetakan ke principal.location.country_or_region.
  • Memetakan cliIP ke principal.ip.
  • Memetakan cp ke event.idm.read_only_udm.additional.fields.
  • Memetakan reqId ke metadata.product_log_id.
  • Memetakan rspContentType ke target.file.mime_type.
  • Status yang dipetakan ke target.user.personal_address.state.
  • Versi yang dipetakan ke principal.asset.software.version.

2022-03-23

  • Perbaikan bug-Perbaikan untuk kegagalan menguraikan data dengan semua pola pencocokan.
  • Menambahkan pemetaan untuk kolom baru.
  • eventId dipetakan ke metadata.product_log_id.
  • eventDefinitionId dipetakan ke target.resource.product_object_id.
  • eventDescription dipetakan ke metadata.description.
  • eventName dipetakan ke metadata.product_event_type.
  • eventTypeName dipetakan ke additional.fields.
  • eventTypeId dipetakan ke additional.fields.
  • eventData dipetakan ke additional.fields.