Mengumpulkan log ntopng
Ringkasan
Parser ini mengekstrak log pemantauan jaringan ntopng dalam format SYSLOG atau JSON. Proses 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 memenuhi prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke ntopng.
Menyiapkan feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama feed; misalnya, Ntopng Logs.
- Pilih Webhook sebagai Jenis sumber.
- Pilih Ntopng sebagai Jenis log.
- Klik Berikutnya.
- Opsional: Tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti \n.
 
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti 
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- 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.
- Dari tab Detail, salin URL endpoint feed dari kolom Informasi Endpoint. Anda perlu menentukan URL endpoint ini di aplikasi klien Anda.
- Klik Selesai.
Membuat kunci API untuk feed webhook
- Buka konsolGoogle Cloud > Kredensial. 
- Klik Create credentials, lalu pilih API key. 
- Batasi akses kunci API ke Google Security Operations API. 
Tentukan URL endpoint
- Di aplikasi klien Anda, tentukan URL endpoint HTTPS yang disediakan di feed webhook.
- Aktifkan autentikasi dengan menentukan kunci API dan kunci rahasia 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. 
- 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
- Login ke antarmuka Web ntopng.
- Pilih menu Sistem dari drop-down.
- Buka Notifikasi > Endpoint.
- Klik add .
- Tentukan nilai untuk parameter input berikut:
- Endpoint Name: Berikan nama yang unik dan deskriptif (misalnya, Google SecOps).
- Endpoint Type: Pilih Webhook dari daftar.
- Webhook URL: Masukkan ENDPOINT_URL Google SecOps dengan API_KEY dan SECRET.
 
- Klik Tambahkan.
- Buka Notifikasi > Penerima.
- Klik add .
- Tentukan nilai untuk parameter input berikut:
- Recipient Name: Berikan nama yang unik dan deskriptif (misalnya, Google SecOps).
- Pilih Endpoint: Pilih endpoint yang dibuat sebelumnya.
- Tingkat 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.
 
