Mengumpulkan log Fortinet FortiWeb

Didukung di:

Dokumen ini menjelaskan cara menyerap log Fortinet FortiWeb ke Google Security Operations menggunakan Bindplane.

Parser mengekstrak kolom dari log berformat KV Fortinet FortiWeb. Log ini menggunakan grok dan/atau kv untuk mengurai pesan log, lalu memetakan nilai ini ke Model Data Terpadu (UDM). Layanan ini juga menetapkan nilai metadata default untuk sumber dan jenis peristiwa.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows Server 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses istimewa ke antarmuka web Fortinet FortiWeb

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

Layanan akan ditampilkan sebagai RUNNING.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sudo systemctl status observiq-otel-collector
    

Layanan akan ditampilkan sebagai aktif (berjalan).

Referensi penginstalan tambahan

Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.

Mengonfigurasi agen BindPlane untuk menyerap syslog dan mengirimkannya ke Google SecOps

Cari file konfigurasi

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'FORTINET_FORTIWEB'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Parameter konfigurasi

  • Ganti placeholder berikut:

    • Konfigurasi penerima:

      • udplog: Gunakan udplog untuk syslog UDP atau tcplog untuk syslog TCP
      • 0.0.0.0: Alamat IP yang akan didengarkan (0.0.0.0 untuk mendengarkan semua antarmuka)
      • 514: Nomor port yang akan diproses (port syslog standar)
    • Konfigurasi eksportir:

      • creds_file_path: Jalur lengkap ke file autentikasi penyerapan:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: ID Pelanggan dari bagian Dapatkan ID pelanggan
      • endpoint: URL endpoint regional:
        • Amerika Serikat: malachiteingestion-pa.googleapis.com
        • Eropa: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya
      • log_type: Jenis log persis seperti yang muncul di Chronicle (FORTINET_FORTIWEB)

Simpan file konfigurasi

  • Setelah mengedit, simpan file:
    • Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
    • Windows: Klik File > Save

Mulai ulang agen Bindplane untuk menerapkan perubahan

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

    sudo systemctl restart observiq-otel-collector
    
    1. Pastikan layanan sedang berjalan:

        sudo systemctl status observiq-otel-collector
      
    2. Periksa log untuk mengetahui error:

        sudo journalctl -u observiq-otel-collector -f
      
  • Untuk memulai ulang agen Bindplane di Windows, pilih salah satu opsi berikut:

    • Command Prompt atau PowerShell sebagai administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Konsol layanan:

      1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
      2. Temukan observIQ OpenTelemetry Collector.
      3. Klik kanan, lalu pilih Mulai Ulang.

      4. Pastikan layanan sedang berjalan:

        sc query observiq-otel-collector
        
      5. Periksa log untuk mengetahui error:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Mengonfigurasi penerusan syslog Fortinet FortiWeb

  1. Login ke antarmuka web FortiWeb.
  2. Buka Log & Report > Log Config > Other Log Settings.
  3. Di bagian Syslog Policy, klik Create New untuk menambahkan kebijakan syslog baru.
  4. Berikan detail konfigurasi berikut:
    • Nama Kebijakan: Masukkan nama deskriptif (misalnya, Google-SecOps-Bindplane).
    • Alamat IP: Masukkan alamat IP host agen Bindplane.
    • Port: Masukkan 514.
    • Aktifkan: Pilih Aktifkan.
    • Fasilitas: Pilih local0 (atau fasilitas pilihan Anda).
    • Log Level: Pilih information (atau level pilihan Anda).
  5. Di bagian Log Type, aktifkan opsi berikut:
    • Log Serangan
    • Log Peristiwa
    • Log Traffic
  6. Klik Oke untuk menyimpan.
  7. Pastikan pesan syslog dikirim dengan memeriksa log agen Bindplane.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
