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

KDC サーバーの構成

SEAM ソフトウェアをインストールしたあと、KDC サーバーを構成する必要があります。資格を発行するには、1 つのマスター KDC と 1 つ以上のスレーブ KDC を構成する必要があります。KDC が発行する資格は、SEAM の基本要素であるため、KDC をインストールしないと、ほかの処理を行うことはできません。

マスター KDC とスレーブ KDC の最も大きな違いは、マスター KDC だけがデータベース管理要求を処理できることです。たとえば、パスワードの変更や新しい主体の追加は、マスター KDC で行います。これらの変更は、スレーブ KDC に伝播されます。資格の生成は、スレーブ KDC とマスター KDC が行います。この機能は、マスター KDC が応答できない場合に、冗長性を確保します。

マスター KDC を構成する方法

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

  1. マスター KDC を構成するための前提条件を完了します。

    この手順を実行するには、DNS が動作している必要があります。マスター KDC をスワップ可能にする場合の命名手順については、マスター KDC とスレーブ KDC のスワップを参照してください。

  2. マスター KDC 上でスーパーユーザーになります。

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

    レルム名とサーバー名を変更する必要があります。このファイルの詳細は、krb5.conf(4) のマニュアルページを参照してください。


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
                    EXAMPLE.COM = {
                    kdc = kdc1.example.com
                    kdc = kdc2.example.com
                    admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # ドメイン名とレルム名が同じ場合、 
    # このエントリは必要ない
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
            }

    この例では、domain_realm kdcadmin_server、およびすべての domain_realm エントリの行を変更しました。また、help_url を定義する行を編集しました。

  4. KDC 構成ファイル (kdc.conf) を編集します。

    レルム名を変更する必要があります。KDC 構成ファイルの詳細は、kdc.conf(4) のマニュアルページを参照してください。


    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            EXAMPLE.COM= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    admin_keytab = /etc/krb5/kadm5.keytab
                    acl_file = /etc/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
            }

    この例では、realms セクションのレルム名定義を変更しました。

  5. kdb5_util コマンドを使用して、KDC データベースを作成します。

    kdb5_util は、KDC データベースを作成するコマンドです。-s オプションを指定すると、kadmindkrb5kdc デーモンが起動する前に、KDC の認証に使用される stash ファイルが作成されます。


    kdc1 # /usr/sbin/kdb5_util create -r EXAMPLE.COM -s
    Initializing database '/var/krb5/principal' for realm 'EXAMPLE.COM'
    master key name 'K/M@EXAMPLE.COM'
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
    Enter KDC database master key: <鍵を入力する>
    Re-enter KDC database master key to verify: <鍵を再度入力する>
    

    レルム名がサーバーの名前空間のドメイン名と同じ場合は、レルム名を指定する -r オプションは必要はありません。

  6. Kerberos アクセス制御リストファイル (kadm5.acl) を編集します。

    /etc/krb5/kadm5.acl ファイルには、KDC を管理できる主体名がすべて含まれている必要があります。最初のエントリは、次のようになります。


    kws/admin@EXAMPLE.COM   *

    このエントリにより、 EXAMPLE.COM レルム内の kws/admin 主体に対して、KDC 内の主体またはポリシーを変更する機能が与えられます。デフォルトのインストールでは、アスタリスク (*) が指定され、すべての admin 主体に変更権限が与えられます。このデフォルトの指定では、セキュリティが低下する可能性があります。そのため、admin 主体をすべてリストに含めると、セキュリティが向上します。詳細は、kadm5.acl(4) のマニュアルページを参照してください。

  7. kadmin.local コマンドを起動します。

    次の手順では、SEAM で使用される主体を作成します。


    kdc1 # /usr/sbin/kadmin.local
    kadmin.local: 
    1. データベースに管理主体を追加します。

      必要な数の admin 主体を追加できます。KDC 構成処理を完了するには、1 つ以上の admin 主体を追加する必要があります。この例では、kws/admin 主体を追加します。「kws」の代わりに、適切な主体名を置き換えてください。


      kadmin.local: addprinc kws/admin
      Enter password for principal kws/admin@EXAMPLE.COM: <パスワードを入力する>
      Re-enter password for principal kws/admin@EXAMPLE.COM: <パスワードを再度入力する>
      Principal "kws/admin@EXAMPLE.COM" created.
      kadmin.local: 
    2. kadmind サービスのキータブファイルを作成します。

      このコマンドシーケンスは、kadmin および changepw 主体のエントリを保持するキータブを作成します。これらの主体は、kadmind サービスに必要です。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかにかかわらず、FQDN は小文字で入力する必要があります。


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

      次の手順で必要になる主体をすべて追加しました。


      kadmin.local: quit
      
  8. Kerberos デーモンを起動します。


    kdc1 # /etc/init.d/kdc start
    kdc1 # /etc/init.d/kdc.master start
    
  9. kadmin を起動します。

    この時点で、SEAM 管理ツールを使用して、主体を追加します。追加するには、上記の手順で作成した admin 主体名を使用してログインする必要があります。ただし、以下のコマンド行の例では、簡略化されています。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <kws/admin パスワードを入力する>
    kadmin: 
    1. マスター KDC のホスト主体を作成します。

      ホスト主体は、klistkprop などの Kerberos アプリケーションで使用されます。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかにかかわらず、FQDN は小文字で入力する必要があります。


      kadmin: addprinc -randkey host/kdc1.example.com
      Principal "host/kdc1.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. (省略可能) マスター KDC の root 主体を作成します。

      この主体は、認証済みの NFS マウントで使用されます。そのため、この主体は、マスター KDC 上にある必要はありません。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかにかかわらず、FQDN は小文字で入力する必要があります。


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

      キータブファイルに追加したホスト主体が、自動的に使用されます。


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


      kadmin: quit
      
  10. 各 KDC のエントリを伝播構成ファイル (kpropd.acl) に追加します。

    このファイルの詳細は、kprop(1M) のマニュアルページを参照してください。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
  11. (省略可能) NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックを同期化します。

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

