ntopng ログを収集する

以下でサポートされています。

概要

このパーサーは、SYSLOG 形式または JSON 形式で ntopng ネットワーク モニタリング ログを抽出します。ログ メッセージを解析し、関連するフィールドを UDM 形式に変換し、プロダクト名やベンダー名などのメタデータでイベントを拡充します。このパーサーは、ネストされた JSON 構造も処理し、特定の ntopng フィールドを UDM ネットワーク イベント(フロー アラートやユーザー リソース アクセスなど)にマッピングします。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • ntopng に対する特権アクセス権があることを確認します。

ntopng ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: ntopng ログ)。
  4. [ソースタイプ] として [Webhook] を選択します。
  5. [Log type] で [Ntopng] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • 分割区切り文字: ログ行を区切るために使用される区切り文字(\n など)。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
  12. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
  13. [完了] をクリックします。

Webhook フィードの API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーのアクセスを Google Security Operations API に制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。

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

    推奨事項: API キーは URL ではなくヘッダーとして指定してください。

  3. Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    次のように置き換えます。

    • ENDPOINT_URL: フィードのエンドポイント URL。
    • API_KEY: Google Security Operations の認証に使用する API キー。
    • SECRET: フィードの認証用に生成したシークレット キー。

Google SecOps 用に ntopng で Webhook を構成する

  1. ntopng ウェブ インターフェースにログインします。
  2. プルダウンから [システム] メニューを選択します。
  3. [通知] > [エンドポイント] に移動します。
  4. [ 追加 ] をクリックします。
  5. 次の入力パラメータの値を指定します。
    • エンドポイント名: 一意でわかりやすい名前を指定します(例: Google SecOps)。
    • エンドポイントの種類: リストから [Webhook] を選択します。
    • Webhook URL: Google SecOps の ENDPOINT_URL を入力します。API_KEYSECRET も入力します。
  6. [追加] をクリックします。
  7. [通知] > [受信者] に移動します。
  8. [ 追加 ] をクリックします。
  9. 次の入力パラメータの値を指定します。
    • 受信者名: 一意でわかりやすい名前を入力します(例: Google SecOps)。
    • エンドポイントの選択: 先ほど作成したエンドポイントを選択します。
    • 重大度: Google SecOps に送信する重大度を選択します([情報、警告、エラー] など)。
    • カテゴリ フィルタ: Google SecOps に送信する内容を選択します。
  10. [Test Recipient] をクリックして接続を確認します。
  11. [追加] をクリックして Webhook を保存します。

ntopng Webhook リソース サブスクライバーの構成

  1. [プール] に移動します。
  2. イベントを共有するリソースを選択します。

  3. [アクション] 列の鉛筆アイコンをクリックします。

  4. [受信者] プルダウンをクリックします。

  5. Google SecOps Webhook の受信者を選択します。

  6. [編集] をクリックして、構成を保存します。

  7. 他のリソースでも同じ手順を繰り返します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
