Mengumpulkan log ntopng

Didukung di:

Ringkasan

Parser ini mengekstrak log pemantauan jaringan ntopng dalam format SYSLOG atau JSON. Fungsi ini mengurai pesan log, mengonversi kolom yang relevan ke dalam format UDM, dan memperkaya peristiwa dengan metadata seperti nama produk dan vendor. Parser juga menangani struktur JSON bertingkat dan memetakan kolom ntopng tertentu ke peristiwa jaringan UDM, termasuk pemberitahuan alur dan akses resource pengguna.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke ntopng.

Mengonfigurasi feed di Google SecOps untuk menyerap log ntopng

  1. Buka SIEM Settings > Feeds.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, ntopng Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih Ntopng sebagai Jenis log.
  6. Klik Berikutnya.
  7. Opsional: Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Dari tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL.

  3. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Ganti kode berikut:

    • ENDPOINT_URL: URL endpoint feed.
    • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
    • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Mengonfigurasi Webhook di ntopng untuk Google SecOps

  1. Login ke antarmuka Web ntopng.
  2. Pilih menu System dari drop-down.
  3. Buka Notifikasi > Endpoint.
  4. Klik add .
  5. Tentukan nilai untuk parameter input berikut:
    • Endpoint Name: Berikan nama yang unik dan deskriptif (misalnya, Google SecOps).
    • Endpoint Type: Pilih Webhook dari daftar.
    • URL Webhook: Masukkan ENDPOINT_URL Google SecOps dengan API_KEY dan SECRET.
  6. Klik Tambahkan.
  7. Buka Notifikasi > Penerima.
  8. Klik add .
  9. Tentukan nilai untuk parameter input berikut:
    • Nama Penerima: Berikan nama yang unik dan deskriptif (misalnya, Google SecOps).
    • Select Endpoint: Pilih endpoint yang dibuat sebelumnya.
    • Keparahan: Pilih tingkat keparahan yang akan dikirim ke Google SecOps (misalnya, Info, Peringatan, dan Error).
    • Filter Kategori: Pilih data yang akan dikirim ke Google SecOps.
  10. Klik Test Recipient untuk memverifikasi koneksi.
  11. Klik Tambahkan untuk menyimpan webhook.

Mengonfigurasi subscriber resource webhook ntopng

  1. Buka Kumpulan.
  2. Pilih resource tempat peristiwa akan dibagikan.

  3. Klik ikon pensil di kolom Tindakan.

  4. Klik drop-down Penerima.

  5. Pilih Penerima Webhook Google SecOps.

  6. Klik Edit untuk menyimpan konfigurasi.

  7. Ulangi prosesnya untuk resource lainnya.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
