Mengumpulkan log Snort IDS
Dokumen ini menjelaskan cara menyerap log Snort IDS ke Google Security Operations menggunakan agen Bindplane.
Snort adalah sistem deteksi dan pencegahan penyusupan open source yang menghasilkan pesan syslog untuk pemberitahuan penyusupan jaringan, peristiwa analisis protokol, dan anomali traffic. Parser mengekstrak kolom dari log berformat syslog dan JSON menggunakan pola grok, lalu memetakannya ke Model Data Terpadu (UDM).
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows Server 2016 atau yang lebih baru, atau host Linux dengan
systemd - Konektivitas jaringan antara agen Bindplane dan perangkat Snort
- Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
- Akses terminal ke perangkat Snort
Mendapatkan kredensial Google SecOps untuk agen Bindplane
Untuk mengautentikasi agen Bindplane ke Google SecOps, pilih salah satu metode berikut:
- Deployment baru: Gunakan Chronicle API (Opsi 1).
- Deployment lama: Terus menggunakan file autentikasi penyerapan (Opsi 2) hingga Ingestion API dihentikan pada 20 Juli 2027.
Opsi 1: Buat akun layanan untuk Chronicle API (direkomendasikan)
- Login ke Google Cloud konsol dan pilih project Google Cloud yang ditautkan ke instance Google SecOps Anda.
- Buka IAM & Admin > Service Accounts.
- Klik Create service account.
- Berikan detail konfigurasi berikut:
- Service account name: Masukkan nama akun (misalnya,
bindplane-ingest). - Deskripsi akun layanan: Masukkan deskripsi (misalnya,
Bindplane agent log ingestion).
- Service account name: Masukkan nama akun (misalnya,
- Klik Create and continue.
- Di bagian Grant this service account access to project, klik Select a role, lalu pilih Chronicle Editor.
- Klik Continue lalu klik Done.
- Klik akun layanan yang Anda buat, lalu buka tab Keys.
- Klik Add key > Create new key.
- Pilih JSON, lalu klik Create. File kunci akan didownload ke komputer Anda.
- Simpan file kunci sebagai
ingestion-auth.jsondi direktori pengumpul Bindplane (/opt/observiq-otel-collector/ingestion-auth.jsondi Linux atauC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsondi Windows), atau perbaruicreds_file_pathdiconfig.yamlagar cocok dengan jalur tempat Anda menyimpannya. - Buka IAM & Admin > Settings dan salin Project number. Anda akan memerlukannya untuk konfigurasi pengekspor.
Opsi 2: Mendownload file autentikasi penyerapan (lama)
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Collection Agents.
- Download file autentikasi penyerapan.
- Simpan file dengan aman di sistem tempat agen 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
Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.
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" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collectorLayanan akan ditampilkan sebagai RUNNING.
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.shTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sudo systemctl status observiq-otel-collectorLayanan akan ditampilkan sebagai active (running).
Referensi penginstalan tambahan
Untuk mengetahui opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen Bindplane.
Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps
Cari file konfigurasi
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Mengedit file konfigurasi
Ganti seluruh konten
config.yamldengan konfigurasi berikut:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/snort_ids: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: SNORT_IDS raw_log_field: body service: pipelines: logs/snort_ids_to_chronicle: receivers: - udplog exporters: - chronicle/snort_ids
Parameter konfigurasi
Ganti placeholder berikut:
Konfigurasi penerima:
listen_address: Alamat IP dan port yang akan diproses:0.0.0.0untuk memproses semua antarmuka (direkomendasikan)- Port
514adalah port syslog standar (memerlukan root di Linux; gunakan1514untuk non-root)
Konfigurasi pengekspor:
creds_file_path: Jalur lengkap ke file kunci JSON akun layanan (Opsi 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID Pelanggan yang disalin dari konsol Google SecOpslocation: Ganti<LOCATION>dengan region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1). Pengekspor mengawalichronicle.googleapis.comdengan nilai ini. Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.project: Ganti<PROJECT_NUMBER>dengan nomor project dari IAM & Admin > Settings.endpoint: Tetap tetapkan kechronicle.googleapis.com.
Pengekspor API penyerapan lama
Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok
exportersdengan kode berikut. Tetapkancreds_file_pathke jalur ke file autentikasi penyerapan, dan jika instance Anda berada di luar AS, gantimalachiteingestion-pa.googleapis.comdengan endpoint regional Anda (misalnya,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/snort_ids: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SNORT_IDS raw_log_field: body
Simpan file konfigurasi
- Setelah mengedit, simpan file:
- Linux: Tekan
Ctrl+O, laluEnter, laluCtrl+X - Windows: Klik File > Simpan
- Linux: Tekan
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa log untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -f
Untuk memulai ulang agen Bindplane di Windows, pilih salah satu opsi berikut:
Command Prompt atau PowerShell sebagai administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorKonsol Services:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Cari observIQ OpenTelemetry Collector.
- Klik kanan, lalu pilih Restart.
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Tekan
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>:<PORT_NUMBER>, LOG_AUTH LOG_ALERT- Ganti
<BINDPLANE_IP>dengan alamat IP agen Bindplane dan<PORT_NUMBER>dengan nomor port.
- Ganti
Simpan file.
Mulai layanan snort.
Hentikan layanan rsyslog.
Edit file berikut:
/etc/rsyslogd.conf:# remote host is: name/ip:port *.* @@<BINDPLANE_IP>:<PORT_NUMBER>- Ganti
<BINDPLANE_IP>dengan alamat IP agen Bindplane dan<PORT_NUMBER>dengan nomor port.
- Ganti
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:
/usr/local/etc/snort/. - Edit file konfigurasi Snort:
snort.lua. Di opsi Configure outputs, tambahkan kode berikut:
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.Untuk mengirim log melalui TCP atau UDP, tambahkan konfigurasi berikut:
local3.* @@<BINDPLANE_IP>:<PORT_NUMBER>- Ganti
<BINDPLANE_IP>dengan alamat IP agen Bindplane dan<PORT_NUMBER>dengan nomor port.
- Ganti
Simpan file.
Mulai rsyslog, lalu layanan snort.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| agent.hostname | observer.hostname | Nilai yang 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 yang 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 yang 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, tetapkan ke UNKNOWN_SEVERITY. |
| alert.signature | security_result.rule_name | Nilai yang diambil dari kolom alert.signature di log mentah. |
| alert.signature_id | security_result.rule_id | Nilai yang diambil dari kolom alert.signature_id di log mentah. |
| app_proto | network.application_protocol | Jika app_proto adalah dns, smb, atau http, konversikan ke huruf besar dan gunakan nilai tersebut. Jika tidak, tetapkan 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, tetapkan ke UNKNOWN_CATEGORY. |
| classtype | security_result.rule_type | Nilai diambil dari kolom classtype di 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 yang diambil dari kolom desc di log mentah. |
| dest_ip | target.ip | Nilai yang diambil dari kolom dest_ip di log mentah. |
| dest_port | target.port | Nilai yang diambil dari kolom dest_port di log mentah dan dikonversi menjadi bilangan bulat. |
| dstport | target.port | Nilai yang diambil dari kolom dstport di 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 yang diambil dari kolom host.name di log mentah. |
| hostname | principal.hostname | Nilai yang 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 yang diambil dari kolom metadata.version di log mentah. |
| proto | network.ip_protocol | Nilai yang diambil dari kolom proto di log mentah. Jika berupa angka, protokol IP akan dikonversi ke nama protokol IP yang sesuai menggunakan tabel pencarian. |
| rule_name | security_result.rule_name | Nilai diambil dari kolom rule_name di log mentah. |
| signature_id | security_result.rule_id | Nilai yang diambil dari kolom signature_id di log mentah. |
| signature_rev | security_result.rule_version | Nilai yang diambil dari kolom signature_rev di log mentah. |
| src_ip | principal.ip | Nilai yang diambil dari kolom src_ip di log mentah. |
| src_port | principal.port | Nilai yang diambil dari kolom src_port di log mentah dan dikonversi menjadi bilangan bulat. |
| srcport | principal.port | Nilai diambil dari kolom srcport di 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 | Dihardcode ke SNORT_IDS. |
|
| metadata.product_name | Dihardcode ke SNORT_IDS. |
|
| metadata.vendor_name | Hardcode ke SNORT. |
|
| security_result.action | Ditetapkan ke ALLOW jika alert.action adalah allowed, jika tidak, ditetapkan ke UNKNOWN_ACTION. |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.