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

交换主 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