系统管理指南:安全性服务
  Search only this book
View this book in:
Download this book in PDF (5216 KB)

第 6 部分 Kerberos 服务

本部分提供有关 Kerberos 服务的配置、管理和使用方法的信息。

第 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")命令包括:

  • ftp

  • rcp

  • rdist

  • rlogin

  • rsh

  • ssh

  • telnet

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

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

Kerberos 主体

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

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

  • joe 是主名称。主名称可以是此处所示的用户名或 nfs 等服务。主名称还可以是单词 host,这表示此主体是设置用于提供各种网络服务(如 ftprcprlogin 等)的服务主体。

  • admin 是实例。对于用户主体,实例是可选的;但对于服务主体,实例则是必需的。例如,如果用户 joe 有时充当系统管理员,则他可以使用 joe/admin 将其自身与平时的用户身份区分开来。同样,如果 joe 在两台不同的主机上拥有帐户,则他可以使用两个具有不同实例的主体名称,例如 joe/denver.example.comjoe/boston.example.com。请注意,Kerberos 服务会将 joejoe/admin 视为两个完全不同的主体。

    对于服务主体,实例是全限定主机名。例如,bigmachine.eng.example.com 就是这种实例。此示例的主名称/实例可以为 ftp/bigmachine.eng.example.comhost/bigmachine.eng.example.com

  • ENG.EXAMPLE.COM 是 Kerberos 领域。领域将在 Kerberos 领域中介绍。

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

  • joe

  • joe/admin

  • joe/admin@ENG.EXAMPLE.COM

  • ftp/host.eng.example.com@ENG.EXAMPLE.COM

  • host/eng.example.com@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 服务也包括以下内容:

  • 密钥分发中心 (Key Distribution Center, KDC)(主):

    • Kerberos 数据库管理守护进程-kadmind

    • Kerberos 票证处理守护进程-krb5kdc

  • 从 KDC。

  • 数据库管理程序-kadminkadmin.local

  • 数据库传播软件-kprop

  • 用于获取、查看和销毁票证的用户程序-kinitklistkdestroy

  • 用于更改 Kerberos 口令的用户程序-kpasswd

  • 远程应用程序-ftprcprdistrloginrshsshtelnet

  • 远程应用程序守护进程-ftpdrlogindrshdsshdtelnetd

  • 管理实用程序-ktutilkdb5_util

  • 通用安全服务应用程序编程接口 (Generic Security Service Application Programming Interface, GSS-API)-允许应用程序使用多种安全机制,并且不需要在每次添加新机制时重新编译应用程序。因为 GSS-API 与计算机无关,所以适用于 Internet 上的各种应用程序。使用 GSS-API,应用程序可包括完整性和保密性的安全服务以及验证。

  • RPCSEC_GSS 应用程序编程接口 (Application Programming Interface, API)-允许 NFS 服务使用 Kerberos 验证。RPCSEC_GSS 是一种安全特性,可提供与要使用的机制无关的安全服务。RPCSEC_GSS 位于 GSS-API 层的顶部。使用 RPCSEC_GSS 的应用程序可以使用所有基于可插拔 GSS_API 的安全机制。

  • 多个库。

此外,Solaris Kerberos 服务还包括:

  • SEAM 管理工具 (gkadmin)-允许您管理 KDC。借助此基于 JavaTM 技术的 GUI,管理员可以执行通常通过 kadmin 命令执行的任务。

  • 可插拔验证模块 (Pluggable Authentication Module, PAM)-允许应用程序使用各种验证机制。使用 PAM 可使登录和注销操作对用户而言透明化。

  • 内核模块-为 NFS 提供 GSS-API 和 RPCSEC_GSS API 的内核实现。

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

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

  • 远程应用程序(如 ftprcprdistrloginrshsshtelnet)支持 Kerberos 协议。有关更多信息,请参见每个命令或守护进程的手册页和 krb5_auth_rules(5) 手册页。

  • Kerberos 主体数据库现在可以通过增量更新进行传送,而不必每次传送整个数据库。增量传播有以下优点:

    • 增强了跨服务器数据库的一致性

    • 所需资源(网络、CPU 等)更少

    • 更新的传播更加及时

    • 是一种自动传播方法

  • 可提供有助于自动配置 Kerberos 客户机的新脚本。此脚本可以帮助管理员迅速而轻松地安装 Kerberos 客户机。有关使用新脚本的过程,请参见配置 Kerberos 客户机。此外,有关更多信息,请参见 kclient(1M) 手册页。

  • 在 Kerberos 服务中添加了几种新的加密类型。这几种加密类型提高了安全性,并增强了与支持这几种类型的其他 Kerberos 实现的兼容性。有关更多信息,请参见使用 Kerberos 加密类型。新的加密类型包括:

    • AES,该加密类型可用于高速、高安全性的 Kerberos 会话加密。通过加密框架启用 AES。

    • ARCFOUR-HMAC,该加密类型可提供与其他 Kerberos 实现的更好兼容性。

    • 带有 SHA1 的三重 DES (3DES),该加密类型提高了安全性,还增强了与支持此种加密类型的其他 Kerberos 实现的互操作性。

  • KDC 软件、用户命令和用户应用程序现在支持使用 TCP 网络协议。这种增强功能可提供更强健的操作,以及与其他 Kerberos 实现(包括 Microsoft 的 Active Directory)之间更好的互操作性。现在,KDC 可在传统的 UDP 端口和 TCP 端口进行侦听,因此可响应使用 UDP 或 TCP 协议的请求。用户命令和应用程序在将请求发送到 KDC 时,首先尝试使用 UDP,如果该操作失败,则尝试使用 TCP。

  • KDC 软件(包括 kinitklistkprop 命令)中增加了对 IPv6 的支持。缺省情况下,提供对 IPv6 地址的支持。无需更改任何配置参数即可启用 IPv6 支持。kadminkadmind 命令不支持 IPv6。

  • kadmin 命令的多个子命令中添加了新的 -e 选项。使用此新选项可以在创建主体过程中选择加密类型。有关更多信息,请参见 kadmin(1M) 手册页。

  • pam_krb5 模块进行扩充是为了使用 PAM 框架来管理 Kerberos 凭证高速缓存。有关更多信息,请参见 pam_krb5(5) 手册页。

  • 支持自动搜索以下各项:Kerberos KDC、管理服务器、kpasswd 服务器以及使用 DNS 查找的主机(或域名)到领域的映射。此增强功能减少了安装 Kerberos 客户机所需的某些步骤。客户机可通过使用 DNS 而不是通过读取配置文件来找到 KDC 服务器。有关更多信息,请参见 krb5.conf(4) 手册页。

  • 引入了称为 pam_krb5_migrate 的新 PAM 模块。该新模块可以帮助那些尚未有 Kerberos 帐户的用户自动向本地 Kerberos 领域迁移。有关更多信息,请参见 pam_krb5_migrate(5) 手册页。

  • 现在,~/.k5login 文件可以用于 GSS 应用程序 ftpssh。有关更多信息,请参见 gss_auth_rules(5) 手册页。

  • kproplog 实用程序已更新,可输出每个日志项的所有属性名。有关更多信息,请参见 kproplog(1M) 手册页。

  • 使用新的配置文件选项,可以基于每个领域对严格的 TGT 验证功能进行选择性配置。有关更多信息,请参见 krb5.conf(4) 手册页。

  • 通过扩充更改口令实用程序,Solaris Kerberos V5 管理服务器可接受未运行 Solaris 软件的客户机的口令更改请求。有关更多信息,请参见 kadmind(1M) 手册页。

  • 重放高速缓存的缺省位置已从基于 RAM 的文件系统移动到 /var/krb5/rcache/ 中的持久性存储器。新位置在系统重新引导时可以避免重放。rcache 代码的性能得到增强。但是,由于使用了持久性存储器,因此整个重放高速缓存的性能有可能降低。

  • 现在,可以将重放高速缓存配置为使用文件存储器或仅限于内存的存储器。 有关可为密钥表和凭证高速缓存类型或位置配置的环境变量的更多信息,请参阅 krb5envvar(5) 手册页。

  • 对 Kerberos GSS 机制来说,GSS 凭证表不再是必需的。有关更多信息,请参见将 GSS 凭证映射到 UNIX 凭证gsscred(1M)gssd(1M)gsscred.conf(4) 手册页。

  • Kerberos 实用程序 kinitktutil 现在都基于 MIT Kerberos 版本 1.2.1。此更改为 kinit 命令添加了新的选项,并为 ktutil 命令添加了新的子命令。有关更多信息,请参见 kinit(1)ktutil(1) 手册页。

  • Solaris Kerberos 密钥分发中心 (KDC) 和 kadmind 现在都基于 MIT Kerberos 版本 1.2.1。现在,KDC 在缺省情况下是一个基于二叉树的数据库,这比当前基于散列的数据库更可靠。有关更多信息,请参见 kdb5_util(1M) 手册页。

  • kpropdkadmindkrb5kdcktkt_warnd 守护进程由服务管理工具管理。 可以使用 svcadm 命令对此服务执行管理操作,如启用、禁用或重新启动。 可使用 svcs 命令来查询此服务对应的所有守护进程的状态。有关服务管理工具的概述,请参阅《系统管理指南:基本管理》中的第 14  章 “管理服务(概述)”

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。远程应用程序的组件如下:

  • 客户机应用程序-ftprcprloginrshtelnet

  • 服务器守护进程-ftpdrlogindrshdtelnetd

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 来分发票证,则客户端组件将不起作用。此发行版中包括以下组件:

  • 用于获取、查看和销毁票证的用户程序-kinitklistkdestroy

  • 用于更改 Kerberos 口令的用户程序-kpasswd

  • 密钥表管理实用程序-ktutil

  • 可插拔验证模块 (Pluggable Authentication Module, PAM) 的新增功能-允许应用程序使用各种验证机制。使用 PAM 可使登录和注销操作对用户而言透明化。

  • GSS_API 插件-提供 Kerberos 协议和加密支持。

  • NFS 客户机和服务器支持。

SEAM 1.0.1 组件

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

  • 密钥分发中心 (Key Distribution Center, KDC)(主):

    • Kerberos 数据库管理守护进程-kadmind

    • Kerberos 票证处理守护进程-krb5kdc

  • 从 KDC。

  • 数据库管理程序-kadminkadmin.local

  • 数据库传播软件-kprop

  • 远程应用程序-ftprcprloginrshtelnet

  • 远程应用程序守护进程-ftpdrlogindrshdtelnetd

  • 管理实用程序-kdb5_util

  • SEAM 管理工具 (gkadmin)-允许您管理 KDC。借助此基于 Java 技术的 GUI,管理员可以执行通常通过 kadmin 命令执行的任务。

  • 预配置过程-允许您设置用于安装和配置 SEAM 1.0.1 的参数,使用这些参数可以自动进行 SEAM 安装。此过程对于批量安装尤其有用。

  • 多个库。

SEAM 1.0 组件

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

  • 实用程序 (gsscred) 和守护进程 (gssd)-这些程序有助于将 UNIX 用户 ID (user ID, UID) 映射到主体名称。需要使用这些程序是因为 NFS 服务器使用 UNIX UID 来标识用户,而不是使用以不同格式存储的主体名称来标识用户。

  • 通用安全服务应用程序编程接口 (Generic Security Service Application Programming Interface, GSS-API)-允许应用程序使用多种安全机制,并且不需要在每次添加新机制时重新编译应用程序。因为 GSS-API 与计算机无关,所以适用于 Internet 上的各种应用程序。使用 GSS-API,应用程序可包括完整性和保密性的安全服务以及验证。

  • RPCSEC_GSS 应用程序编程接口 (Application Programming Interface, API)-允许 NFS 服务使用 Kerberos 验证。RPCSEC_GSS 是一种安全特性,可提供与要使用的机制无关的安全服务。RPCSEC_GSS 位于 GSS-API 层的顶部。使用 RPCSEC_GSS 的应用程序可以使用所有基于可插拔 GSS_API 的安全机制。

  • 预配置过程-允许您设置用于安装和配置 SEAM 1.0.1 的参数,使用这些参数可以自动进行 SEAM 安装。此过程对于批量安装尤其有用。

第 21 章 规划 Kerberos 服务

参与安装和维护 Kerberos 服务的管理员应学习本章。本章介绍管理员在安装或配置服务之前必须确定的一些安装和配置选项。

以下是系统管理员或其他技术支持人员应学习的主题的列表:

为什么要规划 Kerberos 部署?

在安装 Kerberos 服务之前,必须解决几个配置问题。虽然在初始安装后可以更改配置,但每向系统中添加一台新客户机便会增加执行此操作的难度。而且某些更改可能需要进行完全重新安装,所以在规划 Kerberos 配置时最好应考虑长期目标。

部署 Kerberos 基础结构涉及以下任务:安装 KDC、为主机创建密钥以及迁移用户。 重新配置 Kerberos 部署与执行初始部署一样困难,因此要认真规划部署以避免必须进行重新配置。

Kerberos 领域

领域是一个类似于域的逻辑网络,用于定义一组系统,这些系统位于同一主 KDC 下。与建立 DNS 域名一样,在配置 Kerberos 服务之前,应解决以下问题以便进行跨领域验证:领域名称、领域数和每个领域的大小以及各领域之间的关系。

领域名称

领域名称可以由任何 ASCII 字符串组成。通常,领域名称与 DNS 域名相同,只不过领域名称采用大写。使用常见的名称时,这种约定有助于将 Kerberos 服务问题与 DNS 名称空间问题区分开来。如果不使用 DNS 或选择使用其他字符串,则可以使用任何字符串。但是,配置过程需要更多工作。采用符合标准 Internet 名称结构的领域名称是明智之举。

领域数

安装需要的领域数取决于下列因素:

  • 要支持的客户机数。一个领域中具有太多客户机会增加管理难度,最终会要求对领域进行分割。确定可以支持的客户机数的主要因素如下:

    • 每台客户机产生的 Kerberos 通信量

    • 物理网络的带宽

    • 主机的速度

    由于每种安装都有不同的限制,所以不存在确定最大客户机数的原则。

  • 客户机间相隔的距离。如果客户机位于不同的地理区域中,则可以设置几个较小的领域。

  • 可作为 KDC 安装的主机数。每个领域中应至少有两台 KDC 服务器:一台主服务器和一台从服务器。

建议将 Kerberos 领域与管理域结合使用。请注意,Kerberos V 领域可以跨与该领域相对应的 DNS 域的多个子域。

领域分层结构

为进行跨领域验证而配置多个领域时,需要决定如何将这些领域绑定在一起。可以在这些领域之间建立分层关系,以便提供到相关域的自动路径。当然,必须正确配置分层链中的所有领域。自动路径可以减轻管理负担。但是,如果域有许多层,您可能不想使用缺省路径,因为它需要太多事务。

您也可以选择直接建立连接。当两个分层领域之间存在的层太多或不存在分层关系时,直接连接最有用。必须在使用连接的所有主机上的 /etc/krb5/krb5.conf 文件中定义连接。因此,还需要执行一些其他工作。有关介绍,请参见Kerberos 领域。有关多个领域的配置过程,请参见配置跨领域验证

将主机名映射到领域

主机名到领域名称的映射在 krb5.conf 文件的 domain_realm 部分中定义。可以根据需要对整个域和个别的主机定义这些映射。

DNS 还可用于查找有关 KDC 的信息。如果使用 DNS,则会使信息更改变得更加容易,因为每次执行更改时,无需编辑所有客户机上的 krb5.conf 文件。有关更多信息,请参见 krb5.conf(4) 手册页。

客户机名称和服务主体名称

使用 Kerberos 服务时,强烈建议已在所有主机上配置并运行 DNS 服务。如果使用 DNS,则必须在所有主机或未在任何主机上启用它。如果 DNS 可用,则主体应包含每台主机的全限定域名 (Fully Qualified Domain Name, FQDN)。例如,如果主机名是 boston,DNS 域名是 example.com,领域名称是 EXAMPLE.COM,则该主机的主体名称应为 host/boston.example.com@EXAMPLE.COM。本书中的示例要求对每台主机配置 DNS 并且使用 FQDN。

包含主机的 FQDN 的主体名称应与 /etc/resolv.conf 文件中说明 DNS 域名的字符串匹配。指定主体的 FQDN 时,Kerberos 服务要求 DNS 域名必须为小写字母。DNS 域名可以包含大小写字母,但在创建主机主体时只可以使用小写字母。例如,DNS 域名为 example.comExample.COM 还是任何其他变体并不重要。主机的主体名称仍为 host/boston.example.com@EXAMPLE.COM

Kerberos 服务可以在没有运行 DNS 服务的情况下运行。但是,一些主要功能(例如,与其他领域通信的功能)将不能工作。如果未配置 DNS,则可以将简单的主机名用作实例名称。在此情况下,主体将为 host/boston@EXAMPLE.COM。如果稍后启用 DNS,则必须删除并替换 KDC 数据库中的所有主机主体。

此外,还配置了服务管理工具,以便未运行 DNS 服务时,不会启动许多守护进程或命令。已将 kdb5_utilkadmindkpropd 守护进程以及 kprop 命令配置为依赖于 DNS 服务。要充分利用使用 Kerberos 服务和 SMF 时可用的功能,必须在所有主机上配置 DNS。

KDC 端口和管理服务端口

缺省情况下,端口 88 和端口 750 用于 KDC,而端口 749 用于 KDC 管理守护进程。可以使用不同的端口号。但是,如果更改端口号,则必须在每台客户机上更改 /etc/services 文件和 /etc/krb5/krb5.conf 文件。此外,还必须更新每个 KDC 上的 /etc/krb5/kdc.conf 文件。

从 KDC 数

与主 KDC 一样,从 KDC 也会为客户机生成凭证。如果主 KDC 不可用,则从 KDC 将提供备份。每个领域应至少有一个从 KDC。可能会需要其他从 KDC,这取决于以下因素:

  • 领域中的物理段的个数。通常,应将网络设置为至少每个段都可以独立于领域的其他部分而单独工作。为此,必须能够从每个段访问 KDC。此实例中的 KDC 可以是主 KDC 或从 KDC。

  • 领域中的客户机数。通过添加更多从 KDC 服务器,可以减少当前服务器的负荷。

可能会添加太多从 KDC。请记住,必须将 KDC 数据库传播到每台服务器,因此安装的 KDC 服务器越多,更新领域中的数据所用的时间就越长。此外,因为每个从 KDC 都会保存一份 KDC 数据库的副本,所以较多的从 KDC 会增加破坏安全性的风险。

另外,可以很容易地将一个或多个从 KDC 配置为与主 KDC 交换。采用这种方式配置至少一个从 KDC 的优点是:如果主 KDC 由于任何原因出现故障,则可以使用很容易交换为主 KDC 的预配置系统。有关如何配置可交换的从 KDC 的说明,请参见交换主 KDC 和从 KDC

将 GSS 凭证映射到 UNIX 凭证

对于需要 GSS 凭证名称到 UNIX 用户 ID (user ID, UID) 的映射的 GSS 应用程序(例如 NFS),Kerberos 服务提供了该缺省映射。使用 Kerberos 服务时,GSS 凭证名称相当于 Kerberos 主体名称。缺省映射算法是采用具有一个组成部分的 Kerberos 主体名称,并使用该组成部分(即主体的主名称)来查找 UID。可以使用 /etc/krb5/krb5.conf 中的 auth_to_local_realm 参数在缺省领域或允许的任何领域中进行查找。例如,可以使用口令表将用户主体名称 bob@EXAMPLE.COM 映射到名为 bob 的 UNIX 用户的 UID。但不会映射用户主体名称 bob/admin@EXAMPLE.COM,因为该主体名称包括 admin 的实例部分。如果用户凭证的缺省映射满足要求,则无需填充 GSS 凭证表。在先前的发行版中,需要填充 GSS 凭证表才能使 NFS 服务工作。如果缺省映射不满足要求(例如,如果要映射包含实例部分的主体名称),应使用其他方法。有关更多信息,请参见:

自动将用户迁移到 Kerberos 领域

