Citrix StoreFront のログを収集する
このドキュメントでは、Bindplane を使用して Citrix StoreFront ログを Google Security Operations に取り込む方法について説明します。このパーサーは、Citrix StoreFront Windows イベントログ形式のログからフィールドを抽出します。Windows イベントログの収集を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。パーサーは、一連の grok
パターンを使用して、メッセージ フィールドを Session
、User
、AppInstance
、App
、Connection
、Machine
などの個々のエンティティに分割することで、Citrix StoreFront JSON ログからデータを抽出します。次に、抽出されたフィールドを統合データモデル(UDM)構造にマッピングし、条件付きロジックとデータ変換に基づいてネットワーク、プリンシパル、仲介者、ターゲット情報を追加します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス。
- Bindplane がインストールされる
systemd
を備えた Windows 2016 以降のホスト - プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します
- Citrix StoreFront サーバーと管理コンソールへの特権アクセス
- StoreFront をホストする Windows サーバーへの管理者アクセス権
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
その他のインストール リソース
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Windows イベントログを取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: windowseventlog/storefront: channel: Application operators: - type: filter expr: 'record["source_name"] matches "^Citrix"' exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: 'C:/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: CUSTOMER_ID_PLACEHOLDER endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'CITRIX_STOREFRONT' raw_log_field: body ingestion_labels: service: pipelines: logs/storefront: receivers: - windowseventlog/storefront exporters: - chronicle/chronicle_w_labels
CUSTOMER_ID_PLACEHOLDER
は、実際のお客様 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Windows で BindPlane エージェントを再起動するには、サービス コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
StoreFront イベント ロギングを構成する
- 管理者権限で StoreFront Server にログインします。
- 管理者として PowerShell を開きます。
StoreFront PowerShell モジュールを読み込みます。
Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
トラブルシューティング用に詳細ログを有効にします(省略可)。
Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
Windows イベント ロギングが有効になっていることを確認します。
- StoreFront サーバーでイベント ビューアーを開きます。
- [アプリケーションとサービス ログ> Citrix Delivery Services] に移動します。
- 認証サービス、ストア、Receiver for Web サイトのイベントがログに記録されていることを確認します。
省略可: イベントログのスロットリングを構成する
- StoreFront 構成ディレクトリに移動します。
- 認証サービス:
C:/inetpub/wwwroot/Citrix/Authentication
- 店舗:
C:/inetpub/wwwroot/Citrixstorename
- ウェブサイトのレシーバ:
C:/inetpub/wwwroot/Citrixstorename/Web
- 認証サービス:
- テキスト エディタを使用して、各ディレクトリの
web.config
ファイルを開きます。 ロガー要素を見つけて、必要に応じて構成します。
<logger duplicateInterval="00:01:00" duplicateLimit="10">
duplicateInterval: 重複するログエントリがモニタリングされる期間を時間、分、秒単位で設定します。
duplicateLimit: ログ スロットリングをトリガーするために、指定された時間間隔内にロギングする必要がある重複エントリの数を設定します。
構成ファイルを保存します。
ログ収集を確認する
- StoreFront サーバーで Windows イベント ビューアーを開きます。
- [Windows ログ] > [アプリケーション] または [アプリケーションとサービス ログ] > [Citrix Delivery Services] に移動します。
- StoreFront イベントが生成されていることを確認します。
- Bindplane エージェントのログを調べて、ログが Google SecOps に転送されていることを確認します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
App.PublishedName | _principal.application | 値は App.PublishedName フィールドから取得されます。 |
Connection.ClientAddress | _principal.asset.ip | 値は Connection.ClientAddress フィールドから取得されます。 |
Connection.ClientName | _principal.asset.hostname | 値は Connection.ClientName フィールドから取得されます。 |
Connection.ClientPlatform | _principal.asset.platform_software.platform | 値は Connection.ClientPlatform フィールドから取得され、大文字に変換されます。値が「WINDOWS」、「MAC」、「LINUX」の場合、そのまま使用されます。それ以外の場合、値は「UNKNOWN_PLATFORM」に設定されます。 |
Connection.ConnectedViaHostName | src.hostname | 値は Connection.ConnectedViaHostName フィールドから取得されます。 |
Connection.LaunchedViaHostName | _intermediary.hostname | 値は Connection.LaunchedViaHostName フィールドから取得されます。名前空間は「StoreFront server」に設定されます。 |
Connection.LaunchedViaIPAddress | _intermediary.ip | 値は Connection.LaunchedViaIPAddress フィールドから取得されます。 |
Connection.Protocol | network.application_protocol | 値は Connection.Protocol フィールドから取得されます。値が「HDX」の場合、「UNKNOWN_APPLICATION_PROTOCOL」に設定されます。 |
Machine.AgentVersion | metadata.product_version | 値は Machine.AgentVersion フィールドから取得されます。 |
Machine.AssociatedUserNames | _intermediary.user.userid | 値は Machine.AssociatedUserNames フィールドから取得されます。各名前が抽出され、中間ユーザー オブジェクトのユーザー ID として使用されます。 |
Machine.AssociatedUserUPNs | _target.group.email_addresses | 値は Machine.AssociatedUserUPNs フィールドから取得されます。各メールアドレスが抽出され、ターゲット グループの email_addresses フィールドに追加されます。 |
Machine.ControllerDnsName | _intermediary.hostname | 値は Machine.ControllerDnsName フィールドから取得されます。名前空間は「Controller」に設定されています。 |
Machine.CreatedDate | _target.asset.attribute.creation_time | 値は Machine.CreatedDate フィールドから取得され、タイムスタンプに変換されます。 |
Machine.DesktopGroupId | _target.group.product_object_id | 値は Machine.DesktopGroupId フィールドから取得されます。 |
Machine.DnsName | _target.asset.network_domain | 値は Machine.DnsName フィールドから取得されます。 |
Machine.HostedMachineName | _target.asset.hostname | 値は Machine.HostedMachineName フィールドから取得されます。 |
Machine.HostingServerName | _intermediary.hostname | 値は Machine.HostingServerName フィールドから取得されます。名前空間は「Hypervisor」に設定されています。 |
Machine.IPAddress | _target.asset.ip | 値は Machine.IPAddress フィールドから取得されます。 |
Machine.LastDeregisteredDate | _target.asset.last_discover_time | 値は Machine.LastDeregisteredDate フィールドから取得され、タイムスタンプに変換されます。 |
Machine.ModifiedDate | _target.asset.system_last_update_time | 値は Machine.ModifiedDate フィールドから取得され、タイムスタンプに変換されます。 |
Machine.Name | _target.asset.asset_id, _target.administrative_domain | 値は Machine.Name フィールドから取得され、ドメインとアセットの部分に分割されます。ドメイン部分はターゲットの管理ドメインとして使用され、アセット部分は「machine: |
Machine.OSType | _target.asset.platform_software.platform_version | 値は Machine.OSType フィールドから取得されます。 |
Machine.PoweredOnDate | _target.asset.last_boot_time | 値は Machine.PoweredOnDate フィールドから取得され、タイムスタンプに変換されます。 |
Machine.RegistrationStateChangeDate | _target.asset.first_discover_time | 値は Machine.RegistrationStateChangeDate フィールドから取得され、タイムスタンプに変換されます。 |
Session.EndDate | _vulns.last_found | 値は Session.EndDate フィールドから取得され、タイムスタンプに変換されます。 |
Session.LifecycleState | extensions.auth.auth_details | 値は Session.LifecycleState フィールドから取得されます。値が 0 の場合、「ACTIVE」に設定されます。値が 1 の場合、「DELETED」に設定されます。値が 2 または 3 の場合、「UNKNOWN_AUTHENTICATION_STATUS」に設定されます。 |
Session.LogOnDuration | network.session_duration.seconds | 値は Session.LogOnDuration フィールドから取得され、整数に変換されます。 |
Session.SessionKey | network.session_id | 値は Session.SessionKey フィールドから取得されます。 |
Session.StartDate | _vulns.first_found | 値は Session.StartDate フィールドから取得され、タイムスタンプに変換されます。 |
User.Domain | _principal.user.company_name, _principal.administrative_domain | この値は User.Domain フィールドから取得され、プリンシパル ユーザーの会社名とプリンシパル管理ドメインの両方として使用されます。 |
User.FullName | _principal.user.user_display_name | 値は User.FullName フィールドから取得されます。 |
User.Sid | _principal.user.windows_sid | 値は User.Sid フィールドから取得されます。 |
User.Upn | _principal.user.email_addresses | この値は User.Upn フィールドから取得され、プリンシパル ユーザーの email_addresses フィールドに追加されます。 |
User.UserName | _principal.user.userid | 値は User.UserName フィールドから取得されます。 |
metadata.event_type | 値は「USER_LOGIN」に設定されます。 | |
metadata.vendor_name | 値は「Citrix」に設定されます。 | |
metadata.product_name | 値は「Monitor Service OData」に設定されます。 | |
extensions.auth.type | 値は「MACHINE」に設定されます。 | |
_intermediary.namespace | 値は、仲介オブジェクトに応じて「StoreFront server」、「Controller」、「Hypervisor」に設定されます。 | |
_target.asset.type | 値は「WORKSTATION」に設定されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。