Elastic Packet Beats ログを収集する

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

このドキュメントでは、Bindplane を使用して Elastic Packet Beats ログを Google Security Operations に取り込む方法について説明します。パーサーは、まず Elastic Packet Beats ログで見つかったさまざまなフィールドのデフォルト値を初期化します。次に、grok パターンと json フィルタの組み合わせを使用してログメッセージからデータを抽出し、データ型の変換を実行し、イベント データセット タイプ(flow、dns、http、tls、dhcpv4 など)に基づいて、抽出されたフィールドを統合データモデル(UDM)の対応するフィールドにマッピングします。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス。
  • Windows 2016 以降、または systemd を使用する Linux ホスト。
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Elastic Packet Beats の管理コンソールまたはアプライアンスへの特権アクセス。
  • Logstash がインストールされ、構成されている。

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。
    • Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

その他のインストール オプションについては、インストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

  1. 構成ファイルにアクセスします。

    • config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリに、Windows ではインストール ディレクトリにあります。
    • テキスト エディタ(nanovi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    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
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • YOUR_CUSTOMER_ID は、実際の顧客 ID に置き換えます。
    • /path/to/ingestion-authentication-file.json の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
  • Windows で Bindplane エージェントを再起動するには、サービス コンソールを使用するか、次のコマンドを入力します。

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

Elastic Packet Beats で Syslog 転送を構成する

Packetbeat は syslog 出力を直接サポートしていないため、Logstash を仲介として使用する必要があります。

ログを Logstash に送信するように Packetbeat を構成する

  1. Elastic Packet Beats 管理コンソールにログインします。
  2. [Settings>Log Forwarding] に移動します。
  3. [+ 追加] または [有効にする] ボタンをクリックします。
  4. 次の構成の詳細を入力します。
    • 名前: わかりやすい名前を入力します(例: Logstash Output)。
    • ホスト: Logstash サーバーの IP アドレスを入力します。
    • ポート: Logstash Beats の入力ポート(通常は 5044)を入力します。
    • プロトコル: [Beats プロトコル] を選択します。
    • 形式: [JSON] を選択します。
    • タイムゾーン: システム全体で一貫性を保つため、UTC タイムゾーンを選択します。
    • [イベント] セクションに移動し、関連するログタイプまたは [すべて] を選択します。
  5. 構成を保存します。

    別の方法: packetbeat.yml を直接編集する:

    # /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"]
    

    LOGSTASH_IP は、Logstash サーバーの IP アドレスに置き換えます。

Syslog を使用して BindPlane に転送するように Logstash を構成する

  1. Logstash パイプライン構成ファイルを作成します。

    sudo nano /etc/logstash/conf.d/packetbeat-to-bindplane.conf
    
  2. 次の構成を追加します。

    # 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}"
      }
    }
    

    BINDPLANE_IP は、BindPlane エージェントの IP アドレスに置き換えます。

  • Logstash を再起動して構成を適用します。

    sudo systemctl restart logstash
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
@timestamp metadata.event_timestamp 未加工ログのフィールド @timestamp から直接マッピングされます。
agent.hostname observer.hostname 未加工ログのフィールド agent.hostname から直接マッピングされます。
agent.id observer.asset_id agent.type と連結して observer.asset_id フィールドを形成します。
agent.type observer.application 未加工ログのフィールド agent.type から直接マッピングされます。
agent.version observer.platform_version 未加工ログのフィールド agent.version から直接マッピングされます。
audit_category security_result.category_details 未加工ログのフィールド audit_category から直接マッピングされます。
audit_cluster_name additional.fields.audit_cluster_name.value.string_value 未加工ログのフィールド audit_cluster_name から直接マッピングされます。
audit_node_host_address observer.ip 未加工ログのフィールド audit_node_host_address から直接マッピングされます。
audit_node_id additional.fields.audit_node_id.value.string_value 未加工ログのフィールド audit_node_id から直接マッピングされます。
audit_node_name additional.fields.audit_node_name.value.string_value 未加工ログのフィールド audit_node_name から直接マッピングされます。
audit_request_effective_user observer.user.userid 未加工ログのフィールド audit_request_effective_user から直接マッピングされます。
audit_request_initiating_user additional.fields.audit_request_initiating_user.value.string_value 未加工ログのフィールド audit_request_initiating_user から直接マッピングされます。
audit_request_remote_address observer.ip audit_node_host_address と異なる場合、未加工ログのフィールド audit_request_remote_address から直接マッピングされます。
client.bytes network.received_bytes(インバウンド)/ network.sent_bytes(アウトバウンド) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は network.received_bytes にマッピングされます。OUTBOUND の場合、network.sent_bytes にマッピングされます。
client.ip target.ip(INBOUND)/ principal.ip(OUTBOUND) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は target.ip にマッピングされます。OUTBOUND の場合、principal.ip にマッピングされます。
client.port target.port(INBOUND)/ principal.port(OUTBOUND) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は target.port にマッピングされます。OUTBOUND の場合、principal.port にマッピングされます。
cluster.uuid additional.fields.uuid.value.string_value 未加工ログのフィールド cluster.uuid から直接マッピングされます。
コンポーネント additional.fields.component.value.string_value 未加工ログのフィールド component から直接マッピングされます。
destination.bytes network.sent_bytes FLOW イベントの場合、未加工ログの destination.bytes フィールドから直接マッピングされます。
destination.ip target.ip network.direction が INBOUND または OUTBOUND でない場合、未加工ログのフィールド destination.ip から直接マッピングされます。
destination.mac target.mac FLOW イベントの場合、未加工ログの destination.mac フィールドから直接マッピングされます。
destination.port target.port FLOW イベントの場合、未加工ログの destination.port フィールドから直接マッピングされます。
dhcpv4.assigned_ip network.dhcp.requested_address 未加工ログのフィールド dhcpv4.assigned_ip から直接マッピングされます。
dhcpv4.client_ip network.dhcp.yiaddr(ACK)/ network.dhcp.ciaddr(REQUEST)/ source.ip(dhcpv4.client_ip が空の場合の REQUEST) network.dhcp.type フィールドに基づいてマッピングされます。ACK の場合は network.dhcp.yiaddr にマッピングされます。REQUEST の場合は network.dhcp.ciaddr にマッピングされます。REQUEST で dhcpv4.client_ip が空の場合、source.ip にマッピングされます。
dhcpv4.client_mac network.dhcp.client_identifier 未加工ログの dhcpv4.client_mac フィールドから直接マッピングされ、バイトに変換されます。
dhcpv4.op_code network.dhcp.opcode dhcpv4.op_code の値に基づいて network.dhcp.opcode にマッピングされます。dhcpv4.op_codeBOOTREPLY または BOOTREQUEST の場合、値は直接マッピングされます。それ以外の場合は、UNKNOWN_OPCODE にマッピングされます。
dhcpv4.option.hostname network.dhcp.client_hostname 未加工ログのフィールド dhcpv4.option.hostname から直接マッピングされます。
dhcpv4.option.ip_address_lease_time_sec network.dhcp.lease_time_seconds 未加工ログのフィールド dhcpv4.option.ip_address_lease_time_sec から直接マッピングされ、符号なし整数に変換されます。
dhcpv4.option.message_type network.dhcp.type dhcpv4.option.message_type の値に基づいて network.dhcp.type にマッピングされます。マッピングは ack -> ACKnack -> NAKdiscover -> DISCOVERoffer -> OFFERrequest -> REQUESTdecline -> DECLINErelease -> RELEASEinfo -> INFORM となります。これらの値のいずれでもない場合は、UNKNOWN_MESSAGE_TYPE にマッピングされます。
dhcpv4.option.server_identifier network.dhcp.sname 未加工ログのフィールド dhcpv4.option.server_identifier から直接マッピングされます。
dns.answers.data network.dns.answers.data 未加工ログのフィールド dns.answers.data から直接マッピングされます。
dns.answers.class network.dns.answers.class dns.answers.class の値に基づいて network.dns.answers.class にマッピングされます。マッピングは IN -> 1、NONE -> 254、ANY -> 255 です。
dns.answers.name network.dns.answers.name 未加工ログのフィールド dns.answers.name から直接マッピングされます。
dns.answers.ttl network.dns.answers.ttl 未加工ログのフィールド dns.answers.ttl から直接マッピングされ、符号なし整数に変換されます。
dns.answers.type network.dns.answers.type dns.answers.type の値に基づいて network.dns.answers.type にマッピングされます。マッピングは次のとおりです。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 true の場合、未加工ログのフィールド dns.flags.authoritative から直接マッピングされます。
dns.flags.recursion_available network.dns.recursion_available true の場合、未加工ログのフィールド dns.flags.recursion_available から直接マッピングされます。
dns.flags.recursion_desired network.dns.recursion_desired true の場合、未加工ログのフィールド dns.flags.recursion_desired から直接マッピングされます。
dns.flags.truncated_response network.dns.truncated true の場合、未加工ログのフィールド dns.flags.truncated_response から直接マッピングされます。
dns.id network.dns.id 未加工ログのフィールド dns.id から直接マッピングされ、符号なし整数に変換されます。
dns.question.class network.dns.questions.class dns.question.class の値に基づいて network.dns.questions.class にマッピングされます。マッピングは IN -> 1、NONE -> 254、ANY -> 255 です。
dns.question.name network.dns.questions.name 未加工ログのフィールド dns.question.name から直接マッピングされます。
dns.question.type network.dns.questions.type dns.question.type の値に基づいて network.dns.questions.type にマッピングされます。マッピングは次のとおりです。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 dns.resolved_ip 配列の各要素が処理され、network.dns.additional.data フィールドにマッピングされます。
dns.response_code network.dns.response_code dns.response_code の値に基づいて network.dns.response_code にマッピングされます。マッピングは 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 status と連結して、HTTP イベントの security_result.summary フィールドを形成します。
event.dataset metadata.product_event_type 未加工ログのフィールド event.dataset から直接マッピングされます。
flow.final フローが最終かどうかを判断するために使用されます。そうでない場合、イベントはドロップされます。
flow.id network.session_id FLOW イベントの場合、未加工ログの flow.id フィールドから直接マッピングされます。
headers.accept_encoding security_result.about.labels.Accept-Encoding 未加工ログのフィールド headers.accept_encoding から直接マッピングされます。
headers.content_length additional.fields.content_length.value.string_value 未加工ログのフィールド headers.content_length から直接マッピングされます。
headers.content_type additional.fields.content_type.value.string_value 未加工ログのフィールド headers.content_type から直接マッピングされます。
headers.http_accept additional.fields.http_accept.value.string_value 未加工ログのフィールド headers.http_accept から直接マッピングされます。
headers.http_host principal.hostname、principal.asset.hostname 未加工ログのフィールド headers.http_host から直接マッピングされます。
headers.http_user_agent network.http.user_agent 未加工ログのフィールド headers.http_user_agent から直接マッピングされます。
headers.request_method network.http.method 未加工ログのフィールド headers.request_method から直接マッピングされます。
headers.x_b3_parentspanid additional.fields.x_b3_parentspanid.value.string_value 未加工ログのフィールド headers.x_b3_parentspanid から直接マッピングされます。
headers.x_b3_sampled additional.fields.x_b3_sampled.value.string_value 未加工ログのフィールド headers.x_b3_sampled から直接マッピングされます。
headers.x_envoy_attempt_count security_result.about.labels.x_envoy_attempt_count 未加工ログのフィールド headers.x_envoy_attempt_count から直接マッピングされます。
headers.x_envoy_original_path additional.fields.x_envoy_original_path.value.string_value 未加工ログのフィールド headers.x_envoy_original_path から直接マッピングされます。
headers.x_forwarded_client_cert additional.fields.client_cert.value.string_value 未加工ログのフィールド headers.x_forwarded_client_cert から直接マッピングされます。
headers.x_forwarded_for principal.ip、principal.asset.ip Grok を使用して IP アドレスを抽出した後、未加工ログのフィールド headers.x_forwarded_for から直接マッピングされます。
headers.x_forwarded_proto additional.fields.x_forwarded_proto.value.string_value 未加工ログのフィールド headers.x_forwarded_proto から直接マッピングされます。
headers.x_request_id additional.fields.x_request_id.value.string_value 未加工ログのフィールド headers.x_request_id から直接マッピングされます。
ホスト principal.ip、principal.asset.ip Grok を使用して IP アドレスを抽出した後、未加工ログのフィールド host から直接マッピングされます。
http.request.method network.http.method 未加工ログのフィールド http.request.method から直接マッピングされます。
level security_result.severity level の値に基づいて security_result.severity にマッピングされます。マッピングは INFO -> INFORMATIONALERROR -> ERRORWARNING -> LOW です。
logger additional.fields.logger.value.string_value 未加工ログのフィールド logger から直接マッピングされます。
method イベントが DNS イベントかどうかを判断するために使用されます。
msg security_result.description 二重引用符を削除した後、未加工ログのフィールド msg から直接マッピングされます。
network.community_id network.community_id 未加工ログのフィールド network.community_id から直接マッピングされます。
network.direction network.direction 未加工ログの network.direction フィールドから直接マッピングされ、大文字に変換されます。値が INGRESS または INBOUND の場合、INBOUND にマッピングされます。値が EGRESS または OUTBOUND の場合、OUTBOUND にマッピングされます。
network.protocol network.application_protocol 未加工ログのフィールド network.protocol から直接マッピングされます。
network.transport network.ip_protocol TLS イベントの場合、未加工ログの network.transport フィールドから直接マッピングされます。
server.bytes network.sent_bytes(インバウンド)/ network.received_bytes(アウトバウンド) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は network.sent_bytes にマッピングされます。OUTBOUND の場合、network.received_bytes にマッピングされます。
server.domain principal.hostname、principal.asset.hostname(インバウンド)/ target.hostname、target.asset.hostname(アウトバウンド) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は principal.hostname にマッピングされます。OUTBOUND の場合、target.hostname にマッピングされます。
server.ip principal.ip、principal.asset.ip(INBOUND)/ target.ip、target.asset.ip(OUTBOUND) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は principal.ip にマッピングされます。OUTBOUND の場合、target.ip にマッピングされます。
server.port principal.port(インバウンド)/ target.port(アウトバウンド) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は principal.port にマッピングされます。OUTBOUND の場合、target.port にマッピングされます。
source.bytes network.received_bytes FLOW イベントの場合、未加工ログの source.bytes フィールドから直接マッピングされます。
source.ip principal.ip、principal.asset.ip FLOW イベントの場合、未加工ログの source.ip フィールドから直接マッピングされます。
source.mac principal.mac FLOW イベントの場合、未加工ログの source.mac フィールドから直接マッピングされます。
source.port principal.port FLOW イベントの場合、未加工ログの source.port フィールドから直接マッピングされます。
ステータス metadata.description、security_result.summary level が空の場合、metadata.description にマッピングされます。error.message と連結して、HTTP イベントと TLS イベントの security_result.summary フィールドを形成します。
tls.client.ja3 network.tls.client.ja3 未加工ログのフィールド tls.client.ja3 から直接マッピングされます。
tls.client.server_name network.tls.client.server_name 未加工ログのフィールド tls.client.server_name から直接マッピングされます。
tls.client.supported_ciphers network.tls.client.supported_ciphers tls.client.supported_ciphers 配列の各要素が処理され、network.tls.client.supported_ciphers 配列にマッピングされます。
tls.cipher network.tls.cipher 未加工ログのフィールド tls.cipher から直接マッピングされます。
tls.detailed.server_certificate.not_after network.tls.server.certificate.not_after 未加工ログの tls.detailed.server_certificate.not_after フィールドから直接マッピングされ、タイムスタンプに変換されます。
tls.detailed.server_certificate.not_before network.tls.server.certificate.not_before 未加工ログの tls.detailed.server_certificate.not_before フィールドから直接マッピングされ、タイムスタンプに変換されます。
tls.detailed.server_certificate.serial_number network.tls.server.certificate.serial 未加工ログのフィールド tls.detailed.server_certificate.serial_number から直接マッピングされます。
tls.detailed.server_certificate.version network.tls.server.certificate.version 未加工ログの tls.detailed.server_certificate.version フィールドから直接マッピングされ、文字列に変換されます。
tls.established network.tls.established 未加工ログのフィールド tls.established から直接マッピングされます。
tls.next_protocol network.tls.next_protocol 未加工ログのフィールド tls.next_protocol から直接マッピングされます。
tls.resumed network.tls.resumed 未加工ログのフィールド tls.resumed から直接マッピングされます。
tls.server.hash.sha1 network.tls.server.certificate.sha1 未加工ログの tls.server.hash.sha1 フィールドから直接マッピングされ、小文字に変換されます。
tls.server.issuer network.tls.server.certificate.issuer 未加工ログのフィールド tls.server.issuer から直接マッピングされます。
tls.server.subject network.tls.server.certificate.subject 未加工ログのフィールド tls.server.subject から直接マッピングされます。
tls.version network.tls.version 未加工ログのフィールド tls.version から直接マッピングされます。
tls.version_protocol network.tls.version_protocol 未加工ログのフィールド tls.version_protocol から直接マッピングされます。
type イベントが DNS イベントかどうかを判断するために使用されます。
url.full principal.url(インバウンド)/ target.url(アウトバウンド) network.direction フィールドに基づいてマッピングされます。INBOUND の場合は principal.url にマッピングされます。OUTBOUND の場合、target.url にマッピングされます。
user_id target.user.userid 未加工ログのフィールド user_id から直接マッピングされます。
user_name target.user.user_display_name 未加工ログのフィールド user_name から直接マッピングされます。
metadata.event_type デフォルトでは GENERIC_EVENT に設定されています。ログソースとイベントデータに基づいて、特定のイベントタイプに変更されます。
metadata.vendor_name デフォルトでは Elastic に設定されています。
metadata.product_name デフォルトでは PacketBeat に設定されています。
security_result.action デフォルトでは ALLOW に設定されています。
metadata.log_type デフォルトでは ELASTIC_PACKETBEATS に設定されています。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。