Suricata EVE ログを収集する

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

このドキュメントでは、Bindplane を使用して Suricata EVE ログを Google Security Operations に取り込む方法について説明します。

Suricata は、侵入検知(IDS)、侵入防止(IPS)、ネットワーク セキュリティ モニタリング機能を提供するオープンソースの高パフォーマンス ネットワーク脅威検出エンジンです。EVE(Extensible Event Format)ログ出力は、アラート、フロー、DNS、HTTP、TLS、ファイル トランザクション データを含む包括的な JSON 形式のログを提供します。パーサーは、Suricata EVE JSON 形式のログからフィールドを抽出します。JSON メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します
  • Suricata ホストへの特権アクセス(root または sudo)

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

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. 取り込み認証ファイル をダウンロードします。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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

サービスは RUNNING と表示されます。

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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

サービスが [アクティブ(実行中)] と表示されます。

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

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

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

構成ファイルを探す

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'SURICATA_EVE'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

構成パラメータ

  • 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • udplog: UDP Syslog には udplog、TCP Syslog には tcplog を使用します。
      • 0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は 0.0.0.0
      • 514: リッスンするポート番号(標準の syslog ポート)
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョナル エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(SURICATA_EVE

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+X の順に押します。
    • Windows: [ファイル> 保存] をクリックします。

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

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

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

        sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。

      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Suricata EVE syslog 転送を構成する

  1. Suricata 構成ファイル(通常は /etc/suricata/suricata.yaml)を開きます。
  2. outputs セクションを見つけて、syslog の EVE ログ出力を構成します。

    outputs:
      - eve-log:
          enabled: yes
          filetype: syslog
          identity: "suricata"
          facility: local5
          level: Info
          types:
            - alert:
                payload: yes
                payload-printable: yes
                packet: yes
                metadata: yes
            - http:
                extended: yes
            - dns:
                query: yes
                answer: yes
            - tls:
                extended: yes
            - files:
                force-magic: no
            - flow
            - netflow
            - anomaly:
                enabled: yes
            - stats:
                enabled: yes
    
  3. Syslog デーモンが Bindplane に転送するように構成されていない場合は、rsyslog または syslog-ng を構成します。

    • rsyslog の場合/etc/rsyslog.conf を編集するか、/etc/rsyslog.d/suricata.conf を作成します):

      local5.* @BINDPLANE_IP:514
      
      • BINDPLANE_IP は、Bindplane エージェント ホストの IP アドレスに置き換えます。
      • UDP の場合は @、TCP の場合は @@ を使用します。
    • syslog-ng の場合/etc/syslog-ng/syslog-ng.conf を編集):

      destination d_bindplane { udp("BINDPLANE_IP" port(514)); };
      filter f_suricata { facility(local5); };
      log { source(s_src); filter(f_suricata); destination(d_bindplane); };
      
  4. syslog デーモンを再起動します。

    sudo systemctl restart rsyslog
    
  5. Suricata を再起動します。

     sudo systemctl restart suricata
    
  6. Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