可以使用 PAM 框架自动迁移在缺省 Kerberos 领域中没有有效用户帐户的 UNIX 用户。具体而言,将在 PAM 服务的验证栈中使用 pam_krb5_migrate 模块。该模块将对服务进行设置,以便每当没有 Kerberos 主体的用户使用其口令成功登录系统时,便会自动为该用户创建 Kerberos 主体。新的主体将使用相同的口令。有关如何使用 pam_krb5_migrate 模块的说明,请参见在 Kerberos 领域中配置用户自动迁移

要使用的数据库传播系统

存储在主 KDC 上的数据库必须定期传播到从 KDC。可以将数据库的传播配置为增量。增量过程只将更新的信息传播到从 KDC,而不是整个数据库。 有关数据库传播的更多信息,请参见管理 Kerberos 数据库

如果不使用增量传播,则要解决的首要问题之一是确定更新从 KDC 的频率。需要获取所有客户机可用的最新信息时,必须权衡完成更新所需的时间。

在一个领域中有许多 KDC 的大型安装中,一个或多个从 KDC 可以传播数据,以便以并行方式完成该过程。此策略减少了更新所用的时间,但同时增加了管理领域的复杂性。有关此策略的完整说明,请参见设置并行传播

领域内的时钟同步

所有参与 Kerberos 验证系统的主机都必须在指定的最长时间内同步其内部时钟。称为时钟相位差的此功能提供了另一种 Kerberos 安全检查方法。如果任意两台参与主机之间的时间偏差超过了时钟相位差,则请求会被拒绝。

一种同步所有时钟的方法是使用网络时间协议 (Network Time Protocol, NTP) 软件。有关更多信息,请参见同步 KDC 和 Kerberos 客户机的时钟。还存在其他同步时钟的方法,因此并非一定要使用 NTP。但是,由于存在时钟相位差,所以应使用某种形式的同步来防止访问失败。

客户机安装选项

Solaris 10 发行版中的一个新功能是 kclient 安装实用程序。该实用程序可以交互模式或非交互模式运行。在交互模式下,将提示用户输入特定于 Kerberos 的参数值,从而允许用户在安装客户机时更改现有安装。在非交互模式下,将使用先前设置了参数值的文件。此外,可以在非交互模式下使用命令行选项。交互模式和非交互模式所需的步骤都比手动过程所需的步骤少,因此该过程可以更快完成并且不容易出错。有关所有客户机安装过程的说明,请参见配置 Kerberos 客户机

Kerberos 加密类型

加密类型是指定 Kerberos 服务中使用的加密算法、加密模式和散列算法的标识符。Kerberos 服务中的密钥具有关联的加密类型,用于标识服务使用该密钥执行加密操作时要使用的加密算法和模式。以下是 Solaris 10 发行版中支持的加密类型:

  • des-cbc-md5

  • des-cbc-crc

  • des3-cbc-sha1

  • arcfour-hmac-md5

  • arcfour-hmac-md5-exp

  • aes128-cts-hmac-sha1-96


注 –

此外,如果安装了非捆绑强加密软件包,则可以将 aes256-cts-hmac-sha1-96 加密类型用于 Kerberos 服务。


如果要更改加密类型,则应在创建新的主体数据库时进行更改。由于 KDC 服务器与 KDC 客户机之间存在交互,所以在现有数据库上更改加密类型很困难。除非您要重新创建数据库,否则不要设置这些参数。有关更多信息,请参阅使用 Kerberos 加密类型


注 –

如果安装了未运行 Solaris 10 发行版的主 KDC,则在升级主 KDC 之前,必须将从 KDC 升级到 Solaris 10 发行版。Solaris 10 主 KDC 将使用新的加密类型,而较早版本的从 KDC 将无法处理这些加密类型。


SEAM Administration Tool 中的联机帮助 URL

SEAM Administration Tool 将使用联机帮助 URL,因此应正确定义该 URL,以使“帮助内容“菜单正常工作。可以在任何合适的服务器上安装本手册的 HTML 版本。或者,可以决定使用 http://docs.sun.com 中的文档集。

该 URL 是在配置主机以使用 Kerberos 服务时在 krb5.conf 文件中指定的。该 URL 应指向本书的“管理主体和策略(任务)”章中标题为 "SEAM Administration Tool" 的一节。如果存在更适合的位置,可以选择另一个 HTML 页面。

第 22 章 配置 Kerberos 服务(任务)

本章介绍 KDC 服务器、网络应用程序服务器、NFS 服务器和 Kerberos 客户机的配置过程。其中许多过程都要求超级用户访问权限,因此这些过程应由系统管理员或高级用户来执行。本章还将介绍跨领域配置过程以及与 KDC 服务器相关的其他主题。

本章包含以下主题:

配置 Kerberos 服务(任务列表)

部分配置过程依赖于其他配置过程,且必须按特定顺序执行。这些过程通常会建立使用 Kerberos 服务所需的服务。其他过程不依赖于任何顺序,且可以在适当的情况下执行。以下任务列表给出了 Kerberos 安装的建议顺序。

任务 

说明 

参考 

1. 规划 Kerberos 安装。 

在开始软件配置过程之前先解决配置问题。从长远来看,提前规划可以节省时间和其他资源。 

第 21 章,规划 Kerberos 服务

2. (可选)安装 NTP。 

配置网络时间协议 (Network Time Protocol, NTP) 软件或其他时钟同步协议。要使 Kerberos 服务正常工作,必须同步领域中所有系统的时钟。 

同步 KDC 和 Kerberos 客户机的时钟

3. 配置主 KDC 服务器。 

配置并构建领域的主 KDC 服务器和数据库。 

如何配置主 KDC

4. 配置从 KDC 服务器。 

配置并构建领域的从 KDC 服务器。 

如何配置从 KDC

5. (可选)增强 KDC 服务器的安全性。 

阻止对 KDC 服务器的安全性破坏。 

如何限制对 KDC 服务器的访问

6. (可选)配置可交换的 KDC 服务器。 

使交换主 KDC 和从 KDC 的任务更容易执行。 

如何配置可交换的从 KDC

配置其他 Kerberos 服务(任务列表)

完成所需步骤之后,可以在适当的情况下执行以下过程。

任务 

说明 

参考 

配置跨领域验证。 

启用领域之间的通信。 

配置跨领域验证

配置 Kerberos 应用程序服务器。 

使服务器支持使用 Kerberos 验证的服务,例如 ftptelnetrsh

配置 Kerberos 网络应用程序服务器

配置 Kerberos 客户机。 

使客户机使用 Kerberos 服务。 

配置 Kerberos 客户机

配置 Kerberos NFS 服务器。 

使服务器共享要求 Kerberos 验证的文件系统。 

配置 Kerberos NFS 服务器

增强应用程序服务器的安全性。 

通过只允许访问经过验证的事务来增强应用程序服务器的安全性。 

如何仅启用基于 Kerberos 的应用程序

配置 KDC 服务器

安装 Kerberos 软件后,必须配置 KDC 服务器。配置一个主 KDC 和至少一个从 KDC 以提供颁发凭证的服务。这些凭证是 Kerberos 服务的基础,因此在尝试其他任务之前必须安装 KDC。

主 KDC 和从 KDC 之间的最大差别是,只有主 KDC 可以处理数据库管理请求。例如,更改口令或添加新的主体必须在主 KDC 上完成。然后可以将这些更改传播到从 KDC。从 KDC 和主 KDC 都可生成凭证。此功能可在主 KDC 无法响应时提供冗余性。

Procedure如何配置主 KDC

在此过程中,将配置增量传播。此外,还将使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • 主 KDC = kdc1.example.com

  • admin 主体 = kws/admin

  • 联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956


    注 –

    调整该 URL 以指向“SEAM Administration Tool”部分,如SEAM Administration Tool 中的联机帮助 URL中所述。


开始之前

此过程要求 DNS 必须正在运行。有关此主 KDC 是否可交换的特定命名说明,请参见交换主 KDC 和从 KDC

  1. 成为主 KDC 的超级用户。

  2. 编辑 Kerberos 配置文件 (krb5.conf)。

    需要更改领域名称和服务器名称。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。


    kdc1 # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
            default_realm = EXAMPLE.COM
    
    
    
    [realms]
    
                    EXAMPLE.COM = {
    
                    kdc = kdc1.example.com
    
                    admin_server = kdc1.example.com
    
                   
    
            }
    
    
    
    [domain_realm]
    
            .example.com = EXAMPLE.COM
    
    #
    
    # if the domain name and realm name are equivalent, 
    
    # this entry is not needed
    
    #
    
    [logging]
    
            default = FILE:/var/krb5/kdc.log
    
            kdc = FILE:/var/krb5/kdc.log
    
    
    
    [appdefaults]
    
        gkadmin = {
    
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
    
            }

    在此示例中,更改了 default_realmkdcadmin_server 行以及所有 domain_realm 项。此外,还编辑了定义 help_url 的行。


    注 –

    如果要限制加密类型,可以设置 default_tkt_enctypesdefault_tgs_enctypes 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型


  3. 编辑 KDC 配置文件 (kdc.conf )。

    需要更改领域名称。有关此文件的完整说明,请参见 kdc.conf(4) 手册页。


    kdc1 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_master_ulogsize = 1000        }

    在此示例中,更改了 realms 部分中的领域名称定义。此外,在 realms 部分中,添加了用于启用增量传播和选择主 KDC 将保留在日志中的更新数的行。


    注 –

    如果需要限制加密类型,可以设置 permitted_enctypessupported_enctypesmaster_key_type 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型


  4. 使用 kdb5_util 命令创建 KDC 数据库。

    kdb5_util 命令创建 KDC 数据库。此外,与 -s 选项一起使用时,此命令会在启动 kadmindkrb5kdc 守护进程之前,创建一个用于向自己验证 KDC 的存储文件。


    kdc1 # /usr/sbin/kdb5_util create -r EXAMPLE.COM -s
    
    Initializing database '/var/krb5/principal' for realm 'EXAMPLE.COM'
    
    master key name 'K/M@EXAMPLE.COM'
    
    You will be prompted for the database Master Password.
    
    It is important that you NOT FORGET this password.
    
    Enter KDC database master key: <Type the key>
    
    Re-enter KDC database master key to verify: <Type it again>
    

    如果领域名称与服务器的名称空间中的域名相同,则无需后跟领域名称的 -r 选项。

  5. 编辑 Kerberos 访问控制列表文件 (kadm5.acl)。

    填充后,/etc/krb5/kadm5.acl 文件应包含允许管理 KDC 的所有主体名称。


    kws/admin@EXAMPLE.COM   *

    通过该项,EXAMPLE.COM 领域中的 kws/admin 主体可以修改 KDC 中的主体或策略。缺省安装包括用于匹配所有 admin 主体的星号 (*)。此缺省安装可能会存在安全风险,因此更安全的方法是包括所有 admin 主体的列表。有关更多信息,请参见 kadm5.acl(4) 手册页。

  6. 启动 kadmin.local 命令并添加主体。

    接下来的子步骤创建 Kerberos 服务使用的主体。


    kdc1 # /usr/sbin/kadmin.local
    
    kadmin.local: 
    1. 向数据库中添加管理主体。

      可以根据需要添加任意数量的 admin 主体。要完成 KDC 配置过程,必须至少添加一个 admin 主体。对于此示例,将添加一个 kws/admin 主体。可以将 "kws" 替换为相应的主体名称。


      kadmin.local: addprinc kws/admin
      
      Enter password for principal kws/admin@EXAMPLE.COM:<Type the password>
      
      Re-enter password for principal kws/admin@EXAMPLE.COM: <Type it again>
      
      Principal "kws/admin@EXAMPLE.COM" created.
      
      kadmin.local: 
    2. 创建 kiprop 主体。

      kiprop 主体用于授权来自主 KDC 的更新。


      kadmin.local: addprinc -randkey kiprop/kdc1.example.com
      
      Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
      
      kadmin.local:
    3. kadmind 服务创建密钥表文件。

      此命令序列创建包含 kadminchangepw 的主体项的特殊密钥表文件。kadmind 服务需要使用这些主体。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.example.com
      
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.example.com
      
      EEntry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/changepw
      
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/changepw with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      kadmin.local:
    4. 将主 KDC 服务器的 kiprop 主体添加到 kadmind 密钥表文件中。

      通过将 kiprop 主体添加到 kadm5.keytab 文件中,kadmind 命令可以在启动增量传播时对其自身进行验证。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
      
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      
      kadmin.local: 
    5. 退出 kadmin.local

      已经添加了接下来的步骤所需的所有主体。


      kadmin.local: quit
      
  7. 启动 Kerberos 守护进程。


    kdc1 # svcadm enable -r network/security/krb5kdc
    
    kdc1 # svcadm enable -r network/security/kadmin
    
  8. 启动 kadmin 并添加更多主体。

    此时,可以使用 SEAM Administration Tool 添加主体。为此,必须使用此过程前面创建的一个 admin 主体名称登录。但是,为简单起见,给出了以下命令行示例。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 创建主 KDC host 主体。

      基于 Kerberos 的应用程序(例如 klistkprop)将使用主机主体。Solaris 10 客户机在挂载经过验证的 NFS 文件系统时将使用此主体。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey host/kdc1.example.com
      
      Principal "host/kdc1.example.com@EXAMPLE.COM" created.
      
      kadmin: 
    2. (可选的)创建 kclient 主体。

      安装 Kerberos 客户机过程中 kclient 实用程序将使用此主体。如果不打算使用此实用程序,则无需添加该主体。kclient 实用程序的用户需要使用此口令。


      kadmin: addprinc clntconfig/admin
      
      Enter password for principal clntconfig/admin@EXAMPLE.COM:<Type the password>
      
      Re-enter password for principal clntconfig/admin@EXAMPLE.COM: <Type it again>
      
      Principal "clntconfig/admin@EXAMPLE.COM" created.
      
      kadmin: 
    3. 将主 KDC 的 host 主体添加到主 KDC 的密钥表文件中。

      通过将主机主体添加到密钥表文件中,可以自动使用此主体。


      kadmin: ktadd host/kdc1.example.com
      
      Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc1.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc1.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    4. 退出 kadmin


      kadmin: quit
      
  9. (可选的)使用 NTP 或其他时钟同步机制同步主 KDC 时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟都必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  10. 配置从 KDC。

    要提供冗余性,请确保至少安装一个从 KDC。有关特定说明,请参见如何配置从 KDC

Procedure如何配置从 KDC

在此过程中,将配置一个名为 kdc2 的新从 KDC。此外,还将配置增量传播。此过程使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • 主 KDC = kdc1.example.com

  • 从 KDC = kdc2.example.com

  • admin 主体 = kws/admin

  • 联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956


    注 –

    调整该 URL 以指向“SEAM Administration Tool”部分,如SEAM Administration Tool 中的联机帮助 URL中所述。


开始之前

必须配置主 KDC。有关此从 KDC 是否可交换的特定说明,请参见交换主 KDC 和从 KDC

  1. 在主 KDC 上,成为超级用户。

  2. 在主 KDC 上,启动 kadmin

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 在主 KDC 上,将从主机主体添加到数据库中(如果尚未执行此操作)。

      要使从 KDC 正常工作,该从 KDC 必须具有主机主体。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey host/kdc2.example.com
      
      Principal "host/kdc2@EXAMPLE.COM" created.
      
      kadmin: 
    2. 在主 KDC 上,创建 kiprop 主体。

      kiprop 主体用于授权来自主 KDC 的增量传播。


      kadmin: addprinc -randkey kiprop/kdc2.example.com
      
      Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
      
      kadmin:
    3. 退出 kadmin


      kadmin: quit
      
  3. 在主 KDC 上,编辑 Kerberos 配置文件 (krb5.conf)。

    需要添加每个从 KDC 的项。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。


    kdc1 # cat /etc/krb5/krb5.conf
    
     .
    
     .
    
    [realms]
    
                    EXAMPLE.COM = {
    
                    kdc = kdc1.example.com
    
                    kdc = kdc2.example.com
    
                    admin_server = kdc1.example.com
    
            }
  4. 在主 KDC 上,将 kiprop 项添加到 kadm5.acl 中。

    通过此项,主 KDC 可以接收对 kdc2 服务器的增量传播请求。


    kdc1 # cat /etc/krb5/kadm5.acl
    
    */admin@EXAMPLE.COM *
    
    kiprop/kdc2.example.com@EXAMPLE.COM p
    
  5. 在主 KDC 上,重新启动 kadmind 以使用 kadm5.acl 文件中的新项。


    kdc1 # svcadm restart network/security/kadmin
    
  6. 在所有从 KDC 上,复制主 KDC 服务器的 KDC 管理文件。

    由于主 KDC 服务器已更新每台 KDC 服务器所需的信息,因此需要在所有从 KDC 上执行此步骤。可以使用 ftp 或类似的传送机制从主 KDC 获取以下文件的副本:

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

  7. 在所有从 KDC 上,将主 KDC 和每个从 KDC 的项添加到数据库传播配置文件 kpropd.acl 中。

    需要更新所有从 KDC 服务器上的此信息。


    kdc2 # cat /etc/krb5/kpropd.acl
    
    host/kdc1.example.com@EXAMPLE.COM
    
    host/kdc2.example.com@EXAMPLE.COM
  8. 在所有从 KDC 上,请确保未填充 Kerberos 访问控制列表文件 kadm5.acl

    未修改的 kadm5.acl 文件如下所示:


    kdc2 # cat /etc/krb5/kadm5.acl
    
    */admin@___default_realm___ *

    如果此文件中包含 kiprop 项,请删除它们。

  9. 在新的从 KDC 上,更改 kdc.conf 中的项。

    sunw_dbprop_master_ulogsize 项替换为定义 sunw_dbprop_slave_poll 的项。该项将轮询时间设置为 2 分钟。


    kdc1 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_slave_poll = 2m
    
            }
  10. 在新的从 KDC 上,启动 kadmin 命令。

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    kdc2 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 使用 kadmin 将从 KDC 的主机主体添加到从 KDC 的密钥表文件中。

      此项可使 kprop 和其他基于 Kerberos 的应用程序正常工作。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: ktadd host/kdc2.example.com
      
      Entry for principal host/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc2.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc2.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc2.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    2. kiprop 主体添加到从 KDC 的密钥表文件中。

      通过将 kiprop 主体添加到 krb5.keytab 文件中,kpropd 命令可以在启动增量传播时对其自身进行验证。


      kadmin: ktadd kiprop/kdc2.example.com
      
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    3. 退出 kadmin


      kadmin: quit
      
  11. 在新的从 KDC 上,启动 Kerberos 传播守护进程。


    kdc2 # /usr/lib/krb5/kpropd
    
  12. 在新的从 KDC 上,使用 kdb5_util 创建一个存储文件。


    kdc2 # /usr/sbin/kdb5_util stash
    
    kdb5_util: Cannot find/read stored master key while reading master key
    
    kdb5_util: Warning: proceeding without master key
    
    
    
    Enter KDC database master key: <Type the key>
    
  13. 中止 Kerberos 传播守护进程。


    kdc2 # pkill kpropd
    
  14. (可选的)在新的从 KDC 上,使用 NTP 或其他时钟同步机制同步主 KDC 时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  15. 在新的从 KDC 上,启动 KDC 守护进程 (krb5kdc)。

    启用 krb5kdc 服务时,如果系统配置为从 KDC,则还将启动 kpropd


    kdc2 # svcadm enable network/security/krb5kdc
    

配置跨领域验证

有几种方法可以将各个领域链接在一起,从而可以在一个领域中验证另一个领域中的用户。通常,跨领域验证通过在两个领域之间建立共享私钥来实现。领域之间的关系可以是分层关系或直接关系(请参见领域分层结构)。

Procedure如何建立分层跨领域验证

此过程中的示例使用 ENG.EAST.EXAMPLE.COMEAST.EXAMPLE.COM 两个领域。将按两个方向建立跨领域验证。必须在两个领域的主 KDC 上完成此过程。

开始之前

