StoreFront

保护 StoreFront 部署的安全

本文重点介绍在部署和配置 StoreFront 时可能会影响系统安全的几方面内容。

配置 Microsoft Internet Information Services (IIS)

可以配置具有受限 IIS 配置的 StoreFront。请注意,这不是默认 IIS 配置。

配置 HTTPS

要启用 HTTPS、禁用 HTTP 并启用 HSTS,请参阅使用 HTTPS 保护 StoreFront 的安全

文件扩展名

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

StoreFront 需要以下文件扩展名:

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

如果为应用商店 Web 站点启用了 Citrix Workspace 应用程序的下载或升级,StoreFront 还要求使用以下文件扩展名:

  • .dmg
  • .exe

如果启用了适用于 HTML5 的 Citrix Workspace 应用程序,StoreFront 还要求使用以下文件扩展名:

  • .eot
  • .ttf
  • .woff

动词

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

  • GET
  • POST
  • HEAD

MIME 类型

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

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

请参阅 IIS 文档

删除 X-Powered-By 标头

默认情况下,IIS 通过添加值为 ASP.NETX-Powered-By 标头来报告其正在使用 ASP.NET。可以将 IIS 配置为删除此标头。请参阅 IIS 自定义标头文档

删除 IIS 版本附带的 Server 标头

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

IIS 功能

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

尽管 StoreFront 不直接使用 ISAP 过滤器,但该功能是 ASP.NET 所必需的,因此无法卸载。

处理程序映射

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

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

请参阅 IIS 处理程序文档

ISAPI 过滤器

StoreFront 不需要任何 ISAP 过滤器。可以删除所有 ISAPI 过滤器。请参阅 IIS ISAPI 过滤器文档

必需设置

  • 请勿更改 IIS 身份验证或 .NET 授权规则。StoreFront 管理身份验证并使用适当的身份验证设置配置 StoreFront 站点的相应目录。
  • 对于 SSL Settings(SSL 设置)下的 StoreFront 服务器,请勿选择 Client certificates: Require(客户端证书: 必需)。StoreFront 安装配置具有此设置的 StoreFront 站点的恰当页面。
  • StoreFront 需要 cookie 来获取会话状态和其他功能。在某些目录中,在 Session State(会话状态)的 Cookie Settings(cookie 设置)下,Mode(模式)必须设置为 Use Cookies(使用 cookie)。
  • StoreFront 要求将 .NET Trust Level(.NET 信任级别)设置为 Full Trust(完全信任)。请勿将 .NET 信任级别设置为任何其他值。
  • 请勿更改每个 IIS 应用程序使用的应用程序池。无法将每个站点配置为使用单独的应用程序池。但是,可以设置应用程序池空闲超时以及应用程序池使用的虚拟内存量。

配置用户权限

注意:

Microsoft IIS 作为 StoreFront 安装的一部分启用。Microsoft IIS 向内置组 IIS_IUSRS 授予登录权限作为批处理作业登录以及权限身份验证后模拟客户端。这是正常的 Microsoft IIS 安装行为。请不要更改这些用户权限。请参阅 Microsoft 文档了解详细信息。

安装 StoreFront 时,将向其应用程序池授予登录权限作为服务登录以及权限为进程调整内存配额、生成安全审核替换一个进程级令牌。这是创建应用程序池时的常规安装行为。应用程序池为 Citrix 配置 Api、Citrix Delivery Services 资源、Citrix Delivery Services 身份验证和 Citrix Receiver for Web。

您不需要更改这些用户权限。这些权限不会被 StoreFront 使用,并且自动禁用。

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

  • Citrix Configuration Replication (NT SERVICE\CitrixConfigurationReplication)
  • Citrix Cluster Join (NT SERVICE\CitrixClusterService)
  • Citrix Peer Resolution (NT SERVICE\Citrix Peer Resolution Service)
  • Citrix Credential Wallet (NT SERVICE\CitrixCredentialWallet)
  • Citrix Subscriptions Store (NT SERVICE\CitrixSubscriptionsStore)
  • Citrix Default Domain Services (NT SERVICE\CitrixDefaultDomainService)

如果为 XenApp 6.5 配置了 StoreFront Kerberos 约束委派,这将创建 Citrix StoreFront 协议转换服务 (NT SERVICE\SYSTEM)。此服务需要一项的权限通常不会被授予 Windows 服务。

配置服务设置

