NFS サービスは UNIX ユーザー ID (UID) を使用してユーザーを識別しており、GSS 資格の主体を直接に使用することはできません。そのため、資格の主体を UID に対応付けるために、ユーザー資格の主体を UNIX UID に割り当てる資格テーブルを作成する必要があります。デフォルトの資格マッピングの詳細については、「GSS 資格の UNIX 資格へのマッピング」を参照してください。この節では、Kerberos NFS サーバーの構成手順、資格テーブルの管理手順、および NFS マウントしたファイルシステムに対して Kerberos セキュリティーモードを有効にする手順を中心に説明します。次の表は、この節で説明する作業の一覧です。
表 23–2 Kerberos NFS サーバーの構成 (作業マップ)
作業 |
説明 |
参照先 |
---|---|---|
Kerberos NFS サーバーを構成します。 |
Kerberos 認証を必要とするファイルシステムを、サーバーが共有できるようにします。 | |
資格テーブルを作成します。 |
デフォルトのマッピングが十分でない場合、GSS 資格から UNIX ユーザー ID へのマッピングに使用できる資格テーブルを生成します。 | |
ユーザー資格を UNIX UID に割り当てる資格テーブルを変更します。 |
資格テーブルの情報を更新します。 | |
類似する 2 つのレルム間の資格マッピングを作成します。 |
レルムがパスワードファイルを共有している場合に、あるレルムから別のレルムに UID をマッピングする方法を説明します。 | |
Kerberos 認証を使用してファイルシステムを共有します。 |
セキュリティーモードを使用してファイルシステムを共有し、Kerberos 認証を常に行います。 |
この手順では、次の構成パラメータを使用します。
レルム名 = EXAMPLE.COM
DNS ドメイン名 = example.com
NFS サーバー = denver.example.com
admin 主体 = kws/admin
Kerberos NFS サーバーを構成するための前提条件を完了します。
マスター KDC が構成済みである必要があります。処理を十分にテストするには、複数のクライアントが必要です。
(省略可能) NTP クライアントなどのクロック同期メカニズムをインストールします。
Network Time Protocol (NTP) のインストールと使用は必要はありません。ただし、認証が正常終了するには、すべてのクロックが、krb5.conf ファイル内の clockskew 関係指定子で定義されている最大の誤差以内で KDC サーバー上の時刻と同期化されている必要があります。NTP については、「KDC と Kerberos クライアントのクロックの同期化」を参照してください。
NFS サーバーを Kerberos クライアントとして構成します。
「Kerberos クライアントの構成」の手順に従ってください。
kadmin を起動します。
Kerberos グラフィカル管理ツールを使って主体を追加する方法については、「新しい Kerberos 主体を作成する方法」を参照してください。追加するときは、マスター KDC を構成するときに作成した admin 主体名を使用してログインする必要があります。ただし、次の例では、コマンド行を使用して、必要な主体を追加しています。
denver # /usr/sbin/kadmin -p kws/admin Enter password: <Type kws/admin password> kadmin: |
サーバーの NFS サービス主体を作成します。
主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。
NFS データへのアクセスに使用されるシステム上の一意のインタフェースごとに、上記の手順を繰り返します。ホストに一意の名前を持ったインタフェースが複数存在する場合、一意の名前は、それぞれに NFS サービス主体を持つ必要があります。
kadmin: addprinc -randkey nfs/denver.example.com Principal "nfs/denver.example.com" created. kadmin: |
サーバーの NFS サービス主体をサーバーのキータブファイルに追加します。
手順 a で作成した一意のサービス主体ごとに、この手順を繰り返します。
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. 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: |
kadmin を終了します。
kadmin: quit |
(省略可能) 必要に応じて、特殊な GSS 資格マップを作成します。
通常、Kerberos サービスは、GSS 資格と UNIX UID 間の適切な対応表を生成します。デフォルトのマッピングについては、「GSS 資格の UNIX 資格へのマッピング」を参照してください。デフォルトのマッピングが十分でない場合は、「資格テーブルを作成する方法」を参照してください。
NFS ファイルシステムを Kerberos セキュリティーモードで共有します。
詳細は、「複数の Kerberos セキュリティーモードで安全な NFS 環境を設定する方法」を参照してください。
gsscred 資格テーブルは、Kerberos 主体を UID に割り当てるために NFS サーバーが使用します。デフォルトでは、主体名の一次の部分が UNIX のログイン名に一致します。NFS クライアントが Kerberos 認証を使用して NFS サーバーからファイルシステムをマウントするには、デフォルトのマッピングが十分でない場合、このテーブルを作成する必要があります。
/etc/gss/gsscred.conf を編集してセキュリティーメカニズムを変更します。
このメカニズムを files に変更します。
gsscred コマンドを使用して資格テーブルを作成します。
# gsscred -m kerberos_v5 -a |
gsscred コマンドは、/etc/nsswitch.conf ファイル内の passwd エントリに指定されているすべてのソースから、情報を収集します。資格テーブルにローカルのパスワードエントリを入れたくない場合は、files エントリを一時的に削除しなければならないことがあります。詳細は、gsscred(1M) のマニュアルページを参照してください。
この手順を行うには、gsscred テーブルがすでに NFS サーバーに作成済みである必要があります。手順については、「資格テーブルを作成する方法」を参照してください。
NFS サーバー上でスーパーユーザーになります。
gsscred コマンドを使用して、エントリを資格テーブルに追加します。
# gsscred -m mech [ -n name [ -u uid ]] -a |
使用するセキュリティーメカニズムを定義します。
KDC に定義されている、ユーザーの主体名を定義します。
パスワードデータベースに定義されている、ユーザーの UID を定義します。
UID を主体名の割り当てに追加します。
次の例では、 sandy/admin という名前の主体にエントリを 1 つ追加し、UID 3736 に割り当てます。
# gsscred -m kerberos_v5 -n sandy/admin -u 3736 -a |
次の例では、sandy/admin@EXAMPLE.COM という名前の主体にエントリを 1 つ追加し、UID 3736 に割り当てます。
# gsscred -m kerberos_v5 -n sandy/admin@EXAMPLE.COM -u 3736 -a |
この手順では、同じパスワードファイルを使用するレルム間の適切な資格マッピングを提供します。この例では、CORP.EXAMPLE.COM レルムと SALES.EXAMPLE.COM レルムは同じパスワードファイル使用します。bob@CORP.EXAMPLE.COM と bob@SALES.EXAMPLE.COM の資格は同じ UID にマッピングされます。
スーパーユーザーになります。
クライアントシステム上で、エントリを krb5.conf ファイルに追加します。
# cat /etc/krb5/krb5.conf [libdefaults] default_realm = CORP.EXAMPLE.COM . [realms] CORP.EXAMPLE.COM = { . auth_to_local_realm = SALES.EXAMPLE.COM . } |
この例では、同じパスワードファイルを使用するレルム間の適切な資格マッピングを提供します。この例では、CORP.EXAMPLE.COM レルムと SALES.EXAMPLE.COM レルムは同じパスワードファイル使用します。bob@CORP.EXAMPLE.COM と bob@SALES.EXAMPLE.COM の資格は同じ UID にマッピングされます。クライアントシステム上で、エントリを 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 資格へのマッピングの監視」を参照してください。
この手順により、さまざまなセキュリティーモードまたはフレーバを使用して、NFS サーバーが NFS に安全にアクセスできるようになります。クライアントがセキュリティーフレーバについて NFS サーバーとネゴシエーションを行うとき、クライアントがアクセスしたサーバーが提供する最初のフレーバが使用されます。このフレーバは、NFS サーバーが共有するファイルシステムにおける後続のクライアント要求すべてに使用されます。
NFS サーバー上でスーパーユーザーになります。
キータブファイルに 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 |
/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 |
/etc/dfs/dfstab ファイルを編集し、必要なセキュリティーモードを sec= オプションに指定して、適切なエントリに追加します。
share -F nfs -o sec=mode file-system |
ファイルシステムを共有するときに使用するセキュリティーモードを指定します。複数のセキュリティーモードを使用するときは、デフォルトとして、リストの最初のモードが使用されます。
共有するファイルシステムへのパスを定義します。
指定されたファイルシステムのファイルにアクセスするすべてのクライアントは、Kerberos 認証が必要です。ファイルにアクセスするには、NFS クライアント上にユーザー主体が認証される必要があります。
NFS サービスがサーバー上で動作していることを確認します。
1 つまたは複数の share コマンドをはじめて実行する場合、NFS デーモンが動作していないことがあります。次のコマンドでデーモンを再起動します。
# svcadm restart network/nfs/server |
(省略可能) オートマウンタを使用する場合は、auto_master データベースを編集して、デフォルト以外のセキュリティーモードを選択してください。
ファイルシステムのアクセスにオートマウンタを使用しない場合やデフォルトの選択をセキュリティーモードとして使用する場合は、この手順を行う必要はありません。
file-system auto_home -nosuid,sec=mode |
(省略可能) 手動で mount コマンドを実行し、デフォルト以外のモードを使用してファイルシステムにアクセスします。
代わりに、mount コマンドにセキュリティーモードを指定できますが、オートマウンタは利用できません。
# mount -F nfs -o sec=mode file-system |
この例の dfstab ファイルの行は、NFS サービスを使用してファイルにアクセスするには、Kerberos 認証が成功する必要があることを示しています。
# grep krb /etc/dfs/dfstab share -F nfs -o sec=krb5 /export/home |
次の例では、3 つの Kerberos セキュリティーモードがすべて選択されています。クライアントと NFS サーバーの間で、どのモードを使用するかのネゴシエーションが行われます。コマンドの最初のモードが失敗すると、次のモードが試行されます。詳細は、nfssec(5) のマニュアルページを参照してください。
# grep krb /etc/dfs/dfstab share -F nfs -o sec=krb5:krb5i:krb5p /export/home |