使用本节中的过程可以更容易地将主 KDC 与从 KDC 进行交换。仅当主 KDC 服务器由于某种原因出现故障时,或者需要重新安装主 KDC(例如,由于安装了新硬件)时,才应将主 KDC 与从 KDC 进行交换。
在希望其可以成为主 KDC 的从 KDC 服务器上执行此过程。此过程假定将使用增量传播。
在安装 KDC 过程中使用主 KDC 和可交换从 KDC 的别名。
定义 KDC 的主机名时,请确保 DNS 中包括每个系统的别名。此外,在 /etc/krb5/krb5.conf 文件中定义主机时也应使用别名。
逐步完成从 KDC 安装。
在进行任何交换之前,在该领域中此服务器的作用应与任何其他从 KDC 相同。有关说明,请参见如何配置从 KDC。
移动主 KDC 命令
要禁止从该从 KDC 运行主 KDC 命令,请将 kprop、kadmind 和 kadmin.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 |
在此过程中,要交换出的主 KDC 服务器名为 kdc1。将成为新的主 KDC 的从 KDC 名为 kdc4。此过程假定将使用增量传播。
此过程要求已将该从 KDC 服务器设置为可交换的从 KDC。有关更多信息,请参见如何配置可交换的从 KDC。
在新的主 KDC 上,启动 kadmin。
kdc4 # /usr/sbin/kadmin -p kws/admin Enter password: <Type kws/admin password> kadmin: |
为 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: |
创建密钥表文件。
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: |
退出 kadmin。
kadmin: quit |
在新的主 KDC 上,强制执行同步。
以下步骤将在从服务器上强制执行完全 KDC 更新。
kdc4 # svcadm disable network/security/krb5kdc kdc4 # rm /var/krb5/principal.ulog kdc4 # svcadm enable network/security/krb5kdc |
在新的主 KDC 上,清除更新日志。
以下步骤将重新初始化新的主 KDC 服务器的更新日志。
kdc4 # svcadm disable network/security/krb5kdc kdc4 # rm /var/krb5/principal.ulog |
在旧的主 KDC 上,中止 kadmind 和 krb5kdc 进程。
中止 kadmind 进程后,可防止对 KDC 数据库进行任何更改。
kdc1 # svcadm disable network/security/kadmin kdc1 # svcadm disable network/security/krb5kdc |
在旧的主 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 } |
在旧的主 KDC 上,移动主 KDC 命令和 kadm5.acl 文件。
要禁止运行主 KDC 命令,请将 kprop、kadmind 和 kadmin.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 |
在 DNS 服务器上,更改主 KDC 的别名。
要更改服务器,请编辑 example.com 区域文件并更改 masterkdc 的项。
masterkdc IN CNAME kdc4 |
在 DNS 服务器上,重新启动 Internet 域名服务器。
运行以下命令以重新装入新的别名信息:
# svcadm refresh network/dns/server |
在新的主 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 |
在新的主 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 |
在新的主 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 } |
在新的主 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 |
在新的主 KDC 上,启动 kadmind 和 krb5kdc。
kdc4 # svcadm enable network/security/krb5kdc kdc4 # svcadm enable network/security/kadmin |
在旧的主 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 |
在旧的主 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 |
在旧的主 KDC 上,启动 kpropd 和 krb5kdc。
启动 krb5kdc 守护进程时,如果将系统配置为从 KDC,则 kpropd 也将启动。
kdc1 # svcadm enable network/security/krb5kdc |