Mengumpulkan log Elastic Packet Beats

Didukung di:

Dokumen ini menjelaskan cara menyerap log Elastic Packet Beats ke Google Security Operations menggunakan Bindplane. Parser pertama-tama menginisialisasi nilai default untuk berbagai kolom yang ditemukan dalam log Elastic Packet Beats. Kemudian, data diekstrak dari pesan log menggunakan kombinasi pola grok dan filter json, melakukan konversi jenis data, dan memetakan kolom yang diekstrak ke kolom yang sesuai dalam Model Data Terpadu (UDM) berdasarkan jenis set data peristiwa (misalnya, flow, dns, http, tls, dhcpv4).

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps.
  • Host Windows 2016 atau yang lebih baru, atau Linux dengan systemd.
  • Jika berjalan di belakang proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen BindPlane.
  • Akses istimewa ke konsol pengelolaan atau appliance Elastic Packet Beats.
  • Logstash diinstal dan dikonfigurasi.

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
    

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

Untuk opsi penginstalan tambahan, lihat panduan penginstalan.

Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. 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).
  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_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'ELASTIC_PACKETBEATS'
        raw_log_field: body
        ingestion_labels:
    
    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 YOUR_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 observiq-otel-collector
    
  • Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services, atau memasukkan perintah berikut:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Mengonfigurasi penerusan Syslog di Elastic Packet Beats

Karena Packetbeat tidak mendukung output syslog langsung, Anda harus menggunakan Logstash sebagai perantara.

Mengonfigurasi Packetbeat untuk mengirim log ke Logstash

  1. Login ke Konsol Pengelolaan Elastic Packet Beats.
  2. Buka Setelan > Penerusan Log.
  3. Klik tombol + Tambahkan atau Aktifkan.
  4. Berikan detail konfigurasi berikut:
    • Nama: Masukkan nama deskriptif (misalnya, Logstash Output).
    • Host: Masukkan alamat IP server Logstash.
    • Port: Masukkan port input beats Logstash (biasanya 5044).
    • Protocol: Pilih Beats protocol.
    • Format: Pilih JSON.
    • Zona waktu: Pilih zona waktu UTC untuk konsistensi universal di seluruh sistem.
    • Buka bagian Peristiwa, lalu pilih jenis log yang relevan atau semua.
  5. Simpan konfigurasi.

    Alternatif: Edit packetbeat.yml secara langsung:

    # /etc/packetbeat/packetbeat.yml
    packetbeat.protocols:
      - type: dns
        ports: [53]
      - type: http
        ports: [80, 8080, 8000, 5000, 8002]
        send_headers: true
        send_all_headers: true
      - type: tls
        ports: [443, 993, 995, 5223, 8443, 8883, 9243]
      - type: dhcpv4
        ports: [67, 68]
    
    # Enable processors for additional fields
    processors:
      - add_network_direction:
          source: private
          destination: private
          internal_networks:
            - private
      - community_id:
    
    # Send to Logstash using beats protocol
    output.logstash:
      hosts: ["LOGSTASH_IP:5044"]
    

    Ganti LOGSTASH_IP dengan alamat IP server Logstash Anda.