- Klik Uji Penerima untuk memverifikasi koneksi.
- Klik Tambahkan untuk menyimpan webhook.
Mengonfigurasi pelanggan resource webhook ntopng
- Buka Kumpulan.
- Pilih sumber daya untuk membagikan acara dari. 
- Klik ikon pensil di kolom Tindakan. 
- Klik drop-down Penerima. 
- Pilih Penerima Webhook Google SecOps. 
- Klik Edit untuk menyimpan konfigurasi. 
- Ulangi prosesnya untuk resource lain. 
Tabel Pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika | 
|---|---|---|
| action | security_result.detection_fields.key=action,security_result.detection_fields.value=%{action} | Nilai actiondari log mentah dipetakan ke objeksecurity_result.detection_fieldsdengan 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_hostdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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.dhcpHostdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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_blacklisteddari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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_broadcastdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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_multicastdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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.localhostdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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.privatehostdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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.systemhostdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "host_info systemhost". | 
| alert_generation.script_key | security_result.category_details=%{alert_generation.script_key} | Nilai alert_generation.script_keydari JSON bertingkat dipetakan kesecurity_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.subdirdari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "alert_generation_subdir". | 
| alert_id | security_result.detection_fields.key=alert_id,security_result.detection_fields.value=%{alert_id} | Nilai alert_iddari log mentah dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "alert_id". | 
| alerts_map | security_result.detection_fields.key=alerts_map,security_result.detection_fields.value=%{alerts_map} | Nilai alerts_mapdari log mentah dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "alerts_map". | 
| cli2srv_bytes | network.sent_bytes | Nilai cli2srv_bytesdari log mentah dikonversi menjadi bilangan bulat yang tidak bertanda tangan dan dipetakan kenetwork.sent_bytes. | 
| cli_asn | principal.resource.attribute.labels.key=cli_asn,principal.resource.attribute.labels.value=%{cli_asn} | Nilai cli_asndari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_asn". | 
| cli_blacklisted | principal.resource.attribute.labels.key=cli_blacklisted,principal.resource.attribute.labels.value=%{cli_blacklisted} | Nilai cli_blacklisteddari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_blacklisted". | 
| cli_city_name | principal.location.city | Nilai cli_city_namedari log mentah dipetakan keprincipal.location.city. | 
| cli_continent_name | principal.resource.attribute.labels.key=cli_continent_name,principal.resource.attribute.labels.value=%{cli_continent_name} | Nilai cli_continent_namedari log mentah dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_continent_name". | 
| cli_country_name | principal.location.country_or_region | Nilai cli_country_namedari log mentah dipetakan keprincipal.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_iddari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_host_pool_id". | 
| cli_ip | principal.ip,principal.asset.ip | Nilai cli_ipdari log mentah dipetakan keprincipal.ipdanprincipal.asset.ip. | 
| cli_localhost | principal.resource.attribute.labels.key=cli_localhost,principal.resource.attribute.labels.value=%{cli_localhost} | Nilai cli_localhostdari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_localhost". | 
| cli_location | principal.location.name | Nilai cli_locationdari log mentah dikonversi menjadi string. Jika bukan "0", nilai tersebut dipetakan keprincipal.location.name. | 
| cli_name | principal.hostname,principal.asset.hostname | Nilai cli_namedari log mentah dipetakan keprincipal.hostnamedanprincipal.asset.hostname. | 
| cli_network | principal.resource.attribute.labels.key=cli_network,principal.resource.attribute.labels.value=%{cli_network} | Nilai cli_networkdari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "cli_network". | 
| cli_port | principal.port | Nilai cli_portdari log mentah dikonversi menjadi bilangan bulat dan dipetakan keprincipal.port. | 
| entity_id | principal.resource.attribute.labels.key=entity_id,principal.resource.attribute.labels.value=%{entity_id} | Nilai entity_iddari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "entity_id". | 
| entity_val | principal.resource.attribute.labels.key=entity_val,principal.resource.attribute.labels.value=%{entity_val} | Nilai entity_valdari log mentah dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "entity_val", kecuali jika sama dengan nilaiip. | 
| event.type | metadata.event_type | Ditentukan oleh logika parser berdasarkan keberadaan kolom principal,target, dannetwork.  Nilai yang mungkin:NETWORK_FLOW,NETWORK_UNCATEGORIZED,USER_RESOURCE_ACCESS,GENERIC_EVENT. | 
| first_seen | principal.asset.first_seen_time | Nilai first_seendari log mentah dikonversi menjadi string, diuraikan sebagai milidetik sejak epoch, dan dipetakan keprincipal.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_bitmapdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "flow_risk_bitmap". | 
| granularity | security_result.detection_fields.key=granularity,security_result.detection_fields.value=%{granularity} | Nilai granularitydari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "perincian". | 
| hash_entry_id | security_result.detection_fields.key=hash_entry_id,security_result.detection_fields.value=%{hash_entry_id} | Nilai hash_entry_iddari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan 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.1pesan dipetakan keprincipal.ipdanprincipal.asset.ip. | 
| ifid | principal.asset_id | Nilai ifiddari log mentah dikonversi menjadi string dan dipetakan keprincipal.asset_iddengan awalan "ifid: ". | 
| ip | principal.ip,principal.asset.ipatautarget.ip,target.asset.ip | Jika is_clientbenar (true), nilaiipdari log mentah akan dipetakan keprincipal.ipdanprincipal.asset.ip. Jikais_serverbenar, maka akan dipetakan ketarget.ipdantarget.asset.ip. | 
| is_cli_attacker | security_result.detection_fields.key=is_cli_attacker,security_result.detection_fields.value=%{is_cli_attacker} | Nilai is_cli_attackerdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan 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_victimdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan 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_alertdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "is_flow_alert". Jikais_flow_alertbenar (true), objeksecurity_result.detection_fieldsdengan kunci "jenis pemberitahuan" dan nilai "alur" juga dibuat. | 
| is_srv_attacker | security_result.detection_fields.key=is_srv_attacker,security_result.detection_fields.value=%{is_srv_attacker} | Nilai is_srv_attackerdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan 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_victimdari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "is_srv_victim". | 
| metadata.product_name | metadata.product_name=NTOPNG | Dikodekan secara permanen ke "NTOPNG". | 
| metadata.vendor_name | metadata.vendor_name=%{vendor_name} | Nilai vendor_namedari pesan dipetakan kemetadata.vendor_name. | 
| name | principal.hostname,principal.asset.hostnameatautarget.hostname,target.asset.hostname | Jika is_clientbenar (true), nilainamedari log mentah akan dipetakan keprincipal.hostnamedanprincipal.asset.hostname. Jikais_serverbenar, maka akan dipetakan ketarget.hostnamedantarget.asset.hostname. | 
| ntopng_key | security_result.detection_fields.key=ntopng_key,security_result.detection_fields.value=%{ntopng_key} | Nilai ntopng.key(diganti namanya menjadintopng_key) dari JSON bertingkat dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "ntopng_key". | 
| observation_point_id | observer.asset_id | Nilai observation_point_iddari log mentah dikonversi menjadi string. Jika bukan "0", ID akan dipetakan keobserver.asset_iddengan awalan "id: ". | 
| pool_id | principal.resource.attribute.labels.key=pool_id,principal.resource.attribute.labels.value=%{pool_id} | Nilai pool_iddari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "pool_id". | 
| probe_ip | intermediary.ip | Nilai probe_ipdari log mentah dipetakan keintermediary.ip. | 
| proto.confidence | security_result.confidence_details | Nilai proto.confidencedari log mentah dikonversi menjadi string dan dipetakan kesecurity_result.confidence_details. | 
| proto.http.last_method | network.http.method | Nilai proto.http.last_methoddari log mentah dipetakan kenetwork.http.method. | 
| proto.http.last_return_code | network.http.response_code | Nilai proto.http.last_return_codedari log mentah dikonversi menjadi bilangan bulat dan dipetakan kenetwork.http.response_code. | 
| proto.http.last_server_name | network.tls.client.server_name | Nilai proto.http.server_namedari log mentah dipetakan kenetwork.tls.client.server_name. | 
| proto.http.last_url | network.http.referral_url | Nilai proto.http.last_urldari log mentah dipetakan kenetwork.http.referral_url. | 
| proto.http.last_user_agent | network.http.user_agent | Nilai proto.http.last_user_agentdari log mentah dipetakan kenetwork.http.user_agent. | 
| proto.http.server_name | network.tls.client.server_name | Nilai proto.http.server_namedari log mentah dipetakan kenetwork.tls.client.server_name. | 
| proto.l4 | network.ip_protocol | Nilai proto.l4dari log mentah dipetakan kenetwork.ip_protocol. | 
| proto_ndpi | additional.fields.key=proto ndpi,additional.fields.value.string_value=%{proto_ndpi},network.application_protocol | Nilai proto.ndpi(diganti namanya menjadiproto_ndpi) dari log mentah dipetakan ke objekadditional.fieldsdengan kunci "proto ndpi". Nilai ini juga digunakan untuk menentukan nilainetwork.application_protocolberdasarkan kata kunci seperti "NTP" dan "HTTP". | 
| proto_ndpi_app | principal.application | Nilai proto_ndpi_appdari log mentah dipetakan keprincipal.application. | 
| proto_ndpi_breed | security_result.detection_fields.key=proto_ndpi_breed,security_result.detection_fields.value=%{proto_ndpi_breed} | Nilai proto_ndpi_breeddari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "proto_ndpi_breed". | 
| proto_ndpi_cat | security_result.category_details | Nilai proto_ndpi_catdari log mentah dipetakan kesecurity_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_iddari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "proto_ndpi_cat_id". | 
| score | security_result.detection_fields.key=score,security_result.detection_fields.value=%{score} | Nilai scoredari log mentah dikonversi menjadi string dan dipetakan ke objeksecurity_result.detection_fieldsdengan kunci "score". | 
| srv2cli_bytes | network.received_bytes | Nilai srv2cli_bytesdari log mentah dikonversi menjadi bilangan bulat yang tidak bertanda tangan dan dipetakan kenetwork.received_bytes. | 
| srv_asn | target.resource.attribute.labels.key=srv_asn,target.resource.attribute.labels.value=%{srv_asn} | Nilai srv_asndari log mentah dikonversi menjadi string dan dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_asn". | 
| srv_blacklisted | target.resource.attribute.labels.key=srv_blacklisted,target.resource.attribute.labels.value=%{srv_blacklisted} | Nilai srv_blacklisteddari log mentah dikonversi menjadi string dan dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_blacklisted". | 
| srv_city_name | target.location.city | Nilai srv_city_namedari log mentah dipetakan ketarget.location.city. | 
| srv_continent_name | target.resource.attribute.labels.key=srv_continent_name,target.resource.attribute.labels.value=%{srv_continent_name} | Nilai srv_continent_namedari log mentah dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_continent_name". | 
| srv_country_name | target.location.country_or_region | Nilai srv_country_namedari log mentah dipetakan ketarget.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_iddari log mentah dikonversi menjadi string dan dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_host_pool_id". | 
| srv_ip | target.ip,target.asset.ip | Nilai srv_ipdari log mentah dipetakan ketarget.ipdantarget.asset.ip. | 
| srv_localhost | target.resource.attribute.labels.key=srv_localhost,target.resource.attribute.labels.value=%{srv_localhost} | Nilai srv_localhostdari log mentah dikonversi menjadi string dan dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_localhost". | 
| srv_location | target.location.name | Nilai srv_locationdari log mentah dikonversi menjadi string. Jika bukan "0", nilai tersebut dipetakan ketarget.location.name. | 
| srv_location_lat | target.location.region_coordinates.latitude | Nilai srv_location_latdari log mentah dipetakan ketarget.location.region_coordinates.latitude. | 
| srv_location_lon | target.location.region_coordinates.longitude | Nilai srv_location_londari log mentah dipetakan ketarget.location.region_coordinates.longitude. | 
| srv_name | target.hostname,target.asset.hostname | Nilai srv_namedari log mentah dipetakan ketarget.hostnamedantarget.asset.hostname. | 
| srv_network | target.resource.attribute.labels.key=srv_network,target.resource.attribute.labels.value=%{srv_network} | Nilai srv_networkdari log mentah dikonversi menjadi string dan dipetakan ke objektarget.resource.attribute.labelsdengan kunci "srv_network". | 
| srv_port | target.port | Nilai srv_portdari log mentah dikonversi menjadi bilangan bulat dan dipetakan ketarget.port. | 
| tstamp | additional.fields.key=tstamp,additional.fields.value.string_value=%{tstamp} | Nilai tstampdari log mentah dikonversi menjadi string dan dipetakan ke objekadditional.fieldsdengan kunci "tstamp". | 
| vlan_id | principal.resource.attribute.labels.key=vlan_id,principal.resource.attribute.labels.value=%{vlan_id} | Nilai vlan_iddari log mentah dikonversi menjadi string dan dipetakan ke objekprincipal.resource.attribute.labelsdengan kunci "vlan_id". | 
| when | metadata.event_timestamp | Nilai whendari log mentah diuraikan sebagai stempel waktu dan dipetakan kemetadata.event_timestamp. | 
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.