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

配置 Kerberos NFS 服务器

NFS 服务可以使用 UNIX 用户 ID (user ID, UID) 标识用户,但不能直接使用 GSS 凭证。要将凭证转换为 UID,可能需要创建将用户凭证映射到 UNIX UID 的凭证表。有关缺省凭证映射的更多信息,请参见将 GSS 凭证映射到 UNIX 凭证。本节中的过程重点介绍配置 Kerberos NFS 服务器、管理凭证表以及对已挂载 NFS 的文件系统启动 Kerberos 安全模式所需的任务。以下任务列表说明了本节中所包含的任务。

表 22–1 配置 Kerberos NFS 服务器(任务列表)

任务 

说明 

参考 

配置 Kerberos NFS 服务器。 

使服务器共享要求 Kerberos 验证的文件系统。 

如何配置 Kerberos NFS 服务器

创建凭证表。 

在缺省映射不满足要求的情况下,生成可用于提供从 GSS 凭证到 UNIX 用户 ID 的映射的凭证表。 

如何创建凭证表

更改将用户凭证映射到 UNIX UID 的凭证表。 

更新凭证表中的信息。 

如何向凭证表中添加单个项

在两个类似领域之间创建凭证映射。 

在多个领域共享同一个口令文件的情况下,提供有关如何将 UID 从一个领域映射到另一个领域的说明。 

如何提供各领域之间的凭证映射

使用 Kerberos 验证共享文件系统。 

使用安全模式共享文件系统,以便要求 Kerberos 验证。 

如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

Procedure如何配置 Kerberos NFS 服务器

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

  1. 完成配置 Kerberos NFS 服务器的先决条件。

    必须配置主 KDC。要完全测试此过程,需要多个客户机。

  2. (可选的)安装 NTP 客户机或其他时钟同步机制。

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

  3. 启动 kadmin

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


    denver # /usr/sbin/kadmin -p kws/admin
    
    Enter password: <Type kws/admin password>
    
    kadmin: 
    1. 创建服务器的 NFS 服务主体。

      请注意,主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      对系统上可能用于访问 NFS 数据的每个唯一接口重复此步骤。如果主机有多个接口具有唯一名称,则每个唯一名称必须具有自己的 NFS 服务主体。


      kadmin: addprinc -randkey nfs/denver.example.com
      
      Principal "nfs/denver.example.com" created.
      
      kadmin:
    2. 将服务器的 NFS 服务主体添加到服务器的密钥表文件中。

      步骤 a 中创建的每个唯一服务主体重复此步骤。


      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:
    3. 退出 kadmin


      kadmin: quit
      
  4. (可选的)如果需要,可创建特殊 GSS 凭证映射。

    通常,Kerberos 服务在 GSS 凭证和 UNIX UID 之间生成相应的映射。缺省映射在将 GSS 凭证映射到 UNIX 凭证中介绍。如果缺省映射不满足要求,请参见如何创建凭证表以获取更多信息。

  5. 使用 Kerberos 安全模式共享 NFS 文件系统。

    有关更多信息,请参见如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

Procedure如何创建凭证表

NFS 服务器使用 gsscred 凭证表将 Kerberos 凭证映射到 UID。对于从使用 Kerberos 验证的 NFS 服务器挂载文件系统的 NFS 客户机,如果缺省映射不满足要求,则必须创建此表。

  1. 编辑 /etc/gss/gsscred.conf 并更改安全机制。

    将机制更改为 files

  2. 使用 gsscred 命令创建凭证表。


    # gsscred -m kerberos_v5 -a
    

    gsscred 命令从 /etc/nsswitch.conf 文件的 passwd 项列出的所有源中收集信息。如果希望凭证表中不包括本地口令项,则可能需要临时删除 files 项。有关更多信息,请参见 gsscred(1M) 手册页。

Procedure如何向凭证表中添加单个项

开始之前

此过程要求已在 NFS 服务器上创建 gsscred 表。有关说明,请参见如何创建凭证表

  1. 成为 NFS 服务器上的超级用户。

  2. 使用 gsscred 命令向凭证表中添加项。


    # gsscred -m mech [ -n name [ -u uid ]] -a
    
    mech

    定义要使用的安全机制。

    name

    定义用户的主体名称,如 KDC 中所定义。

    uid

    定义用户的 UID,如口令数据库中所定义。

    -a

    向主体名称映射中添加 UID。


示例 22–1 向凭证表中添加多组成部分主体

