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. Platform ini menyediakan platform terpadu untuk pengelolaan infrastruktur jaringan, pemilihan rute, pengalihan, dan fungsi keamanan dengan logging komprehensif untuk peristiwa sistem, peristiwa keamanan, dan traffic jaringan. Parser mengekstrak kolom dari syslog Juniper Junos dan log berformat nilai kunci. Parser ini menggunakan grok dan/atau kv untuk mengurai pesan log, lalu memetakan nilai ini ke Model Data Terpadu (UDM). Fungsi 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 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 gunakan file autentikasi penyerapan (Opsi 2) hingga Ingestion API dihentikan pada 20 Juli 2027.
  1. Login ke konsolGoogle Cloud dan pilih project Google Cloud yang ditautkan ke instance Google SecOps Anda.
  2. Buka IAM & Admin > Service Accounts.
  3. Klik Create service account.
  4. Berikan detail konfigurasi berikut:
    • Service account name: Masukkan nama akun (misalnya, bindplane-ingest).
    • Deskripsi akun layanan: Masukkan deskripsi (misalnya, Bindplane agent log ingestion).
  5. Klik Create and continue.
  6. Di bagian Grant this service account access to project, klik Select a role, lalu pilih Chronicle Editor.
  7. Klik Continue lalu klik Done.
  8. Klik akun layanan yang Anda buat, lalu buka tab Keys.
  9. Klik Add key > Create new key.
  10. Pilih JSON, lalu klik Create. File kunci didownload ke komputer Anda.
  11. Simpan file kunci sebagai ingestion-auth.json di direktori Bindplane collector (/opt/observiq-otel-collector/ingestion-auth.json di Linux atau C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json di Windows), atau perbarui creds_file_path di config.yaml agar sesuai dengan jalur tempat Anda menyimpannya.
  12. Buka IAM & Admin > Settings dan salin Project number. Anda akan memerlukannya untuk konfigurasi pengekspor.

Opsi 2: Mendownload file autentikasi penyerapan (lama)

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download file autentikasi penyerapan.
  4. Simpan file dengan aman di sistem tempat agen 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 active (running).

Referensi penginstalan tambahan

Untuk opsi pemasangan dan pemecahan masalah tambahan, lihat Panduan pemasangan agen BindPlane.

Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps

Cari file konfigurasi

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

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

Mengedit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        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: '/path/to/ingestion-authentication-file.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.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 dipantau (0.0.0.0 untuk memantau semua antarmuka)
      • 514: Nomor port yang akan diproses (port syslog standar)
    • 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
      • YOUR_CUSTOMER_ID: ID Pelanggan dari bagian Dapatkan ID pelanggan
      • location: Ganti <LOCATION> dengan region instance Google SecOps Anda (misalnya, us, europe, atau asia-southeast1). Pengekspor mengawali chronicle.googleapis.com dengan nilai ini. Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.
      • project: Ganti <PROJECT_NUMBER> dengan nomor project dari IAM & Admin > Settings.
      • endpoint: Tetap disetel ke chronicle.googleapis.com.
      • log_type: Jenis log persis seperti yang muncul di Chronicle (JUNIPER_JUNOS)

Pengekspor API penyerapan lama

  • Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok exporters dengan kode berikut. Tetapkan creds_file_path ke jalur ke file autentikasi penyerapan, dan jika instance Anda berada di luar AS, ganti malachiteingestion-pa.googleapis.com dengan endpoint regional Anda (misalnya, europe-malachiteingestion-pa.googleapis.com).

    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:
    

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. Cari 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. Konfigurasikan 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. Konfigurasikan data syslog terstruktur (opsional untuk penguraian yang ditingkatkan):

    set system syslog host BINDPLANE_IP structured-data
    
  6. Commit 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, yang dikonversi menjadi bilangan bulat.
DST target.ip Alamat IP tujuan koneksi jaringan.
FLAG additional.fields{}.key: "FLAG", additional.fields{}.value.string_value: Nilai 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: Nilai 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.
OUT 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, yang 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 Bidang Type of Service di header IP.
TTL network.dns.additional.ttl Nilai Time To Live, yang dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
URGP additional.fields{}.key: "URGP", additional.fields{}.value.string_value: Nilai URGP Bidang Urgent pointer di header TCP.
WINDOW 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 yang 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: Nilai 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, yang diuraikan dari pesan.
firewall_action security_result.action_details Tindakan firewall yang diambil.
host principal.hostname, intermediary.hostname Nama host perangkat yang menghasilkan log. Digunakan untuk prinsipal dan perantara dalam berbagai kasus.
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, yang diekstrak dari informasi kunci SSH2.
shost principal.hostname Nama host sumber.
source_address principal.ip Alamat IP sumber.
source_port principal.port Port sumber, yang 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 acara.
task_summary security_result.description Ringkasan tugas, yang 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 Diprogram secara permanen ke "Juniper Firewall". Diprogram secara permanen ke "Juniper Firewall". Dikodekan secara permanen ke "JUNIPER_JUNOS". Ditentukan oleh logika parser berdasarkan konten log. 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.
protocol-name network.ip_protocol Dipetakan dari log perubahan
application_name target.application Dipetakan dari log perubahan
desc sec_result.summary Dipetakan dari log perubahan
mac-address principal.mac Dipetakan dari log perubahan

Log Perubahan

Melihat Log Perubahan untuk parser ini

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