Citrix ADC MPX、VPX 和 SDX 安全性的最佳实践简介

Citrix ADC MPX 设备是一种应用程序交付控制器,可加速网站、提供 L4-L7 流量管理、提供集成的 Citrix Web App Firewall 以及卸载服务器。Citrix ADC VPX 实例是具有 Citrix ADC MPX 设备的所有功能的虚拟设备,在标准服务器上运行,并为 Citrix XenDesktop 和 XenApp 等 Web 应用程序提供更高的可用性。Citrix ADC SDX 设备为 VPX 的所有灵活性和 MPX 的性能提供了先进的虚拟化。使用 MPX、VPX 和 SDX,组织可以部署灵活或真正的多租户解决方案,通过将大容量共享网络服务与处理器密集型应用程序特定服务分离出来优化 Web 应用程序交付基础架构。Citrix ADC 设备还提供了与 Citrix OpenCloud Access 的无缝集成,可以通过云的强大功能扩展数据中心。

为了在整个部署生命周期中保持安全性,Citrix 建议查看以下注意事项:

  • 物理安全
  • 设备安全性
  • 网络安全性
  • 管理

不同的部署可能需要不同的安全注意事项。本文档提供了一般安全指导,帮助您根据特定的安全要求决定适当的安全部署。

重要:

从软件版本 12.1 开始,NetScaler 将更名为 Citrix ADC。有关详细信息,请参阅https://www.citrix.com/about/citrix-product-guide/

部署准则

部署 Citrix ADC 时,请考虑以下物理和设备安全最佳实践:

物理安全最佳实践

在安全的位置部署 Citrix ADC 设备

Citrix ADC 设备必须部署在具有足够物理访问控制的安全位置,以保护设备免受未经授权的访问。至少,必须使用锁、电子读卡器或其他类似的物理方法来控制进入服务器机房。

其他措施可包括使用电子监控系统,例如闭路电视台,持续监测房间的活动。如果发生未经授权的入侵,该系统的输出必须通知安全人员。在闭路电视台的情况下,录制的录像可供审核用途。

安全访问设备前面板和控制台端口

Citrix ADC 设备或 VPX 托管服务器必须部署在可以使用合适的密钥或其他物理方法锁定的机架或笼子中。锁定会阻止访问 Citrix ADC 设备的物理端口,或者在 VPX 部署的情况下,可以访问虚拟化主机控制台的物理端口。

电源保护

Citrix ADC 设备(或托管服务器)必须使用合适的不间断电源 (UPS) 进行保护。在停电时,UPS 可确保设备的持续运行,或允许物理或虚拟 Citrix ADC 受控关闭。使用 UPS 还有助于防止电源峰值。

加密密钥保护

如果部署中需要为加密密钥提供额外的保护,请考虑使用符合 FIPS 140-2 级 2 级的设备。FIPS 平台使用硬件安全模块来保护设备中的关键加密密钥免受未经授权的访问。

Citrix ADC 设备安全最佳实践

执行设备软件更新

Citrix 强烈建议客户在部署之前确保其设备已使用最新固件版本进行了更新。在远程执行时,Citrix 建议客户使用安全协议(如 SFTP 或 HTTPS)来升级设备。

