Solaris のシステム管理 (セキュリティサービス)

SEAM NFS サーバーの構成

NFS サービスは、UNIX ユーザー ID (UID) を使用してユーザーを識別しますが、主体を直接使用することはできません。そのため、主体を UID に対応付けるために、ユーザー主体を UNIX UID に割り当てる資格テーブルを作成する必要があります。この節では、SEAM NFS サーバーの構成手順、資格テーブルの管理手順、および NFS マウントしたファイルシステムに対して Kerberos セキュリティモードを有効にする手順を中心に説明します。次の表は、この節で説明する作業の一覧です。

表 9–3 SEAM NFS サーバーの構成 (作業マップ)

作業 

説明 

参照先 

SEAM NFS サーバーを構成する 

Kerberos 認証を必要とするファイルシステムを、サーバーが 共有できるようにする 

SEAM NFS サーバーを構成する方法

資格テーブルを作成する 

資格テーブルを生成する 

資格テーブルを作成する方法

ユーザー主体を UNIX UID に割り当てる資格テーブルを変更する 

資格テーブルの情報を更新する 

資格テーブルに 1 つのエントリを追加する方法

Kerberos 認証を使用してファイルシステムを共有する 

セキュリティモードを使用してファイルシステムを共有し、Kerberos 認証を常に行う 

複数の Kerberos セキュリティモードで安全な NFS 環境を設定する方法

SEAM NFS サーバーを構成する方法

この手順では、次の構成パラメータを使用します。

  1. SEAM NFS サーバーを構成するための前提条件を完了します。

    マスター KDC が構成済みである必要があります。処理を十分にテストするには、複数のクライアントが必要です。

  2. (省略可能) NTP クライアントなどのクロック同期メカニズムをインストールします。

    NTP のインストールと使用は、必須ではありません。ただし、認証を正常終了させるには、krb5.conf ファイルの libdefaults セクションに定義されているデフォルト時間内に、すべてのクロックを調整する必要があります。NTP については、KDC と SEAM クライアントのクロックの同期化を参照してください。

  3. kadmin を起動します。

    SEAM 管理ツールを使用して、主体を追加することができます (新しい主体を作成する方法を参照)。追加するときは、マスター KDC を構成するときに作成した admin 主体名を使用してログインする必要があります。ただし、次の例では、コマンド行を使用して、必要な主体を追加しています。


    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: <kws/admin パスワードを入力する>
    kadmin: 
    1. サーバーの NFS サービス主体を作成します。

      主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかにかかわらず、FQDN は小文字で入力する必要があります。


      kadmin: addprinc -randkey nfs/denver.example.com
      Principal "nfs/denver.example.com" created.
      kadmin:
    2. (省略可能) NFS サーバーの root 主体を作成します。


      kadmin: addprinc root/denver.example.com
      Enter password for principal root/denver.example.com@EXAMPLE.COM: <パスワードを入力する>
      Re-enter password for principal root/denver.example.com@EXAMPLE.COM: <パスワードを再度入力する>
      Principal "root/denver.example.com@EXAMPLE.COM" created.
      kadmin: 
    3. サーバーの NFS サービス主体をサーバーのキータブファイルに追加します。


      kadmin: ktadd nfs/denver.example.com
      kadmin: Entry for principal nfs/denver.example.com with
        kvno 3, encryption type DES-CBC-CRC added to keytab
        WRFILE:/etc/krb5/krb5.keytab
      kadmin: 
    4. kadmin を終了します。


      kadmin: quit
      
  4. gsscred テーブルを作成します。

    詳細は、資格テーブルを作成する方法を参照してください。

  5. NFS ファイルシステムを Kerberos セキュリティモードで共有します。

    詳細は、複数の Kerberos セキュリティモードで安全な NFS 環境を設定する方法を参照してください。

  6. クライアントごとに、ユーザー主体と root 主体を認証します。

資格テーブルを作成する方法

