Citrix ADC 安全部署指南
  • Citrix ADC MPX、VPX 和 SDX 安全的最佳实践

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

其他措施可包括使用电子监视系统(例如 CCTV)持续监视房间的活动。如果发生未经授权的入侵,该系统的输出必须通知安全人员。如果存在 CCTV,录制的录像可用于审核目的。

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

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

电源保护

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

加密密钥保护

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

Citrix ADC 设备安全最佳实践

执行设备软件更新

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

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

保护托管 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
    <!--NeedCopy-->
    

    注意: 运行上述命令会将 LOM 重置为出厂默认设置并删除所有 SSL 证书。有关如何重新配置 LOM 端口的说明,请参阅 熄灭 Citrix ADC MPX 设备的管理端口

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

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

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

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

维护和删除持久性数据

如果在 RMA 下将 Citrix ADC 重新部署到另一个环境、停用或返回给 Citrix,请确保从设备中正确删除永久数据。

有关此过程的更多信息,请参阅在将 ADC 设备发送到 Citrix 之前擦除数据

配置指南

网络安全

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

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

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

关键网络安全注意事项

请勿将 NSIP 暴露给互联网:

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

替换 Citrix ADC 默认 TLS 证书:

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

Citrix 建议客户将 Citrix ADC 设备配置为使用来自信誉良好的证书颁发机构 (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
<!--NeedCopy-->

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

其他网络安全注意事项

限制不受信任管理 SDX 的 VPX 管理员的 VPX shell 访问权限:

如果希望由不同的人管理 VPX 与 SVM 的 VPX,SVM 管理员必须创建一个 VPX 管理员用户,该用户对 VPX 具有有限 shell 访问权限,并且只向 VPX 管理员提供受限管理员用户帐户。

某些操作可能需要 shell 访问(例如管理 SSL 证书)。但是,必须向受信任管理 SVM 的个人授予对 VPX 实例 shell 的访问权限。本节后面列出的 RBAC 级别命令可以分配给这些账户。这些建议适用于所有 SVM-IP/VPX-NSIP (L2/L3) 管理工作流程,出于安全访问审计目的,必须遵循这些建议。

可以使用以下步骤从 VPX 管理员中删除 shell 访问权限。

保护现有 VPX 实例的安全:

  1. nsroot 或超级用户身份登录 VPX CLI。

    Citrix 建议不要使用 nsroot 帐户,而应创建超级用户帐户。使用 nsroot 帐户时,请确保密码为包含特殊字符的强密码。有关强密码的详细信息,请参阅管理

    • 在 SDX 系统的 VPX 实例中创建用户和 RBAC 策略。
    • 将该用户绑定到策略。
        > add system user userabc
        Enter password:
        Confirm password:
        Done
        > bind system user userabc superuser 2
        Done
        > add system cmdpolicy shell deny (shell)
        Done
        > bind system user userabc shell 1
        Done
    <!--NeedCopy-->
    

    注意: 在本例中,系统 cmdpolicy(例如:cmdpolicy name: shell)被创建为拒绝 shell 访问。此策略绑定到优先级较高的已创建用户 userabc)。默认超级用户 cmdpolicy 也绑定为系统用户的优先级较低。使用此配置,创建的系统用户具有超级用户 RBAC 策略,但 Shell 访问被拒绝。

  2. 以创建的用户身份登录并执行以下操作。
    • 验证当前用户是否应用了 RBAC 策略。
    • 运行用户有权使用的任何命令。(例如,show system cmdpolicy
    • 运行 shell cmd 以验证 shell 访问是否受到限制。

    登录身份: userabc

    来自服务器的身份验证前的横幅

    | #############################################################################
    > ##
    | #
    >  #
    | #        WARNING: Access to this system is for authorized users only
    >  #
    | #         Disconnect IMMEDIATELY if you are not an authorized user!
    >  #
    | #
    >  #
    | #############################################################################
    > ##
    |
    End of banner message from server
    Keyboard-interactive authentication prompts from server:
    | Password:
    End of keyboard-interactive prompts from server
    Last login: Thu May 13 04:11:15 2021 from 10.10.1.1
    Done
    <!--NeedCopy-->
    
    > whoami
        UserName:  userabc        LoggedIn:  "Thu May 13 04:18:50 2021"
    Done
    <!--NeedCopy-->
    
  3. 在该 VPX 的控制台中,以该用户身份登录并确保该用户不允许外壳访问:

    > shell
    ERROR: Not authorized to execute this command [shell]
    <!--NeedCopy-->
    
  4. 以普通管理员用户 (nsroot) 身份登录,并确保允许shell访问:

    > shell
    Copyright (c) 1992-2013 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
    
    root@Zela-40G-10#
    <!--NeedCopy-->
    

保护新的 VPX 实例:

  1. 当从 SVM GUI 创建新的 VPX 实例时,请创建一个实例管理员用户,然后清除 Shell/SFTP/SCP 访问复选框。在禁用 shell 访问权限时, svm_access_policy (操作拒绝)会显式绑定到指定的实例管理员用户。

  2. 向 VPX 管理员提供此用户信息。SDX 管理员必须保留此 nsroot 管理员密码,并且不得与 VPX 管理员共享该密码。

注意:

禁用 SSH 端口转发:

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

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

    AllowTcpForwarding no

  2. 保存该文件并将其复制到 /nsconfig,以便在测试期间重新引导时保留所做的更改。

  3. 使用以下命令重新启动 sshd 进程:

    kill -HUP `cat /var/run/sshd.pid`
    <!--NeedCopy-->
    

为 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 Premium Edition 许可设备提供内置的 Citrix Web App Firewall,该设备使用积极的安全模型,并自动学习正确的应用程序行为,以防范命令注入、SQL 注入等威胁和跨站点脚本。

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

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

set ns ip <NSIP> -restrictAccess enabled
<!--NeedCopy-->

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

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

set rpcnode <ip> -secure on
<!--NeedCopy-->

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

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

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

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

disable ns mode L3
<!--NeedCopy-->

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

set rpcNode <GSLB Site IP> -secure yes
<!--NeedCopy-->

保护负载平衡持久性 Cookie:

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

Helloverifyrequest 参数减轻了 DTLS DDoS 扩增攻击:

从 Citrix ADC 版本 12.1 版本构建 62.x 和 13.0 版本 79.x 开始,默认情况下,helloverifyrequest 参数处于启用状态。在 DTLS 配置文件上启用 helloverifyrequest 参数有助于降低攻击者或机器人压倒网络吞吐量的风险,从而可能导致出站带宽耗尽的风险。也就是说,它有助于缓解 DTL DDoS 扩增攻击。

要查看 helloverifyrequest 参数状态,请在 ADC CLI 提示符下键入;

show dtlsProfile
<!--NeedCopy-->

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

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

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

会话状态保护:

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

默认情况下, 会话状态保护 设置处于启用状态,不需要特定的配置。将 Citrix ADC 设备配置为代理连接时。例如,当 flow 选择已配置的虚拟服务器或 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
<!--NeedCopy-->

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

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

在命令提示符下,键入:

set lb parameter -HttpOnlyCookieFlag (ENABLED)  
<!--NeedCopy-->

使用重写策略为 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 被盗。
  • Secure - 当传输通过 SSL 加密时,cookie 上的这一选项会导致 Web 浏览器仅返回 cookie 值。此选项可用于防止通过连接窃听窃取 cookie。

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

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

    enable feature REWRITE
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    

    示例:

    
    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=/)!)"
    
    or
    
    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
    <!--NeedCopy-->
    

    注意: 自 Citrix ADC 版本 13.1 起,bypassSafetyCheck 参数不适用。但是,对于 13.1 之前的版本,支持此参数。

  3. 创建一个重写策略以触发操作。

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

    示例:

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

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

    示例:

    bind lb vserver mySSLVServer -policyName rw_force_secure_cookie -priority 100 -gotoPriorityExpression NEXT -type RESPONSE
    <!--NeedCopy-->
    

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

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

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

