Mengumpulkan log firewall OPNsense
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
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Proses Transfer.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal Agen BindPlane
- Untuk penginstalan Windows, jalankan skrip berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- 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
- Opsi penginstalan tambahan dapat ditemukan di panduan penginstalan ini.
Mengonfigurasi Agen BindPlane untuk menyerap Syslog dan mengirim ke Google SecOps
- Akses komputer tempat BindPlane diinstal.
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
Mulai ulang Agen BindPlane untuk menerapkan perubahan menggunakan perintah berikut:
sudo systemctl bindplane restart
Menambahkan konfigurasi server Syslog ke OPNsense
- Login ke antarmuka web OPNsense.
- Buka Sistem > Setelan > Logging.
- Di bagian Remote Logging, aktifkan Send logs to remote syslog server dengan mencentang kotak.
- Di kolom Remote Syslog Servers, masukkan alamat IP server syslog, termasuk PORT (misalnya, 10.10.10.10:54525).
- Pilih Local0 sebagai fasilitas syslog.
Tetapkan Tingkat Syslog sebagai Peringatan.
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.