在 Oracle® Solaris 11.2 中管理 Kerberos 和其他验证服务

退出打印视图

更新时间: 2014 年 9 月
 
 

如何手动配置 Kerberos 客户机

    此过程使用以下配置参数:

  • 领域名称 = 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 中确保用户和进程的安全 中的使用所指定的管理权限

  1. 编辑 Kerberos 配置文件 (krb5.conf)。

    更改 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 系统通信,您可能需要限制加密类型。有关限制加密类型所涉及的问题的说明,请参见Kerberos 加密类型
  2. (u53ef选) 更改用于定位 KDC 的过程。

      缺省情况下,Kerberos 领域到 KDC 的映射按如下顺序确定:

    • krb5.confrealms 部分中的定义

    • 在 DNS 中查找 SRV 记录

    dns_lookup_kdcdns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4)。请注意,始终会首先尝试引用。

  3. (u53ef选) 更改用于确定主机领域的过程。

      缺省情况下,主机到领域的映射按如下顺序确定:

    • 如果 KDC 支持引用,则 KDC 会通知客户机该主机属于哪个领域。

    • krb5.conf 文件中的 domain_realm 的定义。

    • 主机的 DNS 域名。

    • 缺省领域。

    dns_lookup_kdcdns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。请注意,始终会首先尝试引用。

  4. 使用 NTP 或其他时钟同步机制将客户机时钟与主 KDC 服务器时钟同步。

    要使验证成功通过,每个时钟都必须与 KDC 服务器上的时间同步,最大时差不得超过 krb5.conf 文件中 clockskew 关系定义的值。有关更多信息,请参见 krb5.conf(4) 手册页。有关网络时间协议 (Network Time Protocol, NTP) 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟

  5. 创建 Kerberos 主体。
    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: xxxxxxxx
    kadmin: 

    有关更多信息,请参见 kadmin(1M) 手册页。

    1. (u53ef选) 如果不存在用户主体,请创建一个。

      仅当未向与该主机关联的用户分配主体时,才需要创建用户主体。

      kadmin: addprinc mre
      Enter password for principal mre@EXAMPLE.COM:/** Type strong password **/
      Re-enter password for principal mre@EXAMPLE.COM: xxxxxxxx
      kadmin: 
    2. (u53ef选) 创建 root 主体,并将其添加到服务器的密钥表文件。

      注 -  如果客户机不需要对使用 NFS 挂载的远程文件系统有 root 访问权限,则可以跳过此步骤。

      如果需要非交互式 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: 
    3. 创建 root 主体,并将其添加到服务器的密钥表文件。

      远程访问服务使用 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:
    4. (u53ef选) 将服务器的 NFS 服务主体添加到服务器的密钥表文件中。

      仅当客户机需要使用 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: 
    5. 退出 kadmin
      kadmin: quit
  6. (u53ef选) 对 NFS 启用 Kerberos。
    1. /etc/nfssec.conf 文件中启用 Kerberos 安全模式。

      /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
    2. 启用 DNS。

      如未启用 svc:/network/dns/client:default 服务,请启用它。有关更多信息,请参见 resolv.conf(4) 手册页。

      # svcadm enable network/dns/client:default
    3. 重新启动 gss 服务。
      # svcadm restart network/rpc/gss
  7. (u53ef选) 要使客户机自动更新 TGT 或警告用户 Kerberos 票证失效,请在 /etc/krb5/warn.conf 文件中创建一个相应项。

    有关更多信息,请参见 warn.conf(4) 手册页和自动更新所有票证授予票证

示例 4-4  将 Oracle Solaris 客户机配置为使用多主 KDC

Microsoft Active Directory (AD) Kerberos 服务提供了一个在多个主服务器上运行的 KDC。要使 Oracle Solaris 客户机更新信息,/etc/krb5/krb5.conf 文件中的 admin_serverkpasswd_server 声明必须列出所有服务器。本示例显示了如何使客户机更新有关 kdc1kdc2 共享的 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