在以下示例中,将添加名为 sandy/admin 的主体的项,该主体映射到 UID 3736


# gsscred -m kerberos_v5 -n sandy/admin -u 3736 -a


示例 22–2 向凭证表中添加其他域中的主体

在以下示例中,将添加名为 sandy/admin@EXAMPLE.COM 的主体的项,该主体映射到 UID 3736


# gsscred -m kerberos_v5 -n sandy/admin@EXAMPLE.COM -u 3736 -a

Procedure如何提供各领域之间的凭证映射

此过程在使用相同口令文件的领域之间提供相应的凭证映射。在此示例中,领域 CORP.EXAMPLE.COMSALES.EXAMPLE.COM 使用相同的口令文件。bob@CORP.EXAMPLE.COMbob@SALES.EXAMPLE.COM 的凭证映射到相同的 UID。

  1. 成为超级用户。

  2. 在客户机系统上,向 krb5.conf 文件中添加项。


    # cat /etc/krb5/krb5.conf
    
    [libdefaults]
    
            default_realm = CORP.EXAMPLE.COM
    
     .
    
    [realms]
    
        CORP.EXAMPLE.COM = {
    
            .
    
            auth_to_local_realm = SALES.EXAMPLE.COM
    
            .
    
        }
故障排除

有关对凭证映射问题进行疑难解答的过程的帮助,请参见观察从 GSS 凭证到 UNIX 凭证的映射

Procedure如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

通过此过程,NFS 服务器可以使用不同的安全模式或特性提供安全的 NFS 访问。客户机与 NFS 服务器协商安全特性时,将使用该客户机有权访问的服务器所提供的第一种特性。此特性用于 NFS 服务器共享的文件系统的所有后续客户机请求。

  1. 成为 NFS 服务器上的超级用户。

  2. 验证在密钥表文件中是否存在 NFS 服务主体。

    klist 命令报告是否存在密钥表文件并显示主体。如果结果显示不存在密钥表文件或者不存在 NFS 服务主体,则需要验证是否已完成如何配置 Kerberos NFS 服务器中的所有步骤。


    # klist -k
    
    Keytab name: FILE:/etc/krb5/krb5.keytab
    
    KVNO Principal
    
    ---- ---------------------------------------------------------
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
    
       3 nfs/denver.example.com@EXAMPLE.COM
  3. /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
  4. 编辑 /etc/dfs/dfstab 文件,并将带有所需安全模式的 sec= 选项添加到相应的项中。


    share -F nfs -o sec=mode file_system
    
    mode

    指定共享文件系统时要使用的安全模式。使用多种安全模式时,会将列表中的第一种模式用作缺省模式。

    file_system

    定义要共享的文件系统的路径。

    尝试从指定的文件系统访问文件的所有客户机都要求 Kerberos 验证。要访问文件,应验证 NFS 客户机上的用户主体。

  5. 请确保服务器上正在运行 NFS 服务。

    如果此命令是您所启动的第一个 share 命令或 share 命令集,则 NFS 守护进程可能未运行。以下命令将重新启动该守护进程:


    # svcadm restart network/nfs/server
    
  6. (可选的)如果使用的是自动挂载程序,请编辑 auto_master 数据库以选择非缺省安全模式。

    如果不使用自动挂载程序访问文件系统或者安全模式的缺省选择可接受,则无需执行此过程。


    file_system  auto_home  -nosuid,sec=mode
    
  7. (可选的)使用非缺省模式手动发布用于访问文件系统的 mount 命令。

    或者,可以使用 mount 命令指定安全模式,但此替代方法不会利用自动挂载程序。


    # mount -F nfs -o sec=mode file_system
    

示例 22–3 使用一种 Kerberos 安全模式共享文件系统

在此示例中,dfstab 文件行表明:在通过 NFS 服务访问任何文件之前,必须先成功完成 Kerberos 验证。


# grep krb /etc/dfs/dfstab

share -F nfs -o sec=krb5 /export/home


示例 22–4 使用多种 Kerberos 安全模式共享文件系统

在此示例中,选择了所有三种 Kerberos 安全模式。如果发出挂载请求时未指定任何安全模式,则将在所有 NFS V3 客户机中使用列出的第一种模式(在此例中为 krb5)。有关更多信息,请参见 nfssec(5) 手册页。


# grep krb /etc/dfs/dfstab

share -F nfs -o sec=krb5:krb5i:krb5p /export/home