必须配置每个领域的主 KDC。要完全测试验证过程,必须安装多个客户机或从 KDC。

  1. 成为第一个主 KDC 的超级用户。

  2. 为两个领域创建票证授予票证服务主体。

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: addprinc krbtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM
    
    Enter password for principal krgtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM: <Type password>
    
    kadmin: addprinc krbtgt/EAST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM
    
    Enter password for principal krgtgt/EAST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM: <Type password>
    
    kadmin: quit
    

    注 –

    在两个 KDC 中为每个服务主体指定的口令必须相同。因此,服务主体 krbtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM 的口令在两个领域中一定相同。


  3. 将相应项添加到 Kerberos 配置文件 (krb5.conf) 中以定义每个领域的域名。


    # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
     .
    
     .
    
    [domain_realm]
    
            .eng.east.example.com = ENG.EAST.EXAMPLE.COM
    
            .east.example.com = EAST.EXAMPLE.COM
    

    在此示例中,定义了 ENG.EAST.EXAMPLE.COMEAST.EXAMPLE.COM 领域的域名。由于会从上向下搜索文件,因此先包含子域非常重要。

  4. 将 Kerberos 配置文件复制到此领域中的所有客户机。

    要使跨领域验证正常工作,所有系统(包括从 KDC 和其他服务器)必须安装 Kerberos 配置文件 (/etc/krb5/krb5.conf) 的新版本。

  5. 在第二个领域中重复以上所有步骤。

Procedure如何建立直接跨领域验证

此过程中的示例使用 ENG.EAST.EXAMPLE.COMSALES.WEST.EXAMPLE.COM 两个领域。将按两个方向建立跨领域验证。必须在两个领域的主 KDC 上完成此过程。

开始之前

必须配置每个领域的主 KDC。要完全测试验证过程,必须安装多个客户机或从 KDC。

  1. 成为一台主 KDC 服务器的超级用户。

  2. 为两个领域创建票证授予票证服务主体。

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: addprinc krbtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM
    
    Enter password for principal 
    
      krgtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM: <Type the password>
    
    kadmin: addprinc krbtgt/SALES.WEST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM
    
    Enter password for principal 
    
      krgtgt/SALES.WEST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM: <Type the password>
    
    kadmin: quit
    

    注 –

    在两个 KDC 中为每个服务主体指定的口令必须相同。因此,服务主体 krbtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM 的口令在两个领域中一定相同。


  3. 在 Kerberos 配置文件中添加相应的项以定义指向远程领域的直接路径。

    此示例显示了 ENG.EAST.EXAMPLE.COM 领域中的客户机。可能需要交换领域名称以获取 SALES.WEST.EXAMPLE.COM 领域中相应的定义。


    # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
     .
    
     .
    
    [capaths]
    
        ENG.EAST.EXAMPLE.COM = {
    
            SALES.WEST.EXAMPLE.COM = .
    
        }
    
    
    
        SALES.WEST.EXAMPLE.COM = {
    
             ENG.EAST.EXAMPLE.COM = .
    
        }
    
  4. 将 Kerberos 配置文件复制到当前领域中的所有客户机。

    要使跨领域验证正常工作,所有系统(包括从 KDC 和其他服务器)必须安装 Kerberos 配置文件 (/etc/krb5/krb5.conf) 的新版本。

  5. 对第二个领域重复以上所有步骤。

配置 Kerberos 网络应用程序服务器

网络应用程序服务器是使用以下一个或多个网络应用程序提供访问的主机:ftprcprloginrshtelnet。要在服务器上启用这些命令的 Kerberos 版本,只需执行几个步骤。

Procedure如何配置 Kerberos 网络应用程序服务器

此过程使用以下配置参数:

  • 应用程序服务器 = boston

  • admin 主体 = kws/admin

  • DNS 域名 = example.com

  • 领域名称 = EXAMPLE.COM

开始之前

此过程要求已配置主 KDC。要完全测试该过程,必须安装多个客户机。

  1. 安装 Kerberos 客户机软件。

  2. (可选的)安装 NTP 客户机或其他时钟同步机制。

    有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  3. 为新服务器添加主体并更新该服务器的密钥表。

    以下命令报告是否存在主机主体:


    boston # klist -k |grep host
    
    4 host/boston.example.com@EXAMPLE.COM
    
    4 host/boston.example.com@EXAMPLE.COM
    
    4 host/boston.example.com@EXAMPLE.COM
    
    4 host/boston.example.com@EXAMPLE.COM

    如果此命令未返回主体,则可以使用以下步骤创建新主体。

    有关如何使用 SEAM Administration Tool 添加主体的说明将在如何创建新的 Kerberos 主体中介绍。以下步骤中的示例说明如何使用命令行添加所需的主体。必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    boston # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 创建服务器的 host 主体。


      kadmin: addprinc -randkey host/boston.example.com
      
      Principal "host/boston.example.com" created.
      
      kadmin: 
    2. 将服务器的 host 主体添加到服务器的密钥表中。

      如果未运行 kadmin 命令,请使用以下类似命令重新启动该命令: /usr/sbin/kadmin -p kws/admin


      kadmin: ktadd host/boston.example.com
      
      Entry for principal host/boston.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/boston.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/boston.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/boston.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin:
    3. 退出 kadmin


      kadmin: quit
      

配置 Kerberos NFS 服务器

NFS 服务可以使用 UNIX 用户 ID (user ID, UID) 标识用户,但不能直接使用 GSS 凭证。要将凭证转换为 UID,可能需要创建将用户凭证映射到 UNIX UID 的凭证表。有关缺省凭证映射的更多信息,请参见将 GSS 凭证映射到 UNIX 凭证。本节中的过程重点介绍配置 Kerberos NFS 服务器、管理凭证表以及对已挂载 NFS 的文件系统启动 Kerberos 安全模式所需的任务。以下任务列表说明了本节中所包含的任务。

表 22–1 配置 Kerberos NFS 服务器(任务列表)

任务 

说明 

参考 

配置 Kerberos NFS 服务器。 

使服务器共享要求 Kerberos 验证的文件系统。 

如何配置 Kerberos NFS 服务器

创建凭证表。 

在缺省映射不满足要求的情况下,生成可用于提供从 GSS 凭证到 UNIX 用户 ID 的映射的凭证表。 

如何创建凭证表

更改将用户凭证映射到 UNIX UID 的凭证表。 

更新凭证表中的信息。 

如何向凭证表中添加单个项

在两个类似领域之间创建凭证映射。 

在多个领域共享同一个口令文件的情况下,提供有关如何将 UID 从一个领域映射到另一个领域的说明。 

如何提供各领域之间的凭证映射

使用 Kerberos 验证共享文件系统。 

使用安全模式共享文件系统,以便要求 Kerberos 验证。 

如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

Procedure如何配置 Kerberos NFS 服务器

在此过程中,将使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • NFS 服务器 = denver.example.com

  • admin 主体 = kws/admin

  1. 完成配置 Kerberos NFS 服务器的先决条件。

    必须配置主 KDC。要完全测试此过程,需要多个客户机。

  2. (可选的)安装 NTP 客户机或其他时钟同步机制。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  3. 启动 kadmin

    可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 创建服务器的 NFS 服务主体。

      请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      对系统上可能用于访问 NFS 数据的每个唯一接口重复此步骤。如果主机有多个接口具有唯一名称,则每个唯一名称必须具有自己的 NFS 服务主体。


      kadmin: addprinc -randkey nfs/denver.example.com
      
      Principal "nfs/denver.example.com" created.
      
      kadmin:
    2. 将服务器的 NFS 服务主体添加到服务器的密钥表文件中。

      步骤 a 中创建的每个唯一服务主体重复此步骤。


      kadmin: ktadd nfs/denver.example.com
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs denver.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin:
    3. 退出 kadmin


      kadmin: quit
      
  4. (可选的)如果需要,可创建特殊 GSS 凭证映射。

    通常,Kerberos 服务在 GSS 凭证和 UNIX UID 之间生成相应的映射。缺省映射在将 GSS 凭证映射到 UNIX 凭证中介绍。如果缺省映射不满足要求,请参见如何创建凭证表以获取更多信息。

  5. 使用 Kerberos 安全模式共享 NFS 文件系统。

    有关更多信息,请参见如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

Procedure如何创建凭证表

NFS 服务器使用 gsscred 凭证表将 Kerberos 凭证映射到 UID。对于从使用 Kerberos 验证的 NFS 服务器挂载文件系统的 NFS 客户机,如果缺省映射不满足要求,则必须创建此表。

  1. 编辑 /etc/gss/gsscred.conf 并更改安全机制。

    将机制更改为 files

  2. 使用 gsscred 命令创建凭证表。


    # gsscred -m kerberos_v5 -a
    

    gsscred 命令从 /etc/nsswitch.conf 文件的 passwd 项列出的所有源中收集信息。如果希望凭证表中不包括本地口令项,则可能需要临时删除 files 项。有关更多信息,请参见 gsscred(1M) 手册页。

Procedure如何向凭证表中添加单个项

开始之前

此过程要求已在 NFS 服务器上创建 gsscred 表。有关说明,请参见如何创建凭证表

  1. 成为 NFS 服务器上的超级用户。

  2. 使用 gsscred 命令向凭证表中添加项。


    # gsscred -m mech [ -n name [ -u uid ]] -a
    
    mech

    定义要使用的安全机制。

    name

    定义用户的主体名称,如 KDC 中所定义。

    uid

    定义用户的 UID,如口令数据库中所定义。

    -a

    向主体名称映射中添加 UID。


示例 22–1 向凭证表中添加多组成部分主体

在以下示例中,将添加名为 sandy/admin 的主体的项,该主体映射到 UID 3736


# gsscred -m kerberos_v5 -n sandy/admin -u 3736 -a


示例 22–2 向凭证表中添加其他域中的主体

在以下示例中,将添加名为 sandy/admin@EXAMPLE.COM 的主体的项,该主体映射到 UID 3736


# gsscred -m kerberos_v5 -n sandy/admin@EXAMPLE.COM -u 3736 -a

Procedure如何提供各领域之间的凭证映射

此过程在使用相同口令文件的领域之间提供相应的凭证映射。在此示例中,领域 CORP.EXAMPLE.COMSALES.EXAMPLE.COM 使用相同的口令文件。bob@CORP.EXAMPLE.COMbob@SALES.EXAMPLE.COM 的凭证映射到相同的 UID。

  1. 成为超级用户。

  2. 在客户机系统上,向 krb5.conf 文件中添加项。


    # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
            default_realm = CORP.EXAMPLE.COM
    
     .
    
    [realms]
    
        CORP.EXAMPLE.COM = {
    
            .
    
            auth_to_local_realm = SALES.EXAMPLE.COM
    
            .
    
        }
故障排除

有关对凭证映射问题进行疑难解答的过程的帮助,请参见观察从 GSS 凭证到 UNIX 凭证的映射

Procedure如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

通过此过程,NFS 服务器可以使用不同的安全模式或特性提供安全的 NFS 访问。客户机与 NFS 服务器协商安全特性时,将使用该客户机有权访问的服务器所提供的第一种特性。此特性用于 NFS 服务器共享的文件系统的所有后续客户机请求。

  1. 成为 NFS 服务器上的超级用户。

  2. 验证在密钥表文件中是否存在 NFS 服务主体。

    klist 命令报告是否存在密钥表文件并显示主体。如果结果显示不存在密钥表文件或者不存在 NFS 服务主体,则需要验证是否已完成如何配置 Kerberos NFS 服务器中的所有步骤。


    # klist -k
    
    Keytab name: FILE:/etc/krb5/krb5.keytab
    
    KVNO Principal
    
    ---- ---------------------------------------------------------
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
  3. /etc/nfssec.conf 文件中启用 Kerberos 安全模式。

    编辑 /etc/nfssec.conf 文件并删除位于 Kerberos 安全模式前面的 "#"。


    # cat /etc/nfssec.conf
    
     .
    
     .
    
    #
    
    # Uncomment the following lines to use Kerberos V5 with NFS
    
    #
    
    krb5            390003  kerberos_v5     default -               # RPCSEC_GSS
    
    krb5i           390004  kerberos_v5     default integrity       # RPCSEC_GSS
    
    krb5p           390005  kerberos_v5     default privacy         # RPCSEC_GSS
  4. 编辑 /etc/dfs/dfstab 文件,并将带有所需安全模式的 sec= 选项添加到相应的项中。


    share -F nfs -o sec=mode file_system
    
    mode

    指定共享文件系统时要使用的安全模式。使用多种安全模式时,会将列表中的第一种模式用作缺省模式。

    file_system

    定义要共享的文件系统的路径。

    尝试从指定的文件系统访问文件的所有客户机都要求 Kerberos 验证。要访问文件,应验证 NFS 客户机上的用户主体。

  5. 请确保服务器上正在运行 NFS 服务。

    如果此命令是您所启动的第一个 share 命令或 share 命令集,则 NFS 守护进程可能未运行。以下命令将重新启动该守护进程:


    # svcadm restart network/nfs/server
    
  6. (可选的)如果使用的是自动挂载程序,请编辑 auto_master 数据库以选择非缺省安全模式。

    如果不使用自动挂载程序访问文件系统或者安全模式的缺省选择可接受,则无需执行此过程。


    file_system  auto_home  -nosuid,sec=mode
    
  7. (可选的)使用非缺省模式手动发布用于访问文件系统的 mount 命令。

    或者,可以使用 mount 命令指定安全模式,但此替代方法不会利用自动挂载程序。


    # mount -F nfs -o sec=mode file_system
    

示例 22–3 使用一种 Kerberos 安全模式共享文件系统

在此示例中,dfstab 文件行表明:在通过 NFS 服务访问任何文件之前,必须先成功完成 Kerberos 验证。


# grep krb /etc/dfs/dfstab

share -F nfs -o sec=krb5 /export/home


示例 22–4 使用多种 Kerberos 安全模式共享文件系统

在此示例中,选择了所有三种 Kerberos 安全模式。如果发出挂载请求时未指定任何安全模式,则将在所有 NFS V3 客户机中使用列出的第一种模式(在此例中为 krb5)。有关更多信息,请参见 nfssec(5) 手册页。


# grep krb /etc/dfs/dfstab

share -F nfs -o sec=krb5:krb5i:krb5p /export/home

配置 Kerberos 客户机

Kerberos 客户机是网络上需要使用 Kerberos 服务的任何主机(不是 KDC 服务器)。本节介绍有关安装 Kerberos 客户机的过程以及使用 root 验证以挂载 NFS 文件系统的特定信息。

配置 Kerberos 客户机(任务列表)

以下任务列表包括有关设置 Kerberos 客户机的所有过程。每行都包括任务说明(说明执行该项任务的原因)以及指向该任务的链接。

任务 

说明 

参考 

建立 Kerberos 客户机安装配置文件。 

生成可用于自动安装 Kerberos 客户机的客户机安装配置文件。 

如何创建 Kerberos 客户机安装配置文件

配置 Kerberos 客户机。 

手动安装 Kerberos 客户机。如果每台客户机安装要求唯一的安装参数,请使用此过程。 

如何手动配置 Kerberos 客户机

 

自动安装 Kerberos 客户机。如果每台客户机的安装参数都相同,请使用此过程。 

如何自动配置 Kerberos 客户机

 

交互式安装 Kerberos 客户机。如果仅需要更改一些安装参数,请使用此过程。 

如何交互配置 Kerberos 客户机

允许客户机以 root 用户身份访问 NFS 文件系统。

在客户机上创建 root 主体,以便客户机可以挂载使用 root 访问权限共享的 NFS 文件系统。此外,允许为客户机设置对 NFS 文件系统的非交互 root 访问权限,以便可以运行 cron 作业。

如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

Procedure如何创建 Kerberos 客户机安装配置文件

此过程创建可在安装 Kerberos 客户机时使用的 kclient 配置文件。使用 kclient 配置文件,可降低出现键入错误的可能性。此外,与交互式过程相比,使用该配置文件可以减少用户干预。

  1. 成为超级用户。

  2. 创建 kclient 安装配置文件。

    kclient 配置文件样例与以下内容类似:


    client# cat /net/kdc1.example.com/export/install/profile
    
    REALM EXAMPLE.COM
    
    KDC kdc1.example.com
    
    ADMIN clntconfig
    
    FILEPATH /net/kdc1.example.com/export/install/krb5.conf
    
    NFS 1
    
    DNSLOOKUP none

Procedure如何自动配置 Kerberos 客户机

开始之前

此过程使用安装配置文件。请参见如何创建 Kerberos 客户机安装配置文件

  1. 成为超级用户。

  2. 运行 kclient 安装脚本。

    要完成此过程,需要提供 clntconfig 主体的口令。


    client# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf
    
    
    
    Starting client setup
    
    ---------------------------------------------------
    
    
    
    kdc1.example.com
    
    
    
    Setting up /etc/krb5/krb5.conf.
    
    
    
    Obtaining TGT for clntconfig/admin ...
    
    Password for clntconfig/admin@EXAMPLE.COM: <Type the password>
    
    
    
    nfs/client.example.com entry ADDED to KDC database.
    
    nfs/client.example.com entry ADDED to keytab.
    
    
    
    host/client.example.com entry ADDED to KDC database.
    
    host/client.example.com entry ADDED to keytab.
    
    
    
    Copied /net/kdc1.example.com/export/clientinstall/krb5.conf.
    
    
    
    ---------------------------------------------------
    
    Setup COMPLETE.
    
    
    
    client#

示例 22–5 使用命令行覆盖项自动配置 Kerberos 客户机

以下示例将覆盖在安装配置文件中设置的 DNSARGKDC 参数。


# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf\

-d dns_fallback -k kdc2.example.com



Starting client setup

---------------------------------------------------



kdc1.example.com



Setting up /etc/krb5/krb5.conf.



Obtaining TGT for clntconfig/admin ...

Password for clntconfig/admin@EXAMPLE.COM: <Type the password>



nfs/client.example.com entry ADDED to KDC database.

nfs/client.example.com entry ADDED to keytab.



host/client.example.com entry ADDED to KDC database.

host/client.example.com entry ADDED to keytab.



Copied /net/kdc1.example.com/export/install/krb5.conf.



---------------------------------------------------

Setup COMPLETE.



client#

Procedure如何交互配置 Kerberos 客户机

此过程使用 kclient 安装实用程序而不是使用安装配置文件。

  1. 成为超级用户。

  2. 运行 kclient 安装脚本。

    需要提供以下信息:

    • Kerberos 领域名称

    • 主 KDC 主机名

    • 管理主体名称

    • 管理主体的口令


示例 22–6 运行 kclient 安装实用程序

以下输出给出了运行 kclient 命令的结果。


client# /usr/sbin/kclient



Starting client setup

---------------------------------------------------



Do you want to use DNS for kerberos lookups ? [y/n]: n

        No action performed.

Enter the Kerberos realm: EXAMPLE.COM

Specify the KDC hostname for the above realm: kdc1.example.com



Setting up /etc/krb5/krb5.conf.



Enter the krb5 administrative principal to be used: clntconfig/admin

Obtaining TGT for clntconfig/admin ...

Password for clntconfig/admin@EXAMPLE.COM: <Type the password>

Do you plan on doing Kerberized nfs ? [y/n]: n



host/client.example.com entry ADDED to KDC database.

host/client.example.com entry ADDED to keytab.



Do you want to copy over the master krb5.conf file ? [y/n]: y

Enter the pathname of the file to be copied: \

/net/kdc1.example.com/export/install/krb5.conf



Copied /net/kdc1.example.com/export/install/krb5.conf.



---------------------------------------------------

Setup COMPLETE !

#

Procedure如何手动配置 Kerberos 客户机