tindakan additional.fields[].value.string_value Nilai dipetakan secara langsung.
tindakan security_result.action_details Jika tindakan adalah "Izinkan" atau "terima", security_result.action_details disetel ke "ALLOW". Jika tindakan adalah "Denied", "deny", "block", atau "Block", security_result.action_details disetel ke "BLOCK".
aplikasi network.application_protocol Nilai dipetakan secara langsung setelah diubah menjadi huruf besar. Hanya jika nilainya adalah salah satu dari HTTPS, HTTP, DNS, DHCP, SMB.
app_name additional.fields[].key Kunci ditetapkan ke "appName".
app_name additional.fields[].value.string_value Nilai dipetakan secara langsung.
backend_service additional.fields[].key Kunci ditetapkan ke "backend_service".
backend_service additional.fields[].value.string_value Nilai dipetakan secara langsung.
cat security_result.category_details Nilai dipetakan secara langsung.
client_level security_result.category Jika client_level adalah "Malicious", security_result.category ditetapkan ke "NETWORK_MALICIOUS".
cn1 additional.fields[].value.string_value Dipetakan ke kolom threatWeight.
cn1Label additional.fields[].key Kunci ditetapkan ke nilai cn1Label.
cn2 additional.fields[].value.string_value Dipetakan ke kolom panjang.
cn2Label additional.fields[].key Kunci ditetapkan ke nilai cn2Label.
cn3 additional.fields[].value.string_value Dipetakan ke kolom signatureID.
cn3Label additional.fields[].key Kunci ditetapkan ke nilai cn3Label.
cs1 additional.fields[].value.string_value Nilai dipetakan secara langsung.
cs1Label additional.fields[].key Kunci ditetapkan ke nilai cs1Label.
cs1 principal.user.product_object_id Nilai dipetakan secara langsung saat cs1Label cocok dengan "userID" (tidak peka huruf besar/kecil).
cs2 additional.fields[].value.string_value Nilai dipetakan secara langsung.
cs2Label additional.fields[].key Kunci disetel ke nilai cs2Label.
cs2 principal.user.userid Nilai dipetakan secara langsung jika cs2Label cocok dengan "userName" (tidak peka huruf besar/kecil) dan suid kosong.
cs3 additional.fields[].value.string_value Nilai dipetakan secara langsung.
cs3Label additional.fields[].key Kunci disetel ke nilai cs3Label.
cs3 metadata.severity Nilai dipetakan secara langsung jika cs3Label adalah "level" dan cs3 tidak kosong.
cs4 additional.fields[].value.string_value Dipetakan ke kolom subType.
cs4Label additional.fields[].key Kunci ditetapkan ke nilai cs4Label.
cs5 additional.fields[].value.string_value Dipetakan ke kolom threatLevel.
cs5Label additional.fields[].key Kunci disetel ke nilai cs5Label.
cs6 additional.fields[].value.string_value Dipetakan ke kolom owaspTop10.
cs6Label additional.fields[].key Kunci disetel ke nilai cs6Label.
tanggal metadata.event_timestamp.seconds Digabungkan dengan waktu dan diuraikan untuk menghasilkan detik epoch.
dev_id principal.resource.id Nilai dipetakan secara langsung.
devname principal.resource.name Nilai dipetakan secara langsung.
device_event_class_id metadata.product_event_type Digunakan dalam penguraian CEF.
device_product metadata.product_name Digunakan dalam penguraian CEF.
device_vendor metadata.vendor_name Digunakan dalam penguraian CEF.
device_version metadata.product_version Digunakan dalam penguraian CEF.
dhost target.hostname Nilai dipetakan secara langsung.
dpt target.port Nilai dipetakan dan dikonversi langsung ke bilangan bulat.
dst target.ip Nilai dipetakan secara langsung.
dst_port target.port Nilai dipetakan dan dikonversi langsung ke bilangan bulat.
dstepid target.process.pid Nilai dipetakan secara langsung.
dsteuid target.user.userid Nilai dipetakan secara langsung.
event_name metadata.product_event_type Digunakan dalam penguraian CEF.
http_agent network.http.parsed_user_agent Nilai diuraikan sebagai string agen pengguna.
http_method network.http.method Nilai dipetakan secara langsung.
http_refer network.http.referral_url Nilai dipetakan secara langsung.
http_session_id network.session_id Nilai dipetakan secara langsung.
http_url target.url Nilai dipetakan secara langsung.
http_version metadata.product_version Nilai dipetakan secara langsung.
panjang additional.fields[].key Kunci ditetapkan ke "length".
panjang additional.fields[].value.string_value Nilai dipetakan secara langsung.
log_type metadata.log_type Dikodekan secara permanen ke "FORTINET_FORTIWEB".
main_type additional.fields[].key Kunci ditetapkan ke "mainType".
main_type additional.fields[].value.string_value Nilai dipetakan secara langsung.
pesan Berbagai kolom Diuraikan menggunakan filter grok dan kv untuk mengekstrak berbagai kolom.
ml_allow_method additional.fields[].key Kunci ditetapkan ke "ml_allow_method".
ml_allow_method additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_arg_dbid additional.fields[].key Kunci ditetapkan ke "ml_arg_dbid".
ml_arg_dbid additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_domain_index additional.fields[].key Kunci ditetapkan ke "ml_domain_index".
ml_domain_index additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_log_arglen additional.fields[].key Kunci ditetapkan ke "ml_log_arglen".
ml_log_arglen additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_log_hmm_probability additional.fields[].key Kunci ditetapkan ke "ml_log_hmm_probability".
ml_log_hmm_probability additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_log_sample_arglen_mean additional.fields[].key Kunci ditetapkan ke "ml_log_sample_arglen_mean".
ml_log_sample_arglen_mean additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_log_sample_prob_mean additional.fields[].key Kunci ditetapkan ke "ml_log_sample_prob_mean".
ml_log_sample_prob_mean additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_svm_accuracy additional.fields[].key Kunci ditetapkan ke "ml_svm_accuracy".
ml_svm_accuracy additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_svm_log_main_types additional.fields[].key Kunci ditetapkan ke "ml_svm_log_main_types".
ml_svm_log_main_types additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_svm_log_match_types additional.fields[].key Kunci ditetapkan ke "ml_svm_log_match_types".
ml_svm_log_match_types additional.fields[].value.string_value Nilai dipetakan secara langsung.
ml_url_dbid additional.fields[].key Kunci ditetapkan ke "ml_url_dbid".
ml_url_dbid additional.fields[].value.string_value Nilai dipetakan secara langsung.
monitor_status additional.fields[].key Kunci ditetapkan ke "monitor_status".
monitor_status additional.fields[].value.string_value Nilai dipetakan secara langsung.
msg metadata.description Nilai dipetakan secara langsung.
owasp_top10 additional.fields[].key Kunci ditetapkan ke "owaspTop10".
owasp_top10 additional.fields[].value.string_value Nilai dipetakan secara langsung.
principal_app principal.application Nilai dipetakan secara langsung.
principal_host principal.hostname Nilai dipetakan secara langsung.
proto network.ip_protocol Nilai dipetakan secara langsung setelah diubah menjadi huruf besar.
permintaan target.url Nilai dipetakan secara langsung.
requestMethod network.http.method Nilai dipetakan secara langsung.
rt metadata.event_timestamp.seconds Diuraikan sebagai milidetik sejak epoch dan dikonversi menjadi detik.
security_result.severity security_result.severity Diperoleh dari severity_level. Dipetakan ke nilai tingkat keparahan UDM yang berbeda berdasarkan nilai log mentah. Defaultnya adalah UNKNOWN_SEVERITY jika tidak ditemukan kecocokan.
server_pool_name additional.fields[].key Kunci ditetapkan ke "server_pool_name".
server_pool_name additional.fields[].value.string_value Nilai dipetakan secara langsung.
pelanggan network.application_protocol Nilai dipetakan secara langsung setelah diubah menjadi huruf besar.
pelanggan target.application Nilai dipetakan secara langsung setelah diubah menjadi huruf besar jika bukan salah satu dari HTTPS, HTTP, DNS, DHCP, atau SMB.
tingkat keseriusan, security_result.severity Jika severity kosong dan cs3Label adalah "level", nilai cs3 akan digunakan. Kemudian dipetakan ke nilai tingkat keparahan UDM (RENDAH, TINGGI, dll.).
signature_id security_result.rule_id Nilai dipetakan secara langsung.
signature_subclass security_result.detection_fields[].key Kunci ditetapkan ke "signature_subclass".
signature_subclass security_result.detection_fields[].value Nilai dipetakan secara langsung.
src principal.ip Nilai dipetakan secara langsung.
src_country principal.location.country_or_region Nilai dipetakan secara langsung.
src_ip principal.ip Nilai dipetakan secara langsung.
src_port principal.port Nilai dipetakan dan dikonversi langsung ke bilangan bulat.
srccountry principal.location.country_or_region Nilai dipetakan secara langsung.
sub_type additional.fields[].key Kunci ditetapkan ke "subType".
sub_type additional.fields[].value.string_value Nilai dipetakan secara langsung.
subtype target.resource.resource_subtype Nilai dipetakan secara langsung.
suid principal.user.userid Nilai dipetakan secara langsung.
threat_level additional.fields[].key Kunci ditetapkan ke "threatLevel".
threat_level additional.fields[].value.string_value Nilai dipetakan secara langsung.
threat_weight security_result.detection_fields[].key Kunci ditetapkan ke "threat_weight".
threat_weight security_result.detection_fields[].value Nilai dipetakan secara langsung.
waktu metadata.event_timestamp.seconds Digabungkan dengan tanggal dan diuraikan untuk menghasilkan detik epoch.
user_id principal.user.product_object_id Nilai dipetakan secara langsung.
user_name additional.fields[].key Kunci ditetapkan ke "userName".
user_name additional.fields[].value.string_value Nilai dipetakan secara langsung.
user_name principal.user.userid Nilai dipetakan secara langsung.
T/A metadata.event_type Ditetapkan ke "NETWORK_CONNECTION" jika principal.ip dan target.ip ada. Ditetapkan ke "USER_UNCATEGORIZED" jika principal.ip dan principal.user ada. Disetel ke "STATUS_UPDATE" jika hanya principal.ip yang ada. Jika tidak, ditetapkan ke "GENERIC_EVENT".
T/A metadata.log_type Dikodekan secara permanen ke "FORTINET_FORTIWEB".
T/A metadata.product_name Dikodekan secara permanen ke "FORTINET FORTIWEB" atau "FortiWEB Cloud" berdasarkan format log.
T/A metadata.vendor_name Dikodekan secara permanen ke "FORTINET" atau "Fortinet" berdasarkan format log.
T/A principal.resource.resource_type Di-hardcode ke "DEVICE" jika dev_id ada.

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