34.3. Kerberos 対応の NFS サーバーの設定

Identity Management を使って Kerberos 対応の NFS サーバーを設定することができます。

注記

NFS サーバーは Red Hat Enterprise Linux 上で稼働する必要はありません。

34.3.1. Kerberos 対応の NFS サーバーの設定

  1. IdM ツールを実行する前に Kerberos チケットを取得します。
    [jsmith@server ~]$ kinit admin
  2. NFS ホストマシンが IdM ドメインにクライアントとして追加されていない場合は、ホストエントリーを作成します。「ホストエントリーの追加」 を参照してください。
  3. IdM ドメインで NFS サービスエントリーを作成します。例を示します。
    [jsmith@server ~]$ ipa service-add nfs/nfs-server.example.com
  4. ipa-getkeytab コマンドで NFS サーバー用の NFS サービス keytab を作成し、キーをホスト keytab に直接保存します。例を示します。
    [jsmith@server ~]$ ipa-getkeytab -s ipaserver.example.com -p nfs/nfs-server.example.com -k /etc/krb5.keytab

    注記

    サービスエントリーをチェックして、NFS サービスが IdM で適切に設定されていることを keytab で確認します。
    [jsmith@server ~]$ ipa service-show nfs/nfs-server.example.com
    Principal: NFS/nfs-server.example.com@EXAMPLE.COM
    Keytab: True

    注記

    この手順では、ipa-getkeytab が実行可能な Red Hat Enterprise Linux または UNIX システム上で、NFS サーバーが稼働していることを想定しています。
    NFS サーバーが ipa-getkeytab を実行できないシステム上で稼働している場合は、システムツールを使って keytab を作成します。これには、以下の 2 つを実行する必要があります。
    • キーは /root (またはそれに相当する) ディレクトリー内で作成する必要があります。
    • ktutil コマンドは、キーをシステムの /etc/krb5.keytab ファイルにマージすることができます。このツールの使用方法は、ktutil man page で説明されています。
  5. NFS パッケージをインストールします。
    [root@nfs-server ~]# yum install nfs-utils
  6. weak crypto のサポートを設定します。これは、ドメイン内の いずれかの クライアント (Red Hat Enterprise Linux 5 クライアントのような) が DES といった古い暗号化オプションを使用する場合に、すべての NFS クライアントで必要になります。
    1. krb5.conf ファイルを編集して、weak crypto を許可します。
      [root@nfs-server ~]# vim /etc/krb5.conf
      
      allow_weak_crypto = true
    2. IdM サーバーの Kerberos 設定を更新し、DES 暗号化タイプに対応させます。
      [jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -w password -h ipaserver.example.com -p 389
      
      dn: cn=EXAMPLEREALM,cn=kerberos,dc=example,dc=com
      changetype: modify
      add: krbSupportedEncSaltTypes
      krbSupportedEncSaltTypes: des-cbc-crc:normal
      -
      add: krbSupportedEncSaltTypes
      krbSupportedEncSaltTypes: des-cbc-crc:special
      -
      add: krbDefaultEncSaltTypes
      krbDefaultEncSaltTypes: des-cbc-crc:special
  7. ipa-client-automount コマンドを実行して NFS 設定を設定します。
    デフォルトでは、/etc/sysconfig/nfs ファイル内でセキュアな NFS が有効になり、IdM DNS ドメインを /etc/idmapd.conf ファイル内の Domain パラメーターに設定します。
  8. /etc/exports ファイルを編集して、Kerberos 情報を追加します。
    /export  *(rw,sec=krb5:krb5i:krb5p)
  9. NFS サーバーと関連サービスを再起動します。
    [root@nfs-server ~]# systemctl restart nfs.service
    [root@nfs-server ~]# systemctl restart nfs-server.service
  10. 「Kerberos 対応の NFS クライアントの設定」 の説明にしたがって、NFS サーバーを NFS クライアントとして設定します。

34.3.2. Kerberos 対応の NFS クライアントの設定

  1. IdM ツールを実行する前に Kerberos チケットを取得します。
    [jsmith@server ~]$ kinit admin
  2. NFS クライアントが IdM ドメインにクライアントとして登録されていない場合は、「ホストエントリーの追加」 にあるように必要なホストエントリーを作成します。
  3. ipa-client-automount コマンドを実行して NFS 設定を設定します。
    デフォルトでは、/etc/sysconfig/nfs ファイル内でセキュアな NFS が有効になり、IdM DNS ドメインを /etc/idmapd.conf ファイル内の Domain パラメーターに設定します。
  4. GSS デーモンを起動します。
    [root@nfs-client-server ~]# systemctl start rpc-gssd.service
    [root@nfs-client-server ~]# systemctl start rpcbind.service
    [root@nfs-client-server ~]# systemctl start nfs-idmapd.service
  5. ディレクトリーをマウントします。
    [root@nfs-client-server ~]# echo "$NFSSERVER:/this /mnt/this nfs4 sec=krb5i,rw,proto=tcp,port=2049"  >>/etc/fstab
    [root@nfs-client-server ~]# mount -av
  6. クライアントシステム上の SSSD がホームディレクトリーを管理し、Kerberos チケットを更新するように設定します。
    1. --enablemkhomedir オプションで SSSD を有効にします。
      [root@nfs-client-server ~]# authconfig --update --enablesssd --enablesssdauth --enablemkhomedir
    2. OpenSSH クライアントを再起動します。
      [root@nfs-client-server ~]# systemctl restart sshd.service
    3. SSSD 設定ファイルの IdM ドメインセクションを編集し、keytab 更新オプションを設定します。
      [root@nfs-client-server ~]# vim /etc/sssd/sssd.conf
      
      [domain/EXAMPLE.COM]
      cache_credentials = True
      krb5_store_password_if_offline = True
      ipa_domain = example.com
      id_provider = ipa
      auth_provider = ipa
      ...
      krb5_renewable_lifetime = 50d
      krb5_renew_interval = 3600
    4. SSSD を再起動します。
      [root@nfs-client-server ~]# systemctl restart sssd.service