Mengumpulkan log Juniper Junos

Didukung di:

Dokumen ini menjelaskan cara menyerap log Juniper Junos ke Google Security Operations menggunakan Bindplane.

Juniper Junos OS adalah sistem operasi yang mendukung router, switch, dan perangkat keamanan Juniper Networks. Layanan ini menyediakan platform terpadu untuk pengelolaan infrastruktur jaringan, perutean, switching, dan fungsi keamanan dengan logging komprehensif untuk peristiwa sistem, peristiwa keamanan, dan traffic jaringan. Parser mengekstrak kolom dari syslog Juniper Junos dan log berformat key-value. Log ini menggunakan grok dan/atau kv untuk mengurai pesan log, lalu memetakan nilai ini ke Model Data Terpadu (UDM). Layanan ini juga menetapkan nilai metadata default untuk sumber dan jenis peristiwa.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows Server 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses istimewa ke perangkat Juniper yang menjalankan Junos OS

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

Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

Layanan akan ditampilkan sebagai RUNNING.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sudo systemctl status observiq-otel-collector
    

Layanan akan ditampilkan sebagai aktif (berjalan).

Referensi penginstalan tambahan

Untuk 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 /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'JUNIPER_JUNOS'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Parameter konfigurasi

  • Ganti placeholder berikut:

    • Konfigurasi penerima:

      • udplog: Gunakan udplog untuk syslog UDP atau tcplog untuk syslog TCP
      • 0.0.0.0: Alamat IP yang akan didengarkan (0.0.0.0 untuk mendengarkan semua antarmuka)
      • 514: Nomor port yang akan diproses (port syslog standar)
    • Konfigurasi eksportir:

      • creds_file_path: Jalur lengkap ke file autentikasi penyerapan:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: ID Pelanggan dari bagian Dapatkan ID pelanggan
      • endpoint: URL endpoint regional:
        • Amerika Serikat: malachiteingestion-pa.googleapis.com
        • Eropa: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya
      • log_type: Jenis log persis seperti yang muncul di Chronicle (JUNIPER_JUNOS)

Simpan file konfigurasi

  • Setelah mengedit, simpan file:
    • Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
    • Windows: Klik File > Save

Mulai ulang agen Bindplane untuk menerapkan perubahan

  • Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:

    sudo systemctl restart observiq-otel-collector
    
    1. Pastikan layanan sedang berjalan:

        sudo systemctl status observiq-otel-collector
      
    2. Periksa 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-collector
      
    • Konsol layanan:

      1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
      2. Temukan observIQ OpenTelemetry Collector.
      3. Klik kanan, lalu pilih Mulai Ulang.

      4. Pastikan layanan sedang berjalan:

        sc query observiq-otel-collector
        
      5. Periksa log untuk mengetahui error:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Mengonfigurasi penerusan Syslog di Juniper Junos

  1. Hubungkan ke perangkat Juniper melalui SSH atau konsol.
  2. Masuk ke mode konfigurasi:

    configure
    
  3. Konfigurasi host syslog dengan perintah berikut:

    set system syslog host BINDPLANE_IP any info
    set system syslog host BINDPLANE_IP port 514
    set system syslog host BINDPLANE_IP facility-override local7
    set system syslog host BINDPLANE_IP log-prefix JUNOS
    
    • Ganti BINDPLANE_IP dengan alamat IP host agen Bindplane.
  4. Konfigurasi sumber log tambahan (opsional, tetapi direkomendasikan):

    set system syslog host BINDPLANE_IP authorization info
    set system syslog host BINDPLANE_IP daemon info
    set system syslog host BINDPLANE_IP kernel info
    set system syslog host BINDPLANE_IP firewall any
    set system syslog host BINDPLANE_IP interactive-commands info
    
  5. Mengonfigurasi data syslog terstruktur (opsional untuk penguraian yang lebih baik):

    set system syslog host BINDPLANE_IP structured-data
    
  6. Lakukan konfigurasi:

    commit and-quit
    
  7. Verifikasi konfigurasi syslog:

    show system syslog host BINDPLANE_IP
    
  8. Pastikan pesan syslog dikirim dengan memeriksa log agen Bindplane.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