gsscred 資格テーブルは、SEAM 主体を UID に割り当てるために NFS サーバーが使用します。NFS クライアントが Kerberos 認証を使用して NFS サーバーからファイルシステムをマウントするには、このテーブルを作成して使用可能にする必要があります。

  1. /etc/gss/gsscred.conf を編集してこのメカニズムを変更します。

    このメカニズムを files に変更します。

  2. gsscred を使用して資格テーブルを作成します。


    # gsscred -m kerberos_v5 -a
    

    gsscred コマンドは、 /etc/nsswitch.conf ファイル内の passwd エントリに指定されているすべてのソースから、情報を収集します。資格テーブルにローカルのパスワードエントリを入れたくない場合は、files エントリを一時的に削除しなければならないことがあります。詳細は、gsscred(1M) のマニュアルページを参照してください。

資格テーブルに 1 つのエントリを追加する方法

この手順を行うには、gsscred テーブルがすでに NFS サーバーに作成済みである必要があります。

  1. NFS サーバーでスーパーユーザーになります。

  2. gsscred を使用してエントリをテーブルに追加します。


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

    mech

    使用するセキュリティメカニズムを定義する 

    name

    KDC に定義されている、ユーザーの主体名を定義する 

    uid

    パスワードデータベースに定義されている、ユーザーの UID を定義する 

    -a

    UID を主体名の割り当てに追加する 

例 — 資格テーブルに 1 つのエントリを追加する

次の例では、sandy という名前のユーザーエントリを追加し、UID 3736 に割り当てます。UID をコマンド行に指定しない場合は、パスワードファイルの UID が使用されます。


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

複数の Kerberos セキュリティモードで安全な NFS 環境を設定する方法

  1. NFS サーバー上でスーパーユーザーになります。

  2. キータブファイルに NFS サービス主体が存在することを確認します。

    klist コマンドを指定すると、キータブファイルが存在するかどうかが出力され、その主体が表示されます。キータブファイルが存在しない場合、または NFS サービス主体が存在しない場合は、SEAM NFS サーバーを構成する方法 のすべての手順が完了していることを検証する必要があります。


    # klist -k
    Keytab name: FILE:/etc/krb5/krb5.keytab
    KVNO Principal
    ---- ---------------------------------------------------------
       3 nfs/denver.example.com@EXAMPLE.COM
  3. /etc/nfssec.conf ファイル内の Kerberos セキュリティモードを有効にします。

    /etc/nfssec.conf ファイルを編集して、Kerberos セキュリティモードの先頭にある # を削除します。


    # cat /etc/nfssec.conf
     .
     .
    #
    # NFS の Kerberos V5 を使用するために次の行をコメントからはずす
    #
    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 クライアント上のユーザー主体と root 主体が両方とも認証される必要があります。

  5. NFS サービスがサーバー上で動作していることを確認します。

    share コマンドまたは share コマンドセットを初めて実行する場合、NFS デーモンが動作していないことがあります。次のコマンドでデーモンを終了し、再起動してください。


    # /etc/init.d/nfs.server stop
    # /etc/init.d/nfs.server start
    
  6. (省略可能) オートマウンタを使用する場合は、auto_master データベースを編集して、デフォルト以外のセキュリティモードを選択してください。

    ファイルシステムのアクセスにオートマウンタを使用しない場合やデフォルトの選択をセキュリティモードとして使用する場合は、この手順を行う必要はありません。


    file-system  auto_home  -nosuid,sec=mode
    
  7. (省略可能) 手動で mount コマンドを実行し、デフォルト以外のモードを使用してファイルシステムにアクセスします。

    この代わりに、mount コマンドにセキュリティモードを指定できますが、オートマウンタは利用できません。


    # mount -F nfs -o sec=mode file-system
    

例 — 1 つの Kerberos セキュリティモードでファイルシステムを共有する

この例の dfstab ファイルの行は、NFS サービスを使用してファイルにアクセスするには、Kerberos 認証が正常終了する必要があることを示しています。


# grep krb /etc/dfs/dfstab
share -F nfs -o sec=krb5 /export/home

例 — 複数の Kerberos セキュリティモードでファイルシステムを共有する

次の例では、3 つの Kerberos セキュリティモードがすべて選択されています。マウント要求にセキュリティモードが指定されていない場合は、NFS V3 のすべてのクライアントに対して、最初のモードが使用されます (この場合は krb5)。詳細は、nfssec.conf(4) のマニュアルページを参照してください。


# grep krb /etc/dfs/dfstab
share -F nfs -o sec=krb5:krb5i:krb5p /export/home