Mengumpulkan log F5 ASM
Dokumen ini menjelaskan cara menyerap log F5 Application Security Manager (ASM) ke Google Security Operations menggunakan BindPlane. Parser menangani berbagai format log F5 ASM (seperti syslog, CSV, CEF, dan Splunk), dan menormalisasinya ke dalam Model Data Terpadu (UDM). Fitur ini menggunakan pola grok dan ekstraksi nilai kunci untuk mengurai kolom, pemfilteran XML untuk detail pelanggaran, logika bersyarat untuk kategorisasi peristiwa dan pemetaan tingkat keparahan, serta menggabungkan kolom yang diekstrak ke dalam skema UDM.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
- Jika dijalankan di belakang proxy, port firewall terbuka
- Akses istimewa ke F5 ASM
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
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
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
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.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
- Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
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: 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 ingestion_labels: log_type: 'F5_ASM' raw_log_field: body 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
<customer_id>
dengan ID pelanggan yang sebenarnya.Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi Syslog di F5 ASM
Login ke instance tmsh dengan mengetik perintah berikut:
tmsh
Edit konfigurasi syslog menggunakan perintah berikut:
edit /sys syslog all-properties
Konfigurasi syslog terbuka di editor teks
vi
dan terlihat mirip dengan contoh berikut:modify syslog { auth-priv-from notice auth-priv-to emerg cron-from warning cron-to emerg daemon-from notice daemon-to emerg description none include none iso-date disabled kern-from notice kern-to emerg mail-from notice mail-to emerg messages-from notice messages-to warning remote-servers none user-log-from notice user-log-to emerg }
Ganti baris
include none
dengan filter syslog berikut:include ` filter f_audit{ match(AUDIT); }; destination d_syslog_server { udp(\`<bindplane-ip>\` port (<bindplane-port>)); }; log { source(s_syslog_pipe); filter(f_audit); destination(d_syslog_server); }; `
Ganti
<bindplane-ip>
dan<bindplane-port>
dengan alamat IP dan nomor port sebenarnya yang dikonfigurasi untuk agen Bindplane Anda.Keluar dari
vi
dengan mengetik urutan tombol berikut::wq!
Pada perintah berikut, ketik
y
untuk menyimpan perubahan pada file:Save changes? (y/n/e)
Simpan konfigurasi dengan mengetik perintah berikut:
save /sys config
Tabel pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
act |
security_result.action |
Jika act adalah blocked , dipetakan ke BLOCK. Jika act adalah passed atau legal , dipetakan ke ALLOW. Jika act berisi alerted , dipetakan ke KARANTINA. Jika tidak, defaultnya adalah ALLOW untuk format Splunk. |
app |
network.application_protocol |
Dipetakan langsung ke HTTPS jika ada di log mentah. |
attack_type |
security_result.category_details , metadata.description |
Digunakan bersama dengan kolom lain untuk menentukan security_result.category . Jika tidak ada deskripsi lain, deskripsi tersebut akan menjadi deskripsi acara. Untuk log format Splunk, kolom ini digunakan untuk menentukan kategori dan ringkasan jika violations kosong. |
client_ip |
principal.ip , principal.asset.ip |
Dipetakan langsung ke IP utama. |
cn1 |
network.http.response_code |
Dipetakan langsung ke kode respons HTTP. |
cn2 |
security_result.severity_details |
Dipetakan langsung ke detail tingkat keparahan hasil keamanan. Digunakan dengan response_code untuk menentukan apakah suatu peristiwa adalah pemberitahuan. |
column1 |
principal.ip , principal.asset.ip |
Memetakan ke IP utama untuk log berformat CSV tertentu. |
column2 |
target.port |
Memetakan ke port target untuk log berformat CSV tertentu. |
column3 |
target.ip , target.asset.ip |
Memetakan ke IP target untuk log berformat CSV tertentu. |
column4 |
security_result.severity |
Dipetakan ke tingkat keparahan hasil keamanan untuk log berformat CSV tertentu. Nilai Information , Informational , 0 , 4 dipetakan ke INFORMASI. Warning , 1 , 3 dipetakan ke MEDIUM. Error , 2 dipetakan ke ERROR. Critical , CRITICAL , critical dipetakan ke KRITIS. |
column7 |
security_result.detection_fields , network.http.response_code |
Berisi data XML. viol_name dalam request-violations diekstrak dan ditambahkan sebagai kolom deteksi dengan kunci Request Violation Name_index . viol_name dalam response_violations diekstrak dan ditambahkan sebagai kolom deteksi dengan kunci Response Violation Name_index . response_code dalam response_violations dipetakan ke network.http.response_code . |
column8 |
security_result.rule_name |
Dipetakan ke nama aturan hasil keamanan untuk log berformat CSV tertentu. |
cs1 |
security_result.rule_name |
Dipetakan langsung ke nama aturan hasil keamanan. |
cs2 |
security_result.summary |
Dipetakan langsung ke ringkasan hasil keamanan. |
cs5 |
principal.ip , principal.asset.ip , additional.fields |
Jika cs5 berisi URL LDAP JNDI, URL tersebut akan ditambahkan sebagai kolom tambahan dengan kunci JNDI_LDAP_URL . Jika tidak, jika berisi IP yang dipisahkan koma, IP apa pun yang berbeda dari principal_ip akan ditambahkan sebagai IP utama tambahan. |
cs6 |
principal.location.country_or_region |
Dipetakan langsung ke negara atau wilayah lokasi utama. |
data |
network.session_id , network.sent_bytes , network.tls.version |
Jika ada, diuraikan sebagai JSON untuk mengekstrak sessionid , bits (dipetakan ke sent_bytes ), dan version . |
date_time |
metadata.event_timestamp |
Dipetakan langsung ke stempel waktu peristiwa setelah mengurai dan mengonversi ke format yang benar. |
dest_ip |
target.ip , target.asset.ip |
Memetakan langsung ke IP target. |
dest_port |
target.port |
Dipetakan langsung ke port target. |
dhost |
target.hostname |
Dipetakan langsung ke nama host target. |
dpt |
target.port |
Dipetakan langsung ke port target. |
dst |
target.ip |
Memetakan langsung ke IP target. |
dvc |
intermediary.ip |
Dipetakan langsung ke IP perantara. |
dvchost |
target.hostname , intermediary.hostname |
Memetakan langsung ke nama host target dan nama host perantara. |
errdefs_msgno |
additional.fields |
Ditambahkan sebagai kolom tambahan dengan kunci errdefs_msgno . |
externalId |
additional.fields |
Ditambahkan sebagai kolom tambahan dengan kunci Support_Id . |
f5_host |
target.hostname , intermediary.hostname |
Memetakan langsung ke nama host target dan nama host perantara. |
geo_info |
principal.location.country_or_region , security_result.detection_fields |
Memetakan ke negara atau wilayah lokasi utama. Juga ditambahkan sebagai kolom deteksi dengan kunci geo_info . |
host |
target.hostname |
Dipetakan langsung ke nama host target. |
ids |
additional.fields |
Diuraikan sebagai daftar ID dukungan yang dipisahkan koma. Setiap ID ditambahkan ke kolom tambahan bernilai daftar dengan kunci supportid . |
ip_addr_intelli |
security_result.detection_fields |
Ditambahkan sebagai kolom deteksi dengan kunci ip_addr_intelli . |
ip_client |
principal.ip |
Dipetakan langsung ke IP utama. |
ip_route_domain |
principal.ip , principal.asset.ip |
Bagian IP diekstrak dan dipetakan ke IP utama. |
irule |
security_result.rule_name |
Dipetakan langsung ke nama aturan hasil keamanan. |
irule-version |
security_result.rule_version |
Dipetakan langsung ke versi aturan hasil keamanan. |
level |
security_result.severity , security_result.severity_details |
Digunakan untuk menentukan tingkat keparahan hasil keamanan. error atau warning dipetakan ke TINGGI. notice dipetakan ke SEDANG. information atau info dipetakan ke RENDAH. Nilai mentah juga dipetakan ke severity_details . |
logtime |
metadata.event_timestamp |
Dipetakan langsung ke stempel waktu peristiwa setelah penguraian. |
management_ip_address , management_ip_address_2 |
intermediary.ip |
Dipetakan langsung ke IP perantara. |
method |
network.http.method |
Dipetakan langsung ke metode HTTP. |
msg |
security_result.summary , metadata.description |
Dipetakan langsung ke ringkasan hasil keamanan untuk beberapa format log. Jika tidak ada deskripsi lain, deskripsi tersebut akan menjadi deskripsi acara. |
policy_name |
security_result.about.resource.name , security_result.rule_name |
Dipetakan langsung ke nama resource hasil keamanan atau nama aturan. |
process |
target.application |
Dipetakan langsung ke aplikasi target. |
process_id |
principal.process.pid |
Dipetakan langsung ke ID proses utama. |
protocol |
network.application_protocol , network.ip_protocol , app_protocol |
Dipetakan langsung ke protokol aplikasi atau protokol IP, bergantung pada format log. |
proxy_id |
security_result.rule_id |
Dipetakan langsung ke ID aturan hasil keamanan. |
query_string |
additional.fields |
Ditambahkan sebagai kolom tambahan dengan kunci query_string . |
referrer |
network.http.referral_url |
Dipetakan langsung ke URL perujuk HTTP. |
req_method |
network.http.method |
Dipetakan langsung ke metode HTTP. |
req_status |
security_result.action , security_result.action_details , security_result.detection_fields |
Jika blocked , memetakan security_result.action ke BLOCK. Jika passed atau legal , dipetakan ke ALLOW. Jika berisi alerted , dipetakan ke QUARANTINE. Nilai mentah juga dipetakan ke action_details dan ditambahkan sebagai kolom deteksi dengan kunci req_status . |
request |
target.url |
Memetakan langsung ke URL target. |
requestMethod |
network.http.method |
Dipetakan langsung ke metode HTTP. |
resp |
security_result.detection_fields |
Ditambahkan sebagai kolom deteksi dengan kunci resp . |
resp_code |
network.http.response_code |
Dipetakan langsung ke kode respons HTTP. |
response |
security_result.summary |
Dipetakan langsung ke ringkasan hasil keamanan. |
response_code |
network.http.response_code |
Dipetakan langsung ke kode respons HTTP. |
route_domain |
additional.fields |
Ditambahkan sebagai kolom tambahan dengan kunci route_domain . |
rt |
metadata.event_timestamp |
Dipetakan langsung ke stempel waktu peristiwa setelah penguraian. |
sev |
security_result.severity , security_result.severity_details |
Digunakan untuk menentukan tingkat keparahan hasil keamanan. ERROR dipetakan ke ERROR. Nilai mentah juga dipetakan ke severity_details . |
severity |
security_result.severity , security_result.severity_details |
Digunakan untuk menentukan tingkat keparahan hasil keamanan. Informational dipetakan ke RENDAH, Error atau warning dipetakan ke TINGGI, critical dipetakan ke KRITIS, notice dipetakan ke SEDANG, information atau info dipetakan ke RENDAH. Nilai mentah juga dipetakan ke severity_details . |
sig_ids |
security_result.rule_id |
Dipetakan langsung ke ID aturan hasil keamanan. |
sig_names |
security_result.rule_name |
Dipetakan langsung ke nama aturan hasil keamanan. |
snat_ip |
principal.nat_ip |
Dipetakan langsung ke IP NAT utama. |
snat_port |
principal.nat_port |
Dipetakan langsung ke port NAT utama. |
src |
principal.ip , principal.asset.ip |
Dipetakan langsung ke IP utama. |
spt |
principal.port |
Dipetakan langsung ke port utama. |
sub_violates |
security_result.about.resource.attribute.labels |
Ditambahkan sebagai label dengan kunci Sub Violations ke atribut resource hasil keamanan. |
sub_violations |
security_result.about.resource.attribute.labels |
Ditambahkan sebagai label dengan kunci Sub Violations ke atribut resource hasil keamanan. |
summary |
security_result.summary |
Dipetakan langsung ke ringkasan hasil keamanan. |
support_id |
metadata.product_log_id |
Diawali dengan support_id - dan dipetakan ke ID log produk. |
suid |
network.session_id |
Dipetakan langsung ke ID sesi jaringan. |
suser |
principal.user.userid |
Dipetakan langsung ke ID pengguna utama. |
timestamp |
metadata.event_timestamp |
Dipetakan langsung ke stempel waktu peristiwa setelah mengurai dan mengonversi ke format yang benar. |
unit_host |
principal.hostname , principal.asset.hostname |
Dipetakan langsung ke nama host utama. |
uri |
principal.url |
Dipetakan langsung ke URL utama. |
user_id |
principal.user.userid |
Dipetakan langsung ke ID pengguna utama. |
user_name |
principal.user.user_display_name |
Dipetakan langsung ke nama tampilan pengguna utama. |
username |
principal.user.userid |
Dipetakan langsung ke ID pengguna utama. |
useragent |
network.http.user_agent , network.http.parsed_user_agent |
Dipetakan langsung ke agen pengguna HTTP. Juga diuraikan dan dipetakan ke agen pengguna yang diuraikan. |
virtualserver |
network.tls.client.server_name |
Dipetakan langsung ke nama server klien TLS. |
violate_details |
security_result.detection_fields , network.http.response_code |
Berisi data XML. viol_name dalam request-violations diekstrak dan ditambahkan sebagai kolom deteksi dengan kunci Request Violation Name_index . viol_name dalam response_violations diekstrak dan ditambahkan sebagai kolom deteksi dengan kunci Response Violation Name_index . response_code dalam response_violations dipetakan ke network.http.response_code . |
violate_rate |
security_result.detection_fields |
Ditambahkan sebagai kolom deteksi dengan kunci violate_rate . |
violation_rating |
security_result.about.resource.attribute.labels |
Ditambahkan sebagai label dengan kunci Violations Rating ke atribut resource hasil keamanan. |
violations |
security_result.description |
Dipetakan langsung ke deskripsi hasil keamanan. Untuk log format Splunk, kolom ini digunakan untuk menentukan ringkasan jika ada. |
virus_name |
security_result.threat_name |
Dipetakan langsung ke nama ancaman hasil keamanan. |
vs_name |
network.tls.client.server_name |
Dipetakan langsung ke nama server klien TLS. |
websocket_direction |
network.direction |
Jika clientToServer , dipetakan ke INBOUND. Jika ServerToclient , dipetakan ke OUTBOUND. |
websocket_message_type |
security_result.detection_fields |
Ditambahkan sebagai kolom deteksi dengan kunci WebsocketMessageType . |
x_fwd_hdr_val |
principal.ip , principal.asset.ip |
Dipetakan langsung ke IP utama. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.