在此过程中,将使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • 主 KDC = kdc1.example.com

  • 从 KDC = kdc2.example.com

  • 客户机 = client.example.com

  • admin 主体 = kws/admin

  • 用户主体 = mre

  • 联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956


    注 –

    调整该 URL 以指向“SEAM Administration Tool”部分,如SEAM Administration Tool 中的联机帮助 URL中所述。


  1. 成为超级用户。

  2. 编辑 Kerberos 配置文件 ( krb5.conf)。

    要从 Kerberos 缺省版本更改该文件,需要更改领域名称和服务器名称。您还需要标识 gkadmin 帮助文件的路径。


    kdc1 # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
            default_realm = EXAMPLE.COM
    
    
    
    [realms]
    
                    EXAMPLE.COM = {
    
                    kdc = kdc1.example.com
    
                    kdc = kdc2.example.com
    
                    admin_server = kdc1.example.com
    
            }
    
    
    
    [domain_realm]
    
            .example.com = EXAMPLE.COM
    
    #
    
    # if the domain name and realm name are equivalent, 
    
    # this entry is not needed
    
    #
    
    [logging]
    
            default = FILE:/var/krb5/kdc.log
    
            kdc = FILE:/var/krb5/kdc.log
    
    
    
    [appdefaults]
    
        gkadmin = {
    
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
    

    注 –

    如果要限制加密类型,可以设置 default_tkt_enctypesdefault_tgs_enctypes 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型


  3. (可选的)更改用于定位 KDC 的过程。

    缺省情况下,使用主机和域名到 kerberos 领域的映射定位 KDC。可以通过将 dns_lookup_kdcdns_lookup_realmdns_fallback 添加到 krb5.conf 文件的 libdefaults 部分来更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。

  4. (可选的)使用 NTP 或其他时钟同步机制将客户机时钟与主 KDC 时钟同步。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  5. 启动 kadmin

    可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. (可选的)如果不存在用户主体,请创建用户主体。

      仅当尚未对与此主机关联的用户指定主体时,才需要创建用户主体。


      kadmin: addprinc mre
      
      Enter password for principal mre@EXAMPLE.COM: <Type the password>
      
      Re-enter password for principal mre@EXAMPLE.COM: <Type it again>
      
      kadmin: 
    2. (可选的)创建 root 主体。

      如果客户机不要求对使用 NFS 服务挂载的远程文件系统拥有 root 访问权限,则可以跳过此步骤。为了避免创建领域范围的 root 主体,root 主体应是由两个部分组成的主体(第二个组成部分为 Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey root/client.example.com
      
      Principal "root/client.example.com" created.
      
      kadmin:
    3. 创建 host 主体。

      host 主体用于验证应用程序。


      kadmin: addprinc -randkey host/denver.example.com
      
      Principal "host/denver.example.com@EXAMPLE.COM" created.
      
      kadmin: 
    4. (可选的)将服务器的 NFS 服务主体添加到服务器的密钥表文件中。

      仅当客户机需要使用 Kerberos 验证访问 NFS 文件系统时,才需要执行此步骤。


      kadmin: ktadd nfs/denver.example.com
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    5. (可选的)将 root 主体添加到服务器的密钥表文件中。

      如果添加了 root 主体,则必须执行此步骤,以便客户机对使用 NFS 服务挂载的文件系统拥有 root 访问权限。如果需要非交互 root 访问权限(例如,以 root 身份运行 cron 作业),也必须执行此步骤。


      kadmin: ktadd root/client.example.com
      
      Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    6. host 主体添加到服务器的密钥表文件中。


      kadmin: ktadd host/denver.example.com
      
      Entry for principal host/denver.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/denver.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/denver.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/denver.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin:
    7. 退出 kadmin


      kadmin: quit
      
  6. (可选的)要在 NFS 上使用 Kerberos,请在 /etc/nfssec.conf 文件中启用 Kerberos 安全模式。

    编辑 /etc/nfssec.conf 文件并删除位于 Kerberos 安全模式前面的 "#"。


    # cat /etc/nfssec.conf
    
     .
    
     .
    
    #
    
    # Uncomment the following lines to use Kerberos V5 with NFS
    
    #
    
    krb5            390003  kerberos_v5     default -               # RPCSEC_GSS
    
    krb5i           390004  kerberos_v5     default integrity       # RPCSEC_GSS
    
    krb5p           390005  kerberos_v5     default privacy         # RPCSEC_GSS
  7. 如果希望客户机自动更新 TGT 或者向用户发出有关 Kerberos 票证失效的警告,请在 /etc/krb5/warn.conf 文件中创建相应的项。

    有关更多信息,请参见 warn.conf(4) 手册页。


示例 22–7 使用非 Kerberos KDC 设置 Kerberos 客户机

可以设置 Kerberos 客户机,使其与非 Kerberos KDC 协同工作。在此情况下,必须在 realms 部分的 /etc/krb5/krb5.conf 文件中包括一行。该行更改客户机与 Kerberos 口令更改服务器通信时要使用的协议。该行的格式如下:


[realms]

                EXAMPLE.COM = {

                kdc = kdc1.example.com

                kdc = kdc2.example.com

                admin_server = kdc1.example.com

                kpasswd_protocol = SET_CHANGE

        }


示例 22–8 主机和域名到 Kerberos 领域的映射的 DNS TXT 记录


@ IN SOA kdc1.example.com root.kdc1.example.com (

                                1989020501   ;serial

                                10800        ;refresh

                                3600         ;retry

                                3600000      ;expire

                                86400 )      ;minimum



                        IN      NS      kdc1.example.com.

kdc1                    IN      A       192.146.86.20

kdc2                    IN      A       192.146.86.21



_kerberos.example.com.             IN      TXT     "EXAMPLE.COM"

_kerberos.kdc1.example.com.        IN      TXT     "EXAMPLE.COM"

_kerberos.kdc2.example.com.        IN      TXT     "EXAMPLE.COM"


示例 22–9 Kerberos 服务器位置的 DNS SRV 记录

此示例定义主 KDC、admin 服务器和 kpasswd 服务器的位置记录。


@ IN SOA kdc1.example.com root.kdc1.example.com (

                                1989020501   ;serial

                                10800        ;refresh

                                3600         ;retry

                                3600000      ;expire

                                86400 )      ;minimum



                        IN      NS      kdc1.example.com.

kdc1                    IN      A       192.146.86.20

kdc2                    IN      A       192.146.86.21



_kerberos._udp.EXAMPLE.COM         IN      SRV 0 0 88  kdc1.example.com

_kerberos-adm._udp.EXAMPLE.COM     IN      SRV 0 0 749 kdc1.example.com

_kpasswd._udp.EXAMPLE.COM          IN      SRV 0 0 749 kdc1.example.com

Procedure如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

通过此过程,客户机可以使用 root ID 权限访问要求 Kerberos 验证的 NFS 文件系统。特别是,可以访问使用以下选项共享的 NFS 文件系统:-o sec=krb5,root=client1.sun.com

  1. 成为超级用户。

  2. 启动 kadmin

    可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 为 NFS 客户机创建 root 主体。

      此主体用于对要求 Kerberos 验证的已挂载 NFS 的文件系统提供 root 等效访问权限。为了避免创建领域范围的 root 主体,root 主体应是由两个部分组成的主体(第二个组成部分为 Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey root/client.example.com
      
      Principal "root/client.example.com" created.
      
      kadmin:
    2. root 主体添加到服务器的密钥表文件中。

      如果添加了 root 主体,则必须执行此步骤,以便客户机对使用 NFS 服务挂载的文件系统拥有 root 访问权限。如果需要非交互 root 访问权限(例如,以 root 身份运行 cron 作业),也必须执行此步骤。


      kadmin: ktadd root/client.example.com
      
      Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    3. 退出 kadmin


      kadmin: quit
      

Procedure在 Kerberos 领域中配置用户自动迁移

没有 Kerberos 主体的用户可以自动迁移到现有 Kerberos 领域。通过将 pam_krb5_migrate 模块堆叠在 /etc/pam.conf 的服务验证栈中,可以通过正在使用的服务的 PAM 框架实现迁移。

在此示例中,将配置 rloginother PAM 服务名称以使用自动迁移。将使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • 主 KDC = kdc1.example.com

  • 承载迁移服务的计算机 = server1.example.com

  • 迁移服务主体 = host/server1.example.com

开始之前

server1 设置为 EXAMPLE.COM 领域的 Kerberos 客户机。有关更多信息,请参见配置 Kerberos 客户机

  1. 检查是否存在 server1 的主机服务主体。

    server1keytab 文件中的主机服务主体用于向主 KDC 验证该服务器。


    server1 # klist -k
    
    Keytab name: FILE:/etc/krb5/krb5.keytab
    
    	KVNO Principal
    
    	---- ------------------------------------------------
    
    	   3 host/server1.example.com@EXAMPLE.COM
    
    	   3 host/server1.example.com@EXAMPLE.COM
    
    	   3 host/server1.example.com@EXAMPLE.COM
    
    	   3 host/server1.example.com@EXAMPLE.COM
    
  2. 对 PAM 配置文件进行更改。

    pam_krb5_migrate PAM 模块添加到 rloginother 服务名称的验证栈中。系统将自动为使用 rlogintelnetssh 而不具有 Kerberos 主体的用户创建主体。


    # cat /etc/pam.conf
    
     .
    
     .
    
    #
    
    # rlogin service (explicit because of pam_rhost_auth)
    
    #
    
    rlogin  auth sufficient         pam_rhosts_auth.so.1
    
    rlogin  auth requisite          pam_authtok_get.so.1
    
    rlogin  auth required           pam_dhkeys.so.1
    
    rlogin  auth required           pam_unix_cred.so.1
    
    rlogin  auth required           pam_unix_auth.so.1
    
    rlogin  auth sufficient         pam_krb5.so.1
    
    rlogin  auth optional           pam_krb5_migrate.so.1
    
    #
    
     .
    
     .
    
    #
    
    # Default definitions for Authentication management
    
    # Used when service name is not explicitly mentioned for authentication
    
    #
    
    other   auth requisite          pam_authtok_get.so.1
    
    other   auth required           pam_dhkeys.so.1
    
    other   auth required           pam_unix_cred.so.1
    
    other   auth required           pam_unix_auth.so.1
    
    other   auth sufficient         pam_krb5.so.1
    
    other   auth optional           pam_krb5_migrate.so.1
    
  3. (可选的)如果需要,可强制立即更改口令。

    可以将新建 Kerberos 帐户的口令失效时间设置为当前时间(现在),以便强制立即更改 Kerberos 口令。要将失效时间设置为当前时间,请将 expire_pw 选项添加到使用 pam_krb5_migrate 模块的行中。有关更多信息,请参见 pam_krb5_migrate(5) 手册页。


    # cat /etc/pam.conf
    
     .
    
     .
    
    rlogin  auth optional           pam_krb5_migrate.so.1 expire_pw
    
    #
    
     .
    
     .
    
    other   auth optional           pam_krb5_migrate.so.1 expire_pw
    
  4. 在主 KDC 上,更新访问控制文件。

    以下项将为所有用户(root 用户除外)授予对 host/server1.example.com 服务主体的迁移和查询权限。务必注意,不应使用 U 权限迁移 kadm5.acl 文件中列出的用户。这些项必须位于允许所有用户或 ui 项之前。有关更多信息,请参见 kadm5.acl(4) 手册页。


    kdc1 # cat /etc/krb5/kadm5.acl
    
    host/server1.example.com@EXAMPLE.COM U root
    
    host/server1.example.com@EXAMPLE.COM ui *
    
    */admin@EXAMPLE.COM *
  5. 在主 KDC 上,重新启动 Kerberos 管理守护进程。

    通过此步骤,kadmind 守护进程可以使用新的 kadm5.acl 项。


    kdc1 # svcadm restart network/security/kadmin
    
  6. 在主 KDC 上,向 pam.conf 文件中添加项。

    通过以下项,kadmind 守护进程可以使用 k5migrate PAM 服务来验证需要迁移的帐户的 UNIX 用户口令。


    # grep k5migrate /etc/pam.conf
    
    k5migrate        auth    required        pam_unix_auth.so.1
    
    k5migrate        account required        pam_unix_account.so.1

同步 KDC 和 Kerberos 客户机的时钟

所有参与 Kerberos 验证系统的主机都必须在指定的最长时间(称为时钟相位差)内同步其内部时钟。针对这一要求,需要进行另一种 Kerberos 安全检查。如果任意两台参与主机之间的时间偏差超过了时钟相位差,则客户机请求会被拒绝。

时钟相位差还确定应用程序服务器必须跟踪所有 Kerberos 协议消息的时间长度,以便识别和拒绝重放的请求。因此,时钟相位差的值越大,应用程序服务器必须收集的信息就越多。

时钟相位差的最大缺省值为 300 秒(5 分钟)。可以在 krb5.conf 文件的 libdefaults 部分中更改此缺省值。


注 –

出于安全原因,不要将时钟相位差增大到超过 300 秒。


由于维护 KDC 和 Kerberos 客户机之间的同步时钟非常重要,因此应使用网络时间协议 (Network Time Protocol, NTP) 软件同步这些时钟。从 Solaris 2.6 发行版开始,Solaris 软件中提供了由美国特拉华大学开发的 NTP 公用软件。


注 –

同步时钟的另一种方法是使用 rdate 命令和 cron 作业(一种比使用 NTP 参与性更小的过程)。但是,本节重点介绍如何使用 NTP。并且,如果使用网络来同步时钟,时钟同步协议本身必须是安全的。


通过 NTP,可以在网络环境中管理准确时间或网络时钟同步,或者同时管理这两者。 本质上,NTP 是一种服务器/客户机实现。可以选择一个系统(NTP 服务器)作为主时钟。然后,设置所有其他系统(NTP 客户机),使这些系统的时钟与主时钟同步。

为了同步时钟,NTP 使用 xntpd 守护进程,该守护进程设置并维护 UNIX 系统时间,使其与 Internet 标准时间服务器的时间保持一致。以下给出了此服务器/客户机 NTP 实现的示例。

图 22–1 使用 NTP 同步时钟

该图显示了 NTP 中央服务器作为正在运行 xntpd 守护进程的 NTP 客户机和 Kerberos 客户机的主时钟。

确保 KDC 和 Kerberos 客户机保持时钟同步涉及以下步骤的实现:

  1. 在网络上设置 NTP 服务器。此服务器可以是除主 KDC 之外的任何系统。要了解 NTP 服务器任务,请参见《系统管理指南:网络服务》中的“管理网络时间协议(任务)”

  2. 在网络上配置 KDC 和 Kerberos 客户机时,将它们设置为 NTP 服务器的 NTP 客户机。要了解 NTP 客户机任务,请参见《系统管理指南:网络服务》中的“管理网络时间协议(任务)”

交换主 KDC 和从 KDC

使用本节中的过程可以更容易地将主 KDC 与从 KDC 进行交换。仅当主 KDC 服务器由于某种原因出现故障时,或者需要重新安装主 KDC(例如,由于安装了新硬件)时,才应将主 KDC 与从 KDC 进行交换。

Procedure如何配置可交换的从 KDC

在希望其可以成为主 KDC 的从 KDC 服务器上执行此过程。此过程假定将使用增量传播。

  1. 在安装 KDC 过程中使用主 KDC 和可交换从 KDC 的别名。

    定义 KDC 的主机名时,请确保 DNS 中包括每个系统的别名。此外,在 /etc/krb5/krb5.conf 文件中定义主机时也应使用别名。

  2. 逐步完成从 KDC 安装。

    在进行任何交换之前,在该领域中此服务器的作用应与任何其他从 KDC 相同。有关说明,请参见如何配置从 KDC

  3. 移动主 KDC 命令

    要禁止从该从 KDC 运行主 KDC 命令,请将 kpropkadmindkadmin.local 命令移到一个保留位置。


    kdc4 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
    
    kdc4 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
    
    kdc4 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
    

Procedure如何交换主 KDC 和从 KDC

在此过程中,要交换出的主 KDC 服务器名为 kdc1。将成为新的主 KDC 的从 KDC 名为 kdc4。此过程假定将使用增量传播。

开始之前

此过程要求已将该从 KDC 服务器设置为可交换的从 KDC。有关更多信息,请参见如何配置可交换的从 KDC

  1. 在新的主 KDC 上,启动 kadmin


    kdc4 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    
    1. kadmind 服务创建新的主体。

      以下示例中的第一个 addprinc 命令显示为两行,但实际上该命令应在同一行中键入。


      kadmin: addprinc -randkey -allow_tgs_req +password_changing_service -clearpolicy \
      
             changepw/kdc4.example.com
      
      Principal "changepw/kdc4.example.com@ENG.SUN.COM" created.
      
      kadmin: addprinc -randkey -allow_tgs_req -clearpolicy kadmin/kdc4.example.com
      
      Principal "kadmin/kdc4.example.com@EXAMPLE.COM" created.
      
      kadmin: 
      
    2. 创建密钥表文件。


      kadmin: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.example.com
      
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.example.com
      
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
      
    3. 退出 kadmin


      kadmin: quit
      
  2. 在新的主 KDC 上,强制执行同步。

    以下步骤将在从服务器上强制执行完全 KDC 更新。


    kdc4 # svcadm disable network/security/krb5kdc
    
    kdc4 # rm /var/krb5/principal.ulog
    
    kdc4 # svcadm enable network/security/krb5kdc
    
  3. 在新的主 KDC 上,清除更新日志。

    以下步骤将重新初始化新的主 KDC 服务器的更新日志。


    kdc4 # svcadm disable network/security/krb5kdc
    
    kdc4 # rm /var/krb5/principal.ulog
    
    
  4. 在旧的主 KDC 上,中止 kadmindkrb5kdc 进程。

    中止 kadmind 进程后,可防止对 KDC 数据库进行任何更改。


    kdc1 # svcadm disable network/security/kadmin
    
    kdc1 # svcadm disable network/security/krb5kdc
    
  5. 在旧的主 KDC 上,指定请求传播的轮询时间。

    /etc/krb5/kdc.conf 中的 sunw_dbprop_master_ulogsize 项替换为定义 sunw_dbprop_slave_poll 的项。该项将轮询时间设置为 2 分钟。


    kdc1 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_slave_poll = 2m
    
            }
  6. 在旧的主 KDC 上,移动主 KDC 命令和 kadm5.acl 文件。

    要禁止运行主 KDC 命令,请将 kpropkadmindkadmin.local 命令移到一个保留位置。


    kdc1 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
    
    kdc1 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
    
    kdc1 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
    
    kdc1 # mv /etc/krb5/kadm5.acl /etc/krb5/kadm5.acl.save
    
  7. 在 DNS 服务器上,更改主 KDC 的别名。

    要更改服务器,请编辑 example.com 区域文件并更改 masterkdc 的项。


    masterkdc IN CNAME kdc4
  8. 在 DNS 服务器上,重新启动 Internet 域名服务器。

    运行以下命令以重新装入新的别名信息:


    # svcadm refresh network/dns/server
    
  9. 在新的主 KDC 上,移动主 KDC 命令和从 kpropd.acl 文件。


    kdc4 # mv /usr/lib/krb5/kprop.save /usr/lib/krb5/kprop
    
    kdc4 # mv /usr/lib/krb5/kadmind.save /usr/lib/krb5/kadmind
    
    kdc4 # mv /usr/sbin/kadmin.local.save /usr/sbin/kadmin.local
    
    kdc4 # mv /etc/krb5/kpropd.acl /etc/krb5/kpropd.acl.save
    
  10. 在新的主 KDC 上,创建 Kerberos 访问控制列表文件 (kadm5.acl)。

    填充后,/etc/krb5/kadm5.acl 文件应包含允许管理 KDC 的所有主体名称。该文件还应列出请求增量传播的所有从 KDC。有关更多信息,请参见 kadm5.acl(4) 手册页。


    kdc4 # cat /etc/krb5/krb5.acl
    
    kws/admin@EXAMPLE.COM   *
    
    kiprop/kdc1.example.com@EXAMPLE.COM p
    
  11. 在新的主 KDC 上的 kdc.conf 文件中,指定更新日志大小。

    sunw_dbprop_slave_poll 项替换为定义 sunw_dbprop_master_ulogsize 的项。该项将日志大小设置为 1000 项。


    kdc1 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_master_ulogsize = 1000
    
            }
  12. 在新的主 KDC 上,将 kiprop 主体添加到 kadmind 密钥表文件中。


    kdc4 # kadmin.local
    
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc4.example.com
    
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
    
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type Triple DES cbc
    
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type ARCFOUR
    
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type DES cbc mode
    
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    kadmin.local: quit
    
  13. 在新的主 KDC 上,启动 kadmind krb5kdc


    kdc4 # svcadm enable network/security/krb5kdc
    
    kdc4 # svcadm enable network/security/kadmin
    
  14. 在旧的主 KDC 上,添加 kiprop 服务主体。

    通过将 kiprop 主体添加到 krb5.keytab 文件中,kpropd 守护进程可以对其自身进行增量传播服务验证。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    
    Authenticating as pricipal kws/admin@EXAMPLE.COM with password.
    
    Enter password: <Type kws/admin password>
    
    kadmin: ktadd kiprop/kdc1.example.com
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
    
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
    
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
    
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
    
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    kadmin: quit
    
  15. 在旧的主 KDC 上,将 krb5.conf 中列出的每个 KDC 的项添加到传播配置文件 kpropd.acl 中。


    kdc1 # cat /etc/krb5/kpropd.acl
    
    host/kdc1.example.com@EXAMPLE.COM
    
    host/kdc2.example.com@EXAMPLE.COM
    
    host/kdc3.example.com@EXAMPLE.COM
    
    host/kdc4.example.com@EXAMPLE.COM
  16. 在旧的主 KDC 上,启动 kpropdkrb5kdc

    启动 krb5kdc 守护进程时,如果将系统配置为从 KDC,则 kpropd 也将启动。


    kdc1 # svcadm enable network/security/krb5kdc
    

管理 Kerberos 数据库

Kerberos 数据库是 Kerberos 的主干,必须正确维护。本节介绍有关如何管理 Kerberos 数据库的一些过程,例如备份和恢复数据库、设置增量或并行传播以及管理存储文件。如何配置主 KDC 中介绍了初始设置该数据库的步骤。

备份和传播 Kerberos 数据库

将 Kerberos 数据库从主 KDC 传播到从 KDC 是最重要的配置任务之一。如果传播频率不够高,则主 KDC 和从 KDC 将不能同步。因此,如果主 KDC 关闭,则从 KDC 将不能获取最新的数据库信息。此外,如果出于平衡负载目的将从 KDC 配置为主 KDC,则将该从 KDC 用作主 KDC 的客户机将不能获取最新的信息。所以,必须确保传播频率足够高,或者基于更改 Kerberos 数据库的频率配置服务器使其进行增量传播。增量传播优先于手动传播,因为手动传播数据库时需要更多的管理开销。此外,执行完全数据库传播时效率很低。

配置主 KDC 时,可以在 cron 作业中设置 kprop_script 命令以自动将 Kerberos 数据库备份到 /var/krb5/slave_datatrans 转储文件,并将该文件传播到从 KDC。不过,与其他文件一样,Kerberos 数据库可能会损坏。如果从 KDC 上的数据受损,您可能无法注意到,因为下一次数据库自动传播会安装一个新的副本。但是,如果主 KDC 上的数据受损,则下一次传播期间会将损坏的数据库传播到所有从 KDC。而且,损坏的备份会覆写主 KDC 上先前未损坏的备份文件。

由于在这种情况下不存在任何“安全”的备份副本,因此还应设置 cron 作业,以便定期将 slave_datatrans 转储文件复制到另一位置,或者使用 kdb5_utildump 命令创建另一份单独的备份副本。这样,如果数据库受损,则可以使用 kdb5_utilload 命令在主 KDC 上恢复最新备份。

另一条重要注意事项是:由于数据库转储文件包含主体密钥,因此需要阻止未经授权的用户访问该文件。缺省情况下,只有 root 身份才具有读写数据库转储文件的权限。要阻止未经授权的访问,请仅使用 kprop 命令传播数据库转储文件,该命令会对要传送的数据进行加密。此外,kprop 仅将数据传播到从 KDC,这可以最大程度地降低将数据库转储文件意外发送到未经授权的主机的几率。


注意 – 注意 –

如果传播 Kerberos 数据库之后对其进行了更新,并且在下一次传播之前该数据库受损,则从 KDC 将不包含这些更新。这些更新将丢失。因此,如果要在计划的定期传播之前向 Kerberos 数据库中添加重要的更新,应手动传播该数据库,以避免数据丢失。


kpropd.acl 文件

KDC 上的 kpropd.acl 文件提供主机主体名称的列表(一个名称占一行),用于指定 KDC 可以通过传播从其接收更新数据库的系统。如果使用主 KDC 传播所有从 KDC,则每个从 KDC 上的 kpropd.acl 文件仅需包含主 KDC 的主机主体名称。

但是,本书中的 Kerberos 安装和后续配置步骤将指导您如何将相同的 kpropd.acl 文件添加到主 KDC 和从 KDC 中。此文件包含所有 KDC 主机主体名称。通过此配置,在传播 KDC 临时不可用时,可以从任何 KDC 进行传播。而且,通过在所有 KDC 上保留相同副本,可以更容易地维护配置。

kprop_script 命令

kprop_script 命令使用 kprop 命令将 Kerberos 数据库传播到其他 KDC。如果在从 KDC 上运行 kprop_script 命令,则会将该从 KDC 的 Kerberos 数据库副本传播到其他 KDC。kprop_script 的参数接受主机名列表,该列表以空格分隔,表示要传播的 KDC。

运行 kprop_script 时,将在 /var/krb5/slave_datatrans 文件中创建 Kerberos 数据库的备份,并将该文件复制到指定的 KDC。在完成传播之前,Kerberos 数据库处于锁定状态。

Procedure如何备份 Kerberos 数据库

  1. 成为主 KDC 的超级用户。

  2. 使用 kdb5_util 命令的 dump 命令备份 Kerberos 数据库。


    # /usr/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]
    -verbose

    列显要备份的每个主体和策略的名称。

    dbname

    定义要备份的数据库的名称。请注意,可以指定文件的绝对路径。 如果未指定 -d 选项,则缺省数据库名称为 /var/krb5/principal

    filename

    定义用于备份数据库的文件。可以指定文件的绝对路径。如果未指定文件,则数据库将转储到标准输出。

    principals

    定义要备份的一个或多个主体的列表(以空格分隔)。必须使用全限定主体名称。如果未指定任何主体,则将备份整个数据库。


示例 22–10 备份 Kerberos 数据库

在以下示例中,Kerberos 数据库将备份到名为 dumpfile 的文件中。由于指定了 -verbose 选项,因此备份时会列显每个主体。


# kdb5_util dump -verbose dumpfile 

kadmin/kdc1.eng.example.com@ENG.EXAMPLE.COM 

krbtgt/eng.example.com@ENG.EXAMPLE.COM 

kadmin/history@ENG.EXAMPLE.COM 

pak/admin@ENG.EXAMPLE.COM 

pak@ENG.EXAMPLE.COM

changepw/kdc1.eng.example.com@ENG.EXAMPLE.COM

在以下示例中,将备份 Kerberos 数据库中的 pakpak/admin 主体。


# kdb5_util dump -verbose dumpfile pak/admin@ENG.EXAMPLE.COM pak@ENG.EXAMPLE.COM

pak/admin@ENG.EXAMPLE.COM

pak@ENG.EXAMPLE.COM

Procedure如何恢复 Kerberos 数据库

  1. 成为主 KDC 的超级用户。

  2. 使用 kdb_util 命令的 load 命令恢复 Kerberos 数据库。


    # /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 
    -verbose

    列显要恢复的每个主体和策略的名称。

    dbname

    定义要恢复的数据库的名称。请注意,可以指定文件的绝对路径。如果未指定 -d 选项,则缺省数据库名称为 /var/krb5/principal

    -update

    更新现有数据库。否则,会创建新数据库或覆写现有数据库。

    filename

    定义用于恢复数据库的文件。可以指定文件的绝对路径。


示例 22–11 恢复 Kerberos 数据库

在以下示例中,将从 dumpfile 文件将名为 database1 的数据库恢复到当前目录。由于未指定 -update 选项,恢复操作将创建一个新数据库。


# kdb5_util load -d database1 dumpfile

Procedure如何重新装入 Kerberos 数据库

如果未在运行 Solaris 10 发行版的服务器上创建 KDC 数据库,则通过重新装入该数据库,可以利用改进的数据库格式。

开始之前

请确保数据库使用的是旧格式。请参见特定说明。

  1. 在主 KDC 上,停止 KDC 守护进程。


    kdc1 # svcadm disable network/security/krb5kdc
    
    kdc1 # svcadm disable network/security/kadmin
    
  2. 转储 KDC 数据库。


    kdc1 # kdb5_util dump /tmp/prdb.txt
    
  3. 保存当前数据库文件的副本。


    kdc1 # cd /var/krb5
    
    kdc1 # mkdir old
    
    kdc1 # mv princ* old/
    
  4. 装入数据库。


    kdc1 # kdb5_util load /tmp/prdb.txt
    
  5. 启动 KDC 守护进程。


    kdc1 # svcadm enable network/security/krb5kdc
    
    kdc1 # svcadm enable network/security/kadmin
    

Procedure如何重新配置主 KDC 以使用增量传播

此过程中的步骤可用于重新配置现有的主 KDC,以使用增量传播。在此过程中,将使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • 主 KDC = kdc1.example.com

  • 从 KDC = kdc2.example.com

  • admin 主体 = kws/admin

  1. kdc.conf 中添加项。

    需要启用增量传播,并选择主 KDC 将在日志中存储的更新数。有关更多信息,请参见 kdc.conf(4) 手册页。


    kdc1 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_master_ulogsize = 1000
    
            }
  2. 创建 kiprop 主体。

    kiprop 主体用于验证主 KDC 服务器和授权来自主 KDC 的更新。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: addprinc -randkey kiprop/kdc1.example.com
    
    Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
    
    kadmin: addprinc -randkey kiprop/kdc2.example.com
    
    Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
    
    kadmin:
  3. kiprop 主体添加到 kadmind 密钥表文件中

    通过将 kiprop 主体添加到 kadm5.keytab 文件中,kadmind 命令可以在启动时对其自身进行验证。


    kadmin: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
    
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
    
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
    
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
    
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    
    kadmin: quit
    
  4. (可选的)在主 KDC 上,将 kiprop 项添加到 kpropd.acl

    通过此项,主 KDC 可以接收对 kdc2 服务器的增量传播请求。


    kdc1 # cat /etc/krb5/kpropd.acl
    
    host/kdc1.example.com@EXAMPLE.COM
    
    host/kdc2.example.com@EXAMPLE.COM
    
    */admin@EXAMPLE.COM *
    
    kiprop/kdc2.example.com@EXAMPLE.COM p
    
  5. 注释掉 root crontab 文件中的 kprop 行。

    此步骤禁止从 KDC 传播其 KDC 数据库副本。


    kdc1 # crontab -e
    
    #ident  "@(#)root       1.20    01/11/06 SMI"
    
    #
    
    # The root crontab should be used to perform accounting data collection.
    
    #
    
    # The rtc command is run to adjust the real time clock if and when
    
    # daylight savings time changes.
    
    #
    
    10 3 * * * /usr/sbin/logadm
    
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    
    1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
    
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    
    #10 3 * * * /usr/lib/krb5kprop_script kdc2.example.sun.com #SUNWkr5ma
  6. 重新启动 kadmind


    kdc1 # svcadm restart network/security/kadmin
    
    
  7. 重新配置所有使用增量传播的从 KDC 服务器。

