StoreFront

保护您的 StoreFront 部署

本文重点介绍在部署和配置 StoreFront 时可能影响系统安全的领域。

最终用户身份验证

通常,最终用户必须直接向 StoreFront 进行身份验证,或者向 StoreFront 前面的 Citrix Gateway 进行身份验证。有关可用身份验证方法的详细信息,请参阅身份验证

与最终用户的通信

Citrix 建议使用 HTTPS 保护用户设备与 StoreFront 之间的通信。这可确保客户端与 StoreFront 之间发送的密码和其他数据经过加密。此外,纯 HTTP 连接可能会受到各种攻击(例如中间人攻击)的威胁,尤其是在从公共 Wi-Fi 热点等不安全位置建立连接时。在没有适当的 IIS 配置的情况下,StoreFront 使用 HTTP 进行通信。

根据您的配置,用户可以通过网关或负载平衡器访问 StoreFront。您可以在网关或负载平衡器处终止 HTTPS 连接。但是,在这种情况下,Citrix 仍然建议您使用 HTTPS 保护网关或负载平衡器与 StoreFront 之间的连接。

要启用 HTTPS、禁用 HTTP 和启用 HSTS,请参阅使用 HTTPS 保护 StoreFront

在您的 NetScaler Gateway 或负载平衡器虚拟服务器上,您可以配置启用的 TLS 版本。建议您禁用早于 1.2 的旧版 TLS 版本。

在 StoreFront 服务器上,Windows 和 IIS 决定允许哪些 TLS 版本用于传入连接。建议您禁用早于 1.2 的旧版 TLS 版本。在 Windows Server 2022 上,您可以配置 IIS 以禁用客户端连接的 TLS 1.0 和 1.1,请参阅使用 HTTPS 保护 StoreFront。在所有 Windows 服务器版本上,您可以使用组策略或 Windows 注册表设置禁用 TLS 1.0 和 1.1,请参阅 Microsoft 文档

旧版本的 Citrix Receiver 无法使用 TLS 1.2 进行连接,有关详细信息,请参阅 CTX232266

与交付控制器的通信

Citrix 建议使用 HTTPS 协议保护 StoreFront 与您的 Citrix Virtual Apps and Desktops 交付控制器之间的数据传输。有关详细信息,请参阅在交付控制器上启用 HTTPS。要配置 StoreFront 以使用 HTTPS,请参阅为 Citrix Virtual Apps and Desktops 添加资源订阅源添加 Citrix Gateway 设备。如果证书遭到泄露,您可以使用证书吊销列表 (CRL) 检查。StoreFront 使用 TLS 1.2 或更高版本与交付控制器进行通信。

建议您配置交付控制器和 StoreFront,以确保只有受信任的 StoreFront 服务器才能与交付控制器通信,请参阅管理安全密钥

与 Cloud Connectors 的通信

Citrix 建议使用 HTTPS 协议保护 StoreFront 与您的 Cloud Connectors 之间的数据传输。请参阅 HTTPS 配置。要配置 StoreFront,请参阅为 Citrix Desktops as a Service 添加资源订阅源添加 Citrix Gateway 设备。如果证书遭到泄露,您可以使用证书吊销列表 (CRL) 检查。StoreFront 使用 TLS 1.2 或更高版本与 Cloud Connectors 进行通信。

建议您配置 DaaS 和 StoreFront,以确保只有受信任的 StoreFront 服务器才能与 Cloud Connectors 通信。有关详细信息,请参阅管理安全密钥

与 Federated Authentication Service 的通信

有关 StoreFront 与 Federated Authentication Service (FAS) 服务器之间通信的信息,请参阅 Federated Authentication Service - 安全和网络配置

远程访问

Citrix 不建议将您的 StoreFront 服务器直接暴露在 Internet 上。Citrix 建议使用 Citrix Gateway 为远程用户提供身份验证和访问。

Microsoft Internet Information Services (IIS) 强化

您可以配置 StoreFront 以使用受限的 IIS 配置。请注意,这不是默认的 IIS 配置。

文件扩展名

您可以使用请求筛选来配置允许的文件扩展名列表,并禁止未列出的文件扩展名。请参阅 IIS 文档

