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

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