スレーブ KDC を構成する方法

この手順では、kdc3 という名前の新しいスレーブ KDC を構成します。 この手順では、次の構成パラメータを使用します。

  1. スレーブ KDC を構成するための前提条件を完了します。

    マスター KDC が構成済みである必要があります。スレーブ KDC をスワップ可能にする場合の手順については、マスター KDC とスレーブ KDC のスワップを参照してください。

  2. マスター KDC 上でスーパーユーザーになります。

  3. マスター KDC 上で kadmin を起動します。

    マスター KDC を構成するときに作成した admin 主体名を使用して、ログインする必要があります。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <kws/admin パスワードを入力する>
    kadmin: 
    1. マスター KDC のデータベースにスレーブホスト主体が存在しない場合は、追加します。

      スレーブが機能するには、ホスト主体が必要です。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で入力する必要があります。


      kadmin: addprinc -randkey host/kdc3.example.com
      Principal "host/kdc3@EXAMPLE.COM" created.
      kadmin: 
    2. (省略可能) マスター KDC 上で、スレーブ KDC の root 主体を作成します。

      この主体が必要なのは、認証済みのファイルシステムをスレーブが NFS マウントする場合だけです。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で入力する必要があります。


      kadmin: addprinc root/kdc3.example.com
      Enter password for principal root/kdc3.example.com@EXAMPLE.COM: <パスワードを入力する>
      Re-enter password for principal root/kdc3.example.com@EXAMPLE.COM: <パスワードを再度入力する>
      Principal "root/kdc3.example.com@EXAMPLE.COM" created.
      kadmin: 
    3. kadmin を終了します。


      kadmin: quit
      
  4. マスター KDC 上で、Kerberos 構成ファイル (krb5.conf) を編集します。

    各スレーブのエントリを追加する必要があります。このファイルの詳細は、krb5.conf(4) の マニュアルページを参照してください。


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
                    EXAMPLE.COM = {
                    kdc = kdc1.example.com
                    kdc = kdc2.example.com
                    kdc = kdc3.example.com
                    admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # ドメイン名とレルム名が同じ場合 
    # このエントリは不要
    #        
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
  5. マスター KDC 上で、各スレーブ KDC のエントリをデータベース伝播構成ファイル (kpropd.acl) に追加します。

    データベース伝播構成ファイルの詳細は、kprop(1M) のマニュアルページを参照してください。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
    host/kdc3.example.com@EXAMPLE.COM
    
  6. すべてのスレーブ KDC 上で、マスター KDC サーバーから KDC 管理ファイルをコピーします。

    この手順は、マスター KDC サーバーが、各 KDC サーバーに必要な情報を更新したため、すべてのスレーブ KDC 上で実行する必要があります。ftp などの転送メカニズムを使用して、マスター KDC から次のファイルのコピーを取得できます。

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  7. 新しいスレーブ上で kadmin を使用して、スレーブのホスト主体をスレーブのキータブファイルに追加します。

    マスター KDC を構成するときに作成したadmin 主体名を使用してログインする必要があります。ログインすると、kprop などの Kerberos アプリケーションが機能します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で入力する必要があります。


    kdc3 # /usr/sbin/kadmin -p kws/admin
    Enter password: <kws/admin パスワードを入力する>
    kadmin: ktadd host/kdc3.example.com
    kadmin: Entry for principal host/kdc3.example.com with
      kvno 3, encryption type DES-CBC-CRC added to keytab
      WRFILE:/etc/krb5/krb5.keytab
    kadmin: quit
    
  8. マスター KDC 上で、スレーブ KDC 名を cron ジョブに追加します。このジョブは、crontab -e を実行して、自動的にバックアップを実行します。

    kprop_script 行の末尾に、各スレーブ KDC のサーバー名を追加します。


    10 3 * * * /usr/lib/krb5/kprop_script kdc2.example.com kdc3.example.com
    

    バックアップの時刻を変更することもできます。この構成では、バックアップ処理を毎日午前 3 時 10 分に開始します。

  9. マスター KDC 上のデータベースを、 kprop_script を使用してバックアップし、伝播します。

    データベースのバックアップコピーがすでに作成されている場合は、ここでバックアップを作成する必要はありません。詳細は、Kerberos データベースをスレーブ KDC に手動で伝播する方法を参照してください。 


    kdc1 # /usr/lib/krb5/kprop_script kdc3.example.com
    Database propagation to kdc3.example.com: SUCCEEDED
  10. 新しいスレーブ上で、kdb5_util を使用して stash ファイルを作成します。


    kdc3 # /usr/sbin/kdb5_util stash
    kdb5_util: Cannot find/read stored master key while reading master key
    kdb5_util: Warning: proceeding without master key
    
    Enter KDC database master key: <鍵を入力する>
    
  11. (省略可能) 新しいスレーブ KDC 上で、NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックと同期化します。

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

  12. 新しいスレーブ上で、KDC デーモン (krb5kdc) を起動します。


    kdc3 # /etc/init.d/kdc start