StoreFront 需要以下文件扩展名:

  • . (空白扩展名)
  • .appcache
  • .aspx
  • .cr
  • .css
  • .dtd
  • .gif
  • .htm
  • .html
  • .ica®
  • .ico
  • .jpg
  • .js
  • .png
  • .svg
  • .txt
  • .xml

如果为应用商店网站启用了 Citrix Workspace app 的下载或升级,StoreFront 还需要以下文件扩展名:

  • .dmg
  • .exe

如果启用了适用于 HTML5 的 Citrix Workspace app,StoreFront 还需要以下文件扩展名:

  • .eot
  • .ttf
  • .woff
  • .wasm

谓词

您可以使用请求筛选来配置允许的谓词列表,并禁止未列出的谓词。请参阅 IIS 文档

  • GET
  • POST
  • HEAD

URL 中的非 ASCII 字符

如果您确保应用商店名称和网站名称仅使用 ASCII 字符,则 StoreFront URL 不包含非 ASCII 字符。您可以使用请求筛选来禁止非 ASCII 字符。请参阅 IIS 文档

MIME 类型

您可以删除与以下文件扩展名对应的操作系统 shell MIME 类型:

  • .exe
  • .dll
  • .com
  • .bat
  • .csh

请参阅 IIS 文档

删除 X-Powered-By 标头

默认情况下,IIS 包含一个值为 ASP.NETX-Powered-By 标头。您可以配置 IIS 以删除此标头。请参阅 IIS 自定义标头文档

删除带有 IIS 版本的 Server 标头

默认情况下,IIS 通过添加 Server 标头来报告 IIS 版本。您可以配置 IIS 以删除此标头。请参阅 IIS 请求筛选文档

将 StoreFront 网站移动到单独的分区

您可以将 StoreFront 网站托管在与系统文件分开的单独分区上。在 IIS 中,您必须在创建 StoreFront 部署之前,将默认网站移动到适当的分区,或者在该分区上创建单独的网站。

IIS 功能

有关 StoreFront 安装和使用的 IIS 功能列表,请参阅系统要求。您可以删除其他 IIS 功能。

尽管 StoreFront 不直接使用 ISAPI 筛选器,但 ASP.NET 需要此功能,因此无法卸载。

处理程序映射

StoreFront 需要以下处理程序映射。您可以删除其他处理程序映射。

  • ExtensionlessUrlHandler-Integrated-4.0
  • PageHandlerFactory-Integrated-4.0
  • StaticFile

请参阅 IIS 处理程序文档

ISAPI 筛选器

StoreFront 不需要任何 ISAPI 筛选器。您可以删除所有 ISAPI 筛选器。但是,ASP.NET 需要 ISAPI Windows 功能。请参阅 IIS ISAPI 筛选器文档

.NET 授权规则

默认情况下,IIS 服务器的“.NET 授权规则”设置为“允许所有用户”。默认情况下,StoreFront 使用的网站继承此配置。

如果您在服务器级别删除或更改 .NET 授权规则,则必须覆盖 StoreFront 使用的网站上的规则,以添加“允许所有用户”规则并删除任何其他规则。

零售模式

您可以启用零售模式,请参阅 IIS 文档

应用程序池

StoreFront 创建以下应用程序池:

  • Citrix Configuration Api
  • Citrix Delivery Services Authentication
  • Citrix Delivery Services Resources
  • 和 Citrix Receiver™ for Web

请勿更改每个 IIS 应用程序使用的应用程序池或每个池的标识。如果您使用多个站点,则无法将每个站点配置为使用单独的应用程序池。

在“回收”设置下,您可以设置应用程序池空闲超时和虚拟内存限制。请注意,当“Citrix Receiver for Web”应用程序池回收时,会导致通过 Web 浏览器登录的用户注销,因此默认设置为每天 02:00 回收,以最大程度地减少中断。如果您更改任何回收设置,可能会导致用户在一天中的其他时间注销。

默认 IIS 登录页

您可以从 c:\inetpub\wwwroot 删除文件 iisstart.htmwelcome.png

