StoreFront

保护 StoreFront 部署的安全

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

最终用户与 StoreFront 之间的通信

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

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

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

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

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

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

StoreFront 与 Citrix Desktops 即服务之间的通信

Citrix 建议使用 HTTPS 协议来保护 StoreFront 与您的 Cloud Connector 之间的数据传输安全。请参阅 HTTPS 配置。或者,您可以使用 IPSec 配置 Windows 来保护服务器之间的通信。

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

远程访问

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

Microsoft Internet Information Services (IIS) 强化

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

文件扩展名

可以使用请求筛选来配置允许使用的文件扩展名列表以及禁止未列出的文件扩展名列表。请参阅 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
  • .wasm

动词

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

  • GET
  • POST
  • HEAD

URL 中的非 ASCII 字符

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

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 请求筛选文档

将 StoreFront Web 站点移至单独的分区

您可以将 StoreFront Web 站点托管在与系统文件不同的分区上。在 IIS 中,在创建 StoreFront 部署之前,您必须在相应的分区上移动默认 Web 站点或者创建单独的站点。

IIS 功能

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

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

处理程序映射

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

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

请参阅 IIS 处理程序文档

ISAPI 过滤器

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

.NET 授权规则

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

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

零售模式

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

应用程序池

StoreFront 将创建以下应用程序池:

  • Citrix 配置 API
  • Citrix Delivery Services 身份验证
  • Citrix Delivery Services 资源
  • 和 Citrix Receiver for Web

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

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

必需设置

  • 请勿更改 IIS 身份验证设置。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 信任级别设置为任何其他值。

服务

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)

这些帐户作为 Network Service 登录。请勿更改此配置。

如果您为 XenApp 6.5 配置了 StoreFront Kerberos 约束委派,此操作还会创建 Citrix StoreFront Protocol Transition Service (NT SERVICE\CitrixStoreFrontProtocolTransition)。此服务作为 NT AUTHORITY\SYSTEM 运行。请勿更改此配置。

用户权限分配

将“用户权限分配”的默认值修改为其他值可能会导致 StoreFront 出现问题。特别是:

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

  • 安装 StoreFront 时,它会创建应用程序池,IIS 会向其授予用户权限 Log on as a service(作为服务登录)、Adjust memory quotas for a process(为进程调整内存配额)、Generate security audits(生成安全审核)以及 Replace a process level token(替换进程级令牌)。

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

  • 要使服务器加入服务器组,管理员组必须具有 Restore files and directories(还原文件和目录)、Access this computer from the network(从网络访问此计算机)以及 Manage auditing and security log(管理审核和安全日志)的权限。

  • 要让用户使用用户名和密码身份验证(直接或通过网关)登录,除非您已将 StoreFront 配置为通过 Delivery Controller 验证密码,否则他们必须拥有“允许本地登录”的权限。

这不是一个综合性列表,可能需要其他用户访问权限。

配置组成员身份

配置 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 资源。请勿修改这些组成员身份。

NTLM

StoreFront 使用 NTLM 在服务器组中的服务器之间进行身份验证。如果您禁用 NTLM,则 StoreFront 无法在服务器组中的 StoreFront 服务器之间同步数据。

您可以将服务器配置为仅使用 NTLMv2 并拒绝 NTLMv1,请参阅 Microsoft 文档

StoreFront 中的证书

服务器证书

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

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

令牌管理证书

身份验证服务和应用商店都需要使用证书进行令牌管理。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 任务后从“受信任的发布者”存储中删除此证书。

TLS 版本

StoreFront 使用 TLS 1.2 或更高版本与 Delivery Controller 和 Cloud Connector 进行通信。

在 Windows Server 2022 或更高版本上,您可以对 IIS 进行配置来为客户端连接禁用 TLS 1.0 和 1.1。有关详细信息,请参阅使用 HTTPS 保护 StoreFront

在服务器和客户端中,您都可以使用组策略或 Windows 注册表设置来禁用 TLS 1.0 和 1.1。请参阅 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 站点嵌入到框架中,从而避免单击劫持攻击。此外,该 HTML 页面还包括一个 meta 标记,该标记包含一个 content-security-policy ,后者会限制脚本来源以减少 XSS 攻击。
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。Web 站点的运营中使用的一些 cookie 如下所示:

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

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

其他安全信息

注意:

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

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

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