Citrix StoreFront のログを収集する

パーサーのバージョン: 1.0

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

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

Citrix StoreFront は、Citrix 仮想デスクトップとアプリケーション向けのエンタープライズ アプリケーション ストアを提供するウェブ アプリケーションです。Citrix Virtual Apps and Desktops サイトに対してユーザーを認証し、利用可能なリソースを 1 つのポータルに集約します。StoreFront は、Citrix プレフィックス付きのイベントソースの下にある Windows イベントログに、認証、セッションの起動、サービス イベントを書き込みます。

始める前に

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

  • Google SecOps インスタンス
  • systemd を搭載した Windows Server 2016 以降
  • Bindplane エージェントとインターネット間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します
  • Citrix StoreFront をホストする Windows Server への管理者権限
  • Citrix StoreFront 2308 以降がインストールされ、構成されている

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に ingestion-auth.json として保存するか、config.yaml の creds_file_path を保存先のパスと一致するように更新します。
  12. [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。エクスポーターの構成に必要になります。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。

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

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

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

次の手順に沿って、Windows オペレーティング システムに 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 と表示されます。

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

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

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

構成ファイルを探します。

  1. 管理者としてコマンド プロンプトを開きます。
  2. Bindplane エージェントのインストール ディレクトリに移動し、構成ファイルを開きます。

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

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

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

    receivers:
      windowseventlog/storefront_application:
        channel: Application
        raw: true
        start_at: end
        operators:
          - type: filter
            expr: 'record["source_name"] matches "^Citrix"'
    
    processors:
      batch:
    
    exporters:
      chronicle/storefront:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds: '{
          "type": "service_account",
          "project_id": "YOUR_PROJECT_ID",
          "private_key_id": "YOUR_PRIVATE_KEY_ID",
          "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
          "client_email": "YOUR_CLIENT_EMAIL",
          "client_id": "YOUR_CLIENT_ID",
          "auth_uri": "https://accounts.google.com/o/oauth2/auth",
          "token_uri": "https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
          "client_x509_cert_url": "YOUR_CERT_URL"
        }'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    
    service:
      pipelines:
        logs/storefront:
          receivers:
            - windowseventlog/storefront_application
          processors:
            - batch
          exporters:
            - chronicle/storefront
    

構成パラメータ

次のプレースホルダを実際の値に置き換えます。

  • エクスポータの構成:

    • YOUR_PROJECT_ID: 取り込み認証ファイルのプロジェクト ID
    • YOUR_PRIVATE_KEY_ID: 取り込み認証ファイルの秘密鍵 ID
    • YOUR_PRIVATE_KEY: 取り込み認証ファイルの秘密鍵(改行が適切にエスケープされていることを確認してください)
    • YOUR_CLIENT_EMAIL: 取り込み認証ファイルからのクライアント メール
    • YOUR_CLIENT_ID: 取り込み認証ファイルのクライアント ID
    • YOUR_CERT_URL: 取り込み認証ファイルのクライアント x509 証明書の URL
    • YOUR_CUSTOMER_ID: Google SecOps のお客様 ID
  • <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポートでは、この値が chronicle.googleapis.com の接頭辞として使用されます。完全なリストについては、リージョン エンドポイントをご覧ください。

  • <PROJECT_NUMBER> は、[IAM と管理] > [設定] のプロジェクト番号に置き換えます。

  • 例:

    exporters:
      chronicle/storefront:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    

以前の Ingestion API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(europe-malachiteingestion-pa.googleapis.com など)に置き換えます。

    exporters:
      chronicle/storefront:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    

構成ファイルを保存する

  • 編集が完了したら、ファイルを保存します。
    • [ファイル>保存] をクリックします。
    • メモ帳を閉じる

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

Windows で Bindplane エージェントを再起動するには:

  1. 次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • サービス コンソール:
      1. Win+R を押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。
  2. サービスが実行されていることを確認します。

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

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

Citrix StoreFront のイベント ログを構成する

デフォルトでは、StoreFront 2311 以降のバージョンでは、エラー、警告、情報の各レベルのメッセージがログに記録されます。以前のバージョン(2308 以前)では、デフォルトでエラーレベルのメッセージのみがログに記録されます。

詳細ログを有効にする(省略可)

トラブルシューティングのためにロギングの詳細度を上げるには:

  1. ローカル管理者権限で StoreFront サーバーにログインします。
  2. 管理者として PowerShell を開きます。
  3. 次のコマンドを実行して、すべてのサービスの詳細ロギングを有効にします。

    Set-STFDiagnostics -All -TraceLevel "Verbose" -confirm:$False
    
  4. トラブルシューティングが完了したら、ロギングレベルをデフォルトに戻します。

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    