所需设置

  • 请勿更改 IIS 身份验证设置。StoreFront 管理身份验证并使用适当的身份验证设置配置 StoreFront 站点的目录。
  • 对于 SSL 设置下的 StoreFront 服务器,请勿选择客户端证书: 要求。StoreFront 安装会使用此设置配置 StoreFront 站点的相应页面。
  • StoreFront 需要 Cookie 来实现会话状态和其他功能。在某些目录中,会话状态Cookie 设置下的模式必须设置为使用 Cookie
  • StoreFront 要求将 .NET 信任级别设置为完全信任。请勿将 .NET 信任级别设置为任何其他值。

服务

StoreFront 安装会创建以下 Windows 服务:

  • Citrix 配置复制 (NT SERVICE\CitrixConfigurationReplication)
  • Citrix 群集加入 (NT SERVICE\CitrixClusterService)
  • Citrix 对等解析 (NT SERVICE\Citrix Peer Resolution Service)
  • Citrix 凭据钱包 (NT SERVICE\CitrixCredentialWallet)
  • Citrix 订阅存储 (NT SERVICE\CitrixSubscriptionsStore)
  • Citrix 默认域服务 (NT SERVICE\CitrixDefaultDomainService)

这些帐户以 Network Service 身份登录。请勿更改此配置。

如果您为 XenApp 6.5 配置 StoreFront Kerberos 约束委派,则还会创建 Citrix StoreFront 协议转换服务 (NT SERVICE\CitrixStoreFrontProtocolTransition)。此服务以 NT AUTHORITY\SYSTEM 身份运行。请勿更改此配置。

用户权限分配

修改默认的用户权限分配可能会导致 StoreFront 出现问题。特别是:

  • Microsoft IIS 作为 StoreFront 安装的一部分启用。Microsoft IIS 授予内置组 IIS_IUSRS 登录权限作为批处理作业登录和特权在身份验证后模拟客户端。这是正常的 Microsoft IIS 安装行为。请勿更改这些用户权限。有关详细信息,请参阅 Microsoft 文档。

  • 安装 StoreFront 时,它会创建 应用程序池,IIS 会授予这些应用程序池用户权限作为服务登录调整进程的内存配额生成安全审核替换进程级别令牌

  • 要创建或更改部署,管理员必须具有权限还原文件和目录

  • 要使服务器加入服务器组,Administrators 组必须具有权限还原文件和目录从网络访问此计算机管理审核和安全日志

  • 要使用用户名和密码身份验证(直接或通过网关)登录的用户,必须具有允许本地登录的权限,除非您已配置 StoreFront 通过交付控制器验证密码。

这不是一个全面的列表,可能需要其他用户访问权限。

配置组成员身份

当您配置 StoreFront 服务器组时,以下服务将添加到 Administrators 安全组中:

  • Citrix 配置复制 (NT SERVICE\CitrixConfigurationReplication)
  • Citrix 群集加入 (NT SERVICE\CitrixClusterService)。此服务仅在属于组的服务器上可见,并且仅在加入过程中运行。

StoreFront 正常运行需要这些组成员身份,以便:

  • 创建、导出、导入和删除证书,并设置其访问权限
  • 读取和写入 Windows 注册表
  • 在全局程序集缓存 (GAC) 中添加和删除 Microsoft .NET Framework 程序集
  • 访问文件夹 Program Files\Citrix\<StoreFrontLocation>
  • 添加、修改和删除 IIS 应用程序池标识和 IIS Web 应用程序
  • 添加、修改和删除本地安全组和防火墙规则
  • 添加、修改和删除 Windows 服务和 PowerShell 管理单元
  • 注册 Microsoft Windows Communication Framework (WCF) 终结点

在 StoreFront 的更新中,此操作列表可能会在不通知的情况下更改。

StoreFront 安装还会创建以下本地安全组:

  • CitrixClusterMembers
  • CitrixCWServiceReadUsers
  • CitrixCWServiceWriteUsers
  • CitrixDelegatedAuthenticatorUsers
  • CitrixDelegatedDirectoryClaimFactoryUsers
  • CitrixPNRSReplicators
  • CitrixPNRSUsers
  • CitrixStoreFrontAdministrators
  • CitrixSubscriptionServerUsers
  • CitrixSubscriptionsStoreServiceUsers
  • CitrixSubscriptionsSyncUsers

