使用 Kerberos/NTLM 处理身份验证、授权和审核

Kerberos 是一种计算机网络认证协议,通过 Internet 提供安全通信。它主要针对客户端-服务器应用程序设计,提供相互身份验证,客户端和服务器可以通过这些验证确保对方的真实性。Kerberos 使用受信任的第三方,称为密钥分发中心 (KDC)。KDC 包括验证用户身份验证服务器 (AS) 和票证授予服务器 (TGS)。

网络上的每个实体(客户端或服务器)都有一个只有自身和 KDC 知道的私有密钥。这个密钥的知识意味着实体的真实性。对于网络上的两个实体之间的通信,KDC 会生成一个会话密钥,称为 Kerberos 票证或服务票证。客户端向 AS 请求特定服务器的凭据。然后,客户会收到一张 TT,称为机票授予机票 (TGT)。然后,客户端联系 TGS,使用从服务机构收到的 TGT 来证明其身份,并要求提供服务。如果客户端符合服务条件,TGS 会向客户端发出 Kerberos 票证。然后,客户端联系托管服务的服务器(称为服务服务器),使用 Kerberos 票证来证明其有权接收服务。Kerberos 票证具有可配置的生命周期。客户端仅使用身份验证一次。如果它多次与物理服务器联系,它会重复使用 AS 票证。

下图显示了 Kerberos 协议的基本功能。

图 1.Kerberos 的功能

Kerberos 身份验证过程

Kerberos 身份验证具有以下优点:

  • 更快的身份验证。当物理服务器从客户端获取 Kerberos 票证时,服务器具有足够的信息直接对客户端进行身份验证。它不必联系域 Controller 进行客户端身份验证,因此身份验证过程更快。
  • 相互认证。当 KDC 向客户端发出 Kerberos 票证并且客户端使用票证访问服务时,只有经过身份验证的服务器才能解密 Kerberos 票证。如果 Citrix ADC 设备上的虚拟服务器能够解密 Kerberos 票证,则可以得出虚拟服务器和客户端都已经过身份验证的结论。因此,服务器的身份验证与客户端的身份验证一起进行。
  • Windows 和其他支持 Kerberos 的操作系统之间的单点登录。

Kerberos 身份验证可能有以下缺点:

  • Kerberos 有严格的时间要求;所涉主机的时钟必须与 Kerberos 服务器时钟同步,以确保身份验证不会失败。您可以通过使用网络时间协议守护程序保持主机时钟同步来缓解这一缺点。Kerberos 票证有一个可用期,您可以对其进行配置。
  • Kerberos 需要连续使用中央服务器。当 Kerberos 服务器关闭时,没有人可以登录。您可以使用多个 Kerberos 服务器和回退身份验证机制来降低此风险。
  • 由于所有身份验证都由集中式 KDC 控制,因此此基础结构中的任何妥协(例如被盗本地工作站的用户密码)都可能允许攻击者冒充任何用户。您可以通过仅使用您信任的台式机或笔记本电脑,或通过硬件令牌强制执行预身份验证,在某种程度上降低此风险。

要使用 Kerberos 身份验证,必须在 Citrix ADC 设备和每个客户端上对其进行配置。

在身份验证、授权和审核方面优化 Kerberos 身份验证

Citrix ADC 设备现在可在 Kerberos 身份验证时优化并提高系统性能。身份验证、授权和审核守护程序会为同一用户记住未完成的 Kerberos 请求,以避免密钥分发中心 (KDC) 上的负载,从而避免重复请求。