Procedure如何重新配置从 KDC 以使用增量传播

  1. krb5.conf 中添加项。

    这些新项启用增量传播并将轮询时间设置为 2 分钟。


    kdc2 # cat /etc/krb5/kdc.conf
    
    [kdcdefaults]
    
            kdc_ports = 88,750
    
    
    
    [realms]
    
            EXAMPLE.COM= {
    
                    profile = /etc/krb5/krb5.conf
    
                    database_name = /var/krb5/principal
    
                    admin_keytab = /etc/krb5/kadm5.keytab
    
                    acl_file = /etc/krb5/kadm5.acl
    
                    kadmind_port = 749
    
                    max_life = 8h 0m 0s
    
                    max_renewable_life = 7d 0h 0m 0s
    
                    sunw_dbprop_enable = true
    
                    sunw_dbprop_slave_poll = 2m
    
            }
  2. kiprop 主体添加到 krb5.keytab 文件中。


    kdc2 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: ktadd kiprop/kdc2.example.com
    
    Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
    
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type Triple DES cbc
    
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type ARCFOUR
    
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
    
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    
    kadmin: quit
    
  3. 禁用 kpropd


    kdc2 # svcadm disable network/security/krb5_prop
    
  4. 重新启动 KDC 服务器。


    kdc2 # svcadm restart network/security/krb5kdc
    

Procedure如何配置从 KDC 以使用完全传播

此过程说明如何重新配置运行 Solaris 10 发行版的从 KDC 服务器,以使用完全传播。通常,只有运行 Solaris 9 发行版或更早发行版的主 KDC 服务器才需要使用此过程。在这种情况下,主 KDC 服务器不支持增量传播,因此需要配置从 KDC 以允许进行传播。

在此过程中,将配置名为 kdc3 的从 KDC。此过程使用以下配置参数:

  • 领域名称 = EXAMPLE.COM

  • DNS 域名 = example.com

  • 主 KDC = kdc1.example.com

  • 从 KDC = kdc2.example.comkdc3.example.com

  • admin 主体 = kws/admin

  • 联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956


    注 –

    调整该 URL 以指向“SEAM Administration Tool”部分,如SEAM Administration Tool 中的联机帮助 URL中所述。


开始之前

必须配置主 KDC。有关此从 KDC 是否可交换的特定说明,请参见交换主 KDC 和从 KDC

  1. 在主 KDC 上,成为超级用户。

  2. 在主 KDC 上,启动 kadmin

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 在主 KDC 上,将从主机主体添加到数据库中(如果尚未执行此操作)。

      要使从 KDC 正常工作,该从 KDC 必须具有主机主体。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey host/kdc3.example.com
      
      Principal "host/kdc3@EXAMPLE.COM" created.
      
      kadmin: 
    2. 退出 kadmin


      kadmin: quit
      
  3. 在主 KDC 上,编辑 Kerberos 配置文件 (krb5.conf)。

    需要添加每个从 KDC 的项。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。


    kdc1 # cat /etc/krb5/krb5.conf
    
     .
    
     .
    
    [realms]
    
                    EXAMPLE.COM = {
    
                    kdc = kdc1.example.com
    
                    kdc = kdc2.example.com
    
                    kdc = kdc3.example.com
    
                    admin_server = kdc1.example.com
    
            }
  4. 在主 KDC 上,将主 KDC 和每个从 KDC 的项添加到 kpropd.acl 文件中。

    有关此文件的完整说明,请参见 kprop(1M) 手册页。


    kdc1 # cat /etc/krb5/kpropd.acl
    
    host/kdc1.example.com@EXAMPLE.COM
    
    host/kdc2.example.com@EXAMPLE.COM
    
    host/kdc3.example.com@EXAMPLE.COM
    
  5. 在所有从 KDC 上,复制主 KDC 服务器的 KDC 管理文件。

    由于主 KDC 服务器已更新每台 KDC 服务器所需的信息,因此需要在所有从 KDC 上执行此步骤。可以使用 ftp 或类似的传送机制从主 KDC 获取以下文件的副本:

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  6. 在所有从 KDC 上,请确保未填充 Kerberos 访问控制列表文件 kadm5.acl

    未修改的 kadm5.acl 文件如下所示:


    kdc2 # cat /etc/krb5/kadm5.acl
    
    */admin@___default_realm___ *

    如果此文件中包含 kiprop 项,请删除它们。

  7. 在新的从 KDC 上,启动 kadmin 命令。

    必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。


    kdc2 # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 使用 kadmin 将从 KDC 的 host 主体添加到从 KDC 的密钥表文件中。

      此项可使 kprop 和其他基于 Kerberos 的应用程序正常工作。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: ktadd host/kdc3.example.com
      
      Entry for principal host/kdc3.example.com with kvno 3, encryption type AES-128 CTS mode
      
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc3.example.com with kvno 3, encryption type Triple DES cbc
      
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc3.example.com with kvno 3, encryption type ARCFOUR
      
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      Entry for principal host/kdc3.example.com with kvno 3, encryption type DES cbc mode
      
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      
      kadmin: 
    2. 退出 kadmin


      kadmin: quit
      
  8. 在主 KDC 上,将从 KDC 名称添加到 cron 作业中,该作业通过运行 crontab -e 自动运行备份。

    kprop_script 行的结尾添加每个从 KDC 服务器的名称。


    10 3 * * * /usr/lib/krb5/kprop_script kdc2.example.com kdc3.example.com
    

    您可能还希望更改备份的时间。此项将在每天上午的 3:10 启动备份过程。

  9. 在新的从 KDC 上,启动 Kerberos 传播守护进程。


    kdc3 # svcadm enable network/security/krb5_prop
    
  10. 在主 KDC 上,使用 kprop_script 备份并传播数据库。

    如果已存在数据库的备份副本,则无需完成其他备份。有关进一步的说明,请参见如何手动将 Kerberos 数据库传播到从 KDC


    kdc1 # /usr/lib/krb5/kprop_script kdc3.example.com
    
    Database propagation to kdc3.example.com: SUCCEEDED
  11. 在新的从 KDC 上,使用 kdb5_util 创建一个存储文件。


    kdc3 # /usr/sbin/kdb5_util stash
    
    kdb5_util: Cannot find/read stored master key while reading master key
    
    kdb5_util: Warning: proceeding without master key
    
    
    
    Enter KDC database master key: <Type the key>
    
  12. (可选的)在新的从 KDC 上,使用 NTP 或其他时钟同步机制同步主 KDC 时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  13. 在新的从 KDC 上,启动 KDC 守护进程 (krb5kdc)。


    kdc3 # svcadm enable network/security/krb5kdc
    

Procedure如何验证 KDC 服务器是否已同步

如果配置了增量传播,则此过程可确保已更新从 KDC 上的信息。

  1. 在 KDC 主服务器上,运行 kproplog 命令。


    kdc1 # /usr/sbin/kproplog -h
    
  2. 在从 KDC 服务器上,运行 kproplog 命令。


    kdc2 # /usr/sbin/kproplog -h
    
  3. 检查最后一个序列号和最后一个时间标记的值是否匹配。


示例 22–12 验证 KDC 服务器是否已同步

以下是在主 KDC 服务器上运行 kproplog 命令的结果样例。


kdc1 # /usr/sbin/kproplog -h



Kerberos update log (/var/krb5/principal.ulog)

Update log dump:

    Log version #: 1

    Log state: Stable

    Entry block size: 2048

    Number of entries: 2500

    First serial #: 137966

    Last serial #: 140465

    First time stamp: Fri Nov 28 00:59:27 2004

    Last time stamp: Fri Nov 28 01:06:13 2004

以下是在从 KDC 服务器上运行 kproplog 命令的结果样例。


kdc2 # /usr/sbin/kproplog -h



Kerberos update log (/var/krb5/principal.ulog)

Update log dump:

    Log version #: 1

    Log state: Stable

    Entry block size: 2048

    Number of entries: 0

    First serial #: None

    Last serial #: 140465

    First time stamp: None

    Last time stamp: Fri Nov 28 01:06:13 2004

请注意,最后一个序列号和最后一个时间标记的值相同,这表示从 KDC 服务器与主 KDC 服务器同步。

请注意,在从 KDC 服务器的输出中,从 KDC 服务器的更新日志中不存在任何更新项。这是因为与主 KDC 服务器不同,从 KDC 服务器不保留更新。此外,由于第一个序列号或第一个时间标记不是相关信息,因此从 KDC 服务器也不包括这些信息。


Procedure如何手动将 Kerberos 数据库传播到从 KDC

此过程说明如何使用 kprop 命令传播 Kerberos 数据库。如果需要在定期的 cron 作业之外将从 KDC 与主 KDC 同步,可使用此过程。与 kprop_script 不同,可以使用 kprop 仅传播当前数据库备份,而无需先创建 Kerberos 数据库的新备份。


注 –

如果使用的是增量传播,则不要使用此过程。


  1. 成为主 KDC 的超级用户。

  2. (可选的)使用 kdb5_util 命令备份数据库。


    # /usr/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. 使用 kprop 命令将数据库传播到从 KDC。


    # /usr/lib/krb5/kprop -f /var/krb5/slave_datatrans slave-KDC
    

示例 22–13 使用 kprop_script 手动将 Kerberos 数据库传播到从 KDC

如果要备份数据库,并在定期的 cron 作业之外将数据库传播到从 KDC,则还可以按如下所示使用 kprop_script 命令:


