此过程使用以下配置参数:
领域名称 = EXAMPLE.COM
DNS 域名 = example.com
主 KDC = kdc1.example.com
从 KDC = kdc2.example.com
NFS 服务器 = denver.example.com
客户机 = client.example.com
admin 主体 = kws/admin
用户主体 = mre
联机帮助 URL = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html
开始之前
您必须承担 root 角色。有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限。
更改 Kerberos 配置文件中的领域名称和服务器名称。还可以指定 gkadmin 的帮助文件的路径。
kdc1 # pfedit /etc/krb5/krb5.conf [libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = kdc1.example.com kdc = kdc2.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://www.example.com/doclib/OSMKA/aadmin-23.html
缺省情况下,Kerberos 领域到 KDC 的映射按如下顺序确定:
krb5.conf 中 realms 部分中的定义
在 DNS 中查找 SRV 记录
将 dns_lookup_kdc 或 dns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4)。请注意,始终会首先尝试引用。
缺省情况下,主机到领域的映射按如下顺序确定:
如果 KDC 支持引用,则 KDC 会通知客户机该主机属于哪个领域。
krb5.conf 文件中的 domain_realm 的定义。
主机的 DNS 域名。
缺省领域。
将 dns_lookup_kdc 或 dns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。请注意,始终会首先尝试引用。
要使验证成功通过,每个时钟都必须与 KDC 服务器上的时间同步,最大时差不得超过 krb5.conf 文件中 clockskew 关系定义的值。有关更多信息,请参见 krb5.conf(4) 手册页。有关网络时间协议 (Network Time Protocol, NTP) 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟。
denver # /usr/sbin/kadmin -p kws/admin Enter password: xxxxxxxx kadmin:
有关更多信息,请参见 kadmin(1M) 手册页。
仅当未向与该主机关联的用户分配主体时,才需要创建用户主体。
kadmin: addprinc mre Enter password for principal mre@EXAMPLE.COM:/** Type strong password **/ Re-enter password for principal mre@EXAMPLE.COM: xxxxxxxx kadmin:
如果需要非交互式 root 访问权限(例如以 root 用户身份运行 cron 作业),则执行此步骤。
root 主体应具有两个组成部分。第二个组成部分应该是 Kerberos 客户机系统的主机名,以避免创建领域范围的 root 主体。当主体实例为主机名时,无论名称服务中的域名是大写还是小写,都必须以小写字母指定 FQDN。
kadmin: addprinc -randkey root/client.example.com Principal "root/client.example.com" created. kadmin: ktadd root/client.example.com Entry for principal root/client.example.com with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal root/client.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 root/client.example.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin:
远程访问服务使用 host 主体来提供验证。如果密钥表文件中尚无凭证,此主体允许 root 获取凭证。
kadmin: addprinc -randkey host/denver.example.com Principal "host/denver.example.com@EXAMPLE.COM" created. kadmin: ktadd host/denver.example.com Entry for principal host/denver.example.com with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/denver.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/denver.example.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin:
仅当客户机需要使用 Kerberos 验证访问 NFS 文件系统时才需要执行此步骤。
kadmin: ktadd nfs/denver.example.com Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal nfs/denver.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 nfs/denver.example.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin:
kadmin: quit
在 /etc/nfssec.conf 文件中,删除将 Kerberos 安全模式注释掉的 "#"。
# pfedit /etc/nfssec.conf . . # # Uncomment the following lines to use Kerberos V5 with NFS # krb5 390003 kerberos_v5 default - # RPCSEC_GSS krb5i 390004 kerberos_v5 default integrity # RPCSEC_GSS krb5p 390005 kerberos_v5 default privacy # RPCSEC_GSS
如未启用 svc:/network/dns/client:default 服务,请启用它。有关更多信息,请参见 resolv.conf(4) 手册页。
# svcadm enable network/dns/client:default
# svcadm restart network/rpc/gss
有关更多信息,请参见 warn.conf(4) 手册页和自动更新所有票证授予票证。
Microsoft Active Directory (AD) Kerberos 服务提供了一个在多个主服务器上运行的 KDC。要使 Oracle Solaris 客户机更新信息,/etc/krb5/krb5.conf 文件中的 admin_server 或 kpasswd_server 声明必须列出所有服务器。本示例显示了如何使客户机更新有关 kdc1 与 kdc2 共享的 KDC 的信息。
[realms] EXAMPLE.COM = { kdc = kdc1.example.com kdc = kdc2.example.com admin_server = kdc1.example.com admin_server = kdc2.example.com }示例 4-5 将 Kerberos 客户机配置为使用非 Oracle Solaris KDC
可以通过以下方法将 Kerberos 客户机配置为使用非 Oracle Solaris KDC:将一个行添加到 /etc/krb5/krb5.conf 文件的 realms 部分。该行会更改客户机与 Kerberos 口令更改服务器通信时使用的协议。以下摘录显示了该行的格式。
[realms] EXAMPLE.COM = { kdc = kdc1.example.com kdc = kdc2.example.com admin_server = kdc1.example.com kpasswd_protocol = SET_CHANGE }示例 4-6 主机和域名到 Kerberos 领域的映射的 DNS TXT 记录
@ IN SOA kdc1.example.com root.kdc1.example.com ( 1989020501 ;serial 10800 ;refresh 3600 ;retry 3600000 ;expire 86400 ) ;minimum IN NS kdc1.example.com. kdc1 IN A 192.146.86.20 kdc2 IN A 192.146.86.21 _kerberos.example.com. IN TXT "EXAMPLE.COM" _kerberos.kdc1.example.com. IN TXT "EXAMPLE.COM" _kerberos.kdc2.example.com. IN TXT "EXAMPLE.COM"示例 4-7 Kerberos 服务器位置的 DNS SRV 记录
此示例分别为 KDC、admin 服务器和 kpasswd 服务器的位置定义记录。
@ IN SOA kdc1.example.com root.kdc1.example.com ( 1989020501 ;serial 10800 ;refresh 3600 ;retry 3600000 ;expire 86400 ) ;minimum IN NS kdc1.example.com. kdc1 IN A 192.146.86.20 kdc2 IN A 192.146.86.21 _kerberos._udp.EXAMPLE.COM IN SRV 0 0 88 kdc2.example.com _kerberos._tcp.EXAMPLE.COM IN SRV 0 0 88 kdc2.example.com _kerberos._udp.EXAMPLE.COM IN SRV 1 0 88 kdc1.example.com _kerberos._tcp.EXAMPLE.COM IN SRV 1 0 88 kdc1.example.com _kerberos-adm._tcp.EXAMPLE.COM IN SRV 0 0 464 kdc1.example.com _kpasswd._udp.EXAMPLE.COM IN SRV 0 0 464 kdc1.example.com