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

配置 Kerberos 客户机

Kerberos 客户机是网络上需要使用 Kerberos 服务的任何主机(不是 KDC 服务器)。本节介绍有关安装 Kerberos 客户机的过程以及使用 root 验证以挂载 NFS 文件系统的特定信息。

配置 Kerberos 客户机(任务列表)

以下任务列表包括有关设置 Kerberos 客户机的所有过程。每行都包括任务说明(说明执行该项任务的原因)以及指向该任务的链接。

任务 

说明 

参考 

建立 Kerberos 客户机安装配置文件。 

生成可用于自动安装 Kerberos 客户机的客户机安装配置文件。 

如何创建 Kerberos 客户机安装配置文件

配置 Kerberos 客户机。 

手动安装 Kerberos 客户机。如果每台客户机安装要求唯一的安装参数,请使用此过程。 

如何手动配置 Kerberos 客户机

 

自动安装 Kerberos 客户机。如果每台客户机的安装参数都相同,请使用此过程。 

如何自动配置 Kerberos 客户机

 

交互式安装 Kerberos 客户机。如果仅需要更改一些安装参数,请使用此过程。 

如何交互配置 Kerberos 客户机

允许客户机以 root 用户身份访问 NFS 文件系统。

在客户机上创建 root 主体,以便客户机可以挂载使用 root 访问权限共享的 NFS 文件系统。此外,允许为客户机设置对 NFS 文件系统的非交互 root 访问权限,以便可以运行 cron 作业。

如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

Procedure如何创建 Kerberos 客户机安装配置文件

此过程创建可在安装 Kerberos 客户机时使用的 kclient 配置文件。使用 kclient 配置文件,可降低出现键入错误的可能性。此外,与交互式过程相比,使用该配置文件可以减少用户干预。

  1. 成为超级用户。

  2. 创建 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

Procedure如何自动配置 Kerberos 客户机

开始之前

此过程使用安装配置文件。请参见如何创建 Kerberos 客户机安装配置文件

  1. 成为超级用户。

  2. 运行 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#

示例 22–5 使用命令行覆盖项自动配置 Kerberos 客户机

以下示例将覆盖在安装配置文件中设置的 DNSARGKDC 参数。


# /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#

Procedure如何交互配置 Kerberos 客户机

此过程使用 kclient 安装实用程序而不是使用安装配置文件。

  1. 成为超级用户。

  2. 运行 kclient 安装脚本。

    需要提供以下信息:

    • Kerberos 领域名称

    • 主 KDC 主机名

    • 管理主体名称

    • 管理主体的口令


示例 22–6 运行 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 !

#

Procedure如何手动配置 Kerberos 客户机

在此过程中,将使用以下配置参数:

  1. 成为超级用户。

  2. 编辑 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_enctypesdefault_tgs_enctypes 行。有关限制加密类型涉及的问题的说明,请参阅使用 Kerberos 加密类型


  3. (可选的)更改用于定位 KDC 的过程。

    缺省情况下,使用主机和域名到 kerberos 领域的映射定位 KDC。可以通过将 dns_lookup_kdcdns_lookup_realmdns_fallback 添加到 krb5.conf 文件的 libdefaults 部分来更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。

  4. (可选的)使用 NTP 或其他时钟同步机制将客户机时钟与主 KDC 时钟同步。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个时钟必须处于 krb5.conf 文件的 libdefaults 部分中定义的缺省时间内。有关 NTP 的信息,请参见同步 KDC 和 Kerberos 客户机的时钟

  5. 启动 kadmin

    可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. (可选的)如果不存在用户主体,请创建用户主体。

      仅当尚未对与此主机关联的用户指定主体时,才需要创建用户主体。


      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: 
    2. (可选的)创建 root 主体。

      如果客户机不要求对使用 NFS 服务挂载的远程文件系统拥有 root 访问权限,则可以跳过此步骤。为了避免创建领域范围的 root 主体,root 主体应是由两个部分组成的主体(第二个组成部分为 Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。


      kadmin: addprinc -randkey root/client.example.com
      
      Principal "root/client.example.com" created.
      
      kadmin:
    3. 创建 host 主体。

      host 主体用于验证应用程序。


      kadmin: addprinc -randkey host/denver.example.com
      
      Principal "host/denver.example.com@EXAMPLE.COM" created.
      
      kadmin: 
    4. (可选的)将服务器的 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: 
    5. (可选的)将 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: 
    6. 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:
    7. 退出 kadmin


      kadmin: quit
      
  6. (可选的)要在 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
  7. 如果希望客户机自动更新 TGT 或者向用户发出有关 Kerberos 票证失效的警告,请在 /etc/krb5/warn.conf 文件中创建相应的项。

    有关更多信息,请参见 warn.conf(4) 手册页。


示例 22–7 使用非 Kerberos KDC 设置 Kerberos 客户机

可以设置 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

        }


示例 22–8 主机和域名到 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"


示例 22–9 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  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

Procedure如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

通过此过程,客户机可以使用 root ID 权限访问要求 Kerberos 验证的 NFS 文件系统。特别是,可以访问使用以下选项共享的 NFS 文件系统:-o sec=krb5,root=client1.sun.com

  1. 成为超级用户。

  2. 启动 kadmin

    可以使用 SEAM Administration Tool 添加主体,如如何创建新的 Kerberos 主体中所述。为此,必须使用在配置主 KDC 时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 为 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:
    2. 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: 
    3. 退出 kadmin


      kadmin: quit
      

Procedure在 Kerberos 领域中配置用户自动迁移

没有 Kerberos 主体的用户可以自动迁移到现有 Kerberos 领域。通过将 pam_krb5_migrate 模块堆叠在 /etc/pam.conf 的服务验证栈中,可以通过正在使用的服务的 PAM 框架实现迁移。

在此示例中,将配置 rloginother PAM 服务名称以使用自动迁移。将使用以下配置参数:

开始之前

server1 设置为 EXAMPLE.COM 领域的 Kerberos 客户机。有关更多信息,请参见配置 Kerberos 客户机

  1. 检查是否存在 server1 的主机服务主体。

    server1keytab 文件中的主机服务主体用于向主 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
    
  2. 对 PAM 配置文件进行更改。

    pam_krb5_migrate PAM 模块添加到 rloginother 服务名称的验证栈中。系统将自动为使用 rlogintelnetssh 而不具有 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
    
  3. (可选的)如果需要,可强制立即更改口令。

    可以将新建 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
    
  4. 在主 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 *
  5. 在主 KDC 上,重新启动 Kerberos 管理守护进程。

    通过此步骤,kadmind 守护进程可以使用新的 kadm5.acl 项。


    kdc1 # svcadm restart network/security/kadmin
    
  6. 在主 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