Mengumpulkan log CMS Wordpress

Didukung di:

Ringkasan

Parser ini mengekstrak log CMS WordPress dari pesan berformat JSON atau teks biasa. Log ini menangani log berformat JSON dan non-JSON, mengurai kolom yang relevan, dan memetakan ke UDM, termasuk detail pengguna, informasi jaringan, atribut resource, dan detail hasil keamanan. Parser juga melakukan beberapa transformasi data, seperti mengonversi jenis data, menggabungkan kolom, dan menangani pola log tertentu untuk Kubernetes dan resource lainnya.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke situs WordPress.
  • Plugin yang mengaktifkan fungsi webhook (misalnya, WP Webhooks).

Mengonfigurasi feed di Google SecOps untuk menyerap log WordPress

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log WordPress).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih Wordpress sebagai Jenis log.
  6. Klik Berikutnya.
  7. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Selesai.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ganti kode berikut:

  • ENDPOINT_URL: URL endpoint feed.
  • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
  • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Mengonfigurasi Webhook Wordpress

  1. Instal dan aktifkan plugin WP Webhooks (atau plugin webhook yang Anda pilih) melalui direktori plugin WordPress.
  2. Buka submenu WP Webhooks di menu administrator WordPress, biasanya terletak di bagian setelan.
  3. Klik Kirim Data di menu panel atas.
  4. Pilih tindakan WordPress yang akan memicu webhook. Contoh umum mencakup publish_post (saat postingan baru dipublikasikan), user_register (saat pengguna baru mendaftar), atau comment_post (saat komentar baru diposting). Hal ini bergantung pada data yang Anda pilih dan kirim ke Google SecOps.
  5. Klik Tambahkan URL Webhook.
  6. Konfigurasi Webhook:
    • Nama: Berikan nama deskriptif untuk webhook Anda (misalnya, Feed Google SecOps).
    • URL Webhook: Tempelkan URL endpoint Google SecOps Anda.
  7. Klik Simpan Webhook.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