StoreFront 维护这些安全组的成员身份。它们用于 StoreFront 中的访问控制,不应用于文件和文件夹等 Windows 资源。请勿修改这些组成员身份。

NTLM

如果您使用本地 ESENT 数据库启用了收藏夹,则 StoreFront 在服务器组中的服务器之间同步收藏夹时会使用 NTLM。如果禁用 NTLM,则收藏夹将无法同步。这可以通过使用 StoreFront 2203 CU7 或更高版本来解决。作为替代方案,您可以使用 SQL Server 数据库

StoreFront 在服务器组中的服务器之间同步凭据时会使用 NTLM。如果禁用 NTLM,则当负载均衡器更改用户连接到的服务器时,用户可能需要重新进行身份验证。这可以通过使用 StoreFront CU7 或更高版本来解决。这可以通过使用粘性负载均衡来缓解。请注意,对于 Web 浏览器访问,始终需要粘性负载均衡。

如果用户使用 域直通身份验证 进行身份验证,则 IIS 默认情况下会尽可能使用 Kerberos,否则会回退到 NTLM。如果 StoreFront 前面有负载均衡器,则它总是回退到 NTLM。

您可以将服务器配置为仅使用 NTLMv2 并拒绝 NTLMv1,请参阅 Microsoft 文档。在 Windows Server 2025 及更高版本中,NTLMv1 已被移除,因此始终使用 NTLMv2。

StoreFront 中的证书

服务器证书

服务器证书用于 StoreFront 中的计算机标识和传输层安全性 (TLS) 传输安全。如果您决定启用 ICA 文件签名,StoreFront 还可以使用证书对 ICA 文件进行数字签名。

有关详细信息,请参阅 最终用户与 StoreFront 之间的通信ICA 文件签名

令牌管理证书

身份验证服务和存储都需要用于令牌管理的证书。StoreFront 在创建身份验证服务或存储时会生成自签名证书。StoreFront 生成的自签名证书不应用于任何其他目的。

Citrix Delivery Services 证书

StoreFront 在自定义 Windows 证书存储 (Citrix Delivery Services) 中保存了许多证书。Citrix Configuration Replication 服务、Citrix Credential Wallet 服务和 Citrix Subscriptions Store 服务使用这些证书。群集中的每个 StoreFront 服务器都包含这些证书的副本。这些服务不依赖 TLS 进行安全通信,并且这些证书不作为 TLS 服务器证书使用。这些证书在创建 StoreFront 存储或安装 StoreFront 时创建。请勿修改此 Windows 证书存储的内容。

代码签名证书

StoreFront 在 <InstallDirectory>\Scripts 文件夹中包含许多 PowerShell 脚本 (.ps1)。默认的 StoreFront 安装不使用这些脚本。它们简化了特定和不常见任务的配置步骤。这些脚本已签名,允许 StoreFront 支持 PowerShell 执行策略。我们建议使用 AllSigned 策略。(不支持 Restricted 策略,因为它会阻止 PowerShell 脚本执行。)StoreFront 不会更改 PowerShell 执行策略。

尽管 StoreFront 不会在 Trusted Publishers 存储中安装代码签名证书,但 Windows 可以自动将代码签名证书添加到其中。当 PowerShell 脚本使用始终运行选项执行时,就会发生这种情况。(如果您选择从不运行选项,则证书将添加到 Untrusted Certificates 存储中,并且 StoreFront PowerShell 脚本将不会执行。)一旦代码签名证书已添加到 Trusted Publishers 存储中,Windows 将不再检查其过期时间。在 StoreFront 任务完成后,您可以从 Trusted Publishers 存储中删除此证书。

StoreFront 安全隔离

如果您在与 StoreFront 相同的 Web 域(域名和端口)中部署任何 Web 应用程序,则这些 Web 应用程序中的任何安全风险都可能降低 StoreFront 部署的安全性。如果需要更高程度的安全隔离,Citrix 建议您将 StoreFront 部署在单独的 Web 域中。

ICA 下载

