Mengumpulkan log ntopng
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
- Buka SIEM Settings > Feeds.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk 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: pembatas yang digunakan untuk memisahkan baris log, seperti
\n
. - Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- 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 lagi.
- Dari tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Konsol Google Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
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.
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 System 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.
- URL Webhook: Masukkan ENDPOINT_URL Google SecOps dengan API_KEY dan SECRET.
- Klik Tambahkan.
- Buka Notifikasi > Penerima.
- Klik add .
- 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.
- Klik Test Recipient untuk memverifikasi koneksi.
- Klik Tambahkan untuk menyimpan webhook.
Mengonfigurasi subscriber resource webhook ntopng
- Buka Kumpulan.
Pilih resource tempat peristiwa akan dibagikan.
Klik ikon pensil di kolom Tindakan.
Klik drop-down Penerima.
Pilih Penerima Webhook Google SecOps.
Klik Edit untuk menyimpan konfigurasi.
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.