action security_result.detection_fields.key=actionsecurity_result.detection_fields.value=%{action} 未加工ログの action の値は、キー「action」を持つ security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.broadcast_domain_host security_result.detection_fields.key=host_info broadcast_domain_hostsecurity_result.detection_fields.value=%{alert_generation.host_info.broadcast_domain_host} ネストされた JSON の alert_generation.host_info.broadcast_domain_host の値は、キー「host_info broadcast_domain_host」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.dhcpHost security_result.detection_fields.key=host_info dhcpHostsecurity_result.detection_fields.value=%{alert_generation.host_info.dhcpHost} ネストされた JSON の alert_generation.host_info.dhcpHost の値は、キー「host_info dhcpHost」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.is_blacklisted security_result.detection_fields.key=host_info is_blacklistedsecurity_result.detection_fields.value=%{alert_generation.host_info.is_blacklisted} ネストされた JSON の alert_generation.host_info.is_blacklisted の値は、キー「host_info is_blacklisted」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.is_broadcast security_result.detection_fields.key=host_info is_broadcastsecurity_result.detection_fields.value=%{alert_generation.host_info.is_broadcast} ネストされた JSON の alert_generation.host_info.is_broadcast の値は、キー「host_info is_broadcast」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.is_multicast security_result.detection_fields.key=host_info is_multicastsecurity_result.detection_fields.value=%{alert_generation.host_info.is_multicast} ネストされた JSON の alert_generation.host_info.is_multicast の値は、キー「host_info is_multicast」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.localhost security_result.detection_fields.key=host_info localhostsecurity_result.detection_fields.value=%{alert_generation.host_info.localhost} ネストされた JSON の alert_generation.host_info.localhost の値は、キー「host_info localhost」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.privatehost security_result.detection_fields.key=host_info privatehostsecurity_result.detection_fields.value=%{alert_generation.host_info.privatehost} ネストされた JSON の alert_generation.host_info.privatehost の値は、キー「host_info privatehost」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.host_info.systemhost security_result.detection_fields.key=host_info systemhostsecurity_result.detection_fields.value=%{alert_generation.host_info.systemhost} ネストされた JSON の alert_generation.host_info.systemhost の値は、キー「host_info systemhost」の security_result.detection_fields オブジェクトにマッピングされます。
alert_generation.script_key security_result.category_details=%{alert_generation.script_key} ネストされた JSON の alert_generation.script_key の値は security_result.category_details にマッピングされます。
alert_generation.subdir security_result.detection_fields.key=alert_generation_subdirsecurity_result.detection_fields.value=%{alert_generation.subdir} ネストされた JSON の alert_generation.subdir の値は、キー「alert_generation_subdir」を持つ security_result.detection_fields オブジェクトにマッピングされます。
alert_id security_result.detection_fields.key=alert_idsecurity_result.detection_fields.value=%{alert_id} 未加工ログの alert_id の値は、キー「alert_id」を持つ security_result.detection_fields オブジェクトにマッピングされます。
alerts_map security_result.detection_fields.key=alerts_mapsecurity_result.detection_fields.value=%{alerts_map} 未加工ログの alerts_map の値は、キー「alerts_map」を持つ security_result.detection_fields オブジェクトにマッピングされます。
cli2srv_bytes network.sent_bytes 未加工ログの cli2srv_bytes の値は符号なし整数に変換され、network.sent_bytes にマッピングされます。
cli_asn principal.resource.attribute.labels.key=cli_asnprincipal.resource.attribute.labels.value=%{cli_asn} 未加工ログの cli_asn の値は文字列に変換され、キー「cli_asn」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_blacklisted principal.resource.attribute.labels.key=cli_blacklistedprincipal.resource.attribute.labels.value=%{cli_blacklisted} 未加工ログの cli_blacklisted の値は文字列に変換され、キー「cli_blacklisted」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_city_name principal.location.city 未加工ログの cli_city_name の値は principal.location.city にマッピングされます。
cli_continent_name principal.resource.attribute.labels.key=cli_continent_nameprincipal.resource.attribute.labels.value=%{cli_continent_name} 元のログの cli_continent_name の値は、キー「cli_continent_name」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_country_name principal.location.country_or_region 未加工ログの cli_country_name の値は principal.location.country_or_region にマッピングされます。
cli_host_pool_id principal.resource.attribute.labels.key=cli_host_pool_idprincipal.resource.attribute.labels.value=%{cli_host_pool_id} 未加工ログの cli_host_pool_id の値は文字列に変換され、キー「cli_host_pool_id」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_ip principal.ipprincipal.asset.ip 未加工ログの cli_ip の値は、principal.ipprincipal.asset.ip にマッピングされます。
cli_localhost principal.resource.attribute.labels.key=cli_localhostprincipal.resource.attribute.labels.value=%{cli_localhost} 未加工ログの cli_localhost の値は文字列に変換され、キー「cli_localhost」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_location principal.location.name 未加工ログの cli_location の値は文字列に変換されます。「0」以外の場合は、principal.location.name にマッピングされます。
cli_name principal.hostnameprincipal.asset.hostname 未加工ログの cli_name の値は、principal.hostnameprincipal.asset.hostname にマッピングされます。
cli_network principal.resource.attribute.labels.key=cli_networkprincipal.resource.attribute.labels.value=%{cli_network} 未加工ログの cli_network の値は文字列に変換され、キー「cli_network」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
cli_port principal.port 未加工ログの cli_port の値は整数に変換され、principal.port にマッピングされます。
entity_id principal.resource.attribute.labels.key=entity_idprincipal.resource.attribute.labels.value=%{entity_id} 元のログの entity_id の値は文字列に変換され、キー「entity_id」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
entity_val principal.resource.attribute.labels.key=entity_valprincipal.resource.attribute.labels.value=%{entity_val} 元のログの entity_val の値は、ip の値と等しい場合を除き、キー「entity_val」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
event.type metadata.event_type principaltargetnetwork フィールドの有無に基づいて、パーサー ロジックによって決定されます。指定できる値: NETWORK_FLOWNETWORK_UNCATEGORIZEDUSER_RESOURCE_ACCESSGENERIC_EVENT
first_seen principal.asset.first_seen_time 元のログの first_seen の値は文字列に変換され、エポックからのミリ秒単位で解析され、principal.asset.first_seen_time にマッピングされます。
flow_risk_bitmap security_result.detection_fields.key=flow_risk_bitmapsecurity_result.detection_fields.value=%{flow_risk_bitmap} 未加工ログの flow_risk_bitmap の値は文字列に変換され、キー「flow_risk_bitmap」を持つ security_result.detection_fields オブジェクトにマッピングされます。
granularity security_result.detection_fields.key=granularitysecurity_result.detection_fields.value=%{granularity} 元のログの granularity の値は文字列に変換され、キー「粒度」を持つ security_result.detection_fields オブジェクトにマッピングされます。
hash_entry_id security_result.detection_fields.key=hash_entry_idsecurity_result.detection_fields.value=%{hash_entry_id} ネストされた JSON の hash_entry_id の値は、キー「hash_entry_id」を持つ security_result.detection_fields オブジェクトにマッピングされます。
host_ip principal.ipprincipal.asset.ip メッセージの <INT>Oct 20 15:34:53 1.1.1.1 部分から抽出された IP アドレスは、principal.ipprincipal.asset.ip にマッピングされます。
ifid principal.asset_id 未加工ログの ifid の値は文字列に変換され、接頭辞「ifid:」で principal.asset_id にマッピングされます。
ip principal.ipprincipal.asset.iptarget.iptarget.asset.ip is_client が true の場合、未加工ログの ip の値は principal.ipprincipal.asset.ip にマッピングされます。is_server が true の場合、target.iptarget.asset.ip にマッピングされます。
is_cli_attacker security_result.detection_fields.key=is_cli_attackersecurity_result.detection_fields.value=%{is_cli_attacker} 未加工ログの is_cli_attacker の値は文字列に変換され、キー「is_cli_attacker」を持つ security_result.detection_fields オブジェクトにマッピングされます。
is_cli_victim security_result.detection_fields.key=is_cli_victimsecurity_result.detection_fields.value=%{is_cli_victim} 未加工ログの is_cli_victim の値は文字列に変換され、キー「is_cli_victim」を持つ security_result.detection_fields オブジェクトにマッピングされます。
is_flow_alert security_result.detection_fields.key=is_flow_alertsecurity_result.detection_fields.value=%{is_flow_alert}security_result.detection_fields.key=alert typesecurity_result.detection_fields.value=flow 未加工ログの is_flow_alert の値は文字列に変換され、キー「is_flow_alert」を持つ security_result.detection_fields オブジェクトにマッピングされます。is_flow_alert が true の場合、キーが「alert type」で値が「flow」の security_result.detection_fields オブジェクトも作成されます。
is_srv_attacker security_result.detection_fields.key=is_srv_attackersecurity_result.detection_fields.value=%{is_srv_attacker} 未加工ログの is_srv_attacker の値は文字列に変換され、キー「is_srv_attacker」を持つ security_result.detection_fields オブジェクトにマッピングされます。
is_srv_victim security_result.detection_fields.key=is_srv_victimsecurity_result.detection_fields.value=%{is_srv_victim} 未加工ログの is_srv_victim の値は文字列に変換され、キー「is_srv_victim」を持つ security_result.detection_fields オブジェクトにマッピングされます。
metadata.product_name metadata.product_name=NTOPNG 「NTOPNG」にハードコードされました。
metadata.vendor_name metadata.vendor_name=%{vendor_name} メッセージの vendor_name の値は metadata.vendor_name にマッピングされます。
name principal.hostnameprincipal.asset.hostnametarget.hostnametarget.asset.hostname is_client が true の場合、未加工ログの name の値は principal.hostnameprincipal.asset.hostname にマッピングされます。is_server が true の場合、target.hostnametarget.asset.hostname にマッピングされます。
ntopng_key security_result.detection_fields.key=ntopng_keysecurity_result.detection_fields.value=%{ntopng_key} ネストされた JSON の ntopng.key の値(ntopng_key に名前が変更されています)は、キー「ntopng_key」を持つ security_result.detection_fields オブジェクトにマッピングされます。
observation_point_id observer.asset_id 未加工ログの observation_point_id の値は文字列に変換されます。「0」以外の場合は、接頭辞「id:」が付いた observer.asset_id にマッピングされます。
pool_id principal.resource.attribute.labels.key=pool_idprincipal.resource.attribute.labels.value=%{pool_id} 未加工ログの pool_id の値は文字列に変換され、キー「pool_id」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
probe_ip intermediary.ip 未加工ログの probe_ip の値は intermediary.ip にマッピングされます。
proto.confidence security_result.confidence_details 未加工ログの proto.confidence の値は文字列に変換され、security_result.confidence_details にマッピングされます。
proto.http.last_method network.http.method 未加工ログの proto.http.last_method の値は network.http.method にマッピングされます。
proto.http.last_return_code network.http.response_code 未加工ログの proto.http.last_return_code の値は整数に変換され、network.http.response_code にマッピングされます。
proto.http.last_server_name network.tls.client.server_name 未加工ログの proto.http.server_name の値は network.tls.client.server_name にマッピングされます。
proto.http.last_url network.http.referral_url 未加工ログの proto.http.last_url の値は network.http.referral_url にマッピングされます。
proto.http.last_user_agent network.http.user_agent 未加工ログの proto.http.last_user_agent の値は network.http.user_agent にマッピングされます。
proto.http.server_name network.tls.client.server_name 未加工ログの proto.http.server_name の値は network.tls.client.server_name にマッピングされます。
proto.l4 network.ip_protocol 未加工ログの proto.l4 の値は network.ip_protocol にマッピングされます。
proto_ndpi additional.fields.key=proto ndpiadditional.fields.value.string_value=%{proto_ndpi}network.application_protocol 元のログの proto.ndpi 値(proto_ndpi に名前が変更されています)は、キー「proto ndpi」を持つ additional.fields オブジェクトにマッピングされます。また、「NTP」や「HTTP」などのキーワードに基づいて network.application_protocol の値を決定するためにも使用されます。
proto_ndpi_app principal.application 未加工ログの proto_ndpi_app の値は principal.application にマッピングされます。
proto_ndpi_breed security_result.detection_fields.key=proto_ndpi_breedsecurity_result.detection_fields.value=%{proto_ndpi_breed} 未加工ログの proto_ndpi_breed の値は文字列に変換され、キー「proto_ndpi_breed」を持つ security_result.detection_fields オブジェクトにマッピングされます。
proto_ndpi_cat security_result.category_details 未加工ログの proto_ndpi_cat の値は security_result.category_details にマッピングされます。
proto_ndpi_cat_id security_result.detection_fields.key=proto_ndpi_cat_idsecurity_result.detection_fields.value=%{proto_ndpi_cat_id} 元のログの proto_ndpi_cat_id の値は文字列に変換され、キー「proto_ndpi_cat_id」を持つ security_result.detection_fields オブジェクトにマッピングされます。
score security_result.detection_fields.key=scoresecurity_result.detection_fields.value=%{score} 元のログの score の値は文字列に変換され、キー「score」を持つ security_result.detection_fields オブジェクトにマッピングされます。
srv2cli_bytes network.received_bytes 未加工ログの srv2cli_bytes の値は符号なし整数に変換され、network.received_bytes にマッピングされます。
srv_asn target.resource.attribute.labels.key=srv_asntarget.resource.attribute.labels.value=%{srv_asn} 元のログの srv_asn の値は文字列に変換され、キー「srv_asn」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_blacklisted target.resource.attribute.labels.key=srv_blacklistedtarget.resource.attribute.labels.value=%{srv_blacklisted} 未加工ログの srv_blacklisted の値は文字列に変換され、キー「srv_blacklisted」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_city_name target.location.city 未加工ログの srv_city_name の値は target.location.city にマッピングされます。
srv_continent_name target.resource.attribute.labels.key=srv_continent_nametarget.resource.attribute.labels.value=%{srv_continent_name} 未加工ログの srv_continent_name の値は、キー「srv_continent_name」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_country_name target.location.country_or_region 未加工ログの srv_country_name の値は target.location.country_or_region にマッピングされます。
srv_host_pool_id target.resource.attribute.labels.key=srv_host_pool_idtarget.resource.attribute.labels.value=%{srv_host_pool_id} 未加工ログの srv_host_pool_id の値は文字列に変換され、キー「srv_host_pool_id」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_ip target.iptarget.asset.ip 未加工ログの srv_ip の値は、target.iptarget.asset.ip にマッピングされます。
srv_localhost target.resource.attribute.labels.key=srv_localhosttarget.resource.attribute.labels.value=%{srv_localhost} 未加工ログの srv_localhost の値は文字列に変換され、キー「srv_localhost」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_location target.location.name 未加工ログの srv_location の値は文字列に変換されます。「0」以外の場合は、target.location.name にマッピングされます。
srv_location_lat target.location.region_coordinates.latitude 未加工ログの srv_location_lat の値は target.location.region_coordinates.latitude にマッピングされます。
srv_location_lon target.location.region_coordinates.longitude 未加工ログの srv_location_lon の値は target.location.region_coordinates.longitude にマッピングされます。
srv_name target.hostnametarget.asset.hostname 未加工ログの srv_name の値は、target.hostnametarget.asset.hostname にマッピングされます。
srv_network target.resource.attribute.labels.key=srv_networktarget.resource.attribute.labels.value=%{srv_network} 未加工ログの srv_network の値は文字列に変換され、キー「srv_network」を持つ target.resource.attribute.labels オブジェクトにマッピングされます。
srv_port target.port 未加工ログの srv_port の値は整数に変換され、target.port にマッピングされます。
tstamp additional.fields.key=tstampadditional.fields.value.string_value=%{tstamp} 未加工ログの tstamp の値は文字列に変換され、キー「tstamp」を持つ additional.fields オブジェクトにマッピングされます。
vlan_id principal.resource.attribute.labels.key=vlan_idprincipal.resource.attribute.labels.value=%{vlan_id} 未加工ログの vlan_id の値は文字列に変換され、キー「vlan_id」を持つ principal.resource.attribute.labels オブジェクトにマッピングされます。
when metadata.event_timestamp 未加工ログの when の値はタイムスタンプとして解析され、metadata.event_timestamp にマッピングされます。

変更点

2024-02-01

  • バグの修正:
  • conf ファイルのヘッダー コメントで「=>" を「:」に変更しました。

2023-11-16

  • 新しく作成されたパーサー。