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. 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
    
  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 フロー ハッシュ

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