ICA 文件包含连接到 VDA 的信息,并且通常无需进一步身份验证即可单点登录到这些 VDA。因此,请确保 ICA 文件受到保护。对于混合启动,根据配置,ICA 文件可能会下载到用户的设备。建议您禁用 ICA 下载。有关详细信息,请参阅 Workspace 应用程序部署

ICA 文件签名

StoreFront 提供了使用服务器上指定证书对 ICA 文件进行数字签名的选项,以便支持此功能的 Citrix Workspace 应用程序版本可以验证文件是否源自受信任的来源。ICA 文件可以使用 StoreFront 服务器上运行的操作系统支持的任何哈希算法进行签名,包括 SHA-1 和 SHA-256。有关详细信息,请参阅 启用 ICA 文件签名

用户更改密码

您可以允许用户通过 Web 浏览器使用 Active Directory 域凭据更改密码,无论是随时更改还是仅在密码过期时更改。但是,这会将敏感的安全功能暴露给任何可以访问使用身份验证服务的任何存储的人。如果您的组织有安全策略,规定用户密码更改功能仅供内部使用,请确保任何存储都不能从公司网络外部访问。创建身份验证服务时,默认配置会阻止用户更改密码,即使密码已过期。有关详细信息,请参阅 允许用户更改密码

自定义

为了加强安全性,请勿编写从不受您控制的服务器加载内容或脚本的自定义项。将内容或脚本复制到您正在进行自定义的网站自定义文件夹中。如果 StoreFront 配置为 HTTPS 连接,请确保指向自定义内容或脚本的任何链接也使用 HTTPS。

安全标头

通过 Web 浏览器查看存储网站时,StoreFront 会返回以下与安全相关的标头,这些标头对 Web 浏览器施加了限制。

标头名称 说明
content-security-policy frame-ancestors 'none' 这可以防止其他站点在框架中嵌入 StoreFront 网站,从而避免点击劫持攻击。StoreFront 使用内联脚本和样式,因此无法使用阻止这些内容的 content-security-policy。StoreFront 网站仅显示管理员配置的内容,不显示任何用户输入的内容,因此无需阻止内联脚本。
X-Content-Type-Options nosniff 这可以避免 MIME 类型嗅探。
X-Frame-Options deny 这可以防止其他站点在框架中嵌入 StoreFront 网站,从而避免点击劫持攻击。它已被 content-security-policyframe-ancestors 'none' 废弃,但仍被一些不支持 content-security-policy 的旧版浏览器理解。
X-XSS-Protection 1; mode=block 某些浏览器使用此功能来缓解 XSS(跨站点脚本)攻击。

StoreFront 使用多个 Cookie。网站运行中使用的一些 Cookie 如下:

Cookie 说明
ASP.NET_SessionId 跟踪用户会话,包括身份验证状态。已设置 HttpOnly
CtxsAuthId 为防止会话固定攻击,StoreFront 还会使用此 Cookie 跟踪用户是否已通过身份验证。已设置 HttpOnly
CsrfToken 用于通过标准 Cookie 到标头令牌 模式防止跨站点请求伪造。服务器在 Cookie 中设置令牌。客户端从 Cookie 中读取令牌,并将其包含在后续请求的查询字符串或标头中。此 Cookie 要求不设置 HttpOnly,以便客户端 JavaScript 可以读取它。
CtxsDeviceId 标识设备。已设置 HttpOnly

StoreFront 设置了许多其他 Cookie 来跟踪用户状态,其中一些需要由 JavaScript 读取,因此未设置 HttpOnly。这些 Cookie 不包含与身份验证或其他机密信息相关的任何信息。

如果客户端通过 HTTPS 连接,则在创建或更新 Cookie 时会设置 secure 属性。

其他安全信息

注意:

此信息可能随时更改,恕不另行通知。

您的组织可能出于法规原因希望对 StoreFront 进行安全扫描。上述配置选项有助于消除安全扫描报告中的一些发现。

如果安全扫描器和 StoreFront 之间存在网关,则特定发现可能与网关而非 StoreFront 本身相关。安全扫描报告通常不区分这些发现(例如,TLS 配置)。因此,安全扫描报告中的技术描述可能具有误导性。