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 2025 上,TLS 1.0 和 1.1 默认禁用。在 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

与 Delivery Controller 的通信

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

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

与 Cloud Connector 的通信

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

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

与 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

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

  • .dmg
  • .exe

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

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

谓词

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

  • GET
  • POST
  • HEAD

URL 中的非 ASCII 字符

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

MIME 类型

您可以删除与以下文件扩展名对应的 OS 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 站点的目录。
  • 对于 StoreFront 服务器,在SSL 设置下,请勿选择客户端证书: 要求。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,则收藏夹可能无法同步。作为替代方案,您可以使用 SQL Server 数据库

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

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

StoreFront 中的证书

服务器证书

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

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

令牌管理证书

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

Citrix 交付服务证书

StoreFront 在自定义 Windows 证书存储 (Citrix Delivery Services) 中保存了多个证书。Citrix 配置复制服务、Citrix 凭据钱包服务和 Citrix 订阅存储服务使用这些证书。群集中的每个 StoreFront 服务器都拥有这些证书的副本。这些服务不依赖 TLS 进行安全通信,并且这些证书不作为 TLS 服务器证书使用。这些证书在创建 StoreFront 存储或安装 StoreFront 时创建。请勿修改此 Windows 证书存储的内容。

代码签名证书

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

尽管 StoreFront 不会在“受信任的发布者”存储中安装代码签名证书,但 Windows 可以自动将代码签名证书添加到其中。当 PowerShell 脚本以始终运行选项执行时,就会发生这种情况。(如果选择从不运行选项,则证书将添加到“不受信任的证书”存储中,并且 StoreFront PowerShell 脚本将不会执行。)一旦代码签名证书已添加到“受信任的发布者”存储中,Windows 将不再检查其有效期。在 StoreFront 任务完成后,您可以从“受信任的发布者”存储中移除此证书。

StoreFront 安全隔离

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

ICA 下载

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

ICA 文件签名

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

应用程序保护

您可以使用 应用程序保护 来防止屏幕捕获和屏幕记录器。对于混合启动,应用程序保护默认禁用。要启用它,请参阅 应用程序保护

用户更改密码

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

自定义

为了加强安全性,内容安全策略会阻止来自其他服务器的脚本。编写自定义项时,请将脚本放置在网站的 custom 文件夹中。如果 StoreFront 配置为 HTTPS 连接,请确保指向自定义内容或脚本的任何链接也使用 HTTPS。

安全标头

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

标头名称 描述
content-security-policy frame-ancestors 'none' 这可以防止其他站点在框架中嵌入 StoreFront 网站,从而避免点击劫持攻击。此外,HTML 页面包含一个 meta 标签,其中包含一个 content-security-policy,用于限制脚本源以缓解 XSS 攻击。
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 配置)。因此,安全扫描报告中的技术描述可能会产生误导。