timestamp metadata.event_timestamp イベント タイムスタンプ
event_type metadata.product_event_type EVE イベントのタイプ(alert、flow、dns、http、tls など)
src_ip principal.ip 送信元 IP アドレス
src_port principal.port 送信元ポート番号
dest_ip target.ip 宛先 IP アドレス
dest_port target.port 宛先ポート番号
proto network.ip_protocol ネットワーク プロトコル(TCP、UDP、ICMP など)
flow_id network.session_id 一意のフロー ID
alert.signature security_result.rule_name アラート署名名
alert.signature_id security_result.rule_id アラート シグネチャ ID
alert.severity security_result.severity アラートの重大度レベル
alert.category security_result.category_details アラート分類カテゴリ
alert.action security_result.action 実行された操作(許可、ブロックなど)
alert.rev security_result.rule_version ルールのリビジョン番号
http.hostname target.hostname HTTP リクエストのホスト名
http.url target.url HTTP リクエストの URL
http.http_method network.http.method HTTP リクエスト メソッド
http.status network.http.response_code HTTP レスポンス ステータス コード
http.http_user_agent network.http.user_agent HTTP ユーザー エージェント文字列
http.http_refer network.http.referral_url HTTP リファラー URL
http.length additional.fields HTTP コンテンツの長さ
dns.type network.dns.type DNS クエリまたはレスポンス
dns.rrname network.dns.questions.name DNS クエリ名
dns.rrtype network.dns.questions.type DNS クエリタイプ
dns.rdata network.dns.answers.data DNS レスポンス データ
tls.subject network.tls.client.subject TLS 証明書のサブジェクト
tls.issuerdn network.tls.client.issuer TLS 認証局
tls.sni network.tls.client.server_name TLS Server Name Indication
tls.version network.tls.version TLS バージョン
tls.ja3.hash network.tls.client.ja3 JA3 クライアント フィンガープリント ハッシュ
tls.ja3s.hash network.tls.server.ja3s JA3S サーバー フィンガープリント ハッシュ
app_proto network.application_protocol 検出されたアプリケーション レイヤ プロトコル
flow.bytes_toserver network.sent_bytes クライアントからサーバーに送信されたバイト数
flow.bytes_toclient network.received_bytes サーバーからクライアントに送信されたバイト数
flow.pkts_toserver additional.fields クライアントからサーバーに送信されたパケット
flow.pkts_toclient additional.fields サーバーからクライアントに送信されたパケット
in_iface additional.fields 入力ネットワーク インターフェース
community_id network.community_id ネットワーク コミュニティ ID フロー ハッシュ
flow.src_ip event.idm.read_only_udm.principal.ip/event.idm.read_only_udm.principal.asset.ip 変更履歴からマッピング
alert.source.ip event.idm.read_only_udm.principal.ip/event.idm.read_only_udm.principal.asset.ip 変更履歴からマッピング
flow.dest_ip event.idm.read_only_udm.target.ip/event.idm.read_only_udm.target.asset.ip 変更履歴からマッピング
alert.target.ip event.idm.read_only_udm.target.ip/event.idm.read_only_udm.target.asset.ip 変更履歴からマッピング
flow.pkts_toserver event.idm.read_only_udm.additional.fields 変更履歴からマッピング
flow.pkts_toclient event.idm.read_only_udm.additional.fields 変更履歴からマッピング
alert.source.port event.idm.read_only_udm.additional.fields 変更履歴からマッピング
alert.target.port event.idm.read_only_udm.additional.fields 変更履歴からマッピング
alert.rule event.idm.read_only_udm.additional.fields 変更履歴からマッピング
alert.metadata.attack_target event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
alert.metadata.confidence event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
alert.metadata.deployment event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
alert.metadata.tag event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
dhcp.client_ip event.idm.read_only_udm.network.dhcp.ciaddr 変更履歴からマッピング
dhcp.client_id event.idm.read_only_udm.network.dhcp.client_identifier 変更履歴からマッピング
dhcp.params event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dhcp.hostname event.idm.read_only_udm.network.dhcp.client_hostname 変更履歴からマッピング
dhcp.vendor_class_identifier event.idm.read_only_udm.network.dhcp.options 変更履歴からマッピング
dhcp.type event.idm.read_only_udm.network.dhcp.opcode 変更履歴からマッピング
dhcp.dhcp_type event.idm.read_only_udm.network.dhcp.type 変更履歴からマッピング
dhcp.assigned_ip event.idm.read_only_udm.network.dhcp.yiaddr 変更履歴からマッピング
dhcp.client_mac event.idm.read_only_udm.network.dhcp.chaddr 変更履歴からマッピング
dns.qr event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_qr event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls.ja3.string event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls_ja3_string event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls.ja3s.string event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls_ja3s_string event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls.ja4 event.idm.read_only_udm.additional.fields 変更履歴からマッピング
tls_ja4 event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.version event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_version event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.opcode event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_opcode event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.tx_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_tx_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.flags event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns_flags event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.mname event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_mname_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.rname event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_rname_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.serial event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_serial_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.refresh event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_refresh_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.retry event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_retry_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.expire event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_expire_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
audata.soa.minimum event.idm.read_only_udm.additional.fields 変更履歴からマッピング
soa_minimum_%{index} event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dns.rd event.idm.read_only_udm.network.dns.recursion_desired 変更履歴からマッピング
dns.ra event.idm.read_only_udm.network.dns.recursion_available 変更履歴からマッピング
dns.answers event.idm.read_only_udm.network.dns.answers 変更履歴からマッピング
dns.authorities event.idm.read_only_udm.network.dns.answers 変更履歴からマッピング
event_type event.idm.read_only_udm.network.application_protocol 変更履歴からマッピング
dns.answers.ttl event.idm.read_only_udm.network.dns.answers.ttl 変更履歴からマッピング
dns.authorities.ttl event.idm.read_only_udm.network.dns.answers.ttl 変更履歴からマッピング
dns.authorities.rrtype event.idm.read_only_udm.network.dns.answers.type 変更履歴からマッピング
dns.answers.rrtype event.idm.read_only_udm.network.dns.answers.type 変更履歴からマッピング
dns.authorities.rrname event.idm.read_only_udm.network.dns.answers.name 変更履歴からマッピング
dns.answers.rrname event.idm.read_only_udm.network.dns.answers.name 変更履歴からマッピング
dns.answers.rdata event.idm.read_only_udm.network.dns.answers.data 変更履歴からマッピング
dns.rcode event.idm.read_only_udm.network.dns.response_code 変更履歴からマッピング
ssh.server.hassh.software_version", "ssh.server.hassh.proto_version", "ssh.server.hassh.string", "ssh.client.hassh.software_version", "ssh.client.hassh.proto_version", "ssh.client.hassh.string additional.fields 変更履歴からマッピング
alert.metadata.stamus_classification additional.fields 変更履歴からマッピング
alert.metadata.sightings_key additional.fields 変更履歴からマッピング
alert.metadata.sightings_asset additional.fields 変更履歴からマッピング
discovery additional.fields 変更履歴からマッピング
dns.id network.dns.id 変更履歴からマッピング
see_id network.session_id 変更履歴からマッピング
payload_printable additional.fields 変更履歴からマッピング
process.executable principal.process.file.full_path 変更履歴からマッピング
process.pid principal.process.pid 変更履歴からマッピング
process.command_line principal.process.command_line 変更履歴からマッピング
service.type additional.fields 変更履歴からマッピング
event.dataset about.labels 変更履歴からマッピング
event.module about.labels 変更履歴からマッピング
event.duration about.labels 変更履歴からマッピング
agent.id metadata.product_log_id 変更履歴からマッピング
agent.type metadata.product_event_type 変更履歴からマッピング
agent.version metadata.product_version 変更履歴からマッピング
agent.hostname principal.hostname 変更履歴からマッピング
agent.name principal.hostname 変更履歴からマッピング
agent.ephemeral_id additional.fields 変更履歴からマッピング
ecs.version principal.asset.attribute.labels 変更履歴からマッピング
process.args about.file.capabilities_tags 変更履歴からマッピング

変更履歴

このパーサーの変更ログを表示する

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