Mengumpulkan log Snort
Dokumen ini menjelaskan cara mengumpulkan log Snort ke Google Security Operations menggunakan Bindplane. Parser mencoba menangani dua format log Snort yang berbeda (SYSLOG + JSON) menggunakan pola grok
untuk mengekstrak kolom yang relevan. Bergantung pada format yang diidentifikasi, data akan diproses lebih lanjut, memetakan kolom yang diekstrak ke skema model data terpadu (UDM), menormalisasi nilai, dan memperkaya output dengan konteks tambahan.
Sebelum memulai
- Pastikan Anda memiliki instance Google Security Operations.
- Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
. - Jika berjalan di belakang proxy, pastikan port firewall terbuka.
- Pastikan Anda memiliki akses istimewa ke Snort.
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 ini.
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: '/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: SNORT_IDS 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 ekspor syslog di Snort v2.x
- Login ke perangkat Snort menggunakan terminal.
- Edit file berikut:
/etc/snort/snort.conf
- Buka
6) Configure output plugins
. Tambahkan entri berikut:
# syslog output alert_syslog: host=BINDPLANE_IP_ADDRESS:PORT_NUMBER, LOG_AUTH LOG_ALERT
Ganti kode berikut:
- BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
- PORT_NUMBER: Bindplane Agent port number.
Simpan file.
Mulai layanan snort.
Hentikan layanan rsyslog.
Edit file berikut:
/etc/rsyslogd.conf
# remote host is: name/ip:port *.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER
Ganti kode berikut:
- BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
- PORT_NUMBER: Bindplane Agent port number.
Mulai layanan rsyslog.
Mengonfigurasi ekspor syslog di Snort v3.1.53
- Login ke perangkat Snort menggunakan terminal.
- Hentikan layanan rsyslog dan snort.
- Buka direktori penginstalan Snort berikut:
/usr/local/etc/snort/
Edit file konfigurasi Snort berikut:
snort.lua
Di opsi Configure outputs, tambahkan kode berikut (Anda dapat menggunakan fasilitas dan tingkat mana pun):
alert_syslog = { facility = 'local3', level = 'info', }
Simpan file konfigurasi Snort.
Buka direktori file konfigurasi default layanan rsyslog:
/etc/rsyslog.d
Buat file baru:
3-snort.conf
:# cd /etc/rsyslog.d # vi 3-snort.conf
Untuk mengirim log melalui TCP atau UDP, tambahkan konfigurasi berikut:
local3.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER
Ganti kode berikut:
- BINDPLANE_IP_ADDRESS: Bindplane agent IP address.
- PORT_NUMBER: Bindplane agent port number.
Simpan file.
Mulai rsyslog, lalu layanan snort.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
agent.hostname | observer.hostname | Nilai diambil dari kolom agent.hostname di log mentah. |
agent.id | observer.asset_id | Nilai diambil dari kolom agent.id di log mentah dan digabungkan dengan agent.type sebagai berikut: agent.type:agent.id . |
agent.type | observer.application | Nilai diambil dari kolom agent.type di log mentah. |
agent.version | observer.platform_version | Nilai diambil dari kolom agent.version di log mentah. |
alert.category | security_result.category_details | Nilai diambil dari kolom alert.category di log mentah. |
alert.rev | security_result.rule_version | Nilai diambil dari kolom alert.rev di log mentah. |
alert.rule | security_result.summary | Nilai diambil dari kolom alert.rule di log mentah, dengan tanda kutip ganda dihapus. |
alert.severity | security_result.severity | Jika alert.severity lebih besar dari atau sama dengan 4, tetapkan ke LOW . Jika alert.severity adalah 2 atau 3, tetapkan ke MEDIUM . Jika alert.severity adalah 1, tetapkan ke HIGH . Jika tidak, setel ke UNKNOWN_SEVERITY . |
alert.signature | security_result.rule_name | Nilai diambil dari kolom alert.signature di log mentah. |
alert.signature_id | security_result.rule_id | Nilai diambil dari kolom alert.signature_id di log mentah. |
app_proto | network.application_protocol | Jika app_proto adalah dns , smb , atau http , konversi ke huruf besar dan gunakan nilai tersebut. Jika tidak, setel ke UNKNOWN_APPLICATION_PROTOCOL . |
category | security_result.category | Jika category adalah trojan-activity , tetapkan ke NETWORK_MALICIOUS . Jika category adalah policy-violation , tetapkan ke POLICY_VIOLATION . Jika tidak, setel ke UNKNOWN_CATEGORY . |
classtype | security_result.rule_type | Nilai diambil dari kolom classtype dalam log mentah, jika tidak kosong atau unknown . |
community_id | network.community_id | Nilai diambil dari kolom community_id di log mentah. |
date_log | Digunakan untuk menyetel stempel waktu peristiwa jika kolom time kosong. |
|
menurun | metadata.description | Nilai diambil dari kolom desc di log mentah. |
dest_ip | target.ip | Nilai diambil dari kolom dest_ip di log mentah. |
dest_port | target.port | Nilai diambil dari kolom dest_port dalam log mentah dan dikonversi menjadi bilangan bulat. |
dstport | target.port | Nilai diambil dari kolom dstport dalam log mentah dan dikonversi menjadi bilangan bulat. |
file.filename | security_result.about.file.full_path | Nilai diambil dari kolom file.filename dalam log mentah, jika tidak kosong atau / . |
file.size | security_result.about.file.size | Nilai diambil dari kolom file.size dalam log mentah dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan. |
host.name | principal.hostname | Nilai diambil dari kolom host.name di log mentah. |
hostname | principal.hostname | Nilai diambil dari kolom hostname di log mentah. |
inter_host | intermediary.hostname | Nilai diambil dari kolom inter_host di log mentah. |
log.file.path | principal.process.file.full_path | Nilai diambil dari kolom log.file.path di log mentah. |
metadata.version | metadata.product_version | Nilai diambil dari kolom metadata.version di log mentah. |
proto | network.ip_protocol | Nilai diambil dari kolom proto di log mentah. Jika berupa angka, angka tersebut akan dikonversi menjadi nama protokol IP yang sesuai menggunakan tabel lookup. |
rule_name | security_result.rule_name | Nilai diambil dari kolom rule_name di log mentah. |
signature_id | security_result.rule_id | Nilai diambil dari kolom signature_id di log mentah. |
signature_rev | security_result.rule_version | Nilai diambil dari kolom signature_rev di log mentah. |
src_ip | principal.ip | Nilai diambil dari kolom src_ip di log mentah. |
src_port | principal.port | Nilai diambil dari kolom src_port dalam log mentah dan dikonversi menjadi bilangan bulat. |
srcport | principal.port | Nilai diambil dari kolom srcport dalam log mentah dan dikonversi menjadi bilangan bulat. |
waktu | Digunakan untuk menyetel stempel waktu peristiwa. | |
metadata.event_type | Selalu ditetapkan ke SCAN_NETWORK . |
|
metadata.log_type | Hardcode ke SNORT_IDS . |
|
metadata.product_name | Hardcode ke SNORT_IDS . |
|
metadata.vendor_name | Hardcode ke SNORT . |
|
security_result.action | Disetel ke ALLOW jika alert.action adalah allowed , jika tidak, disetel ke UNKNOWN_ACTION . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.