DPT target.port Port tujuan koneksi jaringan, dikonversi menjadi bilangan bulat.
DST target.ip Alamat IP tujuan koneksi jaringan.
FLAG additional.fields{}.key: "FLAG", additional.fields{}.value.string_value: Value of FLAG Flag TCP yang terkait dengan koneksi jaringan.
ID additional.fields{}.key: "ID", additional.fields{}.value.string_value: Nilai ID Kolom identifikasi IP.
IN additional.fields{}.key: "IN", additional.fields{}.value.string_value: Value of IN Antarmuka jaringan masuk.
LEN additional.fields{}.key: "LEN", additional.fields{}.value.string_value: Value of LEN Panjang paket IP.
MAC principal.mac Alamat MAC yang diekstrak dari kolom MAC.
KELUAR additional.fields{}.key: "OUT", additional.fields{}.value.string_value: Value of OUT Antarmuka jaringan keluar.
PREC additional.fields{}.key: "PREC", additional.fields{}.value.string_value: Value of PREC Kolom Precedence di header IP.
PROTO network.ip_protocol Protokol IP yang digunakan dalam koneksi jaringan.
RES additional.fields{}.key: "RES", additional.fields{}.value.string_value: Value of RES Kolom yang dicadangkan di header TCP.
SPT principal.port Port sumber koneksi jaringan, dikonversi menjadi bilangan bulat.
SRC principal.ip Alamat IP sumber koneksi jaringan.
TOS additional.fields{}.key: "TOS", additional.fields{}.value.string_value: Value of TOS Kolom Type of Service di header IP.
TTL network.dns.additional.ttl Nilai Time To Live, dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
URGP additional.fields{}.key: "URGP", additional.fields{}.value.string_value: Value of URGP Kolom Urgent pointer di header TCP.
PERIODE additional.fields{}.key: "WINDOW_SIZE", additional.fields{}.value.string_value: Nilai WINDOW Ukuran jendela TCP.
tindakan security_result.action Tindakan yang diambil oleh firewall, diekstrak dari pesan CEF.
agt observer.ip Alamat IP agen.
amac target.mac Alamat MAC target, dikonversi menjadi huruf kecil dan dengan tanda hubung diganti dengan titik dua.
aplikasi target.application Aplikasi yang terlibat dalam peristiwa.
artz observer.zone Zona waktu pengamat.
atz target.location.country_or_region Zona waktu target.
categoryBehavior additional.fields{}.key: "Category Behavior", additional.fields{}.value.string_value: Nilai categoryBehavior dengan garis miring dihapus Perilaku kategori.
categoryDeviceGroup additional.fields{}.key: "Category Device Group", additional.fields{}.value.string_value: Nilai categoryDeviceGroup dengan garis miring dihapus Grup perangkat kategori.
categoryObject additional.fields{}.key: "Category Object", additional.fields{}.value.string_value: Nilai categoryObject dengan garis miring dihapus Objek kategori.
categoryOutcome additional.fields{}.key: "Category Outcome", additional.fields{}.value.string_value: Nilai categoryOutcome dengan garis miring dihapus Hasil kategori.
categorySignificance additional.fields{}.key: "category Significance", additional.fields{}.value.string_value: Value of categorySignificance Signifikansi kategori.
perintah target.process.command_line Perintah dijalankan.
cs1Label additional.fields{}.key: cs1Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 1 dari pesan CEF.
cs2Label additional.fields{}.key: cs2Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 2 dari pesan CEF.
cs3Label additional.fields{}.key: cs3Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 3 dari pesan CEF.
cs4Label additional.fields{}.key: cs4Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 4 dari pesan CEF.
cs5Label additional.fields{}.key: cs5Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 5 dari pesan CEF.
cs6Label additional.fields{}.key: cs6Label, additional.fields{}.value.string_value: Nilai kolom CEF yang sesuai Label dan nilai kolom string kustom 6 dari pesan CEF.
dhost target.hostname Nama host tujuan.
deviceCustomString1 additional.fields{}.key: cs1Label, additional.fields{}.value.string_value: Value of deviceCustomString1 String kustom perangkat 1.
deviceCustomString2 additional.fields{}.key: cs2Label, additional.fields{}.value.string_value: Value of deviceCustomString2 String kustom perangkat 2.
deviceCustomString3 additional.fields{}.key: cs3Label, additional.fields{}.value.string_value: Value of deviceCustomString3 String kustom perangkat 3.
deviceCustomString4 additional.fields{}.key: cs4Label, additional.fields{}.value.string_value: Value of deviceCustomString4 String kustom perangkat 4.
deviceCustomString5 additional.fields{}.key: cs5Label, additional.fields{}.value.string_value: Value of deviceCustomString5 String kustom perangkat 5.
deviceCustomString6 additional.fields{}.key: cs6Label, additional.fields{}.value.string_value: Value of deviceCustomString6 String kustom perangkat 6.
deviceDirection network.direction Arah traffic jaringan.
deviceEventClassId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: Value of deviceEventClassId ID class peristiwa perangkat.
deviceFacility observer.product.subproduct Fasilitas perangkat.
deviceProcessName about.process.command_line Nama proses perangkat.
deviceSeverity security_result.severity Tingkat keparahan perangkat.
deviceTimeZone observer.zone Zona waktu perangkat.
deviceVendor metadata.vendor_name Vendor perangkat.
deviceVersion metadata.product_version Versi perangkat.
dpt target.port Port tujuan.
dst target.ip Alamat IP tujuan.
duser target.user.user_display_name Pengguna tujuan.
eventId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: Value of eventId ID Acara.
event_time metadata.event_timestamp Waktu terjadinya peristiwa, diuraikan dari pesan.
firewall_action security_result.action_details Tindakan firewall yang dilakukan.
host principal.hostname, intermediary.hostname Nama host perangkat yang membuat log. Digunakan untuk prinsipal dan perantara dalam kasus yang berbeda.
msg security_result.summary Pesan yang terkait dengan peristiwa, digunakan sebagai ringkasan untuk hasil keamanan.
nama metadata.product_event_type Nama acara.
process_name additional.fields{}.key: "process_name", additional.fields{}.value.string_value: Value of process_name Nama proses.
p_id target.process.pid ID proses, dikonversi menjadi string.
sha256 principal.process.file.sha256 Hash SHA256 file, diekstrak dari informasi kunci SSH2.
shost principal.hostname Nama host sumber.
source_address principal.ip Alamat IP sumber.
source_port principal.port Port sumber, dikonversi menjadi bilangan bulat.
src principal.ip Alamat IP sumber.
src_ip principal.ip Alamat IP sumber.
src_port principal.port Port sumber, dikonversi menjadi bilangan bulat.
ssh2 security_result.detection_fields{}.key: "ssh2", security_result.detection_fields{}.value: Value of ssh2 Informasi kunci SSH2.
subtype metadata.product_event_type Subjenis peristiwa.
task_summary security_result.description Ringkasan tugas, digunakan sebagai deskripsi untuk hasil keamanan.
timestamp metadata.event_timestamp Stempel waktu peristiwa.
pengguna target.user.userid Pengguna yang terkait dengan peristiwa.
nama pengguna principal.user.userid Nama pengguna yang terkait dengan peristiwa.
user_name principal.user.userid Nama pengguna.
metadata.vendor_name Dikodekan secara permanen ke "Juniper Firewall". Dikodekan secara permanen ke "Juniper Firewall". Dikodekan secara permanen ke "JUNIPER_JUNOS". Ditentukan oleh logika parser berdasarkan konten log. Setelan defaultnya adalah "STATUS_UPDATE" jika bukan pesan CEF dan tidak ada jenis peristiwa spesifik lainnya yang diidentifikasi. Tetapkan ke "NETWORK_HTTP" untuk pesan CEF. Jika tidak ada kolom desc, kolom ini akan diisi dengan message_description yang diekstrak dari pesan log mentah.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.