收集 Citrix StoreFront 日志
解析器版本:1.0
本文档介绍了如何使用 Bindplane 将 Citrix StoreFront 日志注入到 Google Security Operations。
Citrix StoreFront 是一款 Web 应用,可为 Citrix 虚拟桌面和应用提供企业应用商店。它可对 Citrix Virtual Apps and Desktops 网站的用户进行身份验证,并将可用资源聚合到一个门户中。StoreFront 会将身份验证、会话启动和服务事件写入 Windows 事件日志中以 Citrix 为前缀的事件来源下。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,且具有
systemd - Bindplane 代理与互联网之间的网络连接
- 如果在代理后面运行,请确保按照 Bindplane 代理要求打开防火墙端口
- 对托管 Citrix StoreFront 的 Windows Server 的管理员访问权限
- 已安装并配置 Citrix StoreFront 2308 或更高版本
获取 Bindplane 代理的 Google SecOps 凭证
如需向 Google SecOps 验证 Bindplane 代理,请选择以下方法之一:
- 新部署:使用 Chronicle API(选项 1)。
- 旧版部署:继续使用数据注入身份验证文件(方法 2),直到 Ingestion API 于 2027 年 7 月 20 日停用。
方法 1:为 Chronicle API 创建服务账号(推荐)
- 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
- 前往 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入账号的名称(例如
bindplane-ingest)。 - 服务账号说明:输入说明(例如
Bindplane agent log ingestion)。
- 服务账号名称:输入账号的名称(例如
- 点击创建并继续。
- 在向此服务账号授予对项目的访问权限部分,点击选择角色,然后选择 Chronicle Editor。
- 点击继续,然后点击完成。
- 点击您创建的服务账号,然后前往密钥标签页。
- 依次点击添加密钥 > 创建新密钥。
- 选择 JSON,然后点击创建。密钥文件会下载到您的计算机上。
- 将密钥文件另存为 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以与您保存密钥文件的路径相匹配。 - 前往 IAM 和管理 > 设置,然后复制项目编号。您在配置导出器时需要用到该名称。
方法 2:下载数据注入身份验证文件(旧版)
- 登录 Google SecOps 控制台。
- 前往 SIEM 设置> 收集代理。
- 下载数据注入身份验证文件。
- 将文件安全地保存在将安装 Bindplane 代理的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 前往 SIEM 设置 > 个人资料。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
按照以下说明在 Windows 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector
该服务应显示为正在运行。
其他安装资源
如需了解其他安装选项和问题排查,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 Windows 事件日志并发送到 Google SecOps
找到配置文件
- 以管理员身份打开命令提示符。
前往 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:数据注入身份验证文件中的项目 IDYOUR_PRIVATE_KEY_ID:数据注入身份验证文件中的私钥 IDYOUR_PRIVATE_KEY:数据注入身份验证文件中的私钥(确保对换行符进行正确转义)YOUR_CLIENT_EMAIL:数据注入身份验证文件中的客户端邮箱YOUR_CLIENT_ID:提取身份验证文件中的客户端 IDYOUR_CERT_URL:数据注入身份验证文件中的客户端 x509 证书网址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
旧版提取 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 代理,请执行以下操作:
请从下列选项中选择一项:
- 以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector- 服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击,然后选择重新启动。
- 按
验证服务是否正在运行:
sc query observiq-otel-collector检查日志中是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
配置 Citrix StoreFront 事件日志记录
默认情况下,StoreFront 2311 及更高版本会记录“错误”“警告”和“信息”级别的日志消息。对于更低版本(2308 及更低版本),默认情况下仅记录“错误”级别的日志消息。
启用详细日志记录(可选)
如需提高日志记录的详细信息级别以进行问题排查,请执行以下操作:
- 使用本地管理员权限登录 StoreFront 服务器。
- 以管理员身份打开 PowerShell。
运行以下命令,以便为所有服务启用详细日志记录功能:
Set-STFDiagnostics -All -TraceLevel "Verbose" -confirm:$False排查问题后,将日志记录级别还原为默认值:
Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
验证 Windows 事件日志事件
- 按
Win+R,输入eventvwr.msc,然后按 Enter 键打开事件查看器。 - 依次前往应用程序和服务日志> Citrix Delivery Services。
- 验证是否正在记录身份验证、商店和 Receiver for Web 网站的事件。
- 依次前往 Windows 日志>应用。
- 按以 Citrix 开头的来源名称过滤事件,以验证是否正在生成应用级事件。
配置事件日志限制(可选)
StoreFront 支持事件日志限制,以限制重复事件的数量。如需配置限制,请执行以下操作:
- 前往服务器上的 StoreFront 服务配置目录:
- 身份验证服务:
C:\inetpub\wwwroot\Citrix\Authentication - 商店:
C:\inetpub\wwwroot\Citrix\<storename> - 网站的接收器:
C:\inetpub\wwwroot\Citrix\<storename>\Web
- 身份验证服务:
- 使用文本编辑器打开每个目录中的
web.config文件。 找到
logger元素并配置限制参数:<logger duplicateInterval="00:01:00" duplicateLimit="10">duplicateInterval:监控重复日志条目的时间段(小时:分钟:秒)duplicateLimit:在指定时间间隔内必须记录的重复条目数,达到此数量会触发限制
保存配置文件。
如需了解详情,请参阅 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 专业人士的解答。