Solaris のシステム管理 (第 2 巻)

第 22 章 SEAM の構成

この章では、ネットワークアプリケーションサーバー、NFS サーバー、および SEAM クライアントの構成手順を説明します。手順の多くは root アクセスを必要とするため、この作業はシステム管理者や上級ユーザーが行ってください。

SEAM 管理作業マップ

表 22-1 は、Solaris 8 の SEAM に必要な管理作業を示したものです。これらの手順を行うには、KDC が admin サーバーにインストールされていなければなりません。

表 22-1 SEAM 管理作業マップ

作業 

説明 

使用する手順 

SEAM クライアントの構成 

 SEAM クライアントを手動で構成する手順「SEAM クライアントの構成」

NTP のインストール (省略可能) 

 SEAM が正しく動作するためには、レルムにあるすべてのシステムのクロックが同期していなければならない「KDC と SEAM クライアントのクロックの同期化」

SEAM NFS サーバーの構成 

 Kerberos 認証を必要とするファイルシステムを共有するようにサーバーを設定する手順「SEAM NFS サーバーの構成作業マップ」

SEAM クライアントの構成

SEAM クライアントは、SEAM サービスを使用する同じネットワーク上のすべてのホスト (KDC サーバーを除く) です。この節では、SEAM クライアントのインストール手順と、root 認証を使用して NFS ファイルシステムをマウントするための特定の方法を説明します。

SEAM クライアントを構成する手順は 2 つあります。「SEAM クライアントの構成を完成する方法」は、システムのインストール中に部分的に設定された SEAM クライアントを構成する情報です。「SEAM クライアントを構成する方法」は、Solaris 8 リリースのインストールで SEAM の構成を全く行わなかった場合の SEAM クライアントの構成手順です。

SEAM クライアントを構成する方法

次の構成パラメータが使用されます。

  1. SEAM クライアントを構成するための前提条件

    admin サーバーの KDC がすでに構成され、動作していなければなりません。さらに、DNS がインストールされ、/etc/resolv.conf ファイルが正しく構成されている必要があります。

  2. クライアント上でスーパーユーザーになります。

  3. PAM 構成ファイル (pam.conf) を編集します。

    最後の 8 行からコメント記号を削除して Kerberos PAM モジュールを有効にします。


    client1 # tail -11 /etc/pam.conf
    #
    # Support for Kerberos V5 authentication (uncomment to use Kerberos)
    #
    rlogin auth optional   /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
    login  auth optional   /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
    dtlogin        auth optional   /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
    other  auth optional   /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
    dtlogin        account optional /usr/lib/security/$ISA/pam_krb5.so.1
    other  account optional /usr/lib/security/$ISA/pam_krb5.so.1
    other  session optional /usr/lib/security/$ISA/pam_krb5.so.1
    other  password optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
  4. NFS セキュリティサービス構成ファイル (nfssec.conf) を編集します。

    Kerberos サービスを記述する行からコメント記号を削除します。


    client1 # 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
    default         1       -       -       -       # default is AUTH_SYS
  5. Kerberos 構成ファイル (krb5.conf) を編集します。

    デフォルトのファイルを変更する場合は、レルム名とサーバー名を変更する必要があります。


    client1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    admin_server = kdc1.acme.com
            }
    
    [domain_realm]
            .acme.com = ACME.COM
    
  6. (省略可能) NTP または別のクロック同期化機構を使用して、マスター KDC のクロックと同期させます。

    NTP については、「KDC と SEAM クライアントのクロックの同期化」を参照してください。

  7. 新しいプリンシパルを追加します。

    KDC とともに提供される管理ツールを使用して、クライアントに対して新しいプリンシパルを追加します。

    1. NFS サービスプリンシパルを次の名前で作成します。

      nfs/client1.acme.com

    2. root プリンシパルを次の名前で作成します。

      root/client1.acme.com

    3. host プリンシパルを次の名前で作成します。

      host/client1.acme.com

    4. root プリンシパルを keytab ファイルに追加します。

      root/client1.acme.com プリンシパルが keytab ファイルに追加されていることを確認します。

  8. クライアントから Kerberos チケットの期限切れをユーザーに警告する場合は、/etc/krb5/warn.conf ファイルのエントリを構成します。

    詳細は、warn.conf(4) のマニュアルページを参照してください。

SEAM クライアントの構成を完成する方法

クライアントをインストールするときに部分的にインストールされた SEAM クライアントを構成する場合は、「SEAM クライアントを構成する方法」の手順に従ってください。ただし、インストールはすでに開始されているため、pam.confnfssec.conkrb5.conf を編集しないでその内容を確認してください。