Windows イベントログのイベントを確認する

  1. Win+R キーを押し、「eventvwr.msc」と入力して Enter キーを押すと、イベント ビューアーが開きます。
  2. [Application and Services Logs] > [Citrix Delivery Services] に移動します。
  3. 認証、ストア、Receiver for Web サイトのイベントがログに記録されていることを確認します。
  4. [Windows ログ] > [アプリケーション] に移動します。
  5. Citrix で始まるソース名でイベントをフィルタして、アプリケーション レベルのイベントが生成されていることを確認します。

イベントログのスロットリングを構成する(省略可)

StoreFront は、重複イベントの数を制限するためにイベントログの調整をサポートしています。スロットリングを構成する手順は次のとおりです。

  1. サーバーの StoreFront サービス構成ディレクトリに移動します。
    • 認証サービス: C:\inetpub\wwwroot\Citrix\Authentication
    • 店舗: C:\inetpub\wwwroot\Citrix\<storename>
    • ウェブサイトのレシーバー: C:\inetpub\wwwroot\Citrix\<storename>\Web
  2. テキスト エディタを使用して、各ディレクトリの web.config ファイルを開きます。
  3. logger 要素を見つけて、スロットリング パラメータを構成します。

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
    • duplicateInterval: 重複するログエントリがモニタリングされる期間(時間:分:秒)
    • duplicateLimit: スロットリングをトリガーするために、間隔内にログに記録する必要がある重複エントリの数
  4. 構成ファイルを保存します。

詳細については、Citrix StoreFront のログファイルのドキュメントをご覧ください。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
OpcodeValue_label additional.fields 統合済み
Opcode_label additional.fields 統合済み
ThreadID_label additional.fields 統合済み
X-Citrix-Via_label additional.fields 統合済み
XCitrixGateway_label additional.fields 統合済み
keyword_label additional.fields 統合済み
_vulns extensions.vulns.vulnerabilities 統合済み
_intermediary intermediary 統合済み
_intermediary_controller intermediary 統合済み
_intermediary_hypervisor intermediary 統合済み
_intermediary_storefront intermediary 統合済み
description metadata.description 直接マッピングされます。
EventTime metadata.event_timestamp RFC 3339 として解析
Machine.CreatedDate metadata.event_timestamp RFC 3339 として解析
Machine.LastDeregisteredDate metadata.event_timestamp RFC 3339 として解析
Machine.ModifiedDate metadata.event_timestamp RFC 3339 として解析
Machine.PoweredOnDate metadata.event_timestamp RFC 3339 として解析
Machine.RegistrationStateChangeDate metadata.event_timestamp RFC 3339 として解析
Session.EndDate metadata.event_timestamp RFC 3339 として解析
Session.StartDate metadata.event_timestamp RFC 3339 として解析
event_date metadata.event_timestamp RFC 3339 として解析
has_principal metadata.event_type マッピング済み: true → NETWORK_CONNECTION、true → STATUS_UPDATE
EventID metadata.product_event_type 直接マッピングされます。
RecordNumber metadata.product_log_id 直接マッピングされます。
Machine.AgentVersion metadata.product_version 名前変更/マッピング
_network network 名前変更済み/マッピング済み
_principal principal 名前変更済み/マッピング済み
Channel_label security_result.about.resource.attribute.labels 統合済み
severity security_result.severity マッピング: (?i)Info → INFORMATIONAL、(?i)Error → ERROR、(?i)Warning → MEDIUM
SeverityValue security_result.severity_details 直接マッピングされます。
Connection.ConnectedViaHostName src.hostname 直接マッピングされます。
_target target 名前変更/マッピング
なし extensions.auth.auth_details 定数: ACTIVE
なし extensions.auth.type 定数: MACHINE
なし metadata.event_type 定数: GENERIC_EVENT
なし metadata.product_name 定数: Monitor Service OData
なし metadata.vendor_name 定数: Citrix
なし security_result.severity 定数: INFORMATIONAL
OpcodeValue","X-Citrix-Via","ThreadID","XCitrixGateway","Opcode","Keywords", "OpcodeValue additional.fields 変更履歴からマッピング
X-Citrix-Via-VIP _target.ip 変更履歴からマッピング
Remoteadresse taregt.ip 変更履歴からマッピング
invalid_X-Forwarded-For _principal.ip 変更履歴からマッピング
Task _target.resource.type 変更履歴からマッピング
Hostname _principal.hostname 変更履歴からマッピング
SourceModuleName target.resource.name 変更履歴からマッピング
SourceModuleType _principal.resource.attribute.labels 変更履歴からマッピング
Machine.AssociatedUserUPNs target.group.email_addresses 変更履歴からマッピング

変更ログ

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

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