Mengonfigurasi Logstash untuk meneruskan ke BindPlane menggunakan Syslog

  1. Buat file konfigurasi pipeline Logstash:

    sudo nano /etc/logstash/conf.d/packetbeat-to-bindplane.conf
    
  2. Tambahkan konfigurasi berikut:

    # Receive from Packetbeat
    input {
      beats {
        port => 5044
      }
    }
    
    # Optional: Add filters for data enrichment
    filter {
      # Preserve original message structure
      mutate {
        copy => { "@metadata" => "[@metadata_backup]" }
      }
    }
    
    # Send to BindPlane via syslog
    output {
      syslog {
        host => "BINDPLANE_IP"
        port => 514
        protocol => "udp"
        rfc => "rfc5424"
        facility => "local0"
        severity => "informational"
        sourcehost => "%{[agent][hostname]}"
        appname => "packetbeat"
        procid => "%{[agent][id]}"
        msgid => "ELASTIC_PACKETBEATS"
        structured_data => "packetbeat@32473"
        message => "%{message}"
      }
    }
    

    Ganti BINDPLANE_IP dengan alamat IP agen BindPlane Anda.

  • Mulai ulang Logstash untuk menerapkan konfigurasi:

    sudo systemctl restart logstash
    

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
@timestamp metadata.event_timestamp Dipetakan langsung dari kolom log mentah @timestamp.
agent.hostname observer.hostname Dipetakan langsung dari kolom log mentah agent.hostname.
agent.id observer.asset_id Digabungkan dengan agent.type untuk membentuk kolom observer.asset_id.
agent.type observer.application Dipetakan langsung dari kolom log mentah agent.type.
agent.version observer.platform_version Dipetakan langsung dari kolom log mentah agent.version.
audit_category security_result.category_details Dipetakan langsung dari kolom log mentah audit_category.
audit_cluster_name additional.fields.audit_cluster_name.value.string_value Dipetakan langsung dari kolom log mentah audit_cluster_name.
audit_node_host_address observer.ip Dipetakan langsung dari kolom log mentah audit_node_host_address.
audit_node_id additional.fields.audit_node_id.value.string_value Dipetakan langsung dari kolom log mentah audit_node_id.
audit_node_name additional.fields.audit_node_name.value.string_value Dipetakan langsung dari kolom log mentah audit_node_name.
audit_request_effective_user observer.user.userid Dipetakan langsung dari kolom log mentah audit_request_effective_user.
audit_request_initiating_user additional.fields.audit_request_initiating_user.value.string_value Dipetakan langsung dari kolom log mentah audit_request_initiating_user.
audit_request_remote_address observer.ip Dipetakan langsung dari kolom log mentah audit_request_remote_address jika berbeda dengan audit_node_host_address.
client.bytes network.received_bytes (MASUK) / network.sent_bytes (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke network.received_bytes. Jika OUTBOUND, dipetakan ke network.sent_bytes.
client.ip target.ip (MASUK) / principal.ip (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke target.ip. Jika OUTBOUND, dipetakan ke principal.ip.
client.port target.port (INBOUND) / principal.port (OUTBOUND) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke target.port. Jika OUTBOUND, dipetakan ke principal.port.
cluster.uuid additional.fields.uuid.value.string_value Dipetakan langsung dari kolom log mentah cluster.uuid.
komponen additional.fields.component.value.string_value Dipetakan langsung dari kolom log mentah component.
destination.bytes network.sent_bytes Dipetakan langsung dari kolom log mentah destination.bytes untuk peristiwa FLOW.
destination.ip target.ip Dipetakan langsung dari kolom log mentah destination.ip jika network.direction bukan INBOUND atau OUTBOUND.
destination.mac target.mac Dipetakan langsung dari kolom log mentah destination.mac untuk peristiwa FLOW.
destination.port target.port Dipetakan langsung dari kolom log mentah destination.port untuk peristiwa FLOW.
dhcpv4.assigned_ip network.dhcp.requested_address Dipetakan langsung dari kolom log mentah dhcpv4.assigned_ip.
dhcpv4.client_ip network.dhcp.yiaddr (ACK) / network.dhcp.ciaddr (REQUEST) / source.ip (REQUEST, jika dhcpv4.client_ip kosong) Dipetakan berdasarkan kolom network.dhcp.type. Jika ACK, maka dipetakan ke network.dhcp.yiaddr. Jika REQUEST, maka dipetakan ke network.dhcp.ciaddr. Jika REQUEST dan dhcpv4.client_ip kosong, maka akan dipetakan ke source.ip.
dhcpv4.client_mac network.dhcp.client_identifier Dipetakan langsung dari kolom log mentah dhcpv4.client_mac setelah dikonversi menjadi byte.
dhcpv4.op_code network.dhcp.opcode Dipetakan ke network.dhcp.opcode berdasarkan nilai dhcpv4.op_code. Jika dhcpv4.op_code adalah BOOTREPLY atau BOOTREQUEST, nilai akan dipetakan secara langsung. Jika tidak, nilai ini dipetakan ke UNKNOWN_OPCODE.
dhcpv4.option.hostname network.dhcp.client_hostname Dipetakan langsung dari kolom log mentah dhcpv4.option.hostname.
dhcpv4.option.ip_address_lease_time_sec network.dhcp.lease_time_seconds Dipetakan langsung dari kolom log mentah dhcpv4.option.ip_address_lease_time_sec setelah dikonversi menjadi bilangan bulat yang tidak bertanda.
dhcpv4.option.message_type network.dhcp.type Dipetakan ke network.dhcp.type berdasarkan nilai dhcpv4.option.message_type. Pemetaan adalah sebagai berikut: ack -> ACK, nack -> NAK, discover -> DISCOVER, offer -> OFFER, request -> REQUEST, decline -> DECLINE, release -> RELEASE, info -> INFORM. Jika nilainya bukan salah satu dari nilai tersebut, nilai akan dipetakan ke UNKNOWN_MESSAGE_TYPE.
dhcpv4.option.server_identifier network.dhcp.sname Dipetakan langsung dari kolom log mentah dhcpv4.option.server_identifier.
dns.answers.data network.dns.answers.data Dipetakan langsung dari kolom log mentah dns.answers.data.
dns.answers.class network.dns.answers.class Dipetakan ke network.dns.answers.class berdasarkan nilai dns.answers.class. Pemetaan adalah sebagai berikut: IN -> 1, NONE -> 254, ANY -> 255.
dns.answers.name network.dns.answers.name Dipetakan langsung dari kolom log mentah dns.answers.name.
dns.answers.ttl network.dns.answers.ttl Dipetakan langsung dari kolom log mentah dns.answers.ttl setelah dikonversi menjadi bilangan bulat yang tidak bertanda.
dns.answers.type network.dns.answers.type Dipetakan ke network.dns.answers.type berdasarkan nilai dns.answers.type. Pemetaan adalah sebagai berikut: A -> 1, NS -> 2, CNAME -> 5, SOA -> 6, PTR -> 12, MX -> 15, TXT -> 16, AAAA -> 28, SRV -> 33, NAPTR -> 35, DS -> 43, DNSKEY -> 48, IXFR -> 251, AXFR -> 252, TYPE99 -> 99, TKEY -> 249, ANY -> 255, ALL -> 255, URI -> 256, NULL -> 0.
dns.flags.authoritative network.dns.authoritative Dipetakan langsung dari kolom log mentah dns.flags.authoritative jika benar.
dns.flags.recursion_available network.dns.recursion_available Dipetakan langsung dari kolom log mentah dns.flags.recursion_available jika benar.
dns.flags.recursion_desired network.dns.recursion_desired Dipetakan langsung dari kolom log mentah dns.flags.recursion_desired jika benar.
dns.flags.truncated_response network.dns.truncated Dipetakan langsung dari kolom log mentah dns.flags.truncated_response jika benar.
dns.id network.dns.id Dipetakan langsung dari kolom log mentah dns.id setelah dikonversi menjadi bilangan bulat yang tidak bertanda.
dns.question.class network.dns.questions.class Dipetakan ke network.dns.questions.class berdasarkan nilai dns.question.class. Pemetaan adalah sebagai berikut: IN -> 1, NONE -> 254, ANY -> 255.
dns.question.name network.dns.questions.name Dipetakan langsung dari kolom log mentah dns.question.name.
dns.question.type network.dns.questions.type Dipetakan ke network.dns.questions.type berdasarkan nilai dns.question.type. Pemetaan adalah sebagai berikut: A -> 1, NS -> 2, CNAME -> 5, SOA -> 6, PTR -> 12, MX -> 15, TXT -> 16, AAAA -> 28, SRV -> 33, NAPTR -> 35, DS -> 43, DNSKEY -> 48, IXFR -> 251, AXFR -> 252, TYPE99 -> 99, TKEY -> 249, ANY -> 255, ALL -> 255, URI -> 256, NULL -> 0.
dns.resolved_ip network.dns.additional.data Setiap elemen dalam array dns.resolved_ip diproses dan dipetakan ke kolom network.dns.additional.data.
dns.response_code network.dns.response_code Dipetakan ke network.dns.response_code berdasarkan nilai dns.response_code. Pemetaan adalah sebagai berikut: NOERROR -> 0, FORMERR -> 1, SERVFAIL -> 2, NXDOMAIN -> 3, NOTIMP -> 4, REFUSED -> 5, YXDOMAIN -> 6, YXRRSET -> 7, NXRRSET -> 8, NOTAUTH -> 9, NOTZONE -> 10.
error.message security_result.summary Digabungkan dengan status untuk membentuk kolom security_result.summary untuk peristiwa HTTP.
event.dataset metadata.product_event_type Dipetakan langsung dari kolom log mentah event.dataset.
flow.final Digunakan untuk menentukan apakah alurnya sudah final. Jika tidak, peristiwa akan dihapus.
flow.id network.session_id Dipetakan langsung dari kolom log mentah flow.id untuk peristiwa FLOW.
headers.accept_encoding security_result.about.labels.Accept-Encoding Dipetakan langsung dari kolom log mentah headers.accept_encoding.
headers.content_length additional.fields.content_length.value.string_value Dipetakan langsung dari kolom log mentah headers.content_length.
headers.content_type additional.fields.content_type.value.string_value Dipetakan langsung dari kolom log mentah headers.content_type.
headers.http_accept additional.fields.http_accept.value.string_value Dipetakan langsung dari kolom log mentah headers.http_accept.
headers.http_host principal.hostname, principal.asset.hostname Dipetakan langsung dari kolom log mentah headers.http_host.
headers.http_user_agent network.http.user_agent Dipetakan langsung dari kolom log mentah headers.http_user_agent.
headers.request_method network.http.method Dipetakan langsung dari kolom log mentah headers.request_method.
headers.x_b3_parentspanid additional.fields.x_b3_parentspanid.value.string_value Dipetakan langsung dari kolom log mentah headers.x_b3_parentspanid.
headers.x_b3_sampled additional.fields.x_b3_sampled.value.string_value Dipetakan langsung dari kolom log mentah headers.x_b3_sampled.
headers.x_envoy_attempt_count security_result.about.labels.x_envoy_attempt_count Dipetakan langsung dari kolom log mentah headers.x_envoy_attempt_count.
headers.x_envoy_original_path additional.fields.x_envoy_original_path.value.string_value Dipetakan langsung dari kolom log mentah headers.x_envoy_original_path.
headers.x_forwarded_client_cert additional.fields.client_cert.value.string_value Dipetakan langsung dari kolom log mentah headers.x_forwarded_client_cert.
headers.x_forwarded_for principal.ip, principal.asset.ip Dipetakan langsung dari kolom log mentah headers.x_forwarded_for setelah mengekstrak alamat IP menggunakan grok.
headers.x_forwarded_proto additional.fields.x_forwarded_proto.value.string_value Dipetakan langsung dari kolom log mentah headers.x_forwarded_proto.
headers.x_request_id additional.fields.x_request_id.value.string_value Dipetakan langsung dari kolom log mentah headers.x_request_id.
host principal.ip, principal.asset.ip Dipetakan langsung dari kolom log mentah host setelah mengekstrak alamat IP menggunakan grok.
http.request.method network.http.method Dipetakan langsung dari kolom log mentah http.request.method.
level security_result.severity Dipetakan ke security_result.severity berdasarkan nilai level. Pemetaan adalah sebagai berikut: INFO -> INFORMATIONAL, ERROR -> ERROR, WARNING -> LOW.
logger additional.fields.logger.value.string_value Dipetakan langsung dari kolom log mentah logger.
metode Digunakan untuk menentukan apakah peristiwa tersebut adalah peristiwa DNS.
msg security_result.description Dipetakan langsung dari kolom log mentah msg setelah menghapus tanda kutip ganda.
network.community_id network.community_id Dipetakan langsung dari kolom log mentah network.community_id.
network.direction network.direction Dipetakan langsung dari kolom log mentah network.direction setelah mengonversinya menjadi huruf besar. Jika nilainya adalah INGRESS atau INBOUND, nilai tersebut akan dipetakan ke INBOUND. Jika nilainya adalah EGRESS atau OUTBOUND, nilai tersebut akan dipetakan ke OUTBOUND.
network.protocol network.application_protocol Dipetakan langsung dari kolom log mentah network.protocol.
network.transport network.ip_protocol Dipetakan langsung dari kolom log mentah network.transport untuk peristiwa TLS.
server.bytes network.sent_bytes (MASUK) / network.received_bytes (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke network.sent_bytes. Jika OUTBOUND, dipetakan ke network.received_bytes.
server.domain principal.hostname, principal.asset.hostname (MASUK) / target.hostname, target.asset.hostname (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke principal.hostname. Jika OUTBOUND, dipetakan ke target.hostname.
server.ip principal.ip, principal.asset.ip (MASUK) / target.ip, target.asset.ip (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke principal.ip. Jika OUTBOUND, dipetakan ke target.ip.
server.port principal.port (INBOUND) / target.port (OUTBOUND) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke principal.port. Jika OUTBOUND, dipetakan ke target.port.
source.bytes network.received_bytes Dipetakan langsung dari kolom log mentah source.bytes untuk peristiwa FLOW.
source.ip principal.ip, principal.asset.ip Dipetakan langsung dari kolom log mentah source.ip untuk peristiwa FLOW.
source.mac principal.mac Dipetakan langsung dari kolom log mentah source.mac untuk peristiwa FLOW.
source.port principal.port Dipetakan langsung dari kolom log mentah source.port untuk peristiwa FLOW.
status metadata.description, security_result.summary Dipetakan ke metadata.description jika level kosong. Digabungkan dengan error.message untuk membentuk kolom security_result.summary untuk peristiwa HTTP dan TLS.
tls.client.ja3 network.tls.client.ja3 Dipetakan langsung dari kolom log mentah tls.client.ja3.
tls.client.server_name network.tls.client.server_name Dipetakan langsung dari kolom log mentah tls.client.server_name.
tls.client.supported_ciphers network.tls.client.supported_ciphers Setiap elemen dalam array tls.client.supported_ciphers diproses dan dipetakan ke array network.tls.client.supported_ciphers.
tls.cipher network.tls.cipher Dipetakan langsung dari kolom log mentah tls.cipher.
tls.detailed.server_certificate.not_after network.tls.server.certificate.not_after Dipetakan langsung dari kolom log mentah tls.detailed.server_certificate.not_after setelah dikonversi menjadi stempel waktu.
tls.detailed.server_certificate.not_before network.tls.server.certificate.not_before Dipetakan langsung dari kolom log mentah tls.detailed.server_certificate.not_before setelah dikonversi menjadi stempel waktu.
tls.detailed.server_certificate.serial_number network.tls.server.certificate.serial Dipetakan langsung dari kolom log mentah tls.detailed.server_certificate.serial_number.
tls.detailed.server_certificate.version network.tls.server.certificate.version Dipetakan langsung dari kolom log mentah tls.detailed.server_certificate.version setelah dikonversi menjadi string.
tls.established network.tls.established Dipetakan langsung dari kolom log mentah tls.established.
tls.next_protocol network.tls.next_protocol Dipetakan langsung dari kolom log mentah tls.next_protocol.
tls.resumed network.tls.resumed Dipetakan langsung dari kolom log mentah tls.resumed.
tls.server.hash.sha1 network.tls.server.certificate.sha1 Dipetakan langsung dari kolom log mentah tls.server.hash.sha1 setelah mengonversinya menjadi huruf kecil.
tls.server.issuer network.tls.server.certificate.issuer Dipetakan langsung dari kolom log mentah tls.server.issuer.
tls.server.subject network.tls.server.certificate.subject Dipetakan langsung dari kolom log mentah tls.server.subject.
tls.version network.tls.version Dipetakan langsung dari kolom log mentah tls.version.
tls.version_protocol network.tls.version_protocol Dipetakan langsung dari kolom log mentah tls.version_protocol.
jenis Digunakan untuk menentukan apakah peristiwa tersebut adalah peristiwa DNS.
url.full principal.url (MASUK) / target.url (KELUAR) Dipetakan berdasarkan kolom network.direction. Jika INBOUND, dipetakan ke principal.url. Jika OUTBOUND, dipetakan ke target.url.
user_id target.user.userid Dipetakan langsung dari kolom log mentah user_id.
user_name target.user.user_display_name Dipetakan langsung dari kolom log mentah user_name.
metadata.event_type Setel ke GENERIC_EVENT secara default. Diubah menjadi jenis peristiwa tertentu berdasarkan sumber log dan data peristiwa.
metadata.vendor_name Setel ke Elastic secara default.
metadata.product_name Setel ke PacketBeat secara default.
security_result.action Setel ke ALLOW secara default.
metadata.log_type Setel ke ELASTIC_PACKETBEATS secara default.

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