# /usr/lib/krb5/kprop_script slave-KDC

设置并行传播

在大多数情况下,会以独占的方式使用主 KDC 将其 Kerberos 数据库传播到从 KDC。但是,如果站点上有很多从 KDC,则可以考虑共享装入传播进程,即所谓的并行传播


注 –

如果使用的是增量传播,则不要使用此过程。


通过并行传播,特定的从 KDC 可以与主 KDC 共享传播功能。通过共享此功能,可以更快地完成传播并减轻主 KDC 的工作。

例如,假设站点上有一个主 KDC 和六个从 KDC(如图 22–2 中所示),其中,slave-1slave-3 组成一个逻辑组,slave-4slave-6 组成另一个逻辑组。要设置并行传播,可以使主 KDC 将数据库传播到 slave-1slave-4。而这些从 KDC 又可将数据库传播到其组中的从 KDC。

图 22–2 并行传播配置示例

该图显示了带有两个传播从 KDC 的主 KDC。每个传播从 KDC 将主 KDC 数据库传播到其从 KDC。

设置并行传播的配置步骤

以下不是详细的逐步过程,而是用于启用并行传播的配置步骤的高级列表。这些步骤包括:

  1. 在主 KDC 上,更改其 cron 作业的 kprop_script 项,以仅包括将执行后续传播的从 KDC(传播从 KDC)的参数。

  2. 在每个传播从 KDC 上,将 kprop_script 项添加到其 cron 作业中,其中必须包括要传播的从 KDC 的参数。要成功地以并行方式进行传播,应设置 cron 作业,使其在将新 Kerberos 数据库传播到从 KDC 本身之后再运行。


    注 –

    对传播从 KDC 进行传播所需的时间取决于多种因素,例如网络带宽和 Kerberos 数据库的大小。


  3. 在每个从 KDC 上,设置相应的传播权限。通过将从 KDC 传播的 KDC 的主机主体名称添加到其 kpropd.acl 文件中,可完成此步骤。


示例 22–14 设置并行传播

图 22–2 为例,主 KDC 的 kprop_script 项与以下示例类似:


0 3 * * * /usr/lib/krb5/kprop_script slave-1.example.com slave-4.example.com

slave-1kprop_script 项与以下示例类似:


0 4 * * * /usr/lib/krb5/kprop_script slave-2.example.com slave-3.example.com

请注意,从 KDC 上的传播在主 KDC 将数据库传播到它一小时后开始。

传播从 KDC 上的 kpropd.acl 文件将包含以下项:


host/master.example.com@EXAMPLE.COM

要由 slave-1 传播的从 KDC 上的 kpropd.acl 文件将包含以下项:


host/slave-1.example.com@EXAMPLE.COM

管理存储文件

存储文件包含 Kerberos 数据库的主密钥,该密钥在创建 Kerberos 数据库时自动创建。如果存储文件损坏,则可以使用 kdb5_util 实用程序的 stash 命令替换损坏的文件。仅在使用 kdb5_utildestroy 命令删除 Kerberos 数据库之后,才应删除存储文件。由于存储文件不会随数据库一起自动删除,所以必须删除存储文件以完成清除。

Procedure如何删除存储文件

  1. 成为包含存储文件的 KDC 的超级用户。

  2. 删除存储文件。


    # rm stash-file
    

    其中,stash-file 是存储文件的路径。缺省情况下,存储文件位于 /var/krb5/.k5. realm 中。


    注 –

    如果需要重新创建存储文件,则可以使用 kdb5_util 命令的 -f 选项。


增强 Kerberos 服务器的安全性

执行以下步骤以增强 Kerberos 应用程序服务器和 KDC 服务器的安全性。

Procedure如何仅启用基于 Kerberos 的应用程序

此过程限制对正在运行 telnetftprcprshrlogin 的服务器的网络访问,以便仅执行经过 Kerberos 验证的事务。

  1. 更改 telnet 服务的 exec 属性。

    -a user 选项添加到 telnetexec 属性,以将访问权限限制为可以提供有效验证信息的那些用户。


    # inetadm -m svc:/network/telnet:default exec="/usr/sbin/in.telnetd -a user"
  2. (可选的)如果尚未配置,则更改 telnet 服务的 exec 属性。

    -a 选项添加到 ftpexec 属性,以仅允许经过 Kerberos 验证的连接。


    # inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a"
  3. 禁用其他服务。

    应禁用 in.rshdin.rlogind 守护进程。


    # svcadm disable network/shell
    
    # svcadm disable network/login:rlogin
    

Procedure如何限制对 KDC 服务器的访问

主 KDC 服务器和从 KDC 服务器都包含存储在本地的 KDC 数据库副本。限制对这些服务器的访问(以便保证数据库安全)对于 Kerberos 安装的整体安全非常重要。

  1. 根据需要,禁用远程服务。

    要提供安全的 KDC 服务器,应禁用所有不必要的网络服务。根据配置不同,可能已禁用其中某些服务。使用 svcs 命令检查服务状态。在大多数情况下,只需运行 timekrdb5_kprop 服务。此外,使用回送 TLI(ticltsticotsordticots)的任何服务可以保持启用状态。


    # svcadm disable network/comsat
    
    # svcadm disable network/dtspc/tcp
    
    # svcadm disable network/finger
    
    # svcadm disable network/login:rlogin
    
    # svcadm disable network/rexec
    
    # svcadm disable network/shell
    
    # svcadm disable network/talk
    
    # svcadm disable network/tname
    
    # svcadm disable network/uucp
    
    # svcadm disable network/rpc_100068_2-5/rpc_udp
    
  2. 限制对支持 KDC 的硬件的访问。

    要限制物理访问,请确保 KDC 服务器及其监视器位于安全的设备中。用户应不能以任何方式访问此服务器。

  3. 在本地磁盘或从 KDC 上存储 KDC 数据库备份。

    仅在可以安全存储磁带时创建 KDC 的磁带备份。该做法同样适用于创建密钥表文件的副本。最好在未与其他系统共享的本地文件系统上存储这些文件。存储文件系统可以位于主 KDC 服务器或任何从 KDC 上。

第 23 章 Kerberos 错误消息和疑难解答

本章将分析使用 Kerberos 服务时可能收到的错误消息,另外还针对各种问题提供一些疑难解答提示。以下是本章中错误消息和疑难解答信息的列表。

Kerberos 错误消息

本节介绍有关 Kerberos 错误消息的信息,包括每个错误出现的原因以及解决此错误的方法。

SEAM Administration Tool 错误消息

Unable to view the list of principals or policies; use the Name field.

原因:

登录时使用的 admin 主体在 Kerberos ACL 文件 (kadm5.acl) 中没有列出权限 (l)。因此,无法查看主体列表或策略列表。

解决方法:

必须在 "Name" 字段中键入主体名称和策略名称才能对其进行处理,或者需要使用具有相应权限的主体登录。

JNI: Java array creation failed

JNI: Java class lookup failed

JNI: Java field lookup failed

JNI: Java method lookup failed

JNI: Java object lookup failed

JNI: Java object field lookup failed

JNI: Java string access failed

JNI: Java string creation failed

原因:

SEAM Administration Tool (gkadmin) 使用的 Java 本机接口存在严重问题。

解决方法:

退出 gkadmin 然后重新启动。如果问题仍然存在,请报告错误。

常见的 Kerberos 错误消息 (A-M)

本节按字母顺序 (A-M) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

All authentication systems disabled; connection refused

原因:

此版本的 rlogind 不支持任何验证机制。

解决方法:

请确保调用的 rlogind 带有 -k 选项。

Another authentication mechanism must be used to access this host

原因:

无法进行验证。

解决方法:

请确保客户机使用 Kerberos V5 机制进行验证。

Authentication negotiation has failed, which is required for encryption. Good bye.

原因:

无法与服务器协商验证。

解决方法:

请通过使用 toggle authdebug 命令调用 telnet 命令,启动验证调试并查看调试消息以获取更多线索。另外,请确保具有有效凭证。

Bad krb5 admin server hostname while initializing kadmin interface

原因:

krb5.conf 文件中为 admin_server 配置了无效的主机名。

解决方法:

请确保在 krb5.conf 文件的 admin_server 行中为主 KDC 指定了正确的主机名。

Bad lifetime value

原因:

提供的生命周期值无效或格式不正确。

解决方法:

请确保提供的值与 kinit(1) 手册页中的“时间格式”一节相符。

Bad start time value

原因:

提供的开始时间值无效或格式不正确。

解决方法:

请确保提供的值与 kinit(1) 手册页中的“时间格式”一节相符。

Cannot contact any KDC for requested realm

原因:

请求的领域中没有 KDC 响应。

解决方法:

请确保至少可访问一个 KDC(主 KDC 或从 KDC),或 krb5kdc 守护进程正在 KDC 上运行。有关已配置 KDC 的列表 (kdc = kdc-name),请检查 /etc/krb5/krb5.conf 文件。

Cannot determine realm for host

原因:

Kerberos 无法确定主机的领域名称。

解决方法:

请确保存在缺省领域名称,或在 Kerberos 配置文件 (krb5.conf) 中设置了域名映射。

Cannot find KDC for requested realm

原因:

在请求的领域中找不到 KDC。

解决方法:

请确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分中指定了 KDC。

cannot initialize realm realm_name

原因:

KDC 可能没有存储文件。

解决方法:

请确保 KDC 具有存储文件。否则,请使用 kdb5_util 命令创建一个存储文件,然后尝试重新启动 krb5kdc 命令。

Cannot resolve KDC for requested realm

原因:

Kerberos 无法确定该领域的任何 KDC。

解决方法:

请确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分中指定了 KDC。

Cannot reuse password

原因:

指定的口令之前已被此主体使用。

解决方法:

请选择一个以前尚未选用的口令,至少不要是 KDC 数据库中为每个主体保存的那些口令。此策略由该主体的策略强制执行。

Can't get forwarded credentials

原因:

无法建立凭证转发。

解决方法:

请确保主体具有可转发的凭证。

Can't open/find Kerberos configuration file

原因:

Kerberos 配置文件 (krb5.conf) 不可用。

解决方法:

请确保 krb5.conf 文件在正确的位置中可用,并且具有正确的权限。此文件应可由 root 写入,并可由其他用户读取。

Client did not supply required checksum--connection rejected

原因:

未与客户机协商使用校验和进行验证。客户机使用的可能是不支持初始连接支持的早期 Kerberos V5 协议。

解决方法:

请确保客户机使用的是支持初始连接支持的 Kerberos V5 协议。

Client/server realm mismatch in initial ticket request

原因:

在初始票证请求中,客户机与服务器之间的领域不匹配。

解决方法:

请确保正在与您通信的服务器与客户机位于同一领域中,或确保领域配置正确。

Client or server has a null key

原因:

主体拥有空密钥。

解决方法:

请使用 kadmincpw 命令修改主体,使其拥有非空密钥。

Communication failure with server while initializing kadmin interface

原因:

为管理服务器指定的主机(也称为主 KDC)没有运行 kadmind 守护进程。

解决方法:

请确保为主 KDC 指定正确的主机名。如果指定了正确的主机名,请确保 kadmind 正在指定的主 KDC 上运行。

Credentials cache file permissions incorrect

原因:

您对凭证高速缓存 (/tmp/krb5cc_ uid) 没有相应的读写权限。

解决方法:

请确保具有对凭证高速缓存的读写权限。

Credentials cache I/O operation failed XXX

原因:

Kerberos 在向系统的凭证高速缓存 (/tmp/krb5cc_uid) 进行写入时出现问题。

解决方法:

请使用 df 命令确保尚未删除凭证高速缓存,并且设备中还有剩余空间。

Decrypt integrity check failed

原因:

您的票证可能无效。

解决方法:

请检验下列两种情况:

  • 确保您的凭证有效。请使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

  • 确保目标主机的密钥表文件的服务密钥版本正确。请使用 kadmin 查看 Kerberos 数据库中服务主体(例如 host/FQDN-hostname)的密钥版本号。另外,请在目标主机上使用 klist -k,以确保该主机具有相同的密钥版本号。

Encryption could not be enabled. Goodbye.

原因:

无法与服务器协商加密。

解决方法:

请通过使用 toggle encdebug 命令调用 telnet 命令,启动验证调试并查看调试消息以获取更多线索。

failed to obtain credentials cache

原因:

kadmin 初始化过程中,kadmin 尝试获取 admin 主体的凭证时失败。

解决方法:

请确保在执行 kadmin 时使用正确的主体和口令。

Field is too long for this implementation

原因:

基于 Kerberos 的应用程序所发送的消息太长。如果传输协议是 UDP,则可能会生成此错误。UDP 的缺省最大消息长度是 65535 字节。此外,对通过 Kerberos 服务发送的协议消息中的单个字段也有限制。

解决方法:

请检验是否已在 KDC 服务器的 /etc/krb5/kdc.conf 文件中将传输协议限制为 UDP。

GSS-API (or Kerberos) error

原因:

此消息是通用的 GSS-API 或 Kerberos 错误消息,可能由几种不同的问题所导致。

解决方法:

请检查 /var/krb5/kdc.log 文件,查找出现此错误时记录的更具体的错误消息。

Hostname cannot be canonicalized

原因:

Kerberos 无法设置全限定主机名。

解决方法:

请确保在 DNS 中定义了该主机名,并且主机名至地址的映射和地址至主机名的映射保持一致。

Illegal cross-realm ticket

原因:

发送的票证所跨的领域不正确。领域可能未设置正确的信任关系。

解决方法:

请确保使用的领域具有正确的信任关系。

Improper format of Kerberos configuration file

原因:

Kerberos 配置文件包含无效项。

解决方法:

请确保 krb5.conf 文件中的所有关系后面都跟有 "=" 符号和值。另外,请检验每个子段中的括号是否成对出现。

Inappropriate type of checksum in message

原因:

消息中包含无效的校验和类型。

解决方法:

请检查在 krb5.confkdc.conf 文件中指定的有效校验和类型。

Incorrect net address

原因:

网络地址不匹配。正在转发的票证中的网络地址与处理该票证的网络地址不同。转发票证时可能会出现此消息。

解决方法:

请确保网络地址正确。请使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Invalid credential was supplied

Service key not available

原因:

凭证高速缓存中的服务票证可能不正确。

解决方法:

请在尝试使用此服务之前,销毁当前凭证高速缓存并重新运行 kinit

Invalid flag for file lock mode

原因:

出现内部 Kerberos 错误。

解决方法:

请报告错误。

Invalid message type specified for encoding

原因:

Kerberos 无法识别基于 Kerberos 的应用程序发送的消息类型。

解决方法:

如果使用的基于 Kerberos 的应用程序是由您的站点或供应商开发的,请确保此应用程序正确使用 Kerberos。

Invalid number of character classes

原因:

指定的主体口令没有按照主体策略的强制要求包含足够的口令类。

解决方法:

请确保指定的口令包含策略要求的最少口令类数。

KADM err: Memory allocation failure

原因:

用于运行 kadmin 的内存不足。

解决方法:

请释放内存,然后再次尝试运行 kadmin

KDC can't fulfill requested option

原因:

KDC 不允许请求的选项。一种可能是正在请求以后生效或可转发的选项,而 KDC 不允许这些选项。另一种可能是请求了 TGT 更新,但没有可更新的 TGT。

解决方法:

请确定是要请求 KDC 不允许的选项,还是请求不可用的票证类型。

KDC policy rejects request

原因:

KDC 策略不允许该请求。例如,向 KDC 发出的请求中没有 IP 地址。或者请求了转发,但 KDC 不允许转发。

解决方法:

请确保使用带有正确选项的 kinit。如有必要,请修改与主体关联的策略或更改主体的属性以允许该请求。通过使用 kadmin,可以修改策略或主体。

KDC reply did not match expectations

原因:

KDC 回复未包含期望的主体名称,或者响应中的其他值不正确。

解决方法:

请确保正在与您通信的 KDC 符合 RFC1510,正在发送的请求是 Kerberos V5 请求或该 KDC 可用。

kdestroy: Could not obtain principal name from cache

原因:

凭证高速缓存缺失或已损坏。

解决方法:

请检查提供的高速缓存位置是否正确。如有必要,请使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: No credentials cache file found while destroying cache

原因:

凭证高速缓存 (/tmp/krb5c_ uid) 缺失或已损坏。

解决方法:

请检查提供的高速缓存位置是否正确。如有必要,请使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: TGT expire warning NOT deleted

原因:

凭证高速缓存缺失或已损坏。

解决方法:

请检查提供的高速缓存位置是否正确。如有必要,请使用 kinit 删除 TGT 并获取新的 TGT。

Kerberos authentication failed

原因:

Kerberos 口令不正确,或该口令可能与 UNIX 口令不同步。

解决方法:

如果口令不同步,则必须指定其他口令才能完成 Kerberos 验证。用户可能会忘记其原始口令。

Kerberos V5 refuses authentication

原因:

无法与服务器协商验证。

解决方法:

请通过使用 toggle authdebug 命令调用 telnet 命令,启动验证调试并查看调试消息以获取更多线索。另外,请确保具有有效凭证。

Key table entry not found

原因:

网络应用程序服务器的密钥表文件中不存在服务主体项。

解决方法:

请将相应的服务主体添加到服务器的密钥表文件中,以便该文件可提供基于 Kerberos 的服务。

Key version number for principal in key table is incorrect

原因:

密钥表文件中主体的密钥版本与 Kerberos 数据库中的版本不同。可能已更改了服务密钥,也可能正在使用旧服务票证。

解决方法:

如果服务密钥已被更改(例如通过使用 kadmin),则需要提取新密钥并将其存储在正在运行该服务的主机的密钥表文件中。

或者,您也可能正在使用具有较旧密钥的旧服务票证。在这种情况下,可能需要运行 kdestroy 命令,然后再次运行 kinit 命令。

kinit: gethostname failed

原因:

本地网络配置中的错误导致 kinit 失败。

解决方法:

请确保主机配置正确。

login: load_modules: can not open module /usr/lib/security/pam_krb5.so.1

原因:

Kerberos PAM 模块可能缺失,也可能该模块不是有效的可执行二进制文件。

解决方法:

请确保 Kerberos PAM 模块位于 /usr/lib/security 目录中,并且是有效的可执行二进制文件。另外,请确保 /etc/pam.conf 文件包含 pam_krb5.so.1 的正确路径。

Looping detected inside krb5_get_in_tkt

原因:

Kerberos 多次尝试获取初始票证,但均失败。

解决方法:

请确保至少有一个 KDC 正在响应验证请求。

Master key does not match database

原因:

未从包含主密钥的数据库创建装入的数据库转储。主密钥位于 /var/krb5/.k5.REALM 中。

解决方法:

请确保装入的数据库转储中的主密钥与 /var/krb5/.k5. REALM 中的主密钥匹配。

Matching credential not found

原因:

未找到与请求匹配的凭证。凭证高速缓存中没有请求需要的凭证。

解决方法:

请使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Message out of order

原因:

使用顺序保密性发送的消息到达时顺序混乱。某些消息可能已在传输过程中丢失。

解决方法:

应重新初始化 Kerberos 会话。

Message stream modified

原因:

计算出的校验和与消息校验和不匹配。消息在传输过程中可能已被修改,这表明存在安全泄露。

解决方法:

请确保消息在网络中正确发送。由于此消息还可表明消息在发送过程中被篡改,因此请使用 kdestroy 销毁票证,然后重新初始化所使用的 Kerberos 服务。

常见的 Kerberos 错误消息 (N-Z)

本节按字母顺序 (N-Z) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

No credentials cache file found

原因:

Kerberos 无法找到凭证高速缓存 (/tmp/krb5cc_uid)。

解决方法:

请确保该凭证文件存在并且可以读取。否则,请再次尝试执行 kinit

No credentials were supplied, or the credentials were unavailable or inaccessible

No credential cache found

原因:

用户的凭证高速缓存不正确或不存在。

解决方法:

用户应在尝试启动服务之前运行 kinit

No credentials were supplied, or the credentials were unavailable or inaccessible

No principal in keytab matches desired name

原因:

尝试验证服务器时出现错误。

解决方法:

