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

第 20 章 Kerberos 服务介绍

本章介绍 Kerberos 服务。以下是本章中概述信息的列表:

什么是 Kerberos 服务?

Kerberos 服务是一种通过网络提供安全事务处理的客户机/服务器体系结构。该服务可提供功能强大的用户验证以及完整性和保密性服务。通过验证,可保证网络事务的发送者和接收者的身份真实。该服务还可以检验来回传递的数据的有效性(完整性),并在传输过程中对数据进行加密(保密性)。 使用 Kerberos 服务,可以安全登录到其他计算机、执行命令、交换数据以及传输文件。此外,该服务还提供授权服务,管理员可通过此服务限制对服务和计算机的访问。而且,作为 Kerberos 用户,您还可以控制其他用户对您帐户的访问。

Kerberos 服务是单点登录系统,这意味着您对于每个会话只需向服务进行一次自我验证,即可自动保护该会话过程中所有后续事务的安全。服务对您进行验证后,即无需在每次使用基于 Kerberos 的命令(如ftprsh)或访问 NFS 文件系统上数据时都进行自我验证。因此,无需在每次使用这些服务时都在网络上发送口令(口令在网络上可能会被拦截)。

Solaris Kerberos 服务基于麻省理工学院 (Massachusetts Institute of Technology, MIT) 开发的 Kerberos V5 网络验证协议。因此,使用过 Kerberos V5 产品的用户会感觉对 Solaris 版本非常熟悉。因为 Kerberos V5 协议是网络安全性的实际行业标准,所以 Solaris 版本可提高与其他系统的互操作性。换句话说,因为可在使用 Kerberos V5 协议的系统中使用 Solaris Kerberos 服务,所以该服务甚至允许在异构网络上进行安全事务处理。此外,该服务还会在各个域之间以及单个域内提供验证和安全服务。

通过 Kerberos 服务可灵活运行 Solaris 应用程序。可以将该服务配置为允许同时向网络服务(如 NFS 服务、telnetftp)发出基于 Kerberos 的请求和非基于 Kerberos 的请求。因此,即使当前 Solaris 应用程序运行的系统上未启用 Kerberos 服务,这些程序仍能工作。当然,也可以将 Kerberos 服务配置为仅允许基于 Kerberos 的网络请求。

Kerberos 服务提供了一种安全机制,通过该安全机制,在使用采用通用安全服务应用程序编程接口 (Generic Security Service Application Programming Interface, GSS-API) 的应用程序时,可使用 Kerberos 提供验证、完整性和保密性服务。但是,如果开发了其他安全机制,则应用程序无需继续承诺使用 Kerberos 服务。因为该服务设计为以模块形式集成到 GSS-API 中,所以使用 GSS-API 的应用程序可以利用最好地满足其需求的任何安全机制。

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 和两台应用程序服务器。

Kerberos 安全服务

除了提供安全的用户验证外,Kerberos 服务还会提供两种安全服务:

当前,在属于 Kerberos 服务的各种基于 Kerberos 的应用程序中,仅有 ftp 命令允许用户在运行时(“即时”)更改安全服务。开发者可以设计基于 RPC 的应用程序,以便使用 RPCSEC_GSS 编程接口来选择安全服务。

各种 Kerberos 发行版的组件

许多发行版中已包括 Kerberos 服务组件。Kerberos 服务以及对用于支持 Kerberos 服务的基本操作系统进行的更改最初都使用产品名 "Sun Enterprise Authentication Mechanism"(缩写为 SEAM)来发行。由于 Solaris 软件中包括的 SEAM 产品部件越来越多,因此 SEAM 发行版的内容会相应减少。Solaris 10 发行版中包括了 SEAM 产品的所有部件,因此不再需要 SEAM 产品。由于历史原因,文档中仍存在 SEAM 产品名。

下表说明了每个发行版中包括的组件。各个产品发行版按时间顺序列出。以下各节中对所有组件进行了说明。

表 20–1 Kerberos 发行版内容

发行版名称 

内容 

Solaris Easy Access Server 3.0 中的 SEAM 1.0 

Solaris 2.6 和 7 发行版中 Kerberos 服务的完整发行版 

Solaris 8 发行版中的 Kerberos 服务 

仅 Kerberos 客户机软件 

Solaris 8 Admin Pack 中的 SEAM 1.0.1 

Solaris 8 发行版中的 Kerberos KDC 和远程应用程序 

Solaris 9 发行版中的 Kerberos 服务 

仅 Kerberos KDC 和客户机软件 

SEAM 1.0.2 

Solaris 9 发行版中的 Kerberos 远程应用程序 

Solaris 10 发行版中的 Kerberos 服务 

带有增强功能的 Kerberos 服务的完整发行版 

Kerberos 组件

与 MIT 发布的 Kerberos V5 产品类似,Solaris Kerberos 服务也包括以下内容:

此外,Solaris Kerberos 服务还包括:

Solaris 10 发行版中的 Kerberos 增强功能

Solaris 10 发行版中包括以下 Kerberos 增强功能。其中的一些增强功能已在先前的 Software Express 发行版中引入,并在 Solaris 10 Beta 版中进行了更新。

Solaris 10 6/06 发行版的 Kerberos 新增功能

在 Solaris 10 6/06 发行版中,ktkt_warnd 守护进程可以自动更新凭证,而不是在凭证即将到期时才向用户发出警告。用户必须登录才能自动更新凭证。

Solaris 9 发行版中的 Kerberos 组件

Solaris 9 发行版包括Kerberos 组件中除远程应用程序外的所有组件。

SEAM 1.0.2 组件

SEAM 1.0.2 发行版包括远程应用程序。这些应用程序是 Solaris 9 发行版唯一未包括的部分 SEAM 1.0。远程应用程序的组件如下:

Solaris 8 发行版中的 Kerberos 组件

Solaris 8 发行版仅包括 Kerberos 服务的客户端部分,因此有许多组件未包括在内。借助此产品,运行 Solaris 8 发行版的系统可成为 Kerberos 客户机,而不需要单独安装 SEAM 1.0.1。要使用这些功能,必须安装使用 Solaris Easy Access Server 3.0 或 Solaris 8 Admin Pack 的 KDC、MIT 分发或 Windows 2000。如果没有配置 KDC 来分发票证,则客户端组件将不起作用。此发行版中包括以下组件:

SEAM 1.0.1 组件

SEAM 1.0.1 发行版包括 Solaris 8 发行版中未包括的所有 SEAM 1.0 发行版组件。这些组件包括:

SEAM 1.0 组件

SEAM 1.0 发行版包括Kerberos 组件中的所有项以及以下各项: