Mengumpulkan log Imperva FlexProtect

Didukung di:

Dokumen ini menjelaskan cara menyerap log Imperva FlexProtect ke Google Security Operations menggunakan agen Bindplane.

Parser mengekstrak kolom dari log berformat syslog Imperva FlexProtect dalam CEF (Common Event Format) dengan ekstensi kunci-nilai. Log ini menggunakan grok dan/atau kv untuk mengurai pesan CEF, lalu memetakan nilai ini ke Model Data Terpadu (UDM). Fungsi ini juga menetapkan nilai metadata default untuk sumber dan jenis peristiwa. Imperva FlexProtect menyediakan deployment fleksibel solusi keamanan Imperva (SecureSphere, Cloud WAF, Bot Protection) di berbagai lingkungan hybrid cloud.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Host Windows 2016 atau yang lebih baru atau Linux dengan systemd
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses istimewa ke konsol pengelolaan Imperva FlexProtect atau konsol produk individual

Mendapatkan kredensial Google SecOps untuk agen Bindplane

Untuk mengautentikasi agen Bindplane ke Google SecOps, pilih salah satu metode berikut:

  • Deployment baru: Gunakan Chronicle API (Opsi 1).
  • Deployment lama: Terus gunakan file autentikasi penyerapan (Opsi 2) hingga Ingestion API dihentikan pada 20 Juli 2027.
  1. Login ke konsolGoogle Cloud dan pilih project Google Cloud yang ditautkan ke instance Google SecOps Anda.
  2. Buka IAM & Admin > Service Accounts.
  3. Klik Create service account.
  4. Berikan detail konfigurasi berikut:
    • Service account name: Masukkan nama akun (misalnya, bindplane-ingest).
    • Deskripsi akun layanan: Masukkan deskripsi (misalnya, Bindplane agent log ingestion).
  5. Klik Create and continue.
  6. Di bagian Grant this service account access to project, klik Select a role, lalu pilih Chronicle Editor.
  7. Klik Continue lalu klik Done.
  8. Klik akun layanan yang Anda buat, lalu buka tab Keys.
  9. Klik Add key > Create new key.
  10. Pilih JSON, lalu klik Create. File kunci akan didownload ke komputer Anda.
  11. Simpan file kunci sebagai ingestion-auth.json di direktori pengumpul Bindplane (/opt/observiq-otel-collector/ingestion-auth.json di Linux atau C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json di Windows), atau perbarui creds_file_path di config.yaml agar cocok dengan jalur tempat Anda menyimpannya.
  12. Buka IAM & Admin > Settings dan salin Project number. Anda akan memerlukannya untuk konfigurasi pengekspor.

Opsi 2: Mendownload file autentikasi penyerapan (lama)

  1. Login ke konsol Google SecOps.
  2. Buka SIEM Settings > Collection Agents.
  3. Download file autentikasi penyerapan.
  4. Simpan file dengan aman di sistem tempat agen Bindplane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka SIEM Settings > Profile.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. Jalankan perintah berikut:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Referensi penginstalan tambahan

Untuk opsi penginstalan tambahan, lihat Panduan penginstalan agen Bindplane.

Mengonfigurasi agen Bindplane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. Akses file konfigurasi:

    • Cari file config.yaml. Biasanya, file ini berada di direktori /opt/observiq-otel-collector/ di Linux atau di direktori penginstalan di Windows.
    • Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  2. Edit file config.yaml sebagai berikut:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: chronicle.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_FLEXPROTECT'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
    • Ganti <LOCATION> dengan region instance Google SecOps Anda (misalnya, us, europe, atau asia-southeast1). Pengekspor akan menambahkan awalan chronicle.googleapis.com dengan nilai ini.
    • Ganti <PROJECT_NUMBER> dengan nomor project dari IAM & Admin > Settings.
    • Ganti <CUSTOMER_ID> dengan ID Pelanggan yang sebenarnya.
    • Ganti /path/to/ingestion-authentication-file.json dengan jalur file tempat file kunci akun layanan (Opsi 1) disimpan di Langkah 1.