在命令提示符下,键入:

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

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

有关更多信息,请参阅以下主题。

强身份验证:

对敏感数据、应用程序和管理的所有访问都必须启用强身份验证(或多因素身份验证 — 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   -tls11   DISABLED

set ssl service <vServiceName> -ssl2 DISABLED   -ssl3  DISABLED   -tls1   DISABLED   -tls11   DISABLED
<!--NeedCopy-->

如果启用了 SSL 配置文件,请使用以下命令:

set ssl profile <frontend profile> -ssl3  DISABLED   -tls1   DISABLED  -tls11  DISABLED

set ssl profile <backend profile> -ssl3  DISABLED   -tls1   DISABLED  -tls11  DISABLED
<!--NeedCopy-->

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
<!--NeedCopy-->

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

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

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

系统用户的强密码:

Citrix 建议对在 Citrix ADC 中创建的系统用户帐户使用强密码。密码复杂性要求的示例如下:

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

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

set system parameter -minpasswordlen <positive_integer> -
-strongpassword ( ENABLED | DISABLED )
<!--NeedCopy-->

在需要多个管理员的部署中,请考虑使用外部身份验证方法对用户进行身份验证,例如 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 12.1 到 Citrix ADC 13.0—71.44,必须创建系统主密钥来保护某些安全参数,例如 LDAP 身份验证所需的服务帐户密码以及本地存储的身份验证、授权和审核用户帐户。

注意: 在 Citrix 13.0–76.31 及更高版本中,默认情况下会在升级过程中自动创建随机系统主键。

要创建系统主密钥,请执行以下操作:

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

注意

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

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

使用访问控制列表:

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

有关控制设备访问权限的建议:

  • 考虑使用 Citrix Gateway 将对设备的访问限制为只能访问 GUI。对于除了 GUI 之外还需要访问方法的管理员,Citrix Gateway 必须为端口 80、443 和 3010 配置默认的“DENY”ACL,但对于可信 IP 地址来访问这些端口,则必须为受信任的 IP 地址配置明确的“ALLOW’”。

可以使用以下 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
<!--NeedCopy-->
  • 如果您使用 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
<!--NeedCopy-->

在前面的示例中,该命令提供对两个已定义子网的所有 SNMP 查询的访问权限,即使这些查询是针对正确定义的团体也是如此。

您可以在 NSIP 和 SNIP 地址上启用管理功能。如果启用,则通过 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
<!--NeedCopy-->
  • 如果使用了 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
<!--NeedCopy-->
  • 要为内部端口应用 ACL,请使用以下命令:
set l3param -implicitACLAllow DISABLED
<!--NeedCopy-->

注意: implicitACLAllow 命令的默认值为 ENABLED

  • 要从内部端口删除 ACL,请使用以下命令:
set l3param -implicitACLAllow ENABLED
<!--NeedCopy-->

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

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

add system user readonlyuser

bind system user readonlyuser read-only 0
<!--NeedCopy-->

有关配置用户、用户组或命令策略的详细信息,请参阅用户、用户组和命令策略

配置系统会话超时:

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

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

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

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

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

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

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

set system parameter -timeout <secs>
<!--NeedCopy-->

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

您还可以限制超时值,以便在管理员配置的超时值之外无法配置会话超时值。您可以将超时值限制在 5 分钟到 1 天之间。要限制超时值,请执行以下操作:

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

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

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

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

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

日志记录和监视

配置网络时间协议

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

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

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

add ntp server <IP_address> 10

enable ntp sync
<!--NeedCopy-->

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

配置 SNMP

Citrix ADC 设备支持 SNMP 协议的版本 3。SNMPv3 集成了管理和安全功能,例如身份验证、访问控制和数据完整性检查。有关更多信息,请参阅 为 SNMPv3 查询配置 Citrix ADC

注意:

Citrix 建议您使用 SNMPv3 而不是 SNMPv1 和 SNMPv2。

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

add snmp manager <IP_address>
<!--NeedCopy-->

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

set ns ip <IP_Address> -snmp disabled
<!--NeedCopy-->

配置到外部 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
<!--NeedCopy-->

这提供了仅记录设备 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
<!--NeedCopy-->

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

LOM 配置

Citrix 强烈建议采取以下措施来保护 LOM 接口的安全:

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

应用程序和服务

将 Citrix ADC 设备配置为删除或传递升级标头

在 HTTP 配置文件中添加了一个新参数 passProtocolUpgrade,以防止对后端服务器的攻击。根据此参数的状态,升级标头将在发送到后端的请求中传递或在发送请求之前删除。

  • 如果启用了 passProtocolUpgrade 参数,则升级标头将传递到后端。服务器接受升级请求并在响应中通知它。
  • 如果禁用此参数,则删除升级标头并将剩余的请求发送到后端。

PassProtocolUpgrade 参数已添加到以下配置文件中。

  • nshttp_default_profile-默认启用
  • nshttp_default_strict_validation-默认情况下禁用
  • nshttp_default_internal_apps-默认情况下禁用
  • nshttp_default_http_quic_profile-默认启用

Citrix 建议您将 passProtocolUpgrade 参数设置为禁用。

使用 CLI 设置 PassProtocolUpgrade 参数:

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

set ns httpProfile <name> [-passProtocolUpgrade ( ENABLED | DISABLED )]

使用 GUI 设置 PassProtocolUpgrade 参数:

  1. 导航到 系统-> 配置文件-> HTTP 配置文件
  2. 创建或编辑 HTTP 配置文件。
  3. 选中 “ 通过协议升级 ” 复选框。

配置 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
<!--NeedCopy-->

Citrix 建议使用此选项的客户在将暂存环境发布到生产环境之前对其进行测试。

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

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

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

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

  • small_window_threshold(默认值 =1)
  • small_window_idle_timeout(默认值 = 7 秒)
  • small_window_cleanthresh(默认值 =100)
  • small_window_protection(默认值 = 已启用)

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

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

$ 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_mall_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
<!--NeedCopy-->

Citrix 建议使用此选项的客户在将暂存环境发布到生产环境之前对其进行测试。

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

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

以下全局重写操作仅将标头(如 Host、Accept 和 test)的网络流量发送到服务器:

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
<!--NeedCopy-->

配置关闭通知

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

set ssl parameter -sendCloseNotify y

save ns config
<!--NeedCopy-->

安全管理 GUI、NITRO API 和 RPC 通信

为了保护 Citrix ADC 和 Citrix Gateway 设备上的管理 GUI、NITRO API 和 RPC 通信的安全,在设备中添加了设置 maxclientForHttpdInternalService。默认情况下,禁用此设置。必须启用该参数才能保护管理 GUI、NITRO API 和 RPC 通信的安全。

还建议您使用以下 Shell 命令将 maxclientForHttpdInternalService 设置为匹配 /etc/httpd.conf 中的 MaxClients 值。MaxClients 的默认值为 30。

nsapimgr_wr.sh -ys maxclientForHttpdInternalService=<val>
<!--NeedCopy-->

有关设置 maxclientForHttpdInternalService 值和支持此设置的 Citrix ADC 版本的详细信息,请参阅 https://support.citrix.com/article/CTX331588

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 警报。密钥到期通知是通过称为 dnskeyExpiry 的 SNMP 陷阱发送的。三个 MIB 变量 dnskeyNamednskeyUnitsOfExpirydnskeyExpiry SNMP 陷阱一起发送。有关详细信息,请参阅 Citrix ADC SNMP OID 参考。

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

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

安全 DNSSEC ADNS 服务器

如果设备配置为 DNSSEC 代理模式,它将缓存来自后端 ADNS 服务器的响应,并将缓存的响应转发到 DNS 客户端。

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

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

  1. 添加 ADNS 服务。

    例如:

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

    例如,要充当 com 域的权威服务器,请执行以下操作:

    create dns key -zoneName com -keytype ksK -algorithm rsASHA512 -keysize 3000 -fileNamePrefix com.ksk.rsasha1.3000
    
    create dns key -zoneName com -keytype zsk -algorithm rsASHA512 -keysize 3000 -fileNamePrefix com.zsk.rsasha1.3000
    <!--NeedCopy-->
    

    注意:您必须创建一次 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
    <!--NeedCopy-->
    
  4. com 区域添加 NS 和 SOA 记录,然后对该区域进行签名。

    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
    <!--NeedCopy-->
    

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

有关将 Citrix ADC 配置为权威域名服务器的详细信息,请参阅 Citrix Docs 上的域名系统 > 将 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
<!--NeedCopy-->

配置 Citrix ADC 以防止不安全的 SSL 重新协商

运行以下命令禁用 SSL 重新协商:

set ssl parameter -denySSLReneg ALL
<!--NeedCopy-->

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

set ssl parameter -denySSLReneg NONSECURE
<!--NeedCopy-->

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

配置 NDCPP 合规性证书检查

当设备充当客户端(后端连接)时,将应用 NDCPP 合规性证书检查。在证书验证期间,如果 SSL 证书中存在 SAN,则忽略公用名。

在命令提示符下,键入以下命令以在 SSL 参数中配置“ndcppComplianceCertCheck”属性:

set ssl parameter [-quantumSize <quantumSize>] [-crlMemorySizeMB <positive_integer>] [-strictCAChecks (YES | NO)] [-sslTriggerTimeout <positive_integer>] [-sendCloseNotify (YES | NO)] [-encryptTriggerPktCount <positive_integer>] [-denySSLReneg <denySSLReneg>] [-insertionEncoding (Unicode|UTF-8)] [-ocspCacheSize <positive_integer>][- pushFlag <positive_integer>] [- dropReqWithNoHostHeader (YES | NO)] [-pushEncTriggerTimeout <positive_integer>] [-ndcppComplianceCertCheck ( YES | NO)] [-heterogeneousSSLHW (ENABLED | DISABLED )]
<!--NeedCopy-->

示例:

set ssl parameter -quantumSize 8 -crlMemorySizeMB 256 -strictCAChecks no -ssltriggerTimeout 100 -sendClosenotify no -encryptTriggerPktCount 45 -denySSLReneg NONSECURE -insertionEncoding unicode -ocspCacheSize 10 -pushFlag 3 -dropReqWithNoHostHeader YES  -pushEncTriggerTimeout 100 ms -ndcppComplianceCertCheck YES
<!--NeedCopy-->

Citrix ADC 加密建议

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

管理 TLS 证书和密钥

为 ndCpp 部署配置 TLS 密码套件

ndCpp 部署支持以下 TLS 密码套件。

  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

    有关 MPX-14000 FIPS 支持的密码列表,请参阅 https://docs.citrix.com/en-us/citrix-adc/downloads/cipher-support-on-a-citrix-mpx-sdx-14000-fips-appliance.pdf

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

  1. 从虚拟服务器取消绑定所有密码

    unbind ssl vs v1 –cipherName FIPS
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    

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

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

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

  2. 创建 RSA 私钥。

    create fipsKey m1 -keytype RSA -modulus 2048 -exponent F4
    <!--NeedCopy-->
    
  3. 创建证书签名请求 (CSR):

    create certreq csr_1 -fipsKeyName m1 -countryName IN -stateName BA -organizationName citrix
    <!--NeedCopy-->
    
  4. 将 CSR 提交给证书颁发机构。

对于大多数商业和企业 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 设备。或者,也可以使用泰雷兹外部 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
<!--NeedCopy-->

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

hsmLabel

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

最大长度:31

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

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

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

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

其他功能

本节提供了可同时应用于 Citrix Web App Firewall 和 Citrix Gateway 的配置更改示例,以提高已部署设备的安全性,以及有关构建多个层或安全性的信息。本节还包含有关将 Citrix ADC 或 Citrix Gateway 用作 SAML SP 或 SAML IdP 或两者兼用时的配置详细信息。

Citrix Web App Firewall 安全建议

  • 对于 RFC 合规性检查,建议将“APPFW_RFC_BLOCK”保留为 WAF 配置文件的默认值 rfcprofile

  • WAF 支持插入 Samesite cookie 属性值,通过选择“严格”或“宽松”值,可以将 cookie 限制到同一站点或跨站点上下文。

在双臂模式下部署设备

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

使用 “默认拒绝” 策略

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

add appfw profile default_deny_profile -defaults advanced

add appfw policy default_deny_policy true default_deny_profile

bind appfw global default_deny_policy <PRIORITY>
<!--NeedCopy-->

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

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

set appfw settings -defaultProfile appfw_block
<!--NeedCopy-->

Citrix Web App Firewall — 构建多层安全性

以下准则可帮助您根据您的环境和受支持的应用程序构建多个安全层。

在每个层中为 sessionCookieName 参数配置不同的值。

set appfw settings -sessionCookieName "citrix_ns_id_1"
<!--NeedCopy-->

第一层安全

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

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

跨站点脚本检查可能会产生误报,因为许多公司都安装了大量违反相同来源规则的 JavaScript 增强型 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) 表单标记检查会标记受保护网站发送给具有唯一且不可预测的 FormID 的用户的每个 Web 表单,然后检查用户返回的 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. 配置能够检测到必须激活此安全配置文件的正确通信流的流量策略。

您已准备好让生产流量通过系统。第一级流程已完成。 此外,配置学习基础架构。很多时候,客户希望在生产流量中学习,因此应用签名可避免任何风险。请执行以下步骤:

  1. 配置学习基础架构。
  2. 部署学习的保护规则。
  3. 在上线之前验证学习数据以及应用的签名。

Citrix Gateway 安全建议

使用 “默认拒绝” 策略

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

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

set vpn parameter -defaultAuthorizationAction DENY
<!--NeedCopy-->

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

Citrix 强烈建议将 TLS1.1/1.2 用于 Citrix Gateway 设备与其他服务(例如 LDAP 和 Web 界面服务器)之间的链接。 不建议使用此协议的旧版本 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
<!--NeedCopy-->

身份验证、授权和审核安全建议

如果 Citrix ADC 或 Citrix Gateway 设备配置为 SAML SP 或 SAML IdP 或两者,请参阅文章 https://support.citrix.com/article/CTX316577 以获取建议的配置详细信息。

有关 SAML 验证的详细信息,请参阅 SAML 身份验证

其他信息资源

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

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

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