ClientIP principal.ip Alamat IP klien diekstrak dari kolom ClientIP dalam log mentah.
Code target.resource.attribute.labels.key Nilai "Code" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
Code target.resource.attribute.labels.value Nilai kolom Code dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
CurrentUserID target.user.userid CurrentUserID dari log mentah dikonversi menjadi string dan dipetakan ke kolom target.user.userid.
EditUserLink target.url EditUserLink dari log mentah dipetakan ke kolom target.url.
EventType metadata.product_event_type EventType dari log mentah dipetakan ke kolom metadata.product_event_type.
FirstName target.user.first_name FirstName dari log mentah dipetakan ke kolom target.user.first_name.
insertId metadata.product_log_id insertId dari log mentah dipetakan ke kolom metadata.product_log_id.
labels.compute.googleapis.com/resource_name additional.fields.key Nilai "Resource Name" ditetapkan sebagai kunci dalam objek additional.fields.
labels.compute.googleapis.com/resource_name additional.fields.value.string_value Nilai labels.compute.googleapis.com/resource_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields.
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.key Nilai "Kubernetes IO Instance" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.value Nilai labels.k8s-pod/app_kubernetes_io/instance dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/app_kubernetes_io/managed-by target.resource.attribute.labels.key Nilai "Kubernetes IO Instance Manager" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/app_kubernetes_io/managed-by target.resource.attribute.labels.value Nilai labels.k8s-pod/app_kubernetes_io/managed-by dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.key Nilai "Kubernetes IO Instance Name" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.value Nilai labels.k8s-pod/app_kubernetes_io/name dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.key Nilai "Controller Revision Hash" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.value Nilai labels.k8s-pod/controller-revision-hash dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.key Nilai "Kubernetes IO Instance Manager SH" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.value Nilai labels.k8s-pod/helm_sh/chart dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/k8s-app target.resource.attribute.labels.key Nilai "Application" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/k8s-app target.resource.attribute.labels.value Nilai labels.k8s-pod/k8s-app dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/pod-template-generation target.resource.attribute.labels.key Nilai "Pod Template Generation" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/pod-template-generation target.resource.attribute.labels.value Nilai labels.k8s-pod/pod-template-generation dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
labels.k8s-pod/pod-template-hash target.resource.attribute.labels.key Nilai "Pod Template Hash" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
labels.k8s-pod/pod-template-hash target.resource.attribute.labels.value Nilai labels.k8s-pod/pod-template-hash dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
LastName target.user.last_name LastName dari log mentah dipetakan ke kolom target.user.last_name.
logName target.resource.attribute.labels.key Nilai "Nama Log" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels.
logName target.resource.attribute.labels.value Nilai kolom logName dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels.
receiveTimestamp metadata.event_timestamp receiveTimestamp dari log mentah diuraikan dan dipetakan ke kolom metadata.event_timestamp.
resource.labels.cluster_name additional.fields.key Nilai "Cluster Name" ditetapkan sebagai kunci dalam objek additional.fields.
resource.labels.cluster_name additional.fields.value.string_value Nilai resource.labels.cluster_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields.
resource.labels.cluster_name target.resource.resource_type Jika resource.labels.cluster_name ada, nilai "CLUSTER" akan ditetapkan ke target.resource.resource_type.
resource.labels.container_name metadata.product_event_type Jika resource.type adalah "k8s_container", nilai resource.labels.container_name beserta resource.labels.namespace_name akan digunakan untuk membuat metadata.product_event_type.
resource.labels.container_name target.resource.name Nilai resource.labels.container_name dari log mentah ditetapkan ke kolom target.resource.name.
resource.labels.location target.location.country_or_region Nilai resource.labels.location dari log mentah ditetapkan ke kolom target.location.country_or_region.
resource.labels.namespace_name additional.fields.key Nilai "Namespace Name" ditetapkan sebagai kunci dalam objek additional.fields.
resource.labels.namespace_name additional.fields.value.string_value Nilai resource.labels.namespace_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields.
resource.labels.namespace_name metadata.product_event_type Jika resource.type adalah "k8s_container", nilai resource.labels.namespace_name beserta resource.labels.container_name akan digunakan untuk membuat metadata.product_event_type.
resource.labels.node_name metadata.product_event_type Jika resource.type adalah "k8s_node", nilai resource.labels.node_name akan digunakan untuk membuat metadata.product_event_type.
resource.labels.pod_name additional.fields.key Nilai "Pod Name" ditetapkan sebagai kunci dalam objek additional.fields.
resource.labels.pod_name additional.fields.value.string_value Nilai resource.labels.pod_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields.
resource.labels.project_id additional.fields.key Nilai "Project Id" ditetapkan sebagai kunci dalam objek additional.fields.
resource.labels.project_id additional.fields.value.string_value Nilai resource.labels.project_id dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields.
resource.type target.resource.resource_subtype Nilai resource.type dari log mentah ditetapkan ke kolom target.resource.resource_subtype.
Roles target.user.user_role Kolom Roles dari log mentah dikonversi ke huruf besar dan dipetakan ke kolom target.user.user_role.
SessionID network.session_id SessionID dari log mentah dipetakan ke kolom network.session_id.
sev security_result.severity Nilai kolom sev menentukan nilai security_result.severity. "INFO" atau "NOTICE" dipetakan ke "INFORMATIONAL", "WARN" dipetakan ke "MEDIUM", dan "ERR" dipetakan ke "ERROR".
TargetUsername target.user.user_display_name TargetUsername dari log mentah dipetakan ke kolom target.user.user_display_name.
textPayload metadata.description Jika resource.type adalah "k8s_node", nilai textPayload akan dipetakan ke kolom metadata.description.
textPayload network.application_protocol Protokol (misalnya, HTTP) diekstrak dari kolom textPayload menggunakan pola grok.
textPayload network.http.method Metode HTTP (misalnya, GET, POST) diekstrak dari kolom textPayload menggunakan pola grok.
textPayload network.http.referral_url URL diekstrak dari kolom textPayload menggunakan pola grok.
textPayload network.http.response_code Kode respons HTTP diekstrak dari kolom textPayload menggunakan pola grok dan dikonversi menjadi bilangan bulat.
textPayload network.received_bytes Byte yang diterima diekstrak dari kolom textPayload menggunakan pola grok dan dikonversi menjadi bilangan bulat tanpa tanda tangan.
textPayload principal.ip Alamat IP sumber diekstrak dari kolom textPayload menggunakan pola grok.
textPayload security_result.description Deskripsi diekstrak dari kolom textPayload menggunakan pola grok.
textPayload target.file.full_path Jalur diekstrak dari kolom textPayload menggunakan pola grok.
UserAgent network.http.user_agent UserAgent dari log mentah dipetakan ke kolom network.http.user_agent. Nilai "USER_RESOURCE_ACCESS" ditetapkan ke metadata.event_type.

Perubahan

2024-05-07

  • Perbaikan bug:
  • Mengubah logika parser untuk mengurai log yang tidak diuraikan dan dihapus.

2023-05-25

  • Parser yang baru dibuat.

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