系统管理指南:安全性服务

Kerberos 服务的工作方式

以下概述了 Kerberos 验证系统。有关更详细的说明,请参见Kerberos 验证系统的工作方式

从用户的角度来看,启动 Kerberos 会话后,Kerberos 服务通常不可见。一些命令(如 rshftp)也是如此。初始化 Kerberos 会话通常仅包括登录和提供 Kerberos 口令。

Kerberos 系统的工作围绕票证的概念展开。票证是一组标识用户或服务(如 NFS 服务)的电子信息。正如您的驾驶证可标识您的身份并表明您的驾驶级别一样,票证也可标识您的身份以及您的网络访问权限。执行基于 Kerberos 的事务时(例如,远程登录到另一台计算机),您将透明地向密钥分发中心 (KDC) 发送票证请求。KDC 将访问数据库以验证您的身份,然后返回授予您访问其他计算机的权限的票证。“透明”意味着您无需显式请求票证。请求是在执行 rlogin 命令过程中进行的。因为只有通过验证的客户机可以获取特定服务的票证,所以其他客户机不能以虚假身份使用 rlogin

票证具有一些与其关联的属性。例如,票证可以是可转发的,这意味着它可以在其他计算机上使用,而不必进行新的验证。票证也可以是以后生效的,这意味着它要到指定时间后才会生效。票证的使用方式(例如,如何指定允许哪些用户获取哪些类型的票证)由策略设置。策略在安装或管理 Kerberos 服务时确定。


注 –

您可能会经常看到术语凭证票证。在更为广泛的 Kerberos 范围内,两者通常可互换使用。但是,从技术上讲,凭证指的是票证和会话的会话密钥使用 Kerberos 获取服务访问权限中对此区别进行了更详细的说明。


以下各节将进一步说明 Kerberos 验证过程。

初始验证:票证授予票证

Kerberos 验证分为两个阶段:允许进行后续验证的初始验证以及所有后续验证自身。

下图显示了如何进行初始验证。

图 20–1 Kerberos 会话的初始验证

该流程图显示了客户机从 KDC 请求 TGT,然后对 KDC 返回到客户机的 TGT 进行解密。

  1. 客户机(用户或 NFS 等服务)通过从密钥分发中心 (Key Distribution Center, KDC) 请求票证授予票证 (Ticket-Granting Ticket, TGT) 开始 Kerberos 会话。此请求通常在登录时自动完成。

    要获取特定服务的其他票证,需要票证授予票证。票证授予票证类似于护照。与护照一样,票证授予票证可标识您的身份并允许您获取多个“签证”,此处的“签证”(票证)不是用于外国,而是用于远程计算机或网络服务。与护照和签证一样,票证授予票证和其他各种票证具有有限的生命周期。区别在于基于 Kerberos 的命令会通知您拥有护照并为您取得签证。您不必亲自执行该事务。

    与票证授予票证类似的另一种情况是可以在四个不同的滑雪场使用的三天滑雪入场卷。只要入场券未到期,您就可以在决定要去的任意一个滑雪场出示入场卷,并获取该滑雪场提供的缆车票。获取缆车票后,即可在该滑雪场随意滑雪。如果第二天去另一个滑雪场,您需要再次出示入场卷,并获取新滑雪场的另一张缆车票。区别在于基于 Kerberos 的命令会通知您拥有周末滑雪入场卷,并会为您取得缆车票。因此,您不必亲自执行该事务。

  2. KDC 可创建票证授予票证,并采用加密形式将其发送回客户机。客户机使用其口令来解密票证授予票证。

  3. 拥有有效的票证授予票证后,只要该票证授予票证未到期,客户机便可以请求所有类型的网络操作(如 rlogintelnet)的票证。此票证的有效期通常为几个小时。每次客户机执行唯一的网络操作时,都将从 KDC 请求该操作的票证。

后续 Kerberos 验证

客户机收到初始验证后,每个后续验证都按下图所示的模式进行。

图 20–2 使用 Kerberos 验证获取对服务的访问权

