Kerberos 客户机是网络上需要使用 Kerberos 服务的任何主机(不是 KDC 服务器)。本节介绍有关安装 Kerberos 客户机的过程以及使用 root 验证以挂载 NFS 文件系统的特定信息。
以下任务列表包括有关设置 Kerberos 客户机的所有过程。每行都包括任务说明(说明执行该项任务的原因)以及指向该任务的链接。
任务 |
说明 |
参考 |
---|---|---|
建立 Kerberos 客户机安装配置文件。 |
生成可用于自动安装 Kerberos 客户机的客户机安装配置文件。 | |
配置 Kerberos 客户机。 |
手动安装 Kerberos 客户机。如果每台客户机安装要求唯一的安装参数,请使用此过程。 | |
自动安装 Kerberos 客户机。如果每台客户机的安装参数都相同,请使用此过程。 | ||
交互式安装 Kerberos 客户机。如果仅需要更改一些安装参数,请使用此过程。 | ||
允许客户机以 root 用户身份访问 NFS 文件系统。 |
在客户机上创建 root 主体,以便客户机可以挂载使用 root 访问权限共享的 NFS 文件系统。此外,允许为客户机设置对 NFS 文件系统的非交互 root 访问权限,以便可以运行 cron 作业。 |
此过程创建可在安装 Kerberos 客户机时使用的 kclient 配置文件。使用 kclient 配置文件,可降低出现键入错误的可能性。此外,与交互式过程相比,使用该配置文件可以减少用户干预。
成为超级用户。
创建 kclient 安装配置文件。
kclient 配置文件样例与以下内容类似:
client# cat /net/kdc1.example.com/export/install/profile REALM EXAMPLE.COM KDC kdc1.example.com ADMIN clntconfig FILEPATH /net/kdc1.example.com/export/install/krb5.conf NFS 1 DNSLOOKUP none |
此过程使用安装配置文件。请参见如何创建 Kerberos 客户机安装配置文件。
成为超级用户。
运行 kclient 安装脚本。
要完成此过程,需要提供 clntconfig 主体的口令。
client# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf Starting client setup --------------------------------------------------- kdc1.example.com Setting up /etc/krb5/krb5.conf. Obtaining TGT for clntconfig/admin ... Password for clntconfig/admin@EXAMPLE.COM: <Type the password> nfs/client.example.com entry ADDED to KDC database. nfs/client.example.com entry ADDED to keytab. host/client.example.com entry ADDED to KDC database. host/client.example.com entry ADDED to keytab. Copied /net/kdc1.example.com/export/clientinstall/krb5.conf. --------------------------------------------------- Setup COMPLETE. client# |
以下示例将覆盖在安装配置文件中设置的 DNSARG 和 KDC 参数。
# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf\ -d dns_fallback -k kdc2.example.com Starting client setup --------------------------------------------------- kdc1.example.com Setting up /etc/krb5/krb5.conf. Obtaining TGT for clntconfig/admin ... Password for clntconfig/admin@EXAMPLE.COM: <Type the password> nfs/client.example.com entry ADDED to KDC database. nfs/client.example.com entry ADDED to keytab. host/client.example.com entry ADDED to KDC database. host/client.example.com entry ADDED to keytab. Copied /net/kdc1.example.com/export/install/krb5.conf. --------------------------------------------------- Setup COMPLETE. client# |
此过程使用 kclient 安装实用程序而不是使用安装配置文件。
以下输出给出了运行 kclient 命令的结果。
client# /usr/sbin/kclient Starting client setup --------------------------------------------------- Do you want to use DNS for kerberos lookups ? [y/n]: n No action performed. Enter the Kerberos realm: EXAMPLE.COM Specify the KDC hostname for the above realm: kdc1.example.com Setting up /etc/krb5/krb5.conf. Enter the krb5 administrative principal to be used: clntconfig/admin Obtaining TGT for clntconfig/admin ... Password for clntconfig/admin@EXAMPLE.COM: <Type the password> Do you plan on doing Kerberized nfs ? [y/n]: n host/client.example.com entry ADDED to KDC database. host/client.example.com entry ADDED to keytab. Do you want to copy over the master krb5.conf file ? [y/n]: y Enter the pathname of the file to be copied: \ /net/kdc1.example.com/export/install/krb5.conf Copied /net/kdc1.example.com/export/install/krb5.conf. --------------------------------------------------- Setup COMPLETE ! # |
在此过程中,将使用以下配置参数:
领域名称 = EXAMPLE.COM
DNS 域名 = example.com
主 KDC = kdc1.example.com
从 KDC = kdc2.example.com
客户机 = client.example.com
admin 主体 = kws/admin
用户主体 = mre
联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
调整该 URL 以指向“SEAM Administration Tool”部分,如SEAM Administration Tool 中的联机帮助 URL中所述。
成为超级用户。
编辑 Kerberos 配置文件 ( krb5.conf)。
要从 Kerberos 缺省版本更改该文件,需要更改领域名称和服务器名称。您还需要标识 gkadmin 帮助文件的路径。
kdc1 # cat /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://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956 |
如果要限制加密类型,可以设置 default_tkt_enctypes 或 default_tgs_enctypes 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型。
(可选的)更改用于定位 KDC 的过程。
缺省情况下,使用主机和域名到 kerberos 领域的映射定位 KDC。可以通过将 dns_lookup_kdc、dns_lookup_realm 或 dns_fallback 添加到 krb5.conf 文件的 libdefaults 部分来更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。
(可选的)使用 NTP 或其他时钟同步机制将客户机时钟与主 KDC 时钟同步。
安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟。
启动 kadmin。
可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。
denver # /usr/sbin/kadmin -p kws/admin Enter password: <Type kws/admin password> kadmin: |
(可选的)如果不存在用户主体,请创建用户主体。
仅当尚未对与此主机关联的用户指定主体时,才需要创建用户主体。
kadmin: addprinc mre Enter password for principal mre@EXAMPLE.COM: <Type the password> Re-enter password for principal mre@EXAMPLE.COM: <Type it again> kadmin: |
(可选的)创建 root 主体。
如果客户机不要求对使用 NFS 服务挂载的远程文件系统拥有 root 访问权限,则可以跳过此步骤。为了避免创建领域范围的 root 主体,root 主体应是由两个部分组成的主体(第二个组成部分为 Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。
kadmin: addprinc -randkey root/client.example.com Principal "root/client.example.com" created. kadmin: |
创建 host 主体。
host 主体用于验证应用程序。
kadmin: addprinc -randkey host/denver.example.com Principal "host/denver.example.com@EXAMPLE.COM" created. kadmin: |
(可选的)将服务器的 NFS 服务主体添加到服务器的密钥表文件中。
仅当客户机需要使用 Kerberos 验证访问 NFS 文件系统时,才需要执行此步骤。
kadmin: ktadd nfs/denver.example.com 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. Entry for principal nfs/denver.example.com with kvno 3, encryption type ARCFOUR with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: |
(可选的)将 root 主体添加到服务器的密钥表文件中。
如果添加了 root 主体,则必须执行此步骤,以便客户机对使用 NFS 服务挂载的文件系统拥有 root 访问权限。如果需要非交互 root 访问权限(例如,以 root 身份运行 cron 作业),也必须执行此步骤。
kadmin: ktadd root/client.example.com 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. Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: |
将 host 主体添加到服务器的密钥表文件中。
kadmin: ktadd host/denver.example.com 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. Entry for principal host/denver.example.com with kvno 3, encryption type ARCFOUR with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/denver.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 |
(可选的)要在 NFS 上使用 Kerberos,请在 /etc/nfssec.conf 文件中启用 Kerberos 安全模式。
编辑 /etc/nfssec.conf 文件并删除位于 Kerberos 安全模式前面的 "#"。
# cat /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 |
如果希望客户机自动更新 TGT 或者向用户发出有关 Kerberos 票证失效的警告,请在 /etc/krb5/warn.conf 文件中创建相应的项。
有关更多信息,请参见 warn.conf(4) 手册页。
可以设置 Kerberos 客户机,使其与非 Kerberos KDC 协同工作。在此情况下,必须在 realms 部分的 /etc/krb5/krb5.conf 文件中包括一行。该行更改客户机与 Kerberos 口令更改服务器通信时要使用的协议。该行的格式如下:
[realms] EXAMPLE.COM = { kdc = kdc1.example.com kdc = kdc2.example.com admin_server = kdc1.example.com kpasswd_protocol = SET_CHANGE } |
@ 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" |
此示例定义主 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 kdc1.example.com _kerberos-adm._udp.EXAMPLE.COM IN SRV 0 0 749 kdc1.example.com _kpasswd._udp.EXAMPLE.COM IN SRV 0 0 749 kdc1.example.com |
通过此过程,客户机可以使用 root ID 权限访问要求 Kerberos 验证的 NFS 文件系统。特别是,可以访问使用以下选项共享的 NFS 文件系统:-o sec=krb5,root=client1.sun.com。
成为超级用户。
启动 kadmin。
可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。
denver # /usr/sbin/kadmin -p kws/admin Enter password: <Type kws/admin password> kadmin: |
为 NFS 客户机创建 root 主体。
此主体用于对要求 Kerberos 验证的已挂载 NFS 的文件系统提供 root 等效访问权限。为了避免创建领域范围的 root 主体,root 主体应是由两个部分组成的主体(第二个组成部分为 Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。
kadmin: addprinc -randkey root/client.example.com Principal "root/client.example.com" created. kadmin: |
将 root 主体添加到服务器的密钥表文件中。
如果添加了 root 主体,则必须执行此步骤,以便客户机对使用 NFS 服务挂载的文件系统拥有 root 访问权限。如果需要非交互 root 访问权限(例如,以 root 身份运行 cron 作业),也必须执行此步骤。
kadmin: ktadd root/client.example.com 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. Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal root/client.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 |
没有 Kerberos 主体的用户可以自动迁移到现有 Kerberos 领域。通过将 pam_krb5_migrate 模块堆叠在 /etc/pam.conf 的服务验证栈中,可以通过正在使用的服务的 PAM 框架实现迁移。
在此示例中,将配置 rlogin 和 other PAM 服务名称以使用自动迁移。将使用以下配置参数:
领域名称 = EXAMPLE.COM
主 KDC = kdc1.example.com
承载迁移服务的计算机 = server1.example.com
迁移服务主体 = host/server1.example.com
将 server1 设置为 EXAMPLE.COM 领域的 Kerberos 客户机。有关更多信息,请参见配置 Kerberos 客户机。
检查是否存在 server1 的主机服务主体。
server1 的 keytab 文件中的主机服务主体用于向主 KDC 验证该服务器。
server1 # klist -k Keytab name: FILE:/etc/krb5/krb5.keytab KVNO Principal ---- ------------------------------------------------ 3 host/server1.example.com@EXAMPLE.COM 3 host/server1.example.com@EXAMPLE.COM 3 host/server1.example.com@EXAMPLE.COM 3 host/server1.example.com@EXAMPLE.COM |
对 PAM 配置文件进行更改。
将 pam_krb5_migrate PAM 模块添加到 rlogin 和 other 服务名称的验证栈中。系统将自动为使用 rlogin、telnet 或 ssh 而不具有 Kerberos 主体的用户创建主体。
# cat /etc/pam.conf . . # # rlogin service (explicit because of pam_rhost_auth) # rlogin auth sufficient pam_rhosts_auth.so.1 rlogin auth requisite pam_authtok_get.so.1 rlogin auth required pam_dhkeys.so.1 rlogin auth required pam_unix_cred.so.1 rlogin auth required pam_unix_auth.so.1 rlogin auth sufficient pam_krb5.so.1 rlogin auth optional pam_krb5_migrate.so.1 # . . # # Default definitions for Authentication management # Used when service name is not explicitly mentioned for authentication # other auth requisite pam_authtok_get.so.1 other auth required pam_dhkeys.so.1 other auth required pam_unix_cred.so.1 other auth required pam_unix_auth.so.1 other auth sufficient pam_krb5.so.1 other auth optional pam_krb5_migrate.so.1 |
(可选的)如果需要,可强制立即更改口令。
可以将新建 Kerberos 帐户的口令失效时间设置为当前时间(现在),以便强制立即更改 Kerberos 口令。要将失效时间设置为当前时间,请将 expire_pw 选项添加到使用 pam_krb5_migrate 模块的行中。有关更多信息,请参见 pam_krb5_migrate(5) 手册页。
# cat /etc/pam.conf . . rlogin auth optional pam_krb5_migrate.so.1 expire_pw # . . other auth optional pam_krb5_migrate.so.1 expire_pw |
在主 KDC 上,更新访问控制文件。
以下项将为所有用户(root 用户除外)授予对 host/server1.example.com 服务主体的迁移和查询权限。务必注意,不应使用 U 权限迁移 kadm5.acl 文件中列出的用户。这些项必须位于允许所有用户或 ui 项之前。有关更多信息,请参见 kadm5.acl(4) 手册页。
kdc1 # cat /etc/krb5/kadm5.acl host/server1.example.com@EXAMPLE.COM U root host/server1.example.com@EXAMPLE.COM ui * */admin@EXAMPLE.COM * |
在主 KDC 上,重新启动 Kerberos 管理守护进程。
通过此步骤,kadmind 守护进程可以使用新的 kadm5.acl 项。
kdc1 # svcadm restart network/security/kadmin |
在主 KDC 上,向 pam.conf 文件中添加项。
通过以下项,kadmind 守护进程可以使用 k5migrate PAM 服务来验证需要迁移的帐户的 UNIX 用户口令。
# grep k5migrate /etc/pam.conf k5migrate auth required pam_unix_auth.so.1 k5migrate account required pam_unix_account.so.1 |