SEAM NFS サーバーの構成作業マップ

NFS サービスは UNIX UID を使用してユーザーを識別しますが、プリンシパルを直接使用することはできません。そのため、プリンシパルを UID に対応づけるために、ユーザープリンシパルを UNIX UID に対応させる資格テーブルを作成する必要があります。次の手順は、SEAM NFS サーバーの構成、資格テーブルの作成、NFS マウントするファイルシステムの Kerberos セキュリティモードの開始に必要な作業を中心とします。表 22-2 はこの節で行う作業の説明です。

表 22-2 SEAM NFS サーバーの構成作業マップ

作業 

説明 

使用する手順 

SEAM NFSサーバーの構成 

 Kerberos 認証を必要とするファイルシステムを共有するようにサーバーを設定する手順「SEAM NFS サーバーを構成する方法」

資格テーブルのバックエンド機構の変更 

gsscred によって使用されるバックエンド機構を定義する手順gsscred テーブルのバックエンド機構を変更する方法」

資格テーブルの作成 

 資格テーブルを作成する手順「資格テーブルを作成する方法」

ユーザープリンシパルを UNIX UID に対応させる資格テーブルを変更する方法 

 資格テーブルの情報を更新する手順「資格テーブルに 1 つのエントリを追加する方法」

Kerberos 認証を使用した、ファイルシステムの共有 

 セキュリティモードを使用してファイルシステムを共有し、Kerberos 認証を必須にする手順「複数の Kerberos セキュリティモード使用して安全な NFS 環境を設定する方法」

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

この手順を行う場合には、マスター KDC がすでに構成されていなければなりません。この手順のプロセスを完全にテストするには、いくつかのクライアントが必要です。この手順では、次の構成パラメタを使用します。

  1. SEAM NFS サーバーを構成するための前提条件

    SEAM クライアントソフトウェアがインストールされていなければなりません。

  2. (省略可能) NTP クライアントまたは別のクロック同期化機構をインストールします。

    NTP については、「KDC と SEAM クライアントのクロックの同期化」を参照してください。

  3. 新しいプリンシパルを追加します。

    KDC とともに提供される管理ツールを使用して、NFS サーバーの新しいプリンシパルを追加します。

    1. サーバーの NFS サービスプリンシパルを次の名前で作成します。

      nfs/denver.acme.com

    2. (省略可能) NFS サーバーの root プリンシパルを次の名前で作成します。

      root/denver.acme.com

    3. サーバーの NFS サービスプリンシパルをサーバーの keytab に追加します。

      nfs/denver.acme.com プリンシパルが keytab ファイルに追加されていることを確認します。

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

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

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

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

  6. 各クライアントでユーザープリンシパルと root プリンシパルを認証します。

gsscred テーブルのバックエンド機構を変更する方法

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

  2. /etc/gss/gsscred.conf を編集してこの機構を変更します。

    バックエンド機構には、filesxfn_filesxfn_nisxfn_nisplusxfn のどれか 1 つを使用できます。個々の機構の利点については、gsscred テーブルの使用」で説明します。

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

gsscred 資格テーブルは、SEAM プリンシパルを UID に対応づけるために NFS サーバーによって使用されます。NFS クライアントが Kerberos 認証を使用して NFS サーバーのファイルシステムをマウントするには、このテーブルを作成するか使用可能にしなければなりません。

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

    このコマンドをどのサーバーからどの ID を使用して実行するかは、この gsscred テーブルをサポートするバックエンド機構として何が選択されているかによって異なります。xfn_nisplus 以外の機構では、root になる必要があります。

    使用するバックエンド機構 

    実行する場所 

    files

    NFS サーバーで実行します。 

    xfn

    デフォルトの xfn ファイル設定にしたがってホストを選択します。

    xfn_files

    NFS サーバーで実行します。 

    xfn_nis

    NIS マスターで実行します。 

    xfn_nisplus

    NIS+ データを変更する権限がある限りどこでも実行できます。 

  2. (省略可能) /var/fn が存在せず、かつ xfn オプションの 1 つを使用したい場合は、最初の XFN データベースを作成します。


    # fnselect files
    # fncreate -t org -o org//
    
  3. gsscred を使用して資格テーブルを作成します。

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


    # gsscred -m kerberos_v5 -a
    

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

この手順を行うには、gsscred テーブルが NFS サーバーにインストールされていなければなりません。

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

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


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

    mech

    使用するセキュリティ機構 

    name

    KDC に定義されている、ユーザーのプリンシパル名 

    uid

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

    -a

    UID をプリンシパル名マッピングに追加します 