该流程图显示了客户机使用 TGT 从 KDC 请求票证,然后使用返回的票证访问服务器。

  1. 客户机通过向 KDC 发送其票证授予票证作为其身份证明,从 KDC 请求特定服务(例如,远程登录到另一台计算机)的票证。

  2. KDC 将该特定服务的票证发送到客户机。

    例如,假定用户 joe 要访问已通过要求的 krb5 验证共享的 NFS 文件系统。 由于该用户已经通过了验证(即,该用户已经拥有票证授予票证),因此当其尝试访问文件时,NFS 客户机系统将自动透明地从 KDC 获取 NFS 服务的票证。

    例如,假定用户 joe 在服务器 boston 上使用 rlogin。由于该用户已经通过了验证(即,该用户已经拥有票证授予票证),所以在运行 rlogin 命令时,该用户将自动透明地获取票证。该用户使用此票证可随时远程登录到 boston,直到票证到期为止。如果 joe 要远程登录到计算机 denver,则需要按照步骤 1 获取另一个票证。

  3. 客户机将票证发送到服务器。

    使用 NFS 服务时,NFS 客户机会自动透明地将 NFS 服务的票证发送到 NFS 服务器。

  4. 服务器允许此客户机进行访问。

从这些步骤来看,服务器似乎并未与 KDC 通信。但服务器实际上与 KDC 进行了通信,并向 KDC 注册了其自身,正如第一台客户机所执行的操作。为简单起见,该部分已省略。

Kerberos 远程应用程序

用户(如 joe)可以使用的基于 Kerberos 的(即 "Kerberized")命令包括:

这些应用程序与同名的 Solaris 应用程序相同。但是,它们已扩展为使用 Kerberos 主体来验证事务,因此会提供基于 Kerberos 的安全性。有关主体的信息,请参见Kerberos 主体

Kerberos 用户命令中将进一步介绍这些命令。

Kerberos 主体

Kerberos 服务中的客户机由其主体标识。主体是 KDC 可以为其指定票证的唯一标识。主体可以是用户(如 joe)或服务(如 nfstelnet)。

根据约定,主体名称分为三个部分:主名称实例领域。例如,典型的 Kerberos 主体可以是 joe/admin@ENG.EXAMPLE.COM。在本示例中:

以下都是有效的主体名称:

Kerberos 领域

领域是定义属于同一主 KDC 的一组系统的逻辑网络,类似于域。图 20–3 显示了各领域相互之间的关系。有些领域是分层的,其中,一个领域是另一个领域的超集。另外一些领域是不分层(或“直接”)的,必须定义两个领域之间的映射。Kerberos 服务的一种功能是它允许进行跨领域验证。每个领域只需在其 KDC 中有对应于另一个领域的主体项即可。此 Kerberos 功能称为跨领域验证

图 20–3 Kerberos 领域

该图显示了 ENG.EXAMPLE.COM 领域与 SEAMCO.COM 的非分层关系,以及与 EXAMPLE.COM 的分层关系。

Kerberos 领域和服务器

每个领域都必须包括一台用于维护主体数据库的主副本的服务器。此服务器称为主 KDC 服务器。此外,每个领域还应至少包含一台从 KDC 服务器,该服务器包含主体数据库的多个副本。主 KDC 服务器和从 KDC 服务器都可创建用于建立验证的票证。

领域还可以包含两种其他类型的 Kerberos 服务器。Kerberos 网络的应用程序服务器是用于提供对基于 Kerberos 的应用程序(如 ftptelnetrsh)的访问的服务器。领域还可以包括 NFS 服务器,该服务器使用 Kerberos 验证来提供 NFS 服务。如果安装了 SEAM 1.0 或 1.0.1,则领域可能会包括 Kerberos 网络应用程序服务器。

下图显示了一个假设的领域可能包含的内容。

图 20–4 典型的 Kerberos 领域

该图显示了典型的 Kerberos 领域 EXAMPLE.COM,该领域包含一个主 KDC、三台客户机、两个从 KDC 和两台应用程序服务器。