配置 KDC 主服务器

时间:2021-02-12 20:01:31

原文地址:http://hi.baidu.com/rlee1984/blog/item/800db813382e95015baf5343.html

配置 KDC 主服务器 2007-09-14 15:08

配置 KDC 服务器

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

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

配置 KDC 主服务器如何配置主 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_realmkdc 和 admin_server 行以及所有 domain_realm 项。此外,还编辑了定义 help_url 的行。


    注 –

    如果要限制加密类型,可以设置 default_tkt_enctypes 或 default_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_enctypes 或 master_key_type 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型


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

    kdb5_util 命令创建 KDC 数据库。此外,与 -s 选项一起使用时,此命令会在启动 kadmind 和 krb5kdc 守护进程之前,创建一个用于向自己验证 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 服务创建密钥表文件。

      此命令序列创建包含 kadmin 和 changepw 的主体项的特殊密钥表文件。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 的应用程序(例如 klist 和 kprop)将使用主机主体。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