请确保主机或服务主体位于服务器的密钥表文件中。

Operation requires “privilege” privilege

原因:

正在使用的 admin 主体未在 kadm5.acl 文件中配置相应的权限。

解决方法:

请使用具有相应权限的主体。或者,请通过修改 kadm5.acl 文件来配置所使用的主体,使其具有相应的权限。通常,名称中包含 /admin 的主体具有相应的权限。

PAM-KRB5 (auth): krb5_verify_init_creds failed: Key table entry not found

原因:

远程应用程序尝试在本地 /etc/krb5/krb5.keytab 文件中读取主机的服务主体,但不存在任何主体。

解决方法:

请将主机的服务主体添加到主机的密钥表文件中。

Password is in the password dictionary

原因:

指定的口令位于正在使用的口令字典中。您选择的口令不适合用作口令。

解决方法:

请选用包含混合口令类的口令。

Permission denied in replay cache code

原因:

无法打开系统的重放高速缓存。首次运行服务器时所使用的用户 ID 可能与当前的用户 ID 不同。

解决方法:

请确保重放高速缓存具有相应的权限。重放高速缓存存储在运行基于 Kerberos 的服务器应用程序的主机上。对于非 root 用户,重放高速缓存文件称为 /var/krb5/rcache/rc_service_name_ uid。对于 root 用户,重放高速缓存文件称为 /var/krb5/rcache/root/rc_ service_name

Protocol version mismatch

原因:

很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法:

请确保应用程序使用的是 Kerberos V5 协议。

Request is a replay

原因:

请求已发送到此服务器并进行了处理。票证可能已被盗用,并且其他用户正在尝试重新使用这些票证。

解决方法:

请等待几分钟,然后重新发出请求。

Requested principal and ticket don't match

原因:

您正在连接的服务主体与您所拥有的服务票证不匹配。

解决方法:

请确保 DNS 正常运行。如果使用的是其他供应商的软件,请确保该软件使用的主体名称正确。

Requested protocol version not supported

原因:

很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法:

请确保应用程序使用的是 Kerberos V5 协议。

Server refused to negotiate authentication, which is required for encryption. Good bye.

原因:

远程应用程序无法接受或已配置为不接受来自客户机的 Kerberos 验证。

解决方法:

请提供可以协商验证的远程应用程序,或配置该应用程序以使用相应标志来打开验证。

Server refused to negotiate encryption. Good bye.

原因:

无法与服务器协商加密。

解决方法:

请通过使用 toggle encdebug 命令调用 telnet 命令,启动验证调试并查看调试消息以获取更多线索。

Server rejected authentication (during sendauth exchange)

原因:

您正在尝试与其通信的服务器拒绝验证。此错误通常出现在 Kerberos 数据库传播过程中。一些常见的原因可能是 kpropd.acl 文件、DNS 或密钥表文件存在问题。

解决方法:

如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

The ticket isn't for us

Ticket/authenticator don't match

原因:

票证与验证者不匹配。请求中的主体名称可能与服务主体的名称不匹配,因为发送票证使用的是主体的 FQDN 名称,而服务期望非 FQDN 名称,反之亦然。

解决方法:

如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

Ticket expired

原因:

票证时间已到期。

解决方法:

请使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Ticket is ineligible for postdating

原因:

主体不允许其票证以后生效。

解决方法:

请使用 kadmin 修改主体以允许以后生效。

Ticket not yet valid

原因:

以后生效的票证仍然无效。

解决方法:

请使用正确的日期创建新票证,或等待当前票证生效。

Truncated input file detected

原因:

操作中使用的数据库转储文件不是完整的转储文件。

解决方法:

请重新创建转储文件,或使用其他数据库转储文件。

Unable to securely authenticate user ... exit

原因:

无法与服务器协商验证。

解决方法:

请通过使用 toggle authdebug 命令调用 telnet 命令,启动验证调试并查看调试消息以获取更多线索。另外,请确保具有有效凭证。

Wrong principal in request

原因:

票证中包含无效的主体名称。此错误可能表明 DNS 或 FQDN 存在问题。

解决方法:

请确保服务主体与票证中的主体匹配。

Kerberos 疑难解答

本节介绍有关 Kerberos 软件的疑难解答信息。

krb5.conf 文件的格式存在问题

如果 krb5.conf 文件的格式不正确,telnet 命令将会失败。但是,dtloginlogin 命令仍将成功,即使按这些命令的要求指定 krb5.conf 文件也是如此。如果出现此问题,则会显示以下错误消息:


Error initializing krb5: Improper format of Kerberos configuration

此外,格式不正确的 krb5.conf 文件还会阻止使用 GSSAPI 的应用程序使用 krb5 机制。

如果 krb5.conf 文件的格式存在问题,则安全性很容易受到破坏。您应首先解决该问题,然后再允许使用 Kerberos 功能。

传播 Kerberos 数据库时出现问题

如果传播 Kerberos 数据库失败,请在从 KDC 与主 KDC 之间尝试使用 /usr/bin/rlogin -x,反之亦然。

如果 KDC 已设置为限制访问,则会禁用 rlogin,因此无法使用它来解决此问题。要在 KDC 上启用 rlogin,必须启用 eklogin 服务。


# svcadm enable svc:/network/login:eklogin

解决此问题后,需要禁用 eklogin 服务。

如果 rlogin 无法运行,则可能是因为 KDC 上的密钥表文件存在问题。如果 rlogin 可以运行,则问题不在于密钥表文件或名称服务,因为 rlogin 和传播软件使用相同的 host/host-name 主体。在这种情况下,请确保 kpropd.acl 文件正确。

挂载基于 Kerberos 的 NFS 文件系统时出现问题

  • 如果挂载基于 Kerberos 的 NFS 文件系统失败,请确保 NFS 服务器上存在 /var/rcache/root 文件。如果该文件系统不属于 root,请将其删除并再次尝试挂载。

  • 如果访问基于 Kerberos 的 NFS 文件系统时出现问题,请确保系统和 NFS 服务器上启用了 gssd 服务。

  • 如果在尝试访问基于 Kerberos 的 NFS 文件系统时出现 invalid argumentbad directory 错误消息,则可能是因为在尝试挂载 NFS 文件系统时未使用全限定 DNS 名称。正在挂载的主机与服务器的密钥表文件中的服务主体的主机名部分不相同。

    如果服务器有多个以太网接口,并且已将 DNS 设置为使用“每个接口一个名称”的方案,而不是“每台主机多条地址记录”的方案,则也可能会出现此问题。对于 Kerberos 服务,应为每台主机设置多条地址记录,如下所示 [Ken Hornstein,"Kerberos FAQ",[http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html],访问时间:1998 年 12 月 11 日。] :

    my.host.name.   A       1.2.3.4
    
                    A       1.2.4.4
    
                    A       1.2.5.4
    
    
    
    my-en0.host.name.       A       1.2.3.4
    
    my-en1.host.name.       A       1.2.4.4
    
    my-en2.host.name.       A       1.2.5.4
    
    
    
    4.3.2.1         PTR     my.host.name.
    
    4.4.2.1         PTR     my.host.name.
    
    4.5.2.1         PTR     my.host.name.

在本示例中,此设置允许引用服务器的密钥表文件中的不同接口和一个服务主体(而非三个服务主体)一次。

root 身份进行验证时出现问题

如果在尝试成为系统超级用户时验证失败,并且已将 root 主体添加到主机的密钥表文件中,则需要检查两个可能的问题。首先,请确保密钥表文件中的 root 主体具有一个全限定主机名作为其实例。如果具有该名称,请检查 /etc/resolv.conf 文件,以确保系统已正确设置为 DNS 客户机。

观察从 GSS 凭证到 UNIX 凭证的映射

为了可以监视凭证映射,请首先在 /etc/gss/gsscred.conf 文件中取消对以下行的注释。


SYSLOG_UID_MAPPING=yes

然后,指示 gssd 服务从 /etc/gss/gsscred.conf 文件中获取信息。


# pkill -HUP gssd

现在,您应该可以在 gssd 请求凭证映射时对其进行监视。如果针对 auth 系统功能将 syslog.conf 文件设置为 debug 严重级别,则可通过 syslogd 记录这些映射。

第 24 章 管理 Kerberos 主体和策略(任务)

本章介绍有关管理主体及与其关联的策略的过程。本章还将说明如何管理主机的密钥表文件。

需要管理主体和策略的用户应该阅读本章。阅读本章之前,应熟悉主体和策略,包括所有规划注意事项。请分别参阅第 20 章,Kerberos 服务介绍第 21 章,规划 Kerberos 服务

以下是本章中信息的列表。

管理 Kerberos 主体和策略的方法

主 KDC 上的 Kerberos 数据库包含您所在领域的所有 Kerberos 主体、主体口令、策略和其他管理信息。 创建和删除主体以及修改其属性时,可以使用 kadmingkadmin 命令。

kadmin 命令提供一个交互式的命令行界面,用于维护 Kerberos 主体、策略和密钥表文件。kadmin 命令具有以下两个版本:

  • kadmin-使用 Kerberos 验证从网络中的任何位置安全操作

  • kadmin.local-必须直接在主 KDC 上运行

kadmin 使用 Kerberos 来验证用户外,这两个版本的功能完全相同。如果要设置足够的数据库以便使用远程版本,则必须使用本地版本。

另外,Solaris 发行版还提供了 SEAM Administration Tool (gkadmin),这是一个交互式的图形用户界面 (graphical user interface, GUI),其功能基本上与 kadmin 命令相同。有关更多信息,请参见SEAM Administration Tool

SEAM Administration Tool

SEAM Administration Tool (SEAM Tool) 是一个交互式的图形用户界面 (graphical user interface, GUI),用于维护 Kerberos 主体和策略。此工具提供的功能与 kadmin 命令基本相同。但是,此工具不支持密钥表文件管理。必须使用 kadmin 命令来管理密钥表文件,如管理密钥表文件中所述。

kadmin 命令类似,SEAM Tool 使用 Kerberos 验证和加密 RPC 从网络中的任何位置安全操作。SEAM Tool 可以执行以下操作:

  • 创建基于缺省值或现有主体的新主体。

  • 创建基于现有策略的新策略。

  • 为主体添加注释。

  • 设置缺省值以创建新主体。

  • 在不退出工具的情况下以其他主体身份登录。

  • 打印或保存主体列表和策略列表。

  • 查看和搜索主体列表和策略列表。

SEAM Tool 还会提供关联说明和一般联机帮助。

以下任务列表提供了指向可借助 SEAM Tool 完成的各种任务的链接:

此外,还可转至SEAM Tool 面板说明,了解可在 SEAM Tool 中指定或查看的所有主体属性和策略属性的说明。

SEAM Tool 的等效命令行

本节列出了一些 kadmin 命令,其提供的功能与 SEAM Tool 相同。无需运行 X 窗口系统,便可使用这些命令。尽管本章中的大多数过程使用 SEAM Tool,但其中许多过程还提供了使用等效命令行的对应示例。

表 24–1 SEAM Tool 的等效命令行

SEAM Tool 过程 

等效的 kadmin 命令

查看主体列表。 

list_principalsget_principals

查看主体属性。 

get_principal

创建新主体。 

add_principal

复制主体。 

无等效命令行 

修改主体。 

modify_principalchange_password

删除主体。 

delete_principal

设置缺省值以创建新主体。 

无等效命令行 

查看策略列表。 

list_policiesget_policies

查看策略属性。 

get_policy

创建新策略。 

add_policy

复制策略。 

无等效命令行 

修改策略。 

modify_policy

删除策略。 

delete_policy

SEAM Tool 修改的唯一文件

SEAM Tool 修改的唯一文件是 $HOME/.gkadmin 文件。该文件包含用于创建新主体的缺省值。通过从 "Edit" 菜单中选择 "Properties",可以更新该文件。

SEAM Tool 的打印和联机帮助功能

SEAM Tool 提供了打印功能和联机帮助功能。通过 "Print" 菜单,可将以下各项发送至打印机或文件:

  • 指定主 KDC 上的可用主体列表

  • 指定主 KDC 上的可用策略列表

  • 当前选择的主体或装入的主体

  • 当前选择的策略或装入的策略

通过 "Help" 菜单,可以访问关联说明和一般帮助。从 "Help" 菜单中选择 "Context-Sensitive Help" 时,将显示 "Context-Sensitive Help" 窗口并且工具会切换为帮助模式。在帮助模式下,如果单击该窗口中的任何字段、标签或按钮,将在 "Help" 窗口中显示有关该项的帮助。要切换回工具的一般模式,请在 "Help" 窗口中单击 "Dismiss"。

此外,还可选择 "Help Contents",这将打开一个 HTML 浏览器,其中会提供指向本章中介绍的一般概述和任务信息的链接。

在 SEAM Tool 中处理大型列表

随着站点开始积累大量主体和策略,使用 SEAM Tool 装入并显示主体和策略列表所需的时间将会越来越长。因此,使用该工具时的工作效率会下降。解决此问题有多种办法。

首先,通过使 SEAM Tool 不装入列表,可以完全省去装入列表的时间。可以设置此选项,方法是从 "Edit" 菜单中选择 "Properties",然后取消选中 "Show Lists" 字段。当然,如果该工具不装入列表,则不能显示这些列表,因此将无法再使用列表面板来选择主体或策略。而必须在提供的新 "Name" 字段中键入主体或策略名称,然后选择要对其执行的操作。键入名称与从列表中选择项的结果相同。

处理大型列表的另一种方法是对其进行高速缓存。实际上,已将 SEAM Tool 的缺省行为设置为将列表高速缓存一段时间。最初 SEAM Tool 还是必须将这些列表装入高速缓存。但在此后,该工具就可以使用高速缓存,而不必再次获取列表。这样便无需不断从服务器装入列表(正是此操作占用了大量时间)。

通过从 "Edit" 菜单中选择 "Properties",可以设置列表高速缓存。有两种高速缓存设置。可以选择将列表永久高速缓存;也可以指定必须将列表从服务器重新装入高速缓存的时间限制。

对列表进行高速缓存时,仍然可以使用列表面板来选择主体和策略,因此该方法不会像第一种方法那样影响 SEAM Tool 的使用方式。另外,尽管使用高速缓存使您无法查看其他用户所做的更改,但您仍可以根据自己所做的更改查看最新列表信息,因为您所做的更改会对服务器和高速缓存中的列表进行更新。而且,如果要更新高速缓存以查看其他更改并获取最新列表副本,可在需要从服务器刷新高速缓存时使用 "Refresh" 菜单。

Procedure如何启动 SEAM Tool

  1. 使用 gkadmin 命令启动 SEAM Tool。


    $ /usr/sbin/gkadmin
    

    此时会显示 "SEAM Administration Login" 窗口。

    标题为 "SEAM Administration Login" 的对话框显示了 "Principal Name"、"Password"、"Realm" 和 "Master KDC" 四个字段。显示 "OK" 和 "Start Over" 按钮。
  2. 如果不想使用现有的缺省值,请指定新的缺省值。

    该窗口会自动使用缺省值填充。缺省主体名称 (username/admin) 是通过从 USER 环境变量获取当前身份并在其后附加 /admin 确定的。缺省的 "Realm" 和 "Master KDC" 字段选自 /etc/krb5/krb5.conf 文件。如果要恢复这些缺省值,请单击 "Start Over"。


    注 –

    每个主体名称可以执行的管理操作在 Kerberos ACL 文件 /etc/krb5/kadm5.acl 中指定。有关受限权限的信息,请参见以受限 Kerberos 管理权限使用 SEAM Tool


  3. 键入指定主体名称的口令。

  4. 单击 "OK"。

    此时会显示以下窗口:

    标题为 "Seam Administration Tool" 的对话框显示了主体列表和列表过滤器。显示 "Modify"、"Create New"、"Delete" 和 "Duplicate" 按钮。

管理 Kerberos 主体

本节提供使用 SEAM Tool 管理主体的逐步说明,还提供等效命令行示例(如果有)。

管理 Kerberos 主体(任务列表)

任务 

说明 

参考 

查看主体列表。 

通过单击 "Principals" 选项卡来查看主体列表。 

如何查看 Kerberos 主体列表

查看主体属性。 

通过在 "Principal List" 中选择 "Principal",然后单击 "Modify" 按钮来查看主体的属性。 

如何查看 Kerberos 主体属性

创建新主体。 

通过单击 "Principal List" 面板中的 "Create New" 按钮来创建新主体。 

如何创建新的 Kerberos 主体

复制主体。 

通过在 "Principal List" 中选择要复制的主体,然后单击 "Duplicate" 按钮来复制主体。 

如何复制 Kerberos 主体

修改主体。 

通过在 "Principal List" 中选择要修改的主体,然后单击 "Modify" 按钮来修改主体。 

请注意,不能修改主体的名称。要重命名主体,必须首先复制该主体,为其指定一个新名称并保存,然后删除旧主体。 

如何修改 Kerberos 主体

删除主体。 

通过在 "Principal List" 中选择要删除的主体,然后单击 "Delete" 按钮来删除主体。 

如何删除 Kerberos 主体

设置缺省值以创建新主体。 

通过从 "Edit" 菜单中选择 "Properties" 来设置缺省值以创建新主体。 

如何设置缺省值以创建新的 Kerberos 主体

修改 Kerberos 管理权限(kadm5.acl 文件)。

仅限命令行。Kerberos 管理权限确定主体可对 Kerberos 数据库执行的操作,如添加和修改。

要修改每个主体的 Kerberos 管理权限,需要编辑 /etc/krb5/kadm5.acl 文件。

如何修改 Kerberos 管理权限

自动创建新的 Kerberos 主体

尽管 SEAM Tool 使用方便,但它不提供自动创建新主体的方法。如果需要在短时间内添加 10 个甚至 100 个新主体,则自动创建尤其有用。而在 Bourne shell 脚本中使用 kadmin.local 命令正好可满足这一需要。

以下 shell 脚本行示例说明了如何自动创建新主体:


awk '{ print "ank +needchange -pw", $2, $1 }' < /tmp/princnames | 

        time /usr/sbin/kadmin.local> /dev/null

为了方便阅读,已将此示例拆分为两行。该脚本将读入一个称为 princnames 的文件(其中包含主体名称及其口令)然后将其添加到 Kerberos 数据库。您必须创建 princnames 文件,并在每一行上包含一个主体名称及其口令,中间用一个或多个空格分隔。+needchange 选项用于配置主体,以便在用户第一次使用该主体登录时提示其输入新口令。此做法有助于确保 princnames 文件中的口令不会引入安全风险。

可以生成更详细的脚本。例如,脚本可使用名称服务中的信息来获取主体名称的用户名列表。所执行的操作和执行操作的方式取决于站点的需要以及脚本编制技术。

Procedure如何查看 Kerberos 主体列表

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

    此时会显示主体列表。

    标题为 "Seam Administration Tool" 的对话框显示了主体列表和列表过滤器。显示 "Modify"、"Create New"、"Delete" 和 "Duplicate" 按钮。
  3. 显示特定主体或主体子列表。

    在 "Filter" 字段中键入过滤字符串,然后按 "Return"。如果过滤操作成功,则会显示与过滤器匹配的主体列表。

    过滤字符串必须由一个或多个字符组成。由于过滤机制区分大小写,因此需要对过滤器使用正确的大小写字母。例如,如果键入过滤字符串 ge,则过滤机制仅显示包含 ge 字符串的主体(如 georgeedge)。

    如果要显示主体的完整列表,请单击 "Clear Filter"。


示例 24–1 查看 Kerberos 主体列表(命令行)

在以下示例中,kadminlist_principals 命令用于列出与 test* 匹配的所有主体。通配符可与 list_principals 命令一起使用。


kadmin: list_principals test*

test1@EXAMPLE.COM

test2@EXAMPLE.COM

kadmin: quit

Procedure如何查看 Kerberos 主体属性

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

  3. 在列表中选择要查看的主体,然后单击 "Modify"。

    此时会显示包含该主体某些属性的 "Principal Basics" 面板。

  4. 继续单击 "Next" 以查看该主体的所有属性。

    有三个窗口包含属性信息。请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关每个窗口中各种属性的信息。或者,转至SEAM Tool 面板说明,了解所有主体属性说明。

  5. 查看完毕后,单击 "Cancel"。