在上文“配置用户权限”部分中列出的 StoreFront Windows 服务配置为以 NETWORK SERVICE 身份登录;请勿更改此配置。Citrix StoreFront 协议转换服务以 SYSTEM 身份登录;请勿更改此配置。

配置组成员身份

配置 StoreFront 服务器组时,以下服务将添加到管理员安全组:

  • Citrix Configuration Replication (NT SERVICE\CitrixConfigurationReplication)
  • Citrix Cluster Join (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 资源。请勿修改这些组成员身份。

StoreFront 中的证书

服务器证书

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

有关详细信息,请参阅配置 HTTPSIca 文件签名

令牌管理证书

身份验证服务和应用商店都需要使用证书进行令牌管理。StoreFront 会在创建身份验证服务或应用商店时生成一个自签名的证书。不应将 StoreFront 生成的自签名证书用于任何其他用途。

Citrix 交付服务证书

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

代码签名证书

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

虽然 StoreFront 不安装“受信任的发布者”存储中的代码签名证书,但是,Windows 仍然能够自动在此处添加代码签名证书。通过始终运行选项执行 PowerShell 脚本时会出现此问题。(如果选择永不运行选项,证书将被添加到“不信任的证书”存储中,并且 StoreFront PowerShell 脚本将不执行。)将代码签名证书添加到“受信任的发布者”存储中后,Windows 不再检查其是否过期。可以在完成 StoreFront 任务后从“受信任的发布者”存储中删除此证书。

StoreFront 与 Citrix Virtual Apps 服务器之间的通信

在生产环境中,Citrix 建议使用 HTTPS 协议来保护 StoreFront 与您的 Citrix Virtual Apps and Desktops Delivery Controller 之间的数据传输安全。请参阅在 Controller 上安装 TLS 服务器证书。StoreFront 不支持在 StoreFront 与 Delivery Controller 之间使用 TLS 1.0 或 TLS 1.1 协议。或者,您可以使用 IPSec 配置 Windows 来保护服务器之间的通信。

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

禁用旧版 TLS

Citrix 建议您在 Windows Server 上禁用 TLS 1.0 和 1.1 以进行客户端和服务器通信。可以通过组策略或者 Windows 注册表设置来执行此操作。请参阅 Microsoft 文档

StoreFront 安全分离

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

ICA 文件签名

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

用户更改密码

可以允许使用 Active Directory 域凭据通过 Web 浏览器登录的用户随时或仅当过期时更改自己的密码。但是,这会将敏感的安全功能暴露给那些可访问使用该身份验证服务的任何应用商店的用户。如果贵组织的安全策略将用户密码更改功能保留为仅供内部使用,请确保用户无法从企业网络外部访问任何应用商店。创建身份验证服务时,默认配置会阻止用户更改自己的密码,即使密码已到期亦如此。有关详细信息,请参阅允许用户更改密码

自定义设置

为增强安全性,请勿写入从服务器加载内容或脚本且不受您控制的自定义设置。请将内容或脚本复制到从中创建自定义设置的 Web 站点自定义文件夹。如果为 HTTPS 连接配置了 StoreFront,请确保指向自定义内容或脚本的所有链接也使用 HTTPS。

安全标题

通过 Web 浏览器查看应用商店 Web 站点时,StoreFront 会返回以下与安全相关的标题,这些标题对 Web 浏览器施加了限制。

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

StoreFront 使用 cookie 来跟踪用户状态。

cookie 说明
ASP.NET_SessionId 跟踪用户的会话,包括身份验证状态。已设置 HttpOnly
CtxsAuthId 为了防止会话固定攻击,StoreFront 还会跟踪用户是否使用此 cookie 进行身份验证。它已设置 HttpOnly
CsrfToken 用于防止跨网站请求伪造。服务器在 cookie 中设置令牌。客户端从 cookie 中读取令牌,并将该令牌包含在查询字符串或后续请求中的标头中。此 cookie 必须未设置 HttpOnly,以便 JavaScript 客户端能够读取。这是一种防范跨网站请求伪造的标准技术。
CtxsDeviceId 识别设备。已设置 HttpOnly

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

其他安全信息

注意:

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

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

如果安全扫描程序和 StoreFront 之间存在网关,特定发现可能会与网关有关,而非与 StoreFront 本身有关。安全扫描报告通常不会区分这些发现(例如,TLS 配置)。因此,安全扫描报告中的技术说明可能会引起误解。