Mengumpulkan log firewall OPNsense

Didukung di:

Parser ini mengekstrak kolom dari log firewall OPNsense (format syslog dan CSV) dan memetakannya ke UDM. Parser ini menggunakan grok dan CSV untuk log aplikasi "filterlog", menangani berbagai format log dan protokol jaringan (TCP, UDP, ICMP, dll.) untuk mengisi kolom UDM seperti principal, target, network, dan security_result. Selain itu, metadata seperti nama vendor dan produk juga ditambahkan, dan jenis peristiwa ditentukan berdasarkan adanya informasi pokok dan target.

Sebelum memulai

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

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka SIEM Settings > Collection Agents.
  3. Download File Autentikasi Penyerapan.

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 memproses Syslog dan mengirimkannya ke Google SecOps

  1. Akses komputer tempat BindPlane Agent 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 Bindplane Agent 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 Level Syslog sebagai Alert.

  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 kunci "flags".
column17 network.ip_protocol Dipetakan langsung dari column17 setelah dikonversi menjadi huruf besar.
column18 network.received_bytes Dipetakan langsung dari column18 setelah dikonversi menjadi bilangan bulat tidak bertanda.
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" akan 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 "tracker".
column5 additional.fields[].key: "interface"
additional.fields[].value.string_value: Nilai column5
Dipetakan langsung dari column5, bertingkat di bawah additional.fields dengan kunci "interface".
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 "out", tetapkan ke "OUTBOUND".
domain principal.administrative_domain Dipetakan langsung dari domain yang diekstrak grok. Setel ke "NETWORK_CONNECTION" jika alamat IP utama dan target ada, atau "GENERIC_EVENT". Dikodekan secara permanen ke "OPNSENSE". Dikodekan secara permanen ke "OPNSENSE".
message Berbagai kolom Diuraikan menggunakan filter grok dan csv untuk mengekstrak berbagai kolom. Lihat baris lainnya untuk pemetaan tertentu.
ts metadata.event_timestamp.seconds, timestamp.seconds Diuraikan 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.

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