例 - 資格テーブルの単一エントリを変更する

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


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

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

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

  2. /etc/dfs/dfstab ファイルを編集して、必要なセキュリティモードを sec= オプションに指定して適切なエントリに追加します。


    # share -F nfs -o sec=mode filesystem
    

    mode

    共有するときに使用するセキュリティモード。複数のセキュリティモードを追加すると、デフォルトとしてリストの最初のモードが autofs によって使用される 

    filesystem

    共有するファイルシステムへのパス 

    指定されたファイルシステムのファイルにアクセスするすべてのクライアントは、Kerberos 認証が必要です。ファイルのアクセスを完了するには、NFS クライアント上のユーザープリンシパルと root プリンシパルが両方とも認証されなければなりません。

  3. NFS サービスがサーバーで動作しているか確認します。

    これが最初の share コマンドまたは最初の一連の share コマンドなら、NFS デーモンが動作していない可能性があります。次のコマンドを実行すると、デーモンが終了し、再起動します。


    # /etc/init.d/nfs.server stop
    # /etc/init.d/nfs.server start
    
  4. (省略可能) autofs を使用する場合は、auto_master データを編集してデフォルト以外のセキュリティモードを選択します。

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


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

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


    # mount -F nfs -o sec=krb5p /export/home
    

例 - 1 つの Kerberos セキュリティモードを使用してファイルシステムを共有する

次の例を実行すると、ファイルにアクセスする前に Kerberos 認証が必要になります。


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

例 - 複数の Kerberos セキュリティモードを使用してファイルシステムを共有する

次の例では、3 つの Kerberos セキュリティモードをすべて選択します。マウント要求でセキュリティモードが指定されていないと、NFS V3 のすべてのクライアントに対しリストの最初のモードが使用されます (この場合は krb5)。さらに、share コマンドの変更」を参照してください。


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

KDC と SEAM クライアントのクロックの同期化

Kerberos 認証システムを利用するホストはすべて、それぞれの内部クロックが、指定された時間の範囲 (「クロックスキュー」) 内で相互に同期していなければなりません。クロックスキューは、もう 1 つの Kerberos セキュリティチェックとして使用されます。参加するホストの同期差がクロックスキューを超えていると、クライアント要求は拒否されます。

アプリケーションサーバーが再実行要求を認識し拒否する目的で、すべての Kerberos プロトコルメッセージをどのくらいの間追跡管理しなければならないかも、クロックスキューで決まります。そのため、クロックスキュー値が長いほど、アプリケーションサーバーはそれだけ多くの情報を収集しなければなりません。

最大クロックスキューのデフォルト値は 300 秒 (5 分) です。この値は、krb5.conf ファイルの libdefaults セクションで変更できます。


注 -

セキュリティ上の理由から、クロックスキュー値は 300 秒より大きくしないでください。


KDC と SEAM クライアントの間でクロックの同期を維持することは重要であるため同期の維持に Network Time Protocole (NTP) を使用することをお奨めします。University of Delaware が作成した NTP パブリックドメインソフトウェアが Solaris 2.6 以降の Solaris ソフトウェアに含まれています。


注 -

クロックを同期化するもう 1 つの方法では、cron ジョブで rdate コマンドを使用します。この方が NTP を使用するよりも簡単ですが、ここでは NTP を中心に説明します。ネットワークを使用してクロックを同期化する場合は、クロック同期化プロトコル自体も安全でなければなりません。


NTP を使用すると、正確な時間とネットワーククロック同期をネットワーク環境で管理できます。NTP は基本的にはクライアントサーバー実装の状態をとります。1 つのシステムをマスタークロック (NTP サーバー) として選択し、他のすべてのシステムをマスタークロックと同期するクライアントとして設定します (NTP クライアント)。同期化は xntpd デーモンによって行われます。このデーモンは、UNIX システムの時刻をインターネット標準時刻サーバーに合わせて設定および保守します。NTP のクライアントサーバー実装の例を図 22-1 で示します。

図 22-1 NTP を使用したクロック同期

Graphic

KDC と SEAM クライアントでクロックの同期を維持するためには、次の手順が必要です。

  1. ネットワークに NTP サーバーを設定します。(NTP サーバーは、マスター KDC 以外であればどのシステムでもかまいません。) 「NTP サーバーを設定する方法」を参照してください。

  2. ネットワークの KDC と SEAM クライアントを構成するときに、それらを NTP サーバーの NTP クライアントとして設定します。「NTP クライアントを設定する方法」を参照してください。

SEAM クライアントのエラーメッセージ

SEAM のすべてのエラーメッセージが、『Sun Enterprise Authentication Mechanism ガイド』の「SEAM のエラーメッセージと問題の解決」に記載されています。