Sun 企业鉴别机制指南

如何配置一个主 KDC

为了提供一个完整的示例,假设您没有运行预配置过程。如果您在安装软件时使用了预配置过程,本过程中所包含的文件,其中许多就不需要进行编辑了;然而,您应当审查文件内容。

在本过程中,使用下列配置参数:

  1. 配置一个主 KDC 的先决条件。

    本过程要求已安装有主 KDC 软件。另外, DNS 必须正在运行。请参见 "交换主 KDC 和从 KDC",了解主 KDC 为可交换的情况下的具体的命名操作指示。

  2. 在主 KDC 上变为超级用户。

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

    您必须更改区域名和服务器的名称。请参见 krb5.conf(4) 手册页,获得对该文件的一个全面的描述。如果您是使用配置文件安装的 SEAM 软件,则请验证文件的内容,而不是对其进行编辑。


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    admin_server = kdc1.acme.com
            }
    
    [domain_realm]
            .acme.com = ACME.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 条目的各行均被更改。包含有针对 default_realm 的一行,以使示例完整完整,但如果区域和域名等效的话,安装进程就不创建该条目。另外,定义 help_url 的一行也被编辑。

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

    您必须更改区域名。请参见 kdc.conf(4) 手册页,获得对该文件的一个全面的描述。如果您是使用配置文件安装的 SEAM 软件,则请验证文件的内容,而不是对其进行编辑。


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

    在本示例中,realms 一节中的区域名定义被更改。

  5. 使用 kdb5_util 来创建 KDC 数据库。

    kdb5_util 命令创建 KDC 数据库,且在用 -s 选项时,创建一个贮藏文件,用来在 kadmindkrb5kdc 守候程序启动之前,向其自身鉴别 KDC 。


    kdc1 # /usr/krb5/sbin/kdb5_util create -r ACME.COM -s
    为区域 'ACME.COM' 初始化数据库'/var/krb5principal' 
    将提示您录入数据库主口令。
    您切记不要忘记该口令。
    录入 KDC 数据库主密钥: <键入密钥>
    	重新录入 KDC 数据库主密钥来验证: <再次将其键入>
    

    如果区域名与服务器名称空间域名等效的话,则 -r 选项后面跟有区域名,这并不是必须的。

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

    一旦植有数据,/etc/krb5/kadm5.acl 就应当包含所有被允许来管理 KDC 的授权对象的名称。所添加的第一个条目可能会看似如下所示:


    kws/admin@ACME.COM   *

    该条目给予 ACME.COM 区域中的 kws/admin 授权对象修改 KDC 中的授权对象或策略的能力。默认的安装包括一个"*",用于匹配所有的 admin 授权对象。这可能会是一个安全隐患,因而包括所有 admin 授权对象的一个列表则较为安全。

  7. 启动 kadmin.local

    以下的分步骤创建 SEAM 所使用的授权对象。


    kdc1 # /usr/krb5/sbin/kadmin.local
    kadmin.local: 
    1. 使用 kadmin.local 来将管理授权对象添加到数据库。

      您可以根据需要来添加 admin 授权对象。您必须添加至少一个 admin 授权对象,才能完成 KDC 配置进程。对于本示例,添加了一个 kws/admin 授权对象。您可以用一个适当的授权对象名称来替换 "kws"。


      kadmin.local: addprinc kws/admin
      录入授权对象 kws/admin@ACME.COM 的口令: <键入口令>
      重新录入授权对象 kws/admin@ACME.COM 的口令: <再次将其键入>
      授权对象 "kws/admin@ACME.COM" 被创建。 
      kadmin.local: 
    2. 使用 kadmin.local,为 kadmin 创建一个密钥表文件。

      该命令序列创建一个特殊的密钥表文件,其中带有针对 kadminchangepw 的授权对象条目。这些授权对象是 kadmind 服务所必需的。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.acme.com
      授权对象 kadmin/kdc1.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC
                 被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。 kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.acme.com
      授权对象changepw/kdc1.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC
                  被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。 kadmin.local: 
    3. 退出 kadmin.local

      您业已为下列各步骤添加了所有所要求的授权对象。


      kadmin.local: 退出
      
  8. 启动 Kerberos 守候程序。


    kdc1 # /etc/init.d/kdc startkdc1 # 
    /etc/init.d/kdc.master start
    
  9. 启动 kadmin

    此时此刻,您可以使用 SEAM 管理工具来添加授权对象。命令行示例是出于简洁目的而显示的。您必须借助您在本过程的早些时候所创建的 admin 授权对象名称中的一个进行登录。


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    录入口令: <录入 kws/admin 口令>
    kadmin: 
    1. 使用 kadmin 来创建主 KDC 主机授权对象。

      主机授权对象为 Kerberized 应用程序 (诸如 klistkprop) 以及 Kerberized 服务 (诸如 ftptelnet) 所使用。


      kadmin: addprinc -randkey host/kdc1.acme.com
      授权对象 "host/kdc1.acme.com@ACME.COM" 被创建。 
      kadmin: 
    2. 可选: 使用 kadmin 来创建主 KDC root 授权对象。

      该授权对象用于已鉴别的 NFS 装配,因而在一个主 KDC 上可能并不是必需的。


      kadmin: addprinc root/kdc1.acme.com
      录入授权对象 root/kdc1.acme.com@ACME.COM 的口令: <键入口令>
      重新录入授权对象 root/kdc1.acme.com@ACME.COM 的口令: <再次将其键入>
      授权对象 "root/kdc1.acme.com@ACME.COM" 被创建。 
      kadmin: 
    3. 将主 KDC 主机授权对象添加到主 KDC 密钥表文件。

      将主机授权对象添加到密钥表文件,允许自动使用该授权对象。


      kadmin: ktadd host/kdc1.acme.com
      kadmin: 授权对象 host/kdc1.acme.com 的条目,
       kvno 为 3,加密类型为 DES-CBC-CRC 被添加到密钥表  
       WRFILE:/etc/krb5/krb5.keytab 
      kadmin: 退出
      
    4. 退出 kadmin


      kadmin: 退出
      
  10. 为每个 KDC 添加一个条目到传播配置文件 (kpropd.acl)。

    请参见 kprop(1M) 手册页,获得对该文件的一个全面的描述。如果您是使用配置文件安装的 SEAM 软件,则请验证文件的内容,而不是对其进行编辑。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.acme.com@ACME.COM
    host/kdc2.acme.com@ACME.COM
  11. 可选: 使用 NTP 或另一时钟同步机制来使主 KDC 时钟同步。

    安装和使用 NTP 不是必需的,但是每个时钟必须在 krb5.conf 文件的 libdefaults 一节中所定义的默认的时间范围之内,以便鉴别获得成功。请参见 "使 KDC 和 SEAM 客户机之间时钟同步",了解关于 NTP 的信息。