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

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