Mengumpulkan log Snort

Didukung di:

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

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.

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

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. 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

Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. Akses file konfigurasi:

    1. Cari file config.yaml. Biasanya, file ini berada di direktori /etc/bindplane-agent/ di Linux atau di direktori penginstalan di Windows.
    2. Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  2. 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
    
  3. Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.

  4. Ganti <customer_id> dengan ID pelanggan yang sebenarnya.

  5. 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

  1. Login ke perangkat Snort menggunakan terminal.
  2. Edit file berikut: /etc/snort/snort.conf
  3. Buka 6) Configure output plugins.
  4. Tambahkan entri berikut:

    # syslog
    output alert_syslog: host=BINDPLANE_IP_ADDRESS:PORT_NUMBER, LOG_AUTH LOG_ALERT
    
  5. Ganti kode berikut:

    • BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
    • PORT_NUMBER: Bindplane Agent port number.
  6. Simpan file.

  7. Mulai layanan snort.

  8. Hentikan layanan rsyslog.

  9. Edit file berikut: /etc/rsyslogd.conf

    # remote host is: name/ip:port
    *.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER
    
  10. Ganti kode berikut:

    • BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
    • PORT_NUMBER: Bindplane Agent port number.
  11. Mulai layanan rsyslog.

Mengonfigurasi ekspor syslog di Snort v3.1.53

  1. Login ke perangkat Snort menggunakan terminal.
  2. Hentikan layanan rsyslog dan snort.
  3. Buka direktori penginstalan Snort berikut: /usr/local/etc/snort/
  4. Edit file konfigurasi Snort berikut: snort.lua

  5. Di opsi Configure outputs, tambahkan kode berikut (Anda dapat menggunakan fasilitas dan tingkat mana pun):

    alert_syslog =
      {
        facility = 'local3',
        level = 'info',
      }
    
  6. Simpan file konfigurasi Snort.

  7. Buka direktori file konfigurasi default layanan rsyslog: /etc/rsyslog.d

  8. Buat file baru: 3-snort.conf:

    # cd /etc/rsyslog.d
    # vi 3-snort.conf
    
  9. Untuk mengirim log melalui TCP atau UDP, tambahkan konfigurasi berikut: local3.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER

  10. Ganti kode berikut:

    • BINDPLANE_IP_ADDRESS: Bindplane agent IP address.
    • PORT_NUMBER: Bindplane agent port number.
  11. Simpan file.

  12. 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.