Mengumpulkan log firewall OPNsense

Didukung di:

Parser ini mengekstrak kolom dari log firewall OPNsense (format syslog dan CSV) dan memetakan kolom tersebut ke UDM. Alat ini menggunakan penguraian grok dan CSV untuk log aplikasi "filterlog", yang menangani berbagai format log dan protokol jaringan (TCP, UDP, ICMP, dll.) untuk mengisi kolom UDM seperti principal, target, network, dan security_result. Peristiwa ini juga menambahkan metadata seperti nama vendor dan produk, serta menentukan jenis peristiwa berdasarkan keberadaan informasi akun utama dan target.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Security Operations.
  • Pastikan Anda memiliki akses dengan hak istimewa ke antarmuka web OPNsense.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Proses Transfer.

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

  1. Untuk penginstalan Windows, jalankan skrip berikut:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Untuk penginstalan Linux, jalankan skrip berikut:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Opsi penginstalan tambahan dapat ditemukan di panduan penginstalan ini.

Mengonfigurasi Agen BindPlane untuk menyerap Syslog dan mengirim ke Google SecOps

  1. Akses komputer tempat BindPlane diinstal.
  2. Edit file config.yaml sebagai berikut:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: testNamespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Mulai ulang Agen BindPlane untuk menerapkan perubahan menggunakan perintah berikut: sudo systemctl bindplane restart

Menambahkan konfigurasi server Syslog ke OPNsense

  1. Login ke antarmuka web OPNsense.
  2. Buka Sistem > Setelan > Logging.
  3. Di bagian Remote Logging, aktifkan Send logs to remote syslog server dengan mencentang kotak.
  4. Di kolom Remote Syslog Servers, masukkan alamat IP server syslog, termasuk PORT (misalnya, 10.10.10.10:54525).
  5. Pilih Local0 sebagai fasilitas syslog.
  6. Tetapkan Tingkat Syslog sebagai Peringatan.

  7. Klik Save untuk menerapkan perubahan.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
column1 security_result.rule_id Dipetakan langsung dari column1.
column10 additional.fields[].key: "tos"
additional.fields[].value.string_value: Nilai column10
Dipetakan langsung dari column10, bertingkat di bawah additional.fields dengan kunci "tos".
column12 additional.fields[].key: "ttl"
additional.fields[].value.string_value: Nilai column12
Dipetakan langsung dari column12, bertingkat di bawah additional.fields dengan kunci "ttl".
column13 additional.fields[].key: "Id"
additional.fields[].value.string_value: Nilai column13
Dipetakan langsung dari column13, bertingkat di bawah additional.fields dengan kunci "Id".
column14 additional.fields[].key: "offset"
additional.fields[].value.string_value: Nilai column14
Dipetakan langsung dari column14, bertingkat di bawah additional.fields dengan kunci "offset".
column15 additional.fields[].key: "flags"
additional.fields[].value.string_value: Nilai column15
Dipetakan langsung dari column15, bertingkat di bawah additional.fields dengan "flag" kunci.
column17 network.ip_protocol Dipetakan langsung dari column17 setelah dikonversi ke huruf besar.
column18 network.received_bytes Dipetakan langsung dari column18 setelah dikonversi menjadi bilangan bulat tanpa tanda tangan.
column19 principal.ip Dipetakan langsung dari column19.
column20 target.ip Dipetakan langsung dari column20.
column21 principal.port (jika column17 adalah TCP atau UDP)
additional.fields[].key: "data_length"
additional.fields[].value.string_value: Nilai yang diekstrak (jika column17 adalah ICMP, GRE, ESP, atau IGMP)
Jika column17 adalah TCP/UDP, dipetakan langsung dari column21 dan dikonversi menjadi bilangan bulat. Jika tidak, nilai "datalength" diekstrak menggunakan grok dan ditempatkan di additional.fields dengan kunci "data_length".
column22 target.port Dipetakan langsung dari column22 jika column17 adalah TCP atau UDP, dan dikonversi menjadi bilangan bulat.
column24 additional.fields[].key: "tcp_flags"
additional.fields[].value.string_value: Nilai column24
Dipetakan langsung dari column24 jika column17 adalah TCP, bertingkat di bawah additional.fields dengan kunci "tcp_flags".
column29 additional.fields[].key: "tcp_options"
additional.fields[].value.string_value: Nilai column29
Dipetakan langsung dari column29 jika column17 adalah TCP, bertingkat di bawah additional.fields dengan kunci "tcp_options".
column4 additional.fields[].key: "tracker"
additional.fields[].value.string_value: Nilai column4
Dipetakan langsung dari column4, bertingkat di bawah additional.fields dengan kunci "pelacak".
column5 additional.fields[].key: "interface"
additional.fields[].value.string_value: Nilai column5
Dipetakan langsung dari column5, bertingkat di bawah additional.fields dengan "antarmuka" kunci.
column6 security_result.rule_type Dipetakan langsung dari column6.
column7 security_result.action Dipetakan dari column7. Jika "block", dikonversi menjadi huruf besar "BLOCK". Jika "pass", tetapkan ke "ALLOW".
column8 network.direction Dipetakan dari column8. Jika "in", tetapkan ke "INBOUND". Jika "keluar", tetapkan ke "KELUAR".
domain principal.administrative_domain Dipetakan langsung dari domain yang diekstrak grok. Tetapkan ke "NETWORK_CONNECTION" jika alamat IP utama dan target ada, jika tidak, tetapkan ke "GENERIC_EVENT". Di-hardcode ke "OPNSENSE". Di-hardcode ke "OPNSENSE".
message Berbagai kolom Diurai menggunakan filter grok dan csv untuk mengekstrak berbagai kolom. Lihat baris lain untuk pemetaan tertentu.
ts metadata.event_timestamp.seconds, timestamp.seconds Diurai dari kolom pesan menggunakan grok, lalu dikonversi menjadi stempel waktu. Nilai detik digunakan untuk mengisi metadata.event_timestamp.seconds dan timestamp.seconds.
application principal.application Dipetakan langsung dari application yang diekstrak grok.

Perubahan

2023-11-22

  • Parser yang baru dibuat.