示例 24–2 查看 Kerberos 主体属性

以下示例显示了查看 jdb/admin 主体时的第一个窗口。

标题为 "SEAM Administration Tool" 的对话框显示了 jdb/admin 主体的帐户数据。  显示帐户失效日期和注释。

示例 24–3 查看 Kerberos 主体属性(命令行)

在以下示例中,kadminget_principal 命令用于查看 jdb/admin 主体的属性。


kadmin: getprinc jdb/admin

Principal: jdb/admin@EXAMPLE.COM

Expiration date: Fri Aug 25 17:19:05 PDT 2004

Last password change: [never]

Password expiration date: Wed Apr 14 11:53:10 PDT 2003

Maximum ticket life: 1 day 16:00:00

Maximum renewable life: 1 day 16:00:00

Last modified: Thu Jan 14 11:54:09 PST 2003 (admin/admin@EXAMPLE.COM)

Last successful authentication: [never]

Last failed authentication: [never]

Failed password attempts: 0

Number of keys: 1

Key: vno 1, DES cbc mode with CRC-32, no salt

Attributes: REQUIRES_HW_AUTH

Policy: [none]

kadmin: quit

Procedure如何创建新的 Kerberos 主体

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    注 –

    如果要创建一个可能需要新策略的新主体,则应在创建新主体之前创建新策略。请转至如何创建新的 Kerberos 策略



    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

  3. 单击 "New"。

    此时会显示包含某些主体属性的 "Principal Basics" 面板。

  4. 指定主体名称和口令。

    必须提供主体名称和口令。

  5. 指定该主体属性的值,然后继续单击 "Next" 以指定其他属性。

    有三个窗口包含属性信息。请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关每个窗口中各种属性的信息。或者,转至SEAM Tool 面板说明,了解所有主体属性说明。

  6. 单击 "Save" 以保存主体,或在最后一个面板上单击 "Done"。

  7. 如有必要,在 /etc/krb5/kadm5.acl 文件中为新主体设置 Kerberos 管理权限。

    有关更多详细信息,请参见如何修改 Kerberos 管理权限


示例 24–4 创建新的 Kerberos 主体

以下示例显示了创建称为 pak 的新主体时的 "Principal Basics" 面板。该策略设置为 testuser

标题为 "SEAM Administration Tool" 的对话框显示了 pak 主体的帐户数据。  显示口令、帐户失效日期和 testuser 策略。

示例 24–5 创建新的 Kerberos 主体(命令行)

在以下示例中,kadminadd_principal 命令用于创建称为 pak 的新主体。该主体的策略设置为 testuser


kadmin: add_principal -policy testuser pak

Enter password for principal "pak@EXAMPLE.COM": <Type the password>

Re-enter password for principal "pak@EXAMPLE.COM": <Type the password again>

Principal "pak@EXAMPLE.COM" created.

kadmin: quit

Procedure如何复制 Kerberos 主体

此过程说明如何使用某个现有主体的全部或部分属性来创建新主体。此过程没有等效命令行。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

  3. 在列表中选择要复制的主体,然后单击 "Duplicate"。

    此时会显示 "Principal Basics" 面板。除空的 "Principal Name" 和 "Password" 字段之外,选定主体的其他属性都将被复制。

  4. 指定主体名称和口令。

    必须提供主体名称和口令。要完全复制选定主体,请单击 "Save" 并跳至步骤 7

  5. 指定该主体属性的其他值,然后继续单击 "Next" 以指定其他属性。

    有三个窗口包含属性信息。请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关每个窗口中各种属性的信息。或者,转至SEAM Tool 面板说明,了解所有主体属性说明。

  6. 单击 "Save" 以保存主体,或在最后一个面板上单击 "Done"。

  7. 如有必要,在 /etc/krb5/kadm5.acl 文件中为主体设置 Kerberos 管理权限。

    有关更多详细信息,请参见如何修改 Kerberos 管理权限

Procedure如何修改 Kerberos 主体

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

  3. 在列表中选择要修改的主体,然后单击 "Modify"。

    此时会显示包含该主体某些属性的 "Principal Basics" 面板。

  4. 修改该主体的属性,然后继续单击 "Next" 以修改其他属性。

    有三个窗口包含属性信息。请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关每个窗口中各种属性的信息。或者,转至SEAM Tool 面板说明,了解所有主体属性说明。


    注 –

    不能修改主体的名称。要重命名主体,必须首先复制该主体,为其指定一个新名称并保存,然后删除旧主体。


  5. 单击 "Save" 按钮以保存主体,或在最后一个面板上单击 "Done"。

  6. /etc/krb5/kadm5.acl 文件中,修改该主体的 Kerberos 管理权限。

    有关更多详细信息,请参见如何修改 Kerberos 管理权限


示例 24–6 修改 Kerberos 主体口令(命令行)

在以下示例中,kadminchange_password 命令用于修改 jdb 主体的口令。change_password 命令不允许将口令更改为主体口令历史记录中的口令。


kadmin: change_password jdb

Enter password for principal "jdb": <Type the new password>

Re-enter password for principal "jdb": <Type the password again>

Password for "jdb@EXAMPLE.COM" changed.

kadmin: quit

要修改主体的其他属性,必须使用 kadminmodify_principal 命令。


Procedure如何删除 Kerberos 主体

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Principals" 选项卡。

  3. 在列表中选择要删除的主体,然后单击 "delete"。

    确认删除后,将删除该主体。

  4. 从 Kerberos 访问控制列表 (access control list, ACL) 文件 /etc/krb5/kadm5.acl 中删除该主体。

    有关更多详细信息,请参见如何修改 Kerberos 管理权限


示例 24–7 删除 Kerberos 主体(命令行)

在以下示例中,kadmindelete_principal 命令用于删除 jdb 主体。


kadmin: delete_principal pak

Are you sure you want to delete the principal "pak@EXAMPLE.COM"? (yes/no): yes

Principal "pak@EXAMPLE.COM" deleted.

Make sure that you have removed this principal from all ACLs before reusing.

kadmin: quit

Procedure如何设置缺省值以创建新的 Kerberos 主体

此过程没有等效命令行。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 从 "Edit" 菜单中选择 "Properties"。

    此时会显示 "Properties" 窗口。

    标题为 "Properties" 的对话框显示了新主体和列表控件的缺省值。主体的缺省值包括安全选项和其他选项。
  3. 选择要在创建新主体时使用的缺省值。

    请从 "Help" 菜单中选择 "Context-Sensitive Help",以获取有关每个窗口中各种属性的信息。

  4. 单击 "Save"。

Procedure如何修改 Kerberos 管理权限

尽管您的站点可能有许多用户主体,但您通常只希望一小部分用户能够管理 Kerberos 数据库。管理 Kerberos 数据库的权限由 Kerberos 访问控制列表 (access control list, ACL) 文件 kadm5.acl 确定。通过 kadm5.acl 文件,可以允许或禁用各个主体的权限。或者,可在主体名称中使用 "*" 通配符来指定主体组的权限。

  1. 成为主 KDC 的超级用户。

  2. 编辑 /etc/krb5/kadm5.acl 文件。

    kadm5.acl 文件中的项必须使用以下格式:


    principal privileges [principal-target]

    principal

    指定要为其授予权限的主体。 主体名称的任何部分都可以包含 "*" 通配符,这在为一组主体提供相同权限时很有用。例如,如果要指定包含 admin 实例的所有主体,则可使用 */admin@realm

    请注意,admin 实例常用于将单独的权限(如对 Kerberos 数据库的管理访问权限)授予单独的 Kerberos 主体。 例如,用户 jdb 可能具有用于管理的主体 jdb/admin。这样,用户 jdb 便仅在实际需要使用这些权限时,才会获取 jdb/admin 票证。

    privileges

    指定主体能够执行和不能执行的操作。 此字段由一个或多个下列字符或其对应大写形式的字符组成。 如果字符为大写形式(或未指定),则不允许执行该操作。 如果字符为小写形式,则允许执行该操作。 

     

    a

    [不]允许添加主体或策略。 

     

    d

    [不]允许删除主体或策略。 

     

    m

    [不]允许修改主体或策略。 

     

    c

    [不]允许更改主体的口令。 

     

    i

    [不]允许查询 Kerberos 数据库。 

     

    l

    [不]允许列出 Kerberos 数据库中的主体或策略。 

     

    x*

    允许所有权限 (admcil)。

    principal-target

    在此字段中指定主体时,privileges 仅在 principalprincipal-target 进行操作时,才应用于 principal。主体名称的任何部分都可以包含 "*" 通配符,这在对主体分组时很有用。


示例 24–8 修改 Kerberos 管理权限

kadm5.acl 文件中的以下项授予 EXAMPLE.COM 领域中包含 admin 实例的任何主体对 Kerberos 数据库的所有权限:


*/admin@EXAMPLE.COM *

kadm5.acl 文件中的以下项授予 jdb@EXAMPLE.COM 主体添加、列出和查询包含 root 实例的任何主体的权限。


jdb@EXAMPLE.COM ali */root@EXAMPLE.COM

管理 Kerberos 策略

本节提供使用 SEAM Tool 管理策略的逐步说明,还提供等效命令行示例(如果有)。

管理 Kerberos 策略(任务列表)

任务 

说明 

参考 

查看策略列表。 

通过单击 "Policies" 选项卡来查看策略列表。 

如何查看 Kerberos 策略列表

查看策略属性。 

通过在 "Policy List" 中选择策略,然后单击 "Modify" 按钮来查看策略的属性。 

如何查看 Kerberos 策略属性

创建新策略。 

通过单击 "Policy List" 面板中的 "Create New" 按钮来创建新策略。 

如何创建新的 Kerberos 策略

复制策略。 

通过在 "Policy List" 中选择要复制的策略,然后单击 "Duplicate" 按钮来复制策略。 

如何复制 Kerberos 策略

修改策略。 

通过在 "Policy List" 中选择要修改的策略,然后单击 "Modify" 按钮来修改策略。 

请注意,不能修改策略的名称。要重命名策略,必须首先复制该策略,为其指定一个新名称并保存,然后删除旧策略。 

如何修改 Kerberos 策略

删除策略。 

通过在 "Policy List" 中选择要删除的策略,然后单击 "Delete" 按钮来删除策略。 

如何删除 Kerberos 策略

Procedure如何查看 Kerberos 策略列表

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

    此时会显示策略列表。

    标题为 "SEAM Administration Tool" 的对话框显示了策略列表和策略过滤器。显示 "Modify"、"Create New"、"Delete" 和 "Duplicate" 按钮。
  3. 显示特定策略或策略子列表。

    在 "Filter" 字段中键入过滤字符串,然后按 "Return"。如果过滤操作成功,则会显示与过滤器匹配的策略列表。

    过滤字符串必须由一个或多个字符组成。由于过滤机制区分大小写,因此需要对过滤器使用正确的大小写字母。例如,如果键入过滤字符串 ge,则过滤机制仅显示包含 ge 字符串的策略(如 georgeedge)。

    如果要显示策略的完整列表,请单击 "Clear Filter"。


示例 24–9 查看 Kerberos 策略列表(命令行)

在以下示例中,kadminlist_policies 命令用于列出与 *user* 匹配的所有策略。通配符可与 list_policies 命令一起使用。


kadmin: list_policies *user*

testuser

enguser

kadmin: quit

Procedure如何查看 Kerberos 策略属性

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

  3. 在列表中选择要查看的策略,然后单击 "Modify"。

    此时会显示 "Policy Details" 面板。

  4. 查看完毕后,单击 "Cancel"。


示例 24–10 查看 Kerberos 策略属性

以下示例显示了查看 test 策略时的 "Policy Details" 面板。

标题为 "SEAM Administration Tool" 的对话框显示了 enguser 策略的详细信息。显示 "Save"、"Previous"、"Done" 和 "Cancel" 按钮。

示例 24–11 查看 Kerberos 策略属性(命令行)

在以下示例中,kadminget_policy 命令用于查看 enguser 策略的属性。


kadmin: get_policy enguser

Policy: enguser

Maximum password life: 2592000

Minimum password life: 0

Minimum password length: 8

Minimum number of password character classes: 2

Number of old keys kept: 3

Reference count: 0

kadmin: quit

引用计数是使用此策略的主体数。


Procedure如何创建新的 Kerberos 策略

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

  3. 单击 "New"。

    此时会显示 "Policy Details" 面板。

  4. 在 "Policy Name" 字段中指定策略的名称。

    必须提供策略名称。

  5. 指定策略属性的值。

    请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关此窗口中各种属性的信息。或者,转至表 24–5,了解所有策略属性说明。

  6. 单击 "Save" 按钮以保存策略,或单击 "Done"。


示例 24–12 创建新的 Kerberos 策略

在以下示例中,创建了一个称为 build11 的新策略。"Minimum Password Classes" 设置为 3。

标题为 "SEAM Administration Tool" 的对话框显示了 build11 策略的详细信息。  显示 "Save"、"Previous"、"Done" 和 "Cancel" 按钮。

示例 24–13 创建新的 Kerberos 策略(命令行)

在以下示例中,kadminadd_policy 命令用于创建 build11 策略。此策略要求口令中至少有 3 类字符。


$ kadmin

kadmin: add_policy -minclasses 3 build11

kadmin: quit

Procedure如何复制 Kerberos 策略

此过程说明如何使用某个现有策略的全部或部分属性来创建新策略。此过程没有等效命令行。

  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

  3. 在列表中选择要复制的策略,然后单击 "Duplicate"。

    此时会显示 "Policy Details" 面板。除空的 "Policy Name" 字段以外,选定策略的其他所有属性都将被复制。

  4. 在 "Policy Name" 字段中指定复制策略的名称。

    必须提供策略名称。要完全复制选定策略,请跳至步骤 6

  5. 指定策略属性的其他值。

    请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关此窗口中各种属性的信息。或者,转至表 24–5,了解所有策略属性说明。

  6. 单击 "Save" 按钮以保存策略,或单击 "Done"。

Procedure如何修改 Kerberos 策略

此过程后附等效命令行示例。

  1. 如有必要,启动 SEAM Tool。

    有关详细信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

  3. 在列表中选择要修改的策略,然后单击 "Modify"。

    此时会显示 "Policy Details" 面板。

  4. 修改该策略的属性。

    请从 "Help" 菜单中选择 "Context-Sensitive Help",获取有关此窗口中各种属性的信息。或者,转至表 24–5,了解所有策略属性说明。


    注 –

    不能修改策略的名称。要重命名策略,必须首先复制该策略,为其指定一个新名称并保存,然后删除旧策略。


  5. 单击 "Save" 按钮以保存策略,或单击 "Done"。


示例 24–14 修改 Kerberos 策略(命令行)

在以下示例中,kadminmodify_policy 命令用于将 build11 策略的最小口令长度修改为 5 个字符。


$ kadmin

kadmin: modify_policy -minlength 5 build11

kadmin: quit

Procedure如何删除 Kerberos 策略

此过程后附等效命令行示例。


注 –

删除某策略之前,必须从当前正在使用该策略的所有主体取消该策略。为此,需要修改这些主体的策略属性。如果有任何主体在使用该策略,则无法将其删除。


  1. 如有必要,启动 SEAM Tool。

    有关更多信息,请参见如何启动 SEAM Tool


    $ /usr/sbin/gkadmin
    
  2. 单击 "Policies" 选项卡。

  3. 在列表中选择要删除的策略,然后单击 "Delete"。

    确认删除后,将删除该策略。


示例 24–15 删除 Kerberos 策略(命令行)

在以下示例中,kadmindelete_policy 命令用于删除 build11 策略。


kadmin: delete_policy build11 

Are you sure you want to delete the policy "build11"? (yes/no): yes

kadmin: quit

删除某策略之前,必须从当前正在使用该策略的所有主体取消该策略。为此,需要对受影响的主体使用 kadminmodify_principal - policy 命令。如果主体正在使用该策略,则 delete_policy 命令将会失败。


SEAM Tool 参考

本节为 SEAM Tool 中的每个面板提供说明。另外,还提供有关以受限权限使用 SEAM Tool 的信息。

SEAM Tool 面板说明

本节提供可在 SEAM Tool 中指定或查看的每个主体和策略属性的说明。这些属性按显示它们的面板进行组织。

表 24–2 SEAM Tool 的 "Principal Basics" 面板中的属性

属性 

说明 

Principal Name 

主体的名称(全限定主体名称的 primary/instance 部分)。主体是 KDC 可以为其指定票证的唯一标识。

修改主体时不能编辑其名称。 

Password 

主体的口令。可使用 "Generate Random Password" 按钮为主体创建随机口令。 

Policy 

主体的可用策略菜单。 

Account Expires 

主体帐户的失效日期和时间。帐户失效后,主体就无法再获取票证授予票证 (Ticket-Granting Ticket, TGT),并且可能无法登录。 

Last Principal Change  

上次修改主体信息的日期。(只读) 

Last Changed By 

上次更改此主体帐户的主体的名称。(只读) 

注释 

与主体有关的注释(如“临时帐户”)。 

表 24–3 SEAM Tool 的 "Principal Details" 面板中的属性

属性 

说明 

Last Success 

主体上次登录成功的日期和时间。(只读) 

Last Failure 

主体上次登录失败的日期和时间。(只读) 

Failure Count 

主体登录失败的次数。(只读) 

Last Password Change 

上次更改主体口令的日期和时间。(只读) 

Password Expires 

主体当前口令失效的日期和时间。 

Key Version 

主体的密钥版本号。通常,只有在口令已泄漏的情况下才会更改此属性。 

Maximum Lifetime (seconds) 

可将票证授予主体的最长时间(不续用)。 

Maximum Renewal (seconds) 

主体可续用现有票证的最长时间。 

表 24–4 SEAM Tool 的 "Principal Flags" 面板中的属性

属性(单选按钮) 

说明 

Disable Account 

选中此项后,将禁止主体登录。此属性提供了一种临时冻结主体帐户的简便方法。 

Require Password Change 

选中此项后,将使主体的当前口令失效,这将会强制用户使用 kpasswd 命令来创建新口令。如果安全性被破坏,并且需要确保替换旧口令,则此属性很有用。

Allow Postdated Tickets 

选中此项后,将允许主体获取以后生效的票证。  

例如,如果 cron 作业必须在几小时后运行,但您又因为票证的生命周期不够长而无法提前获取票证,则可能需要对其使用以后生效的票证。

Allow Forwardable Tickets 

选中此项后,将允许主体获取可转发的票证。 

可转发的票证即可转发至远程主机以提供单点登录会话的票证。例如,如果使用可转发的票证并且通过 ftprsh 进行自我验证,则可使用其他服务(如 NFS 服务),而不会提示您输入其他口令。

Allow Renewable Tickets 

选中此项后,将允许主体获取可续用的票证。 

主体可以自动延长可续用票证的失效日期或时间,而不必在票证首次失效后获取新的票证。目前,NFS 服务是可以续用票证的票证服务。 

Allow Proxiable Tickets 

选中此项后,将允许主体获取可代理的票证。 

可代理票证即可被服务以客户机名义执行客户机操作时使用的票证。借助可代理票证,服务可采用客户机的身份来获取其他服务的票证。但是,该服务不能获取票证授予票证 (Ticket-Granting Ticket, TGT)。 

Allow Service Tickets 

选中此项后,将允许为主体颁发服务票证。 

不允许为 kadmin/hostnamechangepw/hostname 主体颁发服务票证。此做法可确保只有这些主体才能更新 KDC 数据库。

Allow TGT-Based Authentication 

选中此项后,将允许服务主体为其他主体提供服务。具体而言,此属性允许 KDC 为服务主体颁发服务票证。 

此属性仅对服务主体有效。如果取消选中此项,将无法为服务主体颁发服务票证。 

Allow Duplicate Authentication 

选中此项后,将允许用户主体获取其他用户主体的服务票证。 

此属性仅对用户主体有效。如果取消选中此项,用户主体将仍可获取服务主体的服务票证,但不能获取其他用户主体的服务票证。 

Required Preauthentication 

选中此项后,KDC 在验证(通过软件)主体确为请求 TGT 的主体之前,不