action security_result.detection_fields.key=action, security_result.detection_fields.value=%{action} Nilai action dari log mentah dipetakan ke objek security_result.detection_fields dengan kunci "action".
alert_generation.host_info.broadcast_domain_host security_result.detection_fields.key=host_info broadcast_domain_host, security_result.detection_fields.value=%{alert_generation.host_info.broadcast_domain_host} Nilai alert_generation.host_info.broadcast_domain_host dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info broadcast_domain_host".
alert_generation.host_info.dhcpHost security_result.detection_fields.key=host_info dhcpHost, security_result.detection_fields.value=%{alert_generation.host_info.dhcpHost} Nilai alert_generation.host_info.dhcpHost dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info dhcpHost".
alert_generation.host_info.is_blacklisted security_result.detection_fields.key=host_info is_blacklisted, security_result.detection_fields.value=%{alert_generation.host_info.is_blacklisted} Nilai alert_generation.host_info.is_blacklisted dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info is_blacklisted".
alert_generation.host_info.is_broadcast security_result.detection_fields.key=host_info is_broadcast, security_result.detection_fields.value=%{alert_generation.host_info.is_broadcast} Nilai alert_generation.host_info.is_broadcast dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info is_broadcast".
alert_generation.host_info.is_multicast security_result.detection_fields.key=host_info is_multicast, security_result.detection_fields.value=%{alert_generation.host_info.is_multicast} Nilai alert_generation.host_info.is_multicast dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info is_multicast".
alert_generation.host_info.localhost security_result.detection_fields.key=host_info localhost, security_result.detection_fields.value=%{alert_generation.host_info.localhost} Nilai alert_generation.host_info.localhost dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info localhost".
alert_generation.host_info.privatehost security_result.detection_fields.key=host_info privatehost, security_result.detection_fields.value=%{alert_generation.host_info.privatehost} Nilai alert_generation.host_info.privatehost dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info privatehost".
alert_generation.host_info.systemhost security_result.detection_fields.key=host_info systemhost, security_result.detection_fields.value=%{alert_generation.host_info.systemhost} Nilai alert_generation.host_info.systemhost dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "host_info systemhost".
alert_generation.script_key security_result.category_details=%{alert_generation.script_key} Nilai alert_generation.script_key dari JSON bertingkat dipetakan ke security_result.category_details.
alert_generation.subdir security_result.detection_fields.key=alert_generation_subdir, security_result.detection_fields.value=%{alert_generation.subdir} Nilai alert_generation.subdir dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "alert_generation_subdir".
alert_id security_result.detection_fields.key=alert_id, security_result.detection_fields.value=%{alert_id} Nilai alert_id dari log mentah dipetakan ke objek security_result.detection_fields dengan kunci "alert_id".
alerts_map security_result.detection_fields.key=alerts_map, security_result.detection_fields.value=%{alerts_map} Nilai alerts_map dari log mentah dipetakan ke objek security_result.detection_fields dengan kunci "alerts_map".
cli2srv_bytes network.sent_bytes Nilai cli2srv_bytes dari log mentah dikonversi menjadi bilangan bulat tanpa tanda tangan dan dipetakan ke network.sent_bytes.
cli_asn principal.resource.attribute.labels.key=cli_asn, principal.resource.attribute.labels.value=%{cli_asn} Nilai cli_asn dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_asn".
cli_blacklisted principal.resource.attribute.labels.key=cli_blacklisted, principal.resource.attribute.labels.value=%{cli_blacklisted} Nilai cli_blacklisted dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_blacklisted".
cli_city_name principal.location.city Nilai cli_city_name dari log mentah dipetakan ke principal.location.city.
cli_continent_name principal.resource.attribute.labels.key=cli_continent_name, principal.resource.attribute.labels.value=%{cli_continent_name} Nilai cli_continent_name dari log mentah dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_continent_name".
cli_country_name principal.location.country_or_region Nilai cli_country_name dari log mentah dipetakan ke principal.location.country_or_region.
cli_host_pool_id principal.resource.attribute.labels.key=cli_host_pool_id, principal.resource.attribute.labels.value=%{cli_host_pool_id} Nilai cli_host_pool_id dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_host_pool_id".
cli_ip principal.ip, principal.asset.ip Nilai cli_ip dari log mentah dipetakan ke principal.ip dan principal.asset.ip.
cli_localhost principal.resource.attribute.labels.key=cli_localhost, principal.resource.attribute.labels.value=%{cli_localhost} Nilai cli_localhost dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_localhost".
cli_location principal.location.name Nilai cli_location dari log mentah dikonversi menjadi string. Jika bukan "0", nilai ini akan dipetakan ke principal.location.name.
cli_name principal.hostname, principal.asset.hostname Nilai cli_name dari log mentah dipetakan ke principal.hostname dan principal.asset.hostname.
cli_network principal.resource.attribute.labels.key=cli_network, principal.resource.attribute.labels.value=%{cli_network} Nilai cli_network dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "cli_network".
cli_port principal.port Nilai cli_port dari log mentah dikonversi menjadi bilangan bulat dan dipetakan ke principal.port.
entity_id principal.resource.attribute.labels.key=entity_id, principal.resource.attribute.labels.value=%{entity_id} Nilai entity_id dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "entity_id".
entity_val principal.resource.attribute.labels.key=entity_val, principal.resource.attribute.labels.value=%{entity_val} Nilai entity_val dari log mentah dipetakan ke objek principal.resource.attribute.labels dengan kunci "entity_val", kecuali jika sama dengan nilai ip.
event.type metadata.event_type Ditentukan oleh logika parser berdasarkan keberadaan kolom principal, target, dan network. Nilai yang mungkin: NETWORK_FLOW, NETWORK_UNCATEGORIZED, USER_RESOURCE_ACCESS, GENERIC_EVENT.
first_seen principal.asset.first_seen_time Nilai first_seen dari log mentah dikonversi menjadi string, diuraikan sebagai milidetik sejak epoch, dan dipetakan ke principal.asset.first_seen_time.
flow_risk_bitmap security_result.detection_fields.key=flow_risk_bitmap, security_result.detection_fields.value=%{flow_risk_bitmap} Nilai flow_risk_bitmap dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "flow_risk_bitmap".
granularity security_result.detection_fields.key=granularity, security_result.detection_fields.value=%{granularity} Nilai granularity dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan "tingkat perincian" kunci.
hash_entry_id security_result.detection_fields.key=hash_entry_id, security_result.detection_fields.value=%{hash_entry_id} Nilai hash_entry_id dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "hash_entry_id".
host_ip principal.ip, principal.asset.ip Alamat IP yang diekstrak dari bagian <INT>Oct 20 15:34:53 1.1.1.1 pesan dipetakan ke principal.ip dan principal.asset.ip.
ifid principal.asset_id Nilai ifid dari log mentah dikonversi menjadi string dan dipetakan ke principal.asset_id dengan awalan "ifid: ".
ip principal.ip, principal.asset.ip, atau target.ip, target.asset.ip Jika is_client bernilai benar, nilai ip dari log mentah akan dipetakan ke principal.ip dan principal.asset.ip. Jika is_server bernilai benar, is_server akan dipetakan ke target.ip dan target.asset.ip.
is_cli_attacker security_result.detection_fields.key=is_cli_attacker, security_result.detection_fields.value=%{is_cli_attacker} Nilai is_cli_attacker dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "is_cli_attacker".
is_cli_victim security_result.detection_fields.key=is_cli_victim, security_result.detection_fields.value=%{is_cli_victim} Nilai is_cli_victim dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "is_cli_victim".
is_flow_alert security_result.detection_fields.key=is_flow_alert, security_result.detection_fields.value=%{is_flow_alert}, security_result.detection_fields.key=alert type, security_result.detection_fields.value=flow Nilai is_flow_alert dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "is_flow_alert". Jika is_flow_alert bernilai benar, objek security_result.detection_fields dengan kunci "alert type" dan nilai "flow" juga akan dibuat.
is_srv_attacker security_result.detection_fields.key=is_srv_attacker, security_result.detection_fields.value=%{is_srv_attacker} Nilai is_srv_attacker dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "is_srv_attacker".
is_srv_victim security_result.detection_fields.key=is_srv_victim, security_result.detection_fields.value=%{is_srv_victim} Nilai is_srv_victim dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "is_srv_victim".
metadata.product_name metadata.product_name=NTOPNG Di-hardcode ke "NTOPNG".
metadata.vendor_name metadata.vendor_name=%{vendor_name} Nilai vendor_name dari pesan dipetakan ke metadata.vendor_name.
name principal.hostname, principal.asset.hostname, atau target.hostname, target.asset.hostname Jika is_client bernilai benar, nilai name dari log mentah akan dipetakan ke principal.hostname dan principal.asset.hostname. Jika is_server bernilai benar, is_server akan dipetakan ke target.hostname dan target.asset.hostname.
ntopng_key security_result.detection_fields.key=ntopng_key, security_result.detection_fields.value=%{ntopng_key} Nilai ntopng.key (diganti namanya menjadi ntopng_key) dari JSON bertingkat dipetakan ke objek security_result.detection_fields dengan kunci "ntopng_key".
observation_point_id observer.asset_id Nilai observation_point_id dari log mentah dikonversi menjadi string. Jika bukan "0", ID akan dipetakan ke observer.asset_id dengan awalan "id: ".
pool_id principal.resource.attribute.labels.key=pool_id, principal.resource.attribute.labels.value=%{pool_id} Nilai pool_id dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "pool_id".
probe_ip intermediary.ip Nilai probe_ip dari log mentah dipetakan ke intermediary.ip.
proto.confidence security_result.confidence_details Nilai proto.confidence dari log mentah dikonversi menjadi string dan dipetakan ke security_result.confidence_details.
proto.http.last_method network.http.method Nilai proto.http.last_method dari log mentah dipetakan ke network.http.method.
proto.http.last_return_code network.http.response_code Nilai proto.http.last_return_code dari log mentah dikonversi menjadi bilangan bulat dan dipetakan ke network.http.response_code.
proto.http.last_server_name network.tls.client.server_name Nilai proto.http.server_name dari log mentah dipetakan ke network.tls.client.server_name.
proto.http.last_url network.http.referral_url Nilai proto.http.last_url dari log mentah dipetakan ke network.http.referral_url.
proto.http.last_user_agent network.http.user_agent Nilai proto.http.last_user_agent dari log mentah dipetakan ke network.http.user_agent.
proto.http.server_name network.tls.client.server_name Nilai proto.http.server_name dari log mentah dipetakan ke network.tls.client.server_name.
proto.l4 network.ip_protocol Nilai proto.l4 dari log mentah dipetakan ke network.ip_protocol.
proto_ndpi additional.fields.key=proto ndpi, additional.fields.value.string_value=%{proto_ndpi}, network.application_protocol Nilai proto.ndpi (diganti namanya menjadi proto_ndpi) dari log mentah dipetakan ke objek additional.fields dengan kunci "proto ndpi". Ini juga digunakan untuk menentukan nilai network.application_protocol berdasarkan kata kunci seperti "NTP" dan "HTTP".
proto_ndpi_app principal.application Nilai proto_ndpi_app dari log mentah dipetakan ke principal.application.
proto_ndpi_breed security_result.detection_fields.key=proto_ndpi_breed, security_result.detection_fields.value=%{proto_ndpi_breed} Nilai proto_ndpi_breed dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "proto_ndpi_breed".
proto_ndpi_cat security_result.category_details Nilai proto_ndpi_cat dari log mentah dipetakan ke security_result.category_details.
proto_ndpi_cat_id security_result.detection_fields.key=proto_ndpi_cat_id, security_result.detection_fields.value=%{proto_ndpi_cat_id} Nilai proto_ndpi_cat_id dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "proto_ndpi_cat_id".
score security_result.detection_fields.key=score, security_result.detection_fields.value=%{score} Nilai score dari log mentah dikonversi menjadi string dan dipetakan ke objek security_result.detection_fields dengan kunci "score".
srv2cli_bytes network.received_bytes Nilai srv2cli_bytes dari log mentah dikonversi menjadi bilangan bulat tanpa tanda tangan dan dipetakan ke network.received_bytes.
srv_asn target.resource.attribute.labels.key=srv_asn, target.resource.attribute.labels.value=%{srv_asn} Nilai srv_asn dari log mentah dikonversi menjadi string dan dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_asn".
srv_blacklisted target.resource.attribute.labels.key=srv_blacklisted, target.resource.attribute.labels.value=%{srv_blacklisted} Nilai srv_blacklisted dari log mentah dikonversi menjadi string dan dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_blacklisted".
srv_city_name target.location.city Nilai srv_city_name dari log mentah dipetakan ke target.location.city.
srv_continent_name target.resource.attribute.labels.key=srv_continent_name, target.resource.attribute.labels.value=%{srv_continent_name} Nilai srv_continent_name dari log mentah dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_continent_name".
srv_country_name target.location.country_or_region Nilai srv_country_name dari log mentah dipetakan ke target.location.country_or_region.
srv_host_pool_id target.resource.attribute.labels.key=srv_host_pool_id, target.resource.attribute.labels.value=%{srv_host_pool_id} Nilai srv_host_pool_id dari log mentah dikonversi menjadi string dan dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_host_pool_id".
srv_ip target.ip, target.asset.ip Nilai srv_ip dari log mentah dipetakan ke target.ip dan target.asset.ip.
srv_localhost target.resource.attribute.labels.key=srv_localhost, target.resource.attribute.labels.value=%{srv_localhost} Nilai srv_localhost dari log mentah dikonversi menjadi string dan dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_localhost".
srv_location target.location.name Nilai srv_location dari log mentah dikonversi menjadi string. Jika bukan "0", nilai ini akan dipetakan ke target.location.name.
srv_location_lat target.location.region_coordinates.latitude Nilai srv_location_lat dari log mentah dipetakan ke target.location.region_coordinates.latitude.
srv_location_lon target.location.region_coordinates.longitude Nilai srv_location_lon dari log mentah dipetakan ke target.location.region_coordinates.longitude.
srv_name target.hostname, target.asset.hostname Nilai srv_name dari log mentah dipetakan ke target.hostname dan target.asset.hostname.
srv_network target.resource.attribute.labels.key=srv_network, target.resource.attribute.labels.value=%{srv_network} Nilai srv_network dari log mentah dikonversi menjadi string dan dipetakan ke objek target.resource.attribute.labels dengan kunci "srv_network".
srv_port target.port Nilai srv_port dari log mentah dikonversi menjadi bilangan bulat dan dipetakan ke target.port.
tstamp additional.fields.key=tstamp, additional.fields.value.string_value=%{tstamp} Nilai tstamp dari log mentah dikonversi menjadi string dan dipetakan ke objek additional.fields dengan kunci "tstamp".
vlan_id principal.resource.attribute.labels.key=vlan_id, principal.resource.attribute.labels.value=%{vlan_id} Nilai vlan_id dari log mentah dikonversi menjadi string dan dipetakan ke objek principal.resource.attribute.labels dengan kunci "vlan_id".
when metadata.event_timestamp Nilai when dari log mentah diuraikan sebagai stempel waktu dan dipetakan ke metadata.event_timestamp.

Perubahan

2024-02-01

  • Perbaikan Bug:
  • Mengubah "=>" menjadi ":" di komentar header file conf.

2023-11-16

  • Parser yang baru dibuat.