还建议客户查看与其 Citrix 产品相关的安全公告。有关新安全公告和更新的安全公告的信息,请参阅 Citrix 安全公告网页 (https://support.citrix.com/securitybulletins),并考虑注册以获取有关新公告和更新公告的警报。

保护托管 Citrix ADC VPX 设备的服务器的操作系统

Citrix ADC VPX 设备可以在标准虚拟化服务器上运行虚拟设备,也可以作为 Citrix ADC SDX 上的虚拟设备运行。

除了应用正常的物理安全程序外,您还必须通过基于角色的访问控制和强大的密码管理来保护对虚拟化主机的访问。此外,服务器必须在可用操作系统的最新安全补丁程序进行更新,并在服务器上部署最新的防病毒软件(如果适用于虚拟化类型)。使用 Citrix ADC SDX 平台托管 Citrix ADC VPX 的客户必须确保为 Citrix ADC SDX 使用最新固件版本。

重置 Citrix ADC 熄灭管理 (LOM)

Citrix 建议,在配置 LOM 以在生产部署中使用之前,先对 LOM 执行恢复出厂设置以恢复默认设置。

  1. 在 Citrix ADC shell 提示符下,运行以下命令:

    >ipmitool raw 0x30 0x41 0x1
    

    注意:运行上述命令会将 LOM 重置为出厂默认设置并删除所有 SSL 证书。有关如何重新配置 LOM 端口的说明,请参阅 [熄灭 Citrix ADC MPX 设备的管理端口](/en-us/netscaler-hardware-platforms/mpx/netscaler-mpx-lights-out-management-port-lom.html

  2. 在 LOM GUI 中,导航到 配置 > SSL 证书,然后添加证书和私钥。

    此外,Citrix 强烈建议执行以下用户配置。使用 LOM GUI:

    • 导航到 配置 > 用 > 修改用户 ,然后更改 nsroot 超级用户帐户的密码。
    • 导航到配置>“用 >修改用户,然后为用户创建策略或将现有策略绑定到用户。
    • 导航到配置>IP 访问控制>添加 并配置 IP 访问控制”,以允许访问已知的 IP 地址范围。
    • 导航到配置>“用 >修改用户,创建替代超级用户帐户并将策略绑定到此帐户。

    有关 LOM 配置的更多详细信息,请参阅 LOM 配置

维护和删除持久性数据

如果 Citrix ADC 重新部署到另一个环境、退役或返回到 Citrix,请确保永久性数据已正确从设备中删除。

有关此过程的更多信息,请参阅以下常见问题解答: https://www.citrix.com/support/programs/faqs.html

配置准则

网络安全性

将 Citrix ADC 设备部署到生产环境时,Citrix 强烈建议进行以下关键配置更改:

  • Citrix ADC 管理员界面 (NSIP) 不得向互联网公开。
  • 必须替换 Citrix ADC 默认 SSL 证书。
  • 访问 GUI 且禁用默认 HTTP 接口时必须使用 HTTPS(TLS 上的 HTTP)。

除了建议进一步修改外,以下部分还提供了有关这些关键考虑事项的更多信息。

关键的网络安全考虑

不要将 NSIP 公开到 Internet 上:

Citrix 强烈建议 Citrix ADC 管理 IP (NSIP) 不要暴露于公共互联网,而是部署在适当的状态数据包检查 (SPI) 防火墙之后。

替换 Citrix ADC 默认 TLS 证书:

在 Citrix ADC 设备的初始配置期间,将创建默认 TLS 证书。这些证书不适用于生产部署,必须替换。

Citrix 建议客户将 Citrix ADC 设备配置为使用来自信誉良好的证书颁发机构 (CA) 的证书或来自企业 CA 的相应证书。

当绑定到面向公众的虚拟服务器时,来自信誉良好的 CA 的有效 TLS 证书可以简化面向 Internet 的 Web 应用程序的用户体验;用户 Web 浏览器在启动与 Web 服务器的安全通信时不需要用户交互。要将默认 Citrix ADC 证书替换为受信任的 CA 证书,请参阅知识中心文章 CTX122521: “如何将 Citrix ADC 设备的默认证书替换为与设备主机名匹配的受信任 CA 证书”。

或者,也可以创建和使用自定义 TLS 证书和私钥。虽然这可以提供同等级别的传输层安全性,但它要求将 TLS 证书分发给用户,并且在启动与 Web 服务器的连接时需要用户交互。有关如何创建自定义证书的详细信息,请参阅知识中心文章 CTX121617:如何在 Citrix ADC 设备上创建和安装自签名证书

有关 TLS 证书管理和配置的更多信息,请参阅本指南的“Citrix ADC TLS 建议”部分。

禁用对管理员界面的 HTTP 访问:

要保护到 Citrix ADC 管理界面和 GUI 的流量,必须将 Citrix ADC 设备配置为使用 HTTPS。执行以下步骤:

set ns ip <NSIP> -gui SECUREONLY

有关如何配置对管理 GUI 的安全访问的详细信息,请参阅知识中心文章 CTX111531: 如何使用设备的 SNIP/MIP 地址启用对 Citrix ADC GUI 的安全访问

其他网络安全考虑

在部署 Citrix ADC 设备时,还必须考虑以下与网络相关的安全注意事项:

禁用 SSH 端口转发:

Citrix ADC 设备不需要 SSH 端口转发。如果不想使用此功能,Citrix 建议您使用以下步骤将其禁用:

  1. 通过添加以下行来编辑 /etc/sshd_config 文件。

    AllowTcpForwarding no

  2. 保存文件并将其复制到 /nsconfig,以便在测试期间重新启动时,更改将持久保持不变。

使用 kill -SIGHUP <sshdpid> 命令终止进程,或重新启动系统。

将 Citrix ADC 设备配置为高可用性:

在需要连续操作的部署中,Citrix ADC 设备可以在高可用性设置中进行部署。如果其中一个设备停止运行或需要脱机升级,此类设置将提供持续操作。

有关如何配置高可用性设置的信息,请参阅 Citrix Docs如何在 Citrix ADC 上设置高可用性对 上的“高可用性”>“配置高可用性”主题。

在不需要高可用性的部署中,必须禁用此功能。

在对等设备之间设置安全通信:

如果您在高可用性、群集或 GSLB 设置中配置了 Citrix ADC 设备,请保护设备之间的通信。

为保护设备之间的通信,Citrix 建议您更改内部用户帐户或 RPC 节点密码,然后启用 安全 选项。RPC 节点是内部系统实体,用于系统与系统之间的配置和会话信息通信。

禁用内部用户帐户时,Citrix ADC 设备功能还可以使用基于 SSH 密钥的身份验证进行内部通信。在这种情况下,密钥名称必须设置为“ns_comm_key”。有关详细信息,请参阅使用 SSH 密钥而不使用密码访问 Citrix ADC 设备

更改默认密码:

为增强安全性,Citrix 建议您更改管理员、内部用户帐户或 RPC 节点密码。建议经常更改密码。

  • 管理员密码:请参阅 更改管理员密码
  • 内部用户帐户或 RPC 节点密码:请参阅 更改 RPC 节点密码

    注意

    Citrix 还建议您禁用内部用户帐户,而是使用基于密钥的身份验证。

配置网络安全域和 VLAN:

Citrix 强烈建议将进入 Citrix ADC 设备管理接口的网络流量从物理或逻辑上与正常网络流量分开。推荐的最佳做法是使用三个 VLAN:

  • Internet VLAN 外部
  • 管理 VLAN
  • 在服务器 VLAN

Citrix 建议将网络配置为使 LOM 端口成为管理 VLAN 的一部分。

在双臂模式下部署 Citrix ADC 设备时,请将特定端口专用于特定网络。如果需要 VLAN 标记两个网络并将两个网络绑定到一个端口,则必须确保两个网络具有相同或相似的安全级别。

如果两个网络具有不同的安全级别,则不得使用 VLAN 标记。相反,应考虑为每个特定网络专用一个端口,然后使用分布在设备端口上的独立 VLAN。

考虑使用 Citrix Web App Firewall: Citrix ADC 白金版授权的设备提供内置 Citrix Web App Firewall,该设备使用积极的安全模型,并自动了解适当的应用程序行为以防范威胁,例如命令注入、SQL 注入和跨站脚本。

当您使用 Citrix Web App Firewall 时,用户可以在不更改代码的情况下为 Web 应用程序添加额外的安全性,也不需要更改配置。有关详细信息,请参阅 Citrix ADC Citrix Web App Firewall 网页。

限制非管理应用程序访问: 运行以下命令以限制非管理应用程序访问 Citrix ADC 设备的能力。

set ns ip <NSIP> -restrictAccess enabled

安全群集部署: 如果 Citrix ADC 群集节点分布在数据中心之外,则 Citrix 强烈建议对节点到节点消息传递 (NNM)、AppNM 使用安全 RPC 并设置高可用性。

要为 Citrix ADC 群集中的所有 Citrix ADC IP 地址启用安全 RPC 功能并实现高可用性设置,请运行以下命令:

set rpcnode <ip> -secure on

注意:可能需要其他配置。有关详细信息,请参阅 Citrix 文档站点上的群集主题。

在 L3 群集部署中部署时,Citrix ADC 节点之间的数据包将通过使用源节点和目标节点的 NSIP 地址进行路由的未加密 GRE 隧道交换。当交换通过互联网进行时,在没有 IPsec 隧道的情况下,NSIP 会在互联网上暴露。建议不要这样做,因为它不符合 Citrix ADC 的安全最佳实践。

Citrix 强烈建议客户建立自己的 IPsec 解决方案以使用 L3 上的群集功能。

如果未使用 IP 转发功能,请使用以下命令禁用 L3 模式:

disable ns mode L3

使用安全 MEP 进行全局服务器负载平衡 (GSLB): 要在适用于 GSLB 的 Citrix ADC 设备之间加密 MEP,请从 NSCLI 运行以下命令:

set rpcNode <GSLB Site IP> -secure yes

保护负载平衡持久性 Cookie:

Citrix 建议除 SSL/TLS 通道外加密负载平衡持久性 Cookie。有关如何执行此操作的详细信息,请参阅 HTTP cookie 持久性

使用基础架构模式设置保护 Citrix ADC 设备上的直通流量

Citrix Web App Firewall 基础架构模式设置可用于保护 Citrix ADC 设备上的直通流量。这些基础架构模式设置在不中断任何应用程序的情况下提供了基本以下列表总结了可用的基础架构模式设置。

  • 会话状态保护
  • 会话固定保护(仅启用 HTTP)
  • HSTS(启用 HTTP 严格传输安全性 (HSTS))
  • 强身份验证
  • 首选端到端 SSL(TLS 1.2 和 TLS 1.1)
  • 代理 HTTPS /拒绝所有其他流量

会话状态保护:

建议:已启用 Citrix ADC:默认情况下对大多数实体启用

默认情况下, 会话状态保护 设置处于启用状态,不需要特定配置。将 Citrix ADC 设备配置为代理连接时。例如,当流程选择配置的 TCP 或更高类型的虚拟服务器或服务时,Citrix ADC 设备将创建有状态会话。Citrix ADC 设备将继续保持这些连接的状态,并且只处理进入此状态机的数据包。其他数据包要么被丢弃或重置。

以下服务类型实体在 Citrix ADC 设备上实现了此有状态行为。

  • ADNS_TCP
  • DIAMETER、DNS_TCP
  • FTP-C
  • GRE-c
  • HTTP
  • MYSQL、MSSQL
  • NNTP
  • ORACLE
  • PUSH、PPTP
  • RTSP、RDP
  • SIP_SSL、SIP_TCP
  • SMPP
  • SSL、SSL_BRIDGE、SSL_DIAMETER、SSL_PUSH
  • SSL_TCP、SYSLOG_TCP
  • TCP
  • ADNS_TCP
  • RNAT(rnat_tcpproxy 为 ENABLED)

会话固定保护(通过启用 HTTponly 标志或添加重写策略):

建议:为 Citrix ADC 设备或后端服务器设置的 cookie 启用 HttpOnly
Citrix ADC:默认情况下为 Citrix ADC 插入的 cookie 启用,可通过对后端服务器设置的 cookie 重写启用。

HttponLY:当您使用 HTTponLY 标记为 cookie 时,它会向浏览器表示此 cookie 只能由服务器访问。严格禁止任何从客户端脚本访问 cookie 的尝试。HttponLY Cookie 如果实施得当,将使大量常见的跨站点脚本攻击更难引发。

以下是设置了 HTTponLY 标志的 cookie 的示例:

Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly

Citrix ADC 为 Cookie 插入持久性插入的 Cookie 默认情况下,将 HTTponly 标志设置为指示 cookie 不可编写脚本且不得向客户端应用程序显示。因此,客户端脚本无法访问 cookie,并且客户端不容易受到跨站点脚本的影响。

要使用命令行界面启用 HTTponLY 标志设置,请执行以下操作:

在命令提示窗口中,键入:

set lb parameter -HttpOnlyCookieFlag (ENABLED)  

使用重写策略为 cookie 插入 Secure 和 HTTponLy:

重写策略仅为后端服务器发送的 Cookie 插入安全和 HTTP。

注意:安全和 HTTponLY Cookie 可以同时为 SSL VIP 完成。对于非 SSL VIP,可以插入 HTTponly 标志。

使用 Citrix ADC,可以包含仅 HTTP 和服务器设置的 Cookie 的安全标志。

  • Httponly-Cookie 上的此选项会导致网络浏览器仅使用 HTTP(或 HTTPS)协议返回 cookie;非 HTTP 方法(如 JavaScript 文档 .cookie 引用)无法访问 Cookie。此选项有助于防止由于跨站脚本而导致 Cookie 盗窃。
  • 安全-Cookie 上的此选项会导致网络浏览器在通过 SSL 加密传输时仅返回 cookie 值。此选项可用于防止通过连接窃听窃取 cookie。

要使用命令行界面创建重写策略,请执行以下操作:

  1. 启用“重写”功能(如果尚未启用)。

    enable feature REWRITE
    
  2. 创建重写操作(此示例配置为同时设置 Secure 和 HTTponLY 标志。如果缺少任何一个组合,请根据需要对其他组合进行修改)。

    add rewrite action <action name> replace_all http.RES.full_Header ""path=/; Secure; HttpOnly"" -search "regex(re!(path=/\\; Secure; HttpOnly)|(path=/\\; Secure)|(path=/\\; HttpOnly)|(path=/)!)" -bypassSafetyCheck YES
    

    示例:

    add rewrite action act_cookie_Secure replace_all http.RES.full_Header ""path=/; Secure; HttpOnly"" -search "regex(re!(path=/\\; Secure; HttpOnly)|(path=/\\; Secure)|(path=/\\; HttpOnly)|(path=/)!)" -bypassSafetyCheck YES
    
  3. 创建重写策略以触发操作。

    add rewrite policy <policy name> "http.RES.HEADER("Set-Cookie").EXISTS" <action name>
    

    示例:

    add rewrite policy rw_force_secure_cookie "http.RES.HEADER("Set-Cookie").EXISTS" act_cookie_Secure
    
  4. 将重写策略绑定到要保护的虚拟服务器(如果使用安全选项,则必须使用 SSL 虚拟服务器)。

    bind lb vserver <vserver name> - <policy name> -priority <priority number> -gotoPriorityExpression NEXT -type RESPONSE
    

    示例:

    bind lb vserver mySSLVServer -policyName rw_force_secure_cookie -priority 100 -gotoPriorityExpression NEXT -type RESPONSE
    

    有关详细信息,请参阅https://support.citrix.com/article/CTX138055

HSTS(启用 HTTP 严格传输安全性 (HSTS)):

建议:已启用 Citrix ADC:在 Citrix ADC 软件版本 12.0 中,可以使用 CLI 启用此设置。在 Citrix ADC 软件版本 11.1 及更低版本中,可以使用重写策略启用此设置。

  • 在 Citrix ADC 软件版本 12.0 中,Citrix ADC 设备支持 HTTP 严格传输安全性 (HSTS) 作为 SSL 配置文件和 SSL 虚拟服务器中的内置选项。

要使用 Citrix ADC 命令行启用 HSTS,请执行以下操作:

在命令提示窗口中,键入:

add ssl vserver <vServerName> -HSTS ( ENABLED ) maxage <positive_integer> -IncludeSubdomains ( YES | NO)

add ssl profile <name> -HSTS ( ENABLED ) -maxage <positive_integer> -IncludeSubdomains ( YES | NO )

有关详细信息,请参阅配置对 HTTP 严格传输安全性 (HSTS) 的支持

  • 在 Citrix ADC 软件版本 11.1 及更早版本中,可以通过创建重写策略并将其全局绑定或绑定到有问题的虚拟服务器来启用 HTTP 严格传输安全性 (HSTS)。

在命令提示符下,键入以下命令:

add rewrite action <action name> insert_http_header Strict-Transport-Security ""max-age=157680000\”"

add rewrite policy <policy name> “true” <action name>

bind lb vserver <vserver name> - <policy name> -priority <priority number> END -type RESPONSE

示例:

add rewrite action insert_STS_header insert_http_header Strict-Transport-Security ""max-age=157680000\”"

add rewrite policy enforce_STS "true” insert_STS_header

bind lb vserver vs1 -policyName enforce_STS -priority 100 -gotoPriorityExpression END -type RESPONSE

有关详细信息,请参阅以下主题:

https://support.citrix.com/article/CTX205221

https://www.citrix.com/blogs/2010/09/10/strict-transport-security-sts-or-hsts-with-citrix-netscaler-and-access-gateway-enterprise/

强身份验证:

对敏感数据、应用程序和管理的所有访问都必须启用强身份验证(或多因素身份验证 — MFA)。

有关如何为多因素身份验证设置敏感应用程序的详细信息,请参阅 多重 (nFactor) 身份验证

首选端到端 SSL(TLS 1.2 和 TLS 1.1):

建议在前端和后端都有 SSL。由于报告了安全漏洞,可以在 SSL 实体上禁用 SSLv3 和 TLS v1.0。你只能启用 TLS 1.1 和 TLS 1.2。如果可能,在面向客户端的 VIP 上只有 TLS 1.2 版本。它可以在 SSL 实体级别或配置文件级别完成,所有 SSL 实体都从配置文件继承 SSL 设置。

要使用命令行界面禁用 SSL 实体,请执行以下操作:

在命令提示窗口中,键入:

set ssl vserver <vServerName> -ssl2 DISABLED   -ssl3  DISABLED   -tls1   DISABLED

set ssl service <vServiceName> -ssl2 DISABLED   -ssl3  DISABLED   -tls1   DISABLED

Citrix ADC 推荐的密码套件:

Citrix ADC 支持的以下密码不包括 “强制丢弃” 列表中的任何组件。这些密码由密钥交换(RSA、DHE 和 ECDHE)组织,然后将性能较高的密码放在顶部,安全性较高的密码放在底部:

推荐 RSA 密钥交换密码套件:

  • TLS1-AES-128-CBC-SHA
  • TLS1-AES-256-CBC-SHA
  • TLS1.2-AES-128-SHA256
  • TLS1.2-AES-256-SHA256
  • TLS1.2-AES128-GCM-SHA256
  • TLS1.2-AES256-GCM-SHA384

推荐 DHE 密钥交换密码套件:

  • TLS1-DHE-RSA-AES-128-CBC-SHA
  • TLS1-DHE-RSA-AES-256-CBC-SHA
  • TLS1.2-DHE-RSA-AES-128-SHA256
  • TLS1.2-DHE-RSA-AES-256-SHA256
  • TLS1.2-DHE-RSA-AES128-GCM-SHA256
  • TLS1.2-DHE-RSA-AES256-GCM-SHA384

推荐 ECDHE 密钥交换密码套件:

  • TLS1-ECDHE-RSA-AES128-SHA
  • TLS1-ECDHE-RSA-AES256-SHA
  • TLS1.2-ECDHE-RSA-AES-128-SHA256
  • TLS1.2-ECDHE-RSA-AES-256-SHA384
  • TLS1.2-ECDHE-RSA-AES128-GCM-SHA256
  • TLS1.2-ECDHE-RSA-AES256-GCM-SHA384

按照偏好顺序推荐密码套件:

以下密码列表包括 RSA、DHE 和 ECDHE 密钥交换。它在安全性、性能和兼容性之间提供了最佳妥协。

  1. TLS1.2-AES128-GCM-SHA256
  2. TLS1.2-AES-128-SHA256
  3. TLS1.2-ECDHE-RSA-AES128-GCM-SHA256
  4. TLS1.2-ECDHE-RSA-AES-128-SHA256
  5. TLS1-ECDHE-RSA-AES128-SHA
  6. TLS1.2-DHE-RSA-AES128-GCM-SHA256
  7. TLS1.2-DHE-RSA-AES-128-SHA256
  8. TLS1-DHE-RSA-AES-128-CBC-SHA
  9. TLS1-AES-128-CBC-SHA

代理 HTTPS/拒绝所有其他流量:

在可行的情况下,通过使用安全的 SSL 版本(TLSv1.1 和 TLSv1.2)和安全密码,使用 SSL VIP 来更好地加密数据。在为 VIP 和后端 SSL 服务启用 SSL 时,必须考虑 SSL TPS 和 SSL 吞吐量。

管理

本节提供了可应用于提高 Citrix ADC 和 Citrix ADC SDX 设备安全性的特定配置更改的示例。有关 Citrix ADC 配置最佳实践的更多指导可在文章中找到 Citrix ADC 设备的通用实施的推荐设置和最佳实践

系统和用户帐户

更改超级用户帐户的密码: 不能删除内置的管理员超级用户 (nsroot)。因此,请将该帐户的默认密码更改为安全密码。要更改管理员用户的默认密码,请执行以下步骤:

  1. 以超级用户身份登录并打开配置实用程序。
  2. 在导航窗格中,展开 “系统” 节点。
  3. 选择“用户”节点。
  4. 在 “系统用户” 页面上,选择 nsroot 用户。
  5. 选择 “更改密码”。
  6. 在“密码”和“确认密码”字段中键入所需的密码。
  7. 单击确定。

创建备用超级用户帐户: 要创建超级用户帐户,请运行以下命令:

add system user <newuser> <password>

bind system user <newuser> superuser 0

使用此超级用户帐户,而不是默认的 nsroot 超级用户帐户。

对于 Citrix ADC SDX 部署,管理员必须在初始设置后更改 Citrix ADC SDX 设备及其 GUI 管理控制台的默认凭据。要更改默认用户的密码,请执行以下步骤:

  1. 以超级用户身份登录并打开配置实用程序。
  2. 在导航窗格中,展开 “系统” 节点。
  3. 选择“用户”节点。
  4. 在“系统用户”页面上,选择默认用户。
  5. 选择修改。
  6. 在“密码”和“确认密码”字段中键入所需的密码。
  7. 单击确定。

注意:从 Citrix ADC 11.0 及更高版本中,本地用户和管理员必须选择强密码。密码复杂性要求示例如下:

  • 密码的长度必须至少为 8 个字符。
  • 密码不得包含字典单词或词典单词的组合。
  • 密码必须至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。

可以通过设置两个参数来强制强密码,一个用于最小密码长度,另一个用于强制密码复杂性:

set system parameter -localAuth ( ENABLED | DISABLED ) -minpasswordlen <positive_integer> -natPcbForceFlushLimit <positive_integer> -natPcbRstOnTimeout ( ENABLED | DISABLED )
-strongpassword ( ENABLED | DISABLED ) -promptString <string> -rbaOnResponse ( ENABLED | DISABLED ) -timeout <secs>

在需要多个管理员的部署中,请考虑使用外部身份验证方法对用户进行身份验证,例如 RADIUS、TACACS+ 或 LDAP (S)。

锁定系统用户帐户以进行管理访问: Citrix ADC 设备使您能够将系统用户锁定 24 小时并拒绝对用户的访问。Citrix ADC 设备支持系统用户和外部用户的配置。在命令提示符处键入:

set aaa parameter –persistentLoginAttempts DISABLED

现在,要锁定用户帐户,请在命令提示符下键入:

lock aaa user test

有关如何使用 GUI 配置此功能的信息,请参阅 用户帐户和密码管理

解锁锁定的系统用户帐户以进行管理访问:使用锁定身份验证、授权和审核用户命令可以锁定 系统用户和外部用户 24 小时。Citrix ADC 设备使您能够解锁锁定的系统用户。在命令提示窗口中,键入:

unlock aaa user test 有关如何使用 GUI 配置此功能的信息,请参阅 用户帐户和密码管理

禁用系统用户帐户的管理访问权限: 如果在设备上配置了外部身份验证,并且作为管理员,您希望拒绝系统用户登录管理访问权限时,必须禁用系统参数中的 LocalAuth 选项。

注意:必须配置外部服务器。

在命令提示窗口中,键入以下内容:

set system parameter localAuth <ENABLED|DISABLED>

示例:

set system parameter localAuth DISABLED 有关如何使用 GUI 配置此功能的信息,请参阅 用户帐户和密码管理

强制更改管理用户的密码: 对于 nsroot 安全身份验证,Citrix ADC 设备将提示用户将默认密码更改为新密码(如果在 forcePasswordChange 系统参数。您可以在首次使用默认凭据登录时从 CLI 或 GUI 更改 nsroot 密码。在命令提示窗口中,键入:

set system parameter -forcePasswordChange ( ENABLED | DISABLED )

有关如何配置此功能的例子,请参阅 用户帐户和密码管理

使用 SSH 密钥和无密码访问 Citrix ADC: 在需要管理许多 Citrix ADC 设备的部署中,请考虑使用 SSH 密钥和无密码。有关如何配置此功能的信息,请参阅 使用 SSH 密钥而不使用密码访问 Citrix ADC 设备

创建系统主密钥以进行数据保护: 从 Citrix ADC 11.0 版本中,有必要创建系统主密钥来保护某些安全参数,例如 LDAP 身份验证所需的服务帐户密码和本地存储的身份验证、授权、和审计用户帐户。 要创建系统主密钥:

  1. 使用命令行界面,以系统管理员身份登录。
  2. 输入以下命令:
create kek <file name>

注意

  • 在创建系统 kek 命令运行之后,KEK 将用于大多数密码加密(本地用户密码不会通过 KEK 加密)。
  • 您不能删除 KEK 文件。如果您有 shell 访问权限并且错误地删除了密钥片段文件,则可能会导致配置丢失、同步失败、登录失败。以下是需要注意的一些要点:

    • 降级时始终使用与正在安装的版本匹配的较旧的配置文件;否则,登录、源配置、同步、故障切换可能会失败。
    • 如果任何密钥片段文件丢失或损坏,敏感数据的加密/解密将导致失败,进而导致配置丢失、同步失败和登录失败。
  • “密码短语”长度必须至少为 8 个字符。

使用访问控制列表:

默认情况下,包括 GUI 和 SSH 在内的所有协议和端口都可以在 Citrix ADC 设备上访问。访问控制列表 (ACL) 只允许明确指定的用户访问端口和协议,从而帮助您安全地管理设备。

控制对设备的访问的建议:

  • 考虑使用 Citrix Gateway 将对设备的访问限制为只能访问 GUI。对于除 GUI 之外还需要访问方法的管理员,Citrix Gateway 必须配置端口 80、443 和 3010 的默认 “拒绝” ACL,但为可信 IP 地址显式 “允许” 来访问这些端口。

可以使用以下 NSCLI 命令扩展此策略,以便与一系列受信任的 IP 地址一起使用:

add acl local_access allow -srcip 192.168.0.1-192.168.0.3 -destip 192.168.0.1-192.168.0.3

apply acls
  • 如果您使用 SNMP,则明确允许使用 ACL 进行 SNMP 流量。以下是一组示例命令:
add acl snmp1-ssh ALLOW -srcip 10.0.0.1-10.0.0.20 -destip 192.168.0.2-192.168.0.3 -destport 161 -protocol udp

add acl snmp2-ssh ALLOW -srcip 172.16.0.1-172.16.0.20 -destip 192.168.0.2-192.168.0.3 –destport 161 -protocol udp

apply acls

在前面的示例中,该命令提供对两个已定义子网的所有 SNMP 查询的访问权限,即使查询是针对适当定义的社区。

您可以在 NSIP、SNIP 和 MIP 地址上启用管理功能。如果启用,请使用 ACL 提供对 NSIP、SNIP 地址的访问权限,以保护对管理功能的访问。管理员还可以对设备进行配置,使其无法使用 ping 命令访问。

  • 打开最短路径优先 (OSPF) 和 IPsec 不是基于 TCP 或 UDP 的协议。因此,如果您需要设备支持这些协议,请使用 ACL 明确允许使用这些协议的流量。运行以下命令定义 ACL 以通过协议编号指定 OSPF 和 IPsec:
add acl allow_ospf allow -protocolnumber 89

add acl allow_ipsec allow –protocolnumber 50
  • 如果使用 XML-API Web 服务,请完成以下任务以保护 API 接口:
  • 使用 ACL 向主机提供访问接口的权限。例如,运行以下命令使 10.0.0.1-20 和 172.16.0.1-20 IP 地址范围内的主机能够访问 XML-API 接口:
add acl xml-api1 ALLOW -srcip 10.0.0.1-10.0.0.20 -destip 192.168.0.2-192.168.0.3 -destport 80 -protocol tcp

add acl xml-api2 ALLOW -srcip 172.16.0.1-172.16.0.20 -destip 192.168.0.2-192.168.0.3 -destport 80 -protocol tcp

apply acls
  • 要将 ACL 应用于内部端口,请使用以下命令:
set l3param -implicitACLAllow DISABLED

注意:隐式 ACL 允许 命令的默认值为 启用

  • 要从内部端口删除 ACL,请使用以下命令:
set l3param -implicitACLAllow ENABLED
  • 通过使用适当的响应程序策略在设备上配置 HTTPS 前端服务器,为 XML-API Web 服务指定安全传输。这适用于运行 Citrix ADC 软件 8.0 版或更高版本的设备。以下是一组示例命令:
enable ns feature responder

add responder policy allow_soap 'HTTP.REQ.URL.STARTSWITH("/soap").NOT' RESET

add lb vserver xml-https ssl 192.168.0.4 443

add server localhost 127.0.0.1

add service xml-service localhost HTTP 80

bind lb vserver xml-https xml-service

bind lb vserver xml-https -policyName allow_soap -type REQUEST -priority 1

add ssl certkey xml-certificate -cert testcert.cert -key testcert.key

bind ssl certkey xml-https xml-certificate

对管理用户使用基于角色的访问控制:

Citrix ADC 设备包括四个命令策略或角色,例如操作员、只读、网络和超级用户。您还可以定义命令策略、为不同角色创建不同的管理帐户,并将角色所需的命令策略分配给帐户。以下是一组示例命令,用于限制只读用户的只读访问权限:

add system user readonlyuser

bind system user readonlyuser read-only 0

有关配置用户、用户组或命令策略的更多信息,请参阅 Citrix 文档:

配置系统会话超时:

提供了会话超时间隔,以限制会话(GUI、CLI 或 API)在不使用时保持活动状态的时间持续时间。对于 Citrix ADC 设备,可以按以下级别配置系统会话超时:

  • 用户级别超时。适用于特定用户。

GUI:导航到系统 > 用户管理 > “用户”,选择用户,然后编辑用户的超时设置。 CLI:在命令提示符下,输入以下命令:

set system user <name> -timeout <secs>
  • 用户组级别超时。适用于组中的所有用户。

GUI:导航到系统>用户管理>,选择一个组,然后编辑组的超时设置。 CLI:在命令提示符下,输入以下命令:

set system group <groupName> -timeout <secs>
  • 全局系统超时。适用于未配置超时的所有用户和组中的用户。

GUI:导航到 “ 系统 ” > “ 设置,单击 “设置 全局系统参数, 然后设置“任何客户端空闲超时”参数。 CLI:在命令提示符下,输入以下命令:

set system parameter -timeout <secs>

为用户指定的超时值具有最高优先级。如果未为用户配置超时,则会考虑为成员组配置的超时。如果未为组指定超时(或用户不属于组),则将考虑全局配置的超时值。如果未在任何级别配置超时,则默认值 900 秒设置为系统会话超时。

您还可以限制超时值,以便会话超时值不能超过管理员配置的超时值进行配置。您可以将超时值限制在 5 分钟到 1 天之间。要限制超时值:

  • GUI:导航到系统>设置,单击“设 置全局系统参数,然后选择“受限超时”字段。
  • CLI:在命令提示符下,输入以下命令:
set system parameter -restrictedtimeout <ENABLED/DISABLED>

在用户启用限制tedTimeout 参数后,如果超时值已配置为大于 1 天或少于 5 分钟的值,用户将收到更改超时值的通知。如果用户不更改超时值,则默认情况下,在下次重新启动期间,超时值将重新配置为 900 秒(15 分钟)。

您还可以为正在访问的每个接口指定超时持续时间。但是,为特定接口指定的超时值仅限于为访问该接口的用户配置的超时值。例如,假设用户 publicadmin 的超时值为 20 分钟。现在,访问接口时,用户必须指定一个在 20 分钟内的超时值。

要在每个接口配置超时持续时间:

  • CLI:使用以下命令在命令提示符下指定超时值:
set cli mode -timeout <secs>
  • API:在登录负载中指定超时值。

日志记录和监视

配置网络时间协议

Citrix 建议在设备上启用网络时间协议 (NTP) 并将其配置为使用受信任的网络时间服务器。启用 NTP 可确保记录日志条目和系统事件的时间准确无误,并与其他网络资源同步。

配置 NTP 时,必须修改 ntp.conf 文件,以限制 NTP 服务器泄露敏感数据包中的信息。

您可以运行以下命令在设备上配置 NTP:

add ntp server <IP_address> 10

enable ntp sync

为添加的每个受信任的 NTP 服务器修改 ntp.conf 文件。每个服务器条目都必须有相应的限制条目。通过从设备的 shell 提示符运行 find . –name ntp.conf 命令,可以找到 ntp.conf 文件。

配置 SNMP

Citrix ADC 设备支持 SNMP 协议的版本 3。SNMPv3 集成了身份验证、访问控制和数据完整性检查等管理和安全功能。有关详细信息,请参阅 Citrix 文档上的“系统”>“SNMP”主题。

如果您没有配置至少一个 SNMP 管理器,则设备将接受并响应来自网络中所有 IP 地址的 SNMP 查询。运行以下命令添加 SNMP 管理器并限制此行为:

add snmp manager <IP_address>

在不需要 SNMP 的部署中,必须使用以下命令禁用该功能:

set ns ip <IP_Address> -snmp disabled

配置向外部 Citrix ADC 日志主机的日志记录

Citrix ADC 审计服务器会记录内核和用户级守护程序中不同模块收集的所有状态和状态信息。审计服务器允许管理员按时间顺序引用事件历史记录。审计服务器类似于从设备收集日志的 SYSLOG 服务器。审计服务器使用管理员凭据从一个或多个设备获取日志。

  • 本地审计服务器配置

运行以下命令以配置 Citrix ADC 设备中本地审计服务器的日志记录: > set audit nslogparams –serverip <hostname> -serverport <port>

  • 远程审计服务器配置

要在远程计算机中配置对审计服务器的日志记录,请在该计算机上安装审计服务器。以下是审计服务器选项示例:

./audserver -help
usage : audserver -[cmds] [cmd arguments]
cmds cmd arguments: -f <filename> -d debug
-help - detail help
-start - cmd arguements,[starts audit server]
-stop - stop audit server
-verify - cmd arguments [verifies config file]
-addns - cmd arguments [add a netscaler to conf file]
-version - prints the version info

这提供了仅记录由设备的 ns.log 文件生成的审计消息的功能。要记录所有 syslog 消息,请执行以下步骤:

  1. 从本地设施的 /nsconfig/syslog.conf 文件中删除日志文件规范。
  2. 将日志文件规范替换为远程 syslog 主机的日志主机名或 IP 地址,类似于以下条目:

    local0.* @10.100.3.53

    local1.* @10.100.3.53

  3. 将 syslog 服务器配置为接受上述日志记录工具中的日志条目。有关详细信息,请参阅 syslog 服务器文档。
  4. 对于使用标准 syslog 软件的大多数基于 Unix 的服务器,必须将消息和 nsvpn.log 文件的本地设施配置条目添加到 syslog.conf 配置文件中。设施点值必须与设备上配置的值相对应。
  5. 默认情况下,任何基于 Unix 的计算机中的远程 syslog 服务器不监听远程日志。因此,运行以下命令启动远程 syslog 服务器:
syslogd -m 0 –r

注意:请参阅在审计服务器中部署的 syslog 变体的等效选项。

LOM 配置

Citrix 强烈建议采取以下措施来保护 LOM 界面:

  • 请勿将 LOM 端口公开到 Internet 上。
  • 将 LOM 部署在 SPI 防火墙后面。
  • 将 LOM 部署到逻辑上(单独的 VLAN)或物理(独立 LAN)与不受信任的网络流量分开的网段上。
  • 为 LOM 和 Citrix ADC 管理端口设置不同的用户名、密码、SSL 证书和 SSL 密钥值。
  • 确保用于访问 LOM 管理接口的设备专用于网络管理目的,并放置在与其他管理设备端口位于同一物理 LAN 或 VLAN 中的管理网段中。
  • 要轻松识别和隔离 LOM IP 地址,请为 LOM 管理接口和管理服务器保留特殊 IP 地址(私有子网)。请勿将保留的 IP 子网与受控装置的 LAN 接口一起使用。建议不要使用 DHCP 分配的动态 IP 地址,因为它们使得很难基于局域网段外部的 MAC 地址实施防火墙访问控制列表。
  • 为至少 8 个字符设置密码,包括字母数字字符和特殊字符。经常更改密码。

应用程序和服务

将 Citrix ADC 配置为删除无效的 HTTP 请求

Citrix 强烈建议 Citrix ADC 设备配置严格检查和执行 HTTP 请求,以防止无效的 HTTP 请求通过虚拟服务器。这可以通过使用 CLI 上的以下命令将内置的 HTTP 配置文件 nshttp_default_strict_validation 绑定到一个或多个虚拟服务器来完成:

show ns httpProfile (Shows the available http profile (default+user configured profiles))

set lb vserver <vserver name> -httpProfileName nshttp_default_strict_validation

Citrix 建议使用此选项的客户先测试暂存环境中的更改,然后再将其发布到生产环境中。

默认情况下,严格的 HTTP 验证配置文件 (nshttp_default_strict_validation) 上启用防止 HTTP 取消同步攻击。对所有面向客户的实体使用严格的配置文件。

有关 HTTP 请求走私攻击及其缓解的更多信息,请参阅支持文章 Citrix ADC-HTTP 请求走私参考指南

配置针对 HTTP 拒绝服务攻击的保护

Citrix ADC 设备固件支持针对 HTTP 拒绝服务攻击的有限对策,包括“慢读”类型攻击。您可以在设备的 shell 提示符下使用实用 nsapimgr 程序来配置这些功能:

  • small_window_threshold (default=1)
  • small_window_idle_timeout (default=7 sec)
  • small_window_cleanthresh (default=100)
  • small_window_protection (default=Enabled)

默认设置足以防止 HTTP 拒绝服务攻击,包括慢读攻击,但是,对于其他攻击,可能需要对参数进行一些调整。

要防止此类攻击,请使用设备 shell 提示符下的以下 small_window_threshold 命令向上调整 nsapimgr 属性:

$ nsapimgr –ys small_window_threshold=<desired value>

注意:可以根据部署中的传入流量模式设置 small_window_threshold 所需的值。可接受的范围为 0 到 2^32。

通过使用设备 shell 提示符下的 nsconmsg –d stats 命令监控以下计数器,可以验证防止 HTTP 拒绝服务攻击的防护:

  • nstcp_cur_zero_win_pcbs:此计数器跟踪当前具有较低窗口值的 PCB 数量。
  • nstcp_err_conndrop_at_pass:当设备检测到在将数据包从一端传递到另一端时,该计数器已超过 nscfg_Window_idletimeout 值时,此计数器会递增。
  • 当重新传输过程中失效的时间超过了 nscfg_small_window_idletimeout 值时,此计数器将递增。
  • nstcp_cur_pcbs_probed_withKA:此计数器跟踪浪涌队列中使用 KA 探测器探测的 PCB 数量。

Citrix 建议使用此选项的客户先测试暂存环境中的更改,然后再将其发布到生产环境中。

配置 Citrix ADC 以抵御 TCP 欺骗攻击

以下命令可用于帮助保护后端服务器免受 TCP 欺骗攻击:

set ns tcpProfile profile1 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED

Done

set lb vserver lbvserver1 -tcpProfileName profile1

Done

Citrix 建议使用此选项的客户先测试暂存环境中的更改,然后再将其发布到生产环境中。

将 Citrix ADC 配置为接受特定的 HTTP 标头

可以将 Citrix ADC 配置为仅接受特定的 HTTP 标头。这可以通过添加重写操作来限制具有特定、定义的 HTTP 标头的网络流量传递到后端服务器来实现。

以下全局重写操作仅向服务器发送带有主机、接受和测试等标头的网络流量:

add rewrite action act1 replace_all q/HTTP.REQ.FULL_HEADER.after_str("\r\n")/     q{TARGET.REGEX_SELECT(re/(iu)^(Host|Accept|test):.*\r\n/) ALT ""} -pattern q{re/(U).+:.+r\n/}

add rewrite policy pol1 HTTP.REQ.IS_VALID act1

bind rewrite global pol1 100

注意:这些命令仅在 Citrix ADC 版本 10.5 及更高版本中受支持。

配置关闭通知

关闭通知是指示 SSL 数据传输结束的安全消息。遵守 RFC 5246:客户端和服务器必须共享连接即将结束的知识,以避免截断攻击。任何一方都可以启动结束消息的交换。任何一方都可以通过发送 close_notify 警报来启动关闭。在关闭警报之后收到的任何数据都将被忽略,除非传输了其他一些致命警报,否则每一方都需要在关闭连接的写入端之前发送 close_notify 警报。 为确保捕获 TLS 终止事件的审计事件,请以超级用户或 sysadmin 身份登录到 CLI,然后运行以下命令:

set ssl parameter -sendCloseNotify y

save ns config

DNSSEC 安全建议

Citrix 建议使用 DNSSEC 的客户应用以下建议:

对 KSK/ZSK 私钥使用 RSA 1024 位或更高位

NIST 建议 DNS 管理员在 2015 年 10 月 1 日之前维护 1024 位 RSA/SHA-1 和/或 RSA/SHA-256 ZSK。

为 DNSSEC 密钥过期启用 SNMP 警报

默认情况下,在 Citrix ADC 设备上启用 DNSSEC 密钥过期的 SNMP 警报。密钥到期通知是通过称为 DNSSKey过期的 SNMP 陷阱发送的。三个 MIB 变量 dnskeyName、 和 dnskeyUnitsOfExpirydnskeyExpiry SNMP 陷阱一起发送。有关详细信息,请参阅 Citrix ADC SNMP OID 参考。

在 x.509 证书到期之前将鼠标置于 KSK/ZSK 私钥上

在 Citrix ADC 设备上,您可以使用预发布和双重签名方法执行区域签名密钥和密钥签名密钥的滚动。有关详细信息,请参阅 Citrix 文档上的“域名系统”>“配置 DNSSEC”主题。

安全的 DNSSEC ADNS 服务器

如果设备是在 DNSSEC 代理模式下配置的,它会缓存来自后端 ADNS 服务器的响应,然后将缓存的响应转发给 DNS 客户端。

当 Citrix ADC 设备对给定区域具有权威时,该区域中的所有资源记录都在 Citrix ADC 上配置。要签署权威区域,您必须为区域创建密钥(区域签名密钥和密钥签名密钥),将密钥添加到 ADC,然后对区域进行签名

要将 Citrix ADC 配置为权威服务器,请执行以下步骤:

  1. 添加 ADNS 服务。

    例如:

    add service s1 <ip address> adns 53`
    
  2. 创建 DNS 密钥。

    例如,要充当 com 域的权威服务器:

    create dns key -zoneName com -keytype ksK -algorithm rsASHA1 -keysize 3000 -fileNamePrefix com.ksk.rsasha1.3000
    
    create dns key -zoneName com -keytype zsk -algorithm rsASHA1 -keysize 3000 -fileNamePrefix com.zsk.rsasha1.3000
    

    注意:您必须创建一次 DNS 密钥,然后它们保存在 /nsconfig/dns 中。

  3. 添加 DNS 密钥。

    例如,

    add dns key com.zsk.3000 /nsconfig/dns/com.zsk.rsasha1.3000.key /nsconfig/dns/com.zsk.rsasha1.3000.private
            add dns key com.ksk.3000 /nsconfig/dns/com.ksk.rsasha1.3000.key /nsconfig/dns/com.ksk.rsasha1.3000.private
    
  4. 为区域添加 NS 和 SOA 记录,然后对 com 区域进行签名。

    add dns soaRec com -originServer n1.com -contact citrix
    add dns nsrec com n1.com
    add dns zone com -proxyMode no
    add dns addRec n1.com 1.1.1.1

    sign dns zone com

注意:此外,您还必须在 DNS 全局参数中启用 DNSEC 扩展参数。

有关将 Citrix ADC 配置为权威域名服务器的详细信息,请参阅 Citrix 文档上的“域名系统”>“将 Citrix ADC 配置为 ADNS 服务器”主题。

旧配置

配置 Citrix ADC 以禁用 SSLv2 重定向

如果在 Citrix ADC 设备上启用 SSL v2 重定向功能,设备将执行 SSL 握手并将客户端重定向到配置的 URL。如果禁用此功能,设备将拒绝对 SSL v2 客户端执行 SSL 握手过程。

运行以下命令禁用 SSLv2 重定向:

set ssl vserver <vserver_name> -sslv2redirect DISABLED -cipherredirect DISABLED

注意:从 Citrix ADC 软件版本 9.2 开始,默认情况下,SSLv2 重定向和密码重定向功能处于禁用状态。

将 Citrix ADC 10.0 及更早版本配置为使用安全 SSL 重新协商

要将 Citrix ADC 配置为防止 Citrix ADC 软件版本 9.3e 或 10.0 的非安全 SSL 重新协商,请运行以下命令:

set ssl parameter -denySSLReneg NONSECURE

对于 Citrix ADC 软件的早期版本,请运行以下命令以禁用 SSL 重新协商:

set ssl parameter -denySSLReneg ALL

以下命令仅允许对安全客户端和服务器进行重新协商:

set ssl parameter -denySSLReneg NONSECURE

有关更多信息,请参阅 如何配置和使用 -denySSLReneg 参数。”

Citrix ADC 加密建议

本节详细介绍了为确保在 Citrix ADC 设备上正确保加密材料得到正确保护所必须遵循的一些关键步骤。它还提供了有关如何配置设备以使用此材料来保护设备本身、后端服务器和最终用户的信息。

管理 TLS 证书和密钥

为 NDPP 部署配置 TLS 密码套件

有关 NDPP 部署支持的 TLS 密码套件的列表,请参阅 https://www.citrix.com/content/dam/citrix/en_us/documents/downloads/netscaler-adc/Common-criteria-documents-for-NetScaler-10.5.zip

要确保设备上仅配置了经批准的密码套件,请从 CLI 完成以下配置步骤:

  1. 从虚拟服务器中解除所有密码的绑定

    unbind ssl vs v1 –cipherName FIPS
    
  2. 使用命令只绑定 TLS1-AES-256-CBC-SHA,然后使用 TLS1-AES-128-CBC-SHA:

    bind ssl vs v1 –cipherName <cipher>
    
    bind ssl vs v1 -cipherName TLS1-AES-256-CBC-SHA
    

导入受信任的根 CA 证书

  1. 使用安全文件传输实用程序(如scpWinSCP),将服务器颁发者(根)证书传输到 Citrix ADC 装置的 /nsconfig/ssl 目录。

    注意:您必须通过 SCP 或 WinSCP 进行超级用户身份验证才能完成此步骤。

  2. 以系统管理员或超级用户身份登录 Citrix ADC 设备,然后键入以下命令:

add ssl certkey <Certificate_Name> –cert <Cert_File_Name>

注意:仅安装来自已知值得信赖的证书颁发机构颁发的根 CA 证书。删除所有其他证书。

导入 PKCS #12 (.PFX) 证书和密钥文件:

有关如何将证书和密钥文件导入 Citrix ADC 设备的详细信息,请参阅 Citrix 产品文档的 SSL 卸载和加速 > 导入现有证书和密钥主题。

  1. 如上一节的步骤 1 中所述,将 .pfx 文件传输到 /nsconfig/ssl 目录。

  2. 以系统管理员或超级用户身份通过 CLI 向 Citrix ADC 设备进行身份验证,然后运行以下命令:

    convert ssl pkcs12 Cert-Client-1.pfx -export -certFile Cert-Client-1 -keyFile Key-Client-1
    
  3. 如下所示将证书添加到 Citrix ADC 设备:

    add ssl certkey Clent-Cert-1 –cert Cert-Client-1
    
  4. 保存当前配置。

    save ns config
    

注意: 从 Citrix ADC 11.0 版本起,PKCS #12 (.PFX) 文件会自动转换为 PEM,所有证书都会自动添加并链接到 CA。

使用受信任的 CA 安装证书和密钥对:

要从公共或企业证书颁发机构 (CA) 获取证书,您必须首先生成私钥和证书签名请求 (CSR)。执行以下步骤:

  1. 以系统管理员或超级用户身份向 Citrix ADC CLI 进行身份验证。

  2. 创建 RSA 私钥。

    create fipsKey m1 -modulus 2048
    
  3. 创建证书签名请求 (CSR):

    create certreq csr_1 -fipsKeyName m1 -countryName IN -stateName BA -organizationName citrix
    
  4. 将 CSR 提交给 CA。

对于大多数商业和企业 CA,CSR 通过电子邮件请求发送。但是,提交方法可能因企业 CA 环境而异。CA 通过电子邮件返回有效的证书,但这也可能因企业 CA 而异。从 CA 收到证书后,请安全地将其复制到 /nsconfig/ssl 目录。

以超级用户或 sysadmin 身份登录,然后从 CLI 运行以下命令: > add ssl certKey ck_1 -cert cert1_1 -fipsKey m1

Citrix ADC-FIPS 建议

在基于 FIPS 的部署中配置 Citrix ADC SDX

如果您是现有 FIPS 客户,并且使用 Citrix ADC SDX 设备实现真正的多租户,请使用 FIPS 认证的 Citrix ADC MPX 设备终止 TLS 并将流量转发到 Citrix ADC SDX 设备。或者,也可以使用 Thales 外部 HSM。 将 FIPS 认证版本的 Citrix ADC 与硬件安全模块 (HSM) 结合使用时, 更改 FIPS 加密卡密码,更改默认安全官员 (SO) 并按如下方式设置新的用户密码。如果您不知道启用了 FIPS 的 Citrix ADC 设备的默认 SO 密码,请联系 Citrix 技术支持。 注意:只有超级用户或 sysadmin 才能执行此任务。

set ssl fips -initHSM Level-2 <soPassword> <oldSoPassword> <user-Password> [-hsmLabel <string>]

save configuration

initHSM

FIPS 初始化级别。该设备目前支持 2 级(FIPS 140-2)。 这是一个强制性的论点。 可能的值:Level-2

hsmLabel

用于识别硬件安全模块 (HSM) 的标签。

最大长度:31

注意:使用上述命令擦除 FIPS 卡上的所有数据。

将 HSM 密码存储在安全的位置

根据贵公司的运营程序,HSM 的密码必须存储在安全的位置。

注意:在三次登录尝试失败后,HSM 将被锁定。锁定后,它将变为非运行状态,您无法更改其配置。

其他功能:Citrix Web App Firewall 和 Citrix Gateway

本节提供了可应用于 Citrix Web App Firewall 和 Citrix Gateway 的配置更改示例,以提高已部署设备的安全性。本节还包含有关构建多个层或安全性的信息。

Citrix Web App Firewall 安全建议

在双臂模式下部署设备

使用双臂模式安装后,设备将物理位于设备保护的用户和 Web 服务器之间。连接必须通过设备。这种安排最大限度地减少了在设备周围找到路线的机会。

使用“默认拒绝”策略

Citrix 建议管理员使用全局级别的拒绝所有策略配置 Citrix Web App Firewall,以阻止所有与 Citrix Web 应用程序防火墙策略不匹配的请求。以下是用于在全局级别配置“拒绝全部”策略的命令集示例:

add appfw profile default_deny_profile –defaults advanced

add appfw policy default_deny_policy NS_TRUE default_deny_profile

bind appfw global default_deny_policy <PRIORITY>

注意优先级 设置必须确保最后评估默认策略(仅当请求与任何其他配置的策略不匹配时)。

Citrix ADC 软件版本 9.2 包括默认配置文件,例如 appfw_block,当配置的阻止请求与 Citrix Web App Firewall 策略不匹配时。运行以下命令来设置默认配置文件:

set appfw settings -defaultProfile appfw_block

Citrix Web App Firewall — 构建多层安全

以下准则帮助您构建多个安全层,具体取决于您的环境和受支持的应用程序。

第一层安全

要构建第一层安全性,请执行以下操作:

  • 启用缓冲区溢出、SQL 注入和跨站脚本编写。
  • 当应用程序特定于必须访问哪些 URL 并且必须防止强制浏览时,需要启动 URL。
  • 启用字段格式检查您的应用程序是否期望在表单域中输入。

跨站点脚本检查可能会产生误报,因为许多公司都安装了大量的 JavaScrip 增强型 Web 内容,违反了相同的源规则。如果您在此类网站上启用 HTML 跨站点脚本检查,则必须生成适当的例外,以便检查不会阻止合法活动。

推出第一层,寻找误报,部署例外情况,然后进入下一层。分阶段实施有助于管理 AppFW 部署。

第二层安全

要构建第二层安全性,请执行以下操作:

除了缓冲区溢出、SQL 注入和跨站点脚本之外,还在配置文件上启用签名。有 1300 多个签名。尝试仅启用适用于保护应用程序的签名,而不是启用所有签名规则。

推出第二层,寻找误报,部署例外情况,然后继续进入下一级。分阶段实施有助于管理 Citrix Web App Firewall 部署。

第三层安全

要构建第三层安全性,请执行以下操作:

  • 根据应用程序需求,启用高级配置文件安全检查,例如 CSRF 标记、Cookie 一致性。表单字段对需要它的部分应用程序保持一致性。
  • 高级安全检查需要更多的处理,可能会影响性能。除非您的应用程序需要高级安全性,否则您可能希望从基本配置文件开始,并根据应用程序的要求加强安全性。

基本 Citrix Web App Firewall 配置文件中禁用的安全检查都在 HTTP 响应中的对象上运行。因此,这些安全检查需要更多的资源。Citrix Web App Firewall 执行响应端保护时,它需要记住发送给每个单独客户端的信息。例如,如果表单受 Citrix Web App Firewall 保护,则在响应中发送的表单字段信息将保留在内存中。当客户端在下一个后续请求中提交表单时,将检查信息发送到 Web 服务器之前是否存在不一致。这个概念被称为会话化。开始 URL 中的 URL 封装、Cookie 一致性、表单域一致性和 CSRF 表单标记等安全检查都意味着会话化。这些安全检查使用的 CPU 和内存资源量将随着通过 Citrix Web App Firewall 发送的请求数量线性增加。 例如:

  • 启用表单字段一致性检查:需要此检查来验证 Web 表单是否未被客户端不正确地修改。以表单形式提供和托管关键信息的应用程序需要进行检查。

  • CSRF 表单标记检查:此检查适用于表单。跨站请求伪造 (CSRF) 表单标记检查将受保护网站发送给用户的每个 Web 表单使用唯一且不可预测的 FormID 标记,然后检查用户返回的 Web 表单以确保提供的 FormID 是正确的。此检查可防止跨站点请求伪造攻击。如果应用程序具有基于 Web 的表单,则必须启用此检查。与深入分析 Web 表单的某些其他安全检查相比,此检查所需的 CPU 处理能力相对较少。因此,它能够处理大量攻击,而不会严重降低受保护网站或 Citrix Web App Firewall 本身的性能。

Citrix Web App Firewall 工作流程

下图说明了 Citrix Web App Firewall 工作流步骤:

Citrix Web App Firewall 工作流程

以下是 Citrix Web App Firewall 工作流涉及的高级步骤:

  1. 配置安全配置文件。
  2. 为所有已知威胁-负面模式应用签名。
  3. 配置流量策略,以检测必须激活此安全配置文件的正确流量流。

您已准备好让生产流量通过系统。第一级流程已完成。 此外,配置学习基础架构。很多时候,客户希望在生产流量中学习,因此应用签名可避免任何风险。执行以下步骤: a. 配置学习基础架构。 b. 部署学习的保护规则。 c. 在上线之前验证学习数据以及应用的签名。

Citrix Gateway 安全建议

使用“默认拒绝”策略

Citrix 建议管理员在全局级别使用“拒绝全部”策略配置 Citrix Gateway,此外还要使用授权策略选择性地启用对资源的访问。

默认情况下,“默认指标操作”参数设置为“拒绝”。验证此设置并向每个用户授予显式访问权限。您可以使用 CLI 上的“显示默认处理操作”命令来验证设置。要将参数设置为拒绝全局级别的所有资源,请从 CLI 运行以下命令:

set vpn parameter -defaultAuthorizationAction DENY

在服务器之间使用 TLS1.1/1.2 通信

Citrix 强烈建议将 TLS1.1/1.2 用于 Citrix Gateway 设备与其他服务(如 LDAP 和 Web Interface 服务器)之间的链接。 建议不要使用此协议的旧版本 1.0 和 SSLv3 及更早版本。

使用“Intranet 应用程序”功能 使用 Intranet 应用程序定义哪些网络被 Citrix Gateway 插件拦截并发送到网关。以下是定义拦截的命令集示例:

add vpn intranetApplication intra1 ANY 10.217.0.0 -netmask 255.255.0.0 -destPort 1-65535 -interception TRANSPARENT

bind vpn vserver v1 –intranetapp intra1

其他信息资源

有关 Citrix ADC 和 Citrix Gateway 设备的其他安全信息,请参阅以下资源:

要获得有关 Citrix ADC 配置的进一步帮助,您可以在以下位置提交支持请求: https://www.citrix.com/support.html

Citrix ADC MPX、VPX 和 SDX 安全性的最佳实践简介