Pengekspor API penyerapan lama

  • Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok exporters dengan kode berikut. Tetapkan creds_file_path ke jalur ke file autentikasi penyerapan, dan jika instance Anda berada di luar AS, ganti malachiteingestion-pa.googleapis.com dengan endpoint regional Anda (misalnya, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_FLEXPROTECT'
        raw_log_field: body
        ingestion_labels:
    

Mulai ulang agen Bindplane untuk menerapkan perubahan

  1. Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:

    sudo systemctl restart observiq-otel-collector
    
  2. Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Mengonfigurasi penerusan Syslog di Imperva FlexProtect

Untuk Komponen SecureSphere (lokal/cloud)

  1. Login ke Konsol Pengelolaan Imperva SecureSphere.
  2. Buka Configuration > Action Sets.
  3. Klik Add untuk membuat Set Tindakan baru.
  4. Klik Add Action, lalu berikan detail konfigurasi berikut:

    • Name: Masukkan nama deskriptif (misalnya, Google SecOps Syslog).
    • Action Type: Pilih Syslog.
    • Host: Masukkan alamat IP agen Bindplane.
    • Port: Masukkan nomor port agen Bindplane (default 514).
    • Protocol: Pilih UDP atau TCP.
    • Syslog Log Level: Pilih DEBUG.
    • Syslog Facility: Pilih LOCAL0.
    • Format: Pilih CEF (Common Event Format).
  5. Simpan konfigurasi tindakan dan terapkan ke kebijakan keamanan yang relevan.

Untuk Komponen Cloud WAF/Incapsula

  1. Login ke Konsol Cloud Imperva.
  2. Buka Log > Log Setup.
  3. Konfigurasi tujuan syslog:
    • Host: Masukkan alamat IP agen Bindplane.
    • Port: Masukkan nomor port agen Bindplane (default 514).
    • Protocol: Pilih UDP atau TCP.
    • Format: Pilih CEF.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
act read_only_udm.security_result.action_details Dipetakan langsung dari kolom act.
app read_only_udm.network.application_protocol Dipetakan langsung dari kolom app.
ccode read_only_udm.principal.location.country_or_region Dipetakan langsung dari kolom ccode.
cicode read_only_udm.principal.location.city Dipetakan langsung dari kolom cicode.
cn1 read_only_udm.network.http.response_code Dipetakan langsung dari kolom cn1 setelah dikonversi ke bilangan bulat.
cs1 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs1.
cs2 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs2.
cs3 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs3.
cs4 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs4.
cs5 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs5.
cs6 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs6.
cs7 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs7.
cs8 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs8.
cs9 read_only_udm.additional.fields.value.string_value Dipetakan langsung dari kolom cs9.
cpt read_only_udm.principal.port Dipetakan langsung dari kolom cpt setelah dikonversi menjadi bilangan bulat.
Customer read_only_udm.principal.user.user_display_name Dipetakan langsung dari kolom Customer.
deviceExternalId read_only_udm.about.asset.asset_id Nilai ini diperoleh dengan menggabungkan "Incapsula.SIEMintegration:" dengan kolom deviceExternalId.
deviceFacility read_only_udm.principal.location.city Dipetakan langsung dari kolom deviceFacility.
dproc read_only_udm.target.process.command_line Dipetakan langsung dari kolom dproc.
end read_only_udm.security_result.detection_fields.value Dipetakan langsung dari kolom end.
fileId read_only_udm.network.session_id Dipetakan langsung dari kolom fileId.
filePermission read_only_udm.about.resource.attribute.permissions.name Dipetakan langsung dari kolom filePermission.
in read_only_udm.network.received_bytes Dipetakan langsung dari kolom in.
qstr read_only_udm.security_result.detection_fields.value Dipetakan langsung dari kolom qstr.
request read_only_udm.target.url Dipetakan langsung dari kolom request.
requestClientApplication read_only_udm.network.http.user_agent Dipetakan langsung dari kolom requestClientApplication.
requestMethod read_only_udm.network.http.method Dipetakan langsung dari kolom requestMethod.
siteid read_only_udm.security_result.detection_fields.value Dipetakan langsung dari kolom siteid.
sip read_only_udm.target.ip Dipetakan langsung dari kolom sip.
sourceServiceName read_only_udm.principal.application Dipetakan langsung dari kolom sourceServiceName.
spt read_only_udm.target.port Dipetakan langsung dari kolom spt setelah dikonversi menjadi bilangan bulat.
src read_only_udm.principal.ip Dipetakan langsung dari kolom src.
start read_only_udm.security_result.detection_fields.value Dipetakan langsung dari kolom start.
suid read_only_udm.principal.user.userid Dipetakan langsung dari kolom suid.
ver read_only_udm.network.tls.version Dipetakan langsung dari kolom ver.
read_only_udm.about.asset.asset_id Nilai ini diperoleh dengan menggabungkan "Incapsula.SIEMintegration:" dengan kolom deviceExternalId.
read_only_udm.additional.fields.key Nilai ditentukan oleh logika parser berdasarkan label kolom, misalnya:
- cs1Label dipetakan ke "Cap Support"
- cs2Label dipetakan ke "Javascript Support"
- cs3Label dipetakan ke "CO Support"
- cs4Label dipetakan ke "VID"
- cs5Label dipetakan ke "clappsig"
- cs6Label dipetakan ke "clapp"
- cs7Label dipetakan ke "latitude"
- cs8Label dipetakan ke "longitude"
- cs9Label dipetakan ke "Rule name"
read_only_udm.metadata.event_timestamp.nanos Dipetakan langsung dari kolom collection_time.nanos.
read_only_udm.metadata.event_timestamp.seconds Dipetakan langsung dari kolom collection_time.seconds.
read_only_udm.metadata.event_type Nilai ditentukan berdasarkan ada tidaknya kolom src dan sip:
- Jika keduanya ada, nilai ditetapkan ke "NETWORK_HTTP".
- Jika hanya src yang ada, nilai ditetapkan ke "USER_UNCATEGORIZED".
- Jika tidak, nilai ditetapkan ke "GENERIC_EVENT".
read_only_udm.metadata.product_event_type Nilai ini diperoleh dengan menggabungkan "[", nilai numerik dari kolom header CEF di indeks 4, "] - ", dan deskripsi teks dari kolom header CEF di indeks 4.
read_only_udm.metadata.product_name Nilai ditetapkan secara statis ke "SIEMintegration".
read_only_udm.metadata.product_version Nilai ditetapkan secara statis ke "1".
read_only_udm.metadata.vendor_name Nilai ditetapkan secara statis ke "Incapsula".
read_only_udm.security_result.detection_fields.key Nilai ditetapkan secara statis ke "siteid", "event_start_time", "event_end_time", atau "qstr" berdasarkan kolom terkait yang sedang diproses.
read_only_udm.security_result.severity Nilai ditetapkan secara statis ke "LOW".
read_only_udm.target.port Dipetakan langsung dari kolom spt setelah dikonversi ke bilangan bulat.
qstr security_results.detection_fields Dipetakan dari log perubahan
siteid security_results.detection_fields Dipetakan dari log perubahan
device_facility principal.location.city Dipetakan dari log perubahan
start security_result.detection_fields.event_start_time Dipetakan dari log perubahan
cs8Label additional_cs8.key Dipetakan dari log perubahan
cs8 additional_cs8.value.string_value Dipetakan dari log perubahan
cs9Label additional_cs9.key Dipetakan dari log perubahan
cs9 additional_cs9.value.string_value Dipetakan dari log perubahan
end security_result.detection_fields.event_end_time Dipetakan dari log perubahan

Log Perubahan

Melihat Log Perubahan untuk parser ini

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