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

第 23 章 Kerberos サービスの構成 (手順)

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

この章の内容は次のとおりです。

Kerberos サービスの構成 (作業マップ)

構成手順は、その個々の手順がほかの手順に依存するため、特定の順序で実行する必要があります。多くの場合、これらの手順に従うことにより、Kerberos サービスに必要なサービスを設定できます。その他の手順は互いに依存しないため、任意のタイミングで実行できます。次の作業マップで、推奨する Kerberos のインストール順序を示します。

作業 

説明 

参照先 

1. Kerberos インストールを計画します。 

ソフトウェア構成処理を開始する前に、構成についての問題を解決します。事前に計画することで、結果的に時間やその他のリソースを節約できます。 

第 22 章Kerberos サービスの計画

2. (省略可能) NTP をインストールします。 

NTP ソフトウェアなどのクロック同期プロトコルを構成します。Kerberos サービスが正常に動作するには、レルムに含まれるすべてのシステムのクロックを同期化する必要があります。 

「KDC と Kerberos クライアントのクロックの同期化」

3. KDC サーバーを構成します。 

レルムにマスター KDC サーバー、スレーブ KDC サーバー、および KDC データベースを構成および構築します。 

「KDC サーバーの構成」

4. (省略可能) KDC のセキュリティーを強化します。 

KDC サーバーに対するセキュリティー侵害を回避します。 

「KDC サーバーへのアクセスを制限する方法」

5. (省略可能) 入れ替え可能な KDC を構成します。 

マスター KDC とスレーブ KDC を簡単に入れ替えできるようにします。 

「入れ替え可能なスレーブ KDC を構成する方法」

追加の Kerberos サービスの構成 (作業マップ)

必要な手順が完了したあと、必要に応じて次の手順を行います。

作業 

説明 

参照先 

レルム間認証を構成します。 

レルム間の通信を使用可能にします。 

「レルム間認証の構成」

Kerberos アプリケーションサーバーを構成します。 

サーバーが ftptelnetrsh などのサービスを Kerberos 認証を使ってサポートできるようにします。

「Kerberos ネットワークアプリケーションサーバーの構成」

Kerberos クライアントを構成します。 

クライアントが Kerberos サービスを使用できるようにします。 

「Kerberos クライアントの構成」

Kerberos NFS サーバーを構成します。 

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

「Kerberos NFS サーバーの構成」

アプリケーションサーバーのセキュリティーを強化します。 

認証されたトランザクションのみにアクセスを制限して、アプリケーションサーバーのセキュリティーを強化します。 

「Kerberos アプリケーションのみを有効にする方法」

KDC サーバーの構成

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

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

表 23–1 KDC サーバーの構成 (作業マップ)

作業 

説明 

参照先 

マスター KDC サーバーを構成します。 

より複雑なインストールに必要な手動のプロセスを使用して、レルムにマスター KDC サーバーとデータベースを構成および構築します。 

「マスター KDC を手動で構成する方法」

 

手動のプロセスを使用し、さらに KDC 用に LDAP を使用して、レルムにマスター KDC サーバーとデータベースを構成および構築します。 

「LDAP データサーバーを使用するように KDC を構成する方法」

スレーブ KDC サーバーを構成します。 

より複雑なインストールに必要な手動のプロセスを使用して、レルムにスレーブ KDC サーバーを構成および構築します。 

「スレーブ KDC を手動で構成する方法」

KDC サーバー上の主体鍵を更新します。 

新しい暗号化タイプを使用して KDC サーバー上のセッション鍵を更新します。 

「マスターサーバー上でチケット認可サービス鍵を更新する方法」

Procedureマスター KDC を手動で構成する方法

この手順では、増分伝播を構成します。さらに、次の構成パラメータを使用します。

始める前に

この手順を実行するには、ホストが DNS を使用するように構成されている必要があります。マスター KDC を入れ替え可能にする場合の手順については、「マスター KDC とスレーブ KDC の入れ替え」を参照してください。

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

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

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


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
            EXAMPLE.COM = {
            kdc = kdc1.example.com
            admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [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
            }

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


    注 –

    暗号化タイプを制限する場合は、default_tkt_enctypes または default_tgs_enctypes の行を設定します。暗号化タイプの制限に関する詳細は、「Kerberos 暗号化タイプの使用」を参照してください。


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

    レルム名を変更する必要があります。このファイルの詳細は、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
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
                    }

    この例では、realms セクションのレルム名定義を変更しました。また、realms セクションで、増分伝播できるようにする行とログ内に保持する KDC マスターの更新数を選択する行を追加しました。


    注 –

    暗号化タイプを制限する場合は、permitted_enctypessupported_enctypes、または master_key_type の行を設定します。暗号化タイプの制限に関する詳細は、「Kerberos 暗号化タイプの使用」を参照してください。


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

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


    kdc1 # /usr/sbin/kdb5_util create -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: <Type the key>
    Re-enter KDC database master key to verify: <Type it again>
    
  5. Kerberos アクセス制御リストファイル (kadm5.acl) を編集します。

    作成された /etc/krb5/kadm5.acl ファイルには、KDC を管理できる主体名がすべて含まれている必要があります。


    kws/admin@EXAMPLE.COM   *

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

  6. kadmin.local コマンドを起動し、主体を追加します。

    次の手順では、Kerberos サービスで使用される主体を作成します。


    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:<Type the password>
      Re-enter password for principal kws/admin@EXAMPLE.COM: <Type it again>
      Principal "kws/admin@EXAMPLE.COM" created.
      kadmin.local: 
    2. kiprop 主体を作成します。

      kiprop 主体はマスター KDC からの更新の承認に使用されます。


      kadmin.local: addprinc -randkey kiprop/kdc1.example.com
      Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
      kadmin.local:
    3. kadmind サービスのキータブファイルを作成します。

      このコマンドシーケンスは、kadmin/<FQDN> および changepw/<FQDN> の主体エントリを保持する特別なキータブファイルを作成します。これらの主体は、kadmind サービスと、変更されるパスワードに必要です。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。kadmin/changepw 主体は、Solaris リリースが稼働していないクライアントからのパスワードを変更するために使用されます。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.example.com
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 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 AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/changepw
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local:
    4. マスター KDC サーバーの kiprop 主体を kadmind キータブファイルに追加します。

      kadm5.keytab ファイルに kiprop 主体を追加すると、増分伝播が開始されるときに、kadmind コマンドが自身を認証できます。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: 
    5. kadmin.local を終了します。

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


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


    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
    
  8. kadmin を起動して、主体をさらに追加します。

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


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. マスター KDC の host 主体を作成します。

      ホスト主体は、変更をスレーブ KDC に伝播するために、kprop などの Kerberos アプリケーションで使用されます。この主体はまた、ssh などのアプリケーションを使用して、KDC サーバーにセキュリティー保護された遠隔アクセスを提供するためにも使用されます。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


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

      この主体は、Kerberos クライアントのインストール中に kclient ユーティリティーで使用されます。このユーティリティーを使用しない場合は、主体に追加する必要はありません。kclient ユーティリティーのユーザーは、このパスワードを使用する必要があります。


      kadmin: addprinc clntconfig/admin
      Enter password for principal clntconfig/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal clntconfig/admin@EXAMPLE.COM: <Type it again>
      Principal "clntconfig/admin@EXAMPLE.COM" created.
      kadmin: 
    3. マスター KDC のキータブファイルにマスター KDC の host 主体を追加します。

      キータブファイルにホスト主体を追加すると、sshd などのアプリケーションサーバーによってこの主体が自動的に使用されるようになります。


      kadmin: ktadd host/kdc1.example.com
      Entry for principal host/kdc1.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 host/kdc1.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 host/kdc1.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 host/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    4. kadmin を終了します。


      kadmin: quit
      
  9. (省略可能) NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックを同期化します。

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

  10. スレーブ KDC の構成

    冗長性を確保するには、スレーブ KDC を必ず 1 つ以上インストールするようにしてください。 手順については、「スレーブ KDC を手動で構成する方法」を参照してください。

ProcedureLDAP データサーバーを使用するように KDC を構成する方法

Solaris 10 5/08 リリースから、次の手順を使用して、LDAP データサーバーを使用するように KDC を構成できるようになりました。

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

始める前に

この手順を実行する場合も、ホストが DNS を使用するように構成されている必要があります。パフォーマンスを向上させるためには、KDC と LDAP ディレクトリサービスを同じサーバーにインストールしてください。さらに、ディレクトリサーバーも稼働させるようにしてください。次の手順は、Sun Java Directory Server Enterprise Edition リリースを使用しているサーバーで機能します。

  1. KDC 上でスーパーユーザーになります。

  2. ディレクトリサーバーの証明書を作成し、その証明書をインポートします。

    次の手順では、Directory Server 6.1 自己署名付き証明書を使用するように S10 KDC を構成します。証明書の期限が切れている場合は、『Sun Java System Directory Server Enterprise Edition 6.2 管理ガイド』「自己署名済み証明書を管理する」の手順に従って証明書を更新してください。

    1. 自己署名付きのディレクトリサーバー証明書をエクスポートします。


      # /usr/sfw/bin/certutil -L -n defaultCert -d /export/sun-ds6.1/directory/alias \
              -P 'slapd-' -a > /var/tmp/ds_cert.pem
      
    2. ローカルの証明書データベースを作成します。


      # /usr/sfw/bin/certutil -N -d /var/ldap
      
    3. ディレクトリサーバー証明書をローカルの証明書データベースに追加します。


      # /usr/sfw/bin/certutil -A -n defaultCert -i /var/tmp/ds_cert -a -t CT -d /var/ldap
      
    4. ディレクトリサーバー証明書をインポートします。


      # pktool setpin keystore=nss dir=/var/ldap
      # chmod a+r /var/ldap/*.db
      # pktool import keystore=nss objtype=cert trust="CT" infile=/tmp/defaultCert.certutil.der \
              label=defaultCert dir=/var/ldap
      
  3. 必要に応じて、LDAP ディレクトリにデータを設定します。

  4. 既存のスキーマに Solaris Kerberos スキーマを追加します。


    # ldapmodify -h dsserver.example.com -D "cn=directory manager" -f /usr/share/lib/ldif/kerberos.ldif
    
  5. LDAP ディレクトリ内に Kerberos コンテナを作成します。

    krb5.conf ファイルに次のエントリを追加します。

    1. データベースの種類を定義します。

      realms セクションに database_module を定義するエントリを追加します。


      database_module = LDAP
      
    2. データベースのモジュールを定義します。


      [dbmodules]
          LDAP = {
              ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com"
              db_library = kldap
              ldap_kdc_dn = "cn=kdc service,ou=profile,dc=example,dc=com"
              ldap_kadmind_dn = "cn=kadmin service,ou=profile,dc=example,dc=com"
              ldap_cert_path = /var/ldap
              ldap_servers = ldaps://dsserver.example.com
          }
      
    3. LDAP ディレクトリ内に KDC を作成します。

      このコマンドによって、krbcontainer とその他のいくつかのオブジェクトが作成されます。また、/var/krb5/.k5.EXAMPLE.COM マスター鍵の stash ファイルも作成されます。


      # kdb5_ldap_util -D "cn=directory manager" create -P abcd1234 -r EXAMPLE.COM -s
  6. KDC のバインド識別名 (DN) のパスワードを隠します。

    これらのパスワードは、DS にバインドするときに KDC によって使用されます。KDC は、その KDC が使用しているアクセスの種類に応じて異なる役割を使用します。


    # kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com"
    # kdb5_ldap_util stashsrvpw "cn=kadmin service,ou=profile,dc=example,dc=com"
    
  7. KDC サービスの役割を追加します。

    1. 次に示すような内容を含む kdc_roles.ldif ファイルを作成します。


      dn: cn=kdc service,ou=profile,dc=example,dc=com
      cn: kdc service
      sn: kdc service
      objectclass: top
      objectclass: person
      userpassword: test123
      
      dn: cn=kadmin service,ou=profile,dc=example,dc=com
      cn: kadmin service
      sn: kadmin service
      objectclass: top
      objectclass: person
      userpassword: test123
    2. LDAP ディレクトリ内に役割のエントリを作成します。


      # ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
      
  8. KDC に関連する役割の ACL を設定します。


    # cat << EOF | ldapmodify -h dsserver.example.com -D "cn=directory manager" 
    # Set kadmin ACL for everything under krbcontainer.
    dn: cn=krbcontainer,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (target="ldap:///cn=krbcontainer,dc=example,dc=com")(targetattr="krb*")(version 3.0;\
          acl kadmin_ACL; allow (all)\
          userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
    
    # Set kadmin ACL for everything under the people subtree if there are
    # mix-in entries for krb princs:
    dn: ou=people,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (target="ldap:///ou=people,dc=example,dc=com")(targetattr="krb*")(version 3.0;\
          acl kadmin_ACL; allow (all)\
          userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
    EOF
  9. Kerberos 構成ファイル (krb5.conf) を編集します。

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


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
            EXAMPLE.COM = {
            kdc = kdc1.example.com
            admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [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
            }

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


    注 –

    暗号化タイプを制限する場合は、default_tkt_enctypes または default_tgs_enctypes の行を設定します。暗号化タイプの制限に関する詳細は、「Kerberos 暗号化タイプの使用」を参照してください。


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

    レルム名を変更する必要があります。このファイルの詳細は、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
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
                    }

    この例では、realms セクションのレルム名定義を変更しました。また、realms セクションで、増分伝播できるようにする行とログ内に保持する KDC マスターの更新数を選択する行を追加しました。


    注 –

    暗号化タイプを制限する場合は、permitted_enctypessupported_enctypes、または master_key_type の行を設定します。暗号化タイプの制限に関する詳細は、「Kerberos 暗号化タイプの使用」を参照してください。


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

    作成された /etc/krb5/kadm5.acl ファイルには、KDC を管理できる主体名がすべて含まれている必要があります。


    kws/admin@EXAMPLE.COM   *

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

  12. kadmin.local コマンドを起動し、主体を追加します。

    次の手順では、Kerberos サービスで使用される主体を作成します。


    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:<Type the password>
      Re-enter password for principal kws/admin@EXAMPLE.COM: <Type it again>
      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 AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 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 AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/changepw
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local:
    3. kadmin.local を終了します。

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


      kadmin.local: quit
      
  13. (省略可能) Kerberos サービスの LDAP 依存性を構成します。

    LDAP および KDC サーバーが同一のホスト上で稼働しており、LDAP サービスが SMF FMRI を使って構成されている場合は、Kerberos デーモンの LDAP サービスに対する依存性を追加します。これにより、LDAP サービスが再起動すると KDC サービスも再起動するようになります。

    1. krb5kdc サービスへの依存性を追加します。


      # svccfg -s security/krb5kdc
      svc:/network/security/krb5kdc> addpg dsins1 dependency
      svc:/network/security/krb5kdc> setprop dsins1/entities = \
          fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1"
      svc:/network/security/krb5kdc> setprop dsins1/grouping = astring: "require_all"
      svc:/network/security/krb5kdc> setprop dsins1/restart_on = astring: "restart"
      svc:/network/security/krb5kdc> setprop dsins1/type = astring: "service"
      svc:/network/security/krb5kdc> exit
      
    2. kadmin サービスへの依存性を追加します。


      # svccfg -s security/kadmin
      svc:/network/security/kadmin> addpg dsins1 dependency
      svc:/network/security/kadmin> setprop dsins1/entities =\
          fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1"
      svc:/network/security/kadmin> setprop dsins1/grouping = astring: "require_all"
      svc:/network/security/kadmin> setprop dsins1/restart_on = astring: "restart"
      svc:/network/security/kadmin> setprop dsins1/type = astring: "service"
      svc:/network/security/kadmin> exit
      
  14. Kerberos デーモンを起動します。


    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
    
  15. kadmin を起動して、主体をさらに追加します。

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


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. マスター KDC の host 主体を作成します。

      ホスト主体は、klistkprop などの Kerberos アプリケーションで使用されます。Solaris 10 クライアントは、認証された NFS ファイルシステムをマウントするときに、この主体を使用します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


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

      この主体は、Kerberos クライアントのインストール中に kclient ユーティリティーで使用されます。このユーティリティーを使用しない場合は、主体に追加する必要はありません。kclient ユーティリティーのユーザーは、このパスワードを使用する必要があります。


      kadmin: addprinc clntconfig/admin
      Enter password for principal clntconfig/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal clntconfig/admin@EXAMPLE.COM: <Type it again>
      Principal "clntconfig/admin@EXAMPLE.COM" created.
      kadmin: 
    3. マスター KDC のキータブファイルにマスター KDC の host 主体を追加します。

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


      kadmin: ktadd host/kdc1.example.com
      Entry for principal host/kdc1.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 host/kdc1.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 host/kdc1.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 host/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    4. kadmin を終了します。


      kadmin: quit
      
  16. (省略可能) NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックを同期化します。

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

  17. スレーブ KDC の構成

    冗長性を確保するには、スレーブ KDC を必ず 1 つ以上インストールするようにしてください。 手順については、「スレーブ KDC を手動で構成する方法」を参照してください。

Procedureスレーブ KDC を手動で構成する方法

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

始める前に

マスター KDC が構成済みである必要があります。スレーブ KDC を入れ替え可能にする手順については、「マスター KDC とスレーブ KDC の入れ替え」を参照してください。

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

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

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


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

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


      kadmin: addprinc -randkey host/kdc2.example.com
      Principal "host/kdc2.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. マスター KDC 上で、kiprop 主体を作成します。

      kiprop 主体は、マスター KDC からの増分伝播を承認するために使用されます。


      kadmin: addprinc -randkey kiprop/kdc2.example.com
      Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
      kadmin:
    3. kadmin を終了します。


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

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


    kdc1 # cat /etc/krb5/krb5.conf
     .
     .
    [realms]
                    EXAMPLE.COM = {
                    kdc = kdc1.example.com
                    kdc = kdc2.example.com
                    admin_server = kdc1.example.com
            }
  4. マスター KDC 上で、kadm5.aclkiprop エントリを追加します。

    このエントリにより、マスター KDC が kdc2 サーバー用の増分伝播の要求を受け取ることができるようになります。


    kdc1 # cat /etc/krb5/kadm5.acl
    */admin@EXAMPLE.COM *
    kiprop/kdc2.example.com@EXAMPLE.COM p
    
  5. マスター KDC 上で、kadmind を再起動し、kadm5.acl ファイルの新しいエントリを使用します。


    kdc1 # svcadm restart network/security/kadmin
    
  6. すべてのスレーブ KDC 上で、KDC 管理ファイルをマスター KDC サーバーからコピーします。

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

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

  7. すべてのスレーブ KDC 上で、マスター KDC のエントリと各スレーブ KDC のエントリをデータベース伝播構成ファイル kpropd.acl に追加します。

    この情報は、すべてのスレーブ KDC サーバー上で更新する必要があります。


    kdc2 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
  8. すべてのスレーブ KDC 上で、Kerberos アクセス制御リストファイル kadm5.acl が反映されていないことを確認してください。

    修正前の kadm5.acl ファイルは次のようになっています。


    kdc2 # cat /etc/krb5/kadm5.acl
    */admin@___default_realm___ *

    ファイルに kiprop のエントリがある場合は、それを削除します。

  9. 新しいスレーブ上で、kdc.conf のエントリを変更します。

    sunw_dbprop_master_ulogsize エントリを sunw_dbprop_slave_poll を定義するエントリと置き換えます。エントリは、ポーリング時間を 2 分に設定します。


    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
                    sunw_dbprop_enable = true
                    sunw_dbprop_slave_poll = 2m
            }
  10. 新しいスレーブ上で、kadmin コマンドを起動します。

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


    kdc2 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. kadmin を使用して、スレーブのホスト主体をスレーブのキータブファイルに追加します。

      このエントリにより kprop などの Kerberos アプリケーションが機能します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


      kadmin: ktadd host/kdc2.example.com
      Entry for principal host/kdc2.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 host/kdc2.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 host/kdc2.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 host/kdc2.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc2.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    2. スレーブ KDC のキータブファイルに kiprop 主体を追加します。

      krb5.keytabkiprop 主体を追加すると、増分伝播が開始されるときに、kprpod コマンドが自身を認証できるようになります。


      kadmin: ktadd kiprop/kdc2.example.com
      Entry for principal kiprop/kdc2.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 kiprop/kdc2.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 kiprop/kdc2.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 kiprop/kdc2.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. kadmin を終了します。


      kadmin: quit
      
  11. 新しいスレーブ上で、Kerberos 伝播デーモンを起動します。


    kdc2 # /usr/lib/krb5/kpropd
    
  12. 新しいスレーブ上で、kdb5_util を使用して stash ファイルを作成します。


    kdc2 # /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: <Type the key>
    
  13. Kerberos 伝播デーモンを終了します。


    kdc2 # pkill kpropd
    
  14. (省略可能) 新しいスレーブ KDC 上で、NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックを同期化します。

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

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

    krb5kdc サービスが有効なときは、システムがスレーブとして構成されていると kpropd も起動します。


    kdc2 # svcadm enable network/security/krb5kdc
    

Procedureマスターサーバー上でチケット認可サービス鍵を更新する方法

Solaris 10 リリース以前に作成された Solaris KDC サービスで、チケット認可サービス (TGS) 主体が DES 鍵のみを持つ場合、この鍵により、チケット認可チケット (TGT) セッション鍵の暗号化タイプは DES に限定されます。より強力なほかの暗号化タイプにも対応する Solaris 10 に Solaris KDC をアップデートすると、KDC で生成されるすべてのセッション鍵について暗号化を強化できるようになります。ただし、既存の TGS 主体の鍵を新しい暗号化タイプに対応するよう更新しなければ、TGT セッション鍵は DES に限定されたままになります。次の手順では、この鍵を更新して、ほかの暗号化タイプも使用できるようにします。

  1. TGS サービス主体鍵を更新します。


    kdc1 % /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: cpw -randkey krbtgt/EXAMPLE.COM@EXAMPLE.COM
    

例 23–1 マスターサーバーから主体鍵を更新する

KDC マスターに root としてログオンした場合、次のコマンドを使用して TGS サービス主体を更新できます。


kdc1 # kadmin.local -q 'cpw -randkey krbtgt/EXAMPLE.COM@EXAMPLE.COM'

レルム間認証の構成

複数のレルムを接続して、レルム間でユーザーを認証することができます。レルム間の認証は、2 つのレルム間で共有される秘密鍵を作成することによって実行されます。レルム間の関係には、階層関係または直接接続があります (「レルムの階層」を参照)。

Procedure階層関係のレルム間認証を設定する方法

この手順の例では、ENG.EAST.EXAMPLE.COM レルムと EAST.EXAMPLE.COM レルムを使用します。レルム間認証は、双方向に確立されます。この手順は、2 つのレルムのマスター KDC 上で完了する必要があります。

始める前に

マスター KDC の各レルムが構成済みである必要があります。認証プロセスを十分にテストするには、複数の Kerberos クライアントが構成されている必要があります。

  1. 最初のマスター KDC 上でスーパーユーザーになります。

  2. 2 つのレルムに対して、TGT のサービス主体を作成します。

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


    # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: addprinc krbtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM
    Enter password for principal krgtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM: <Type password>
    kadmin: addprinc krbtgt/EAST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM
    Enter password for principal krgtgt/EAST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM: <Type password>
    kadmin: quit
    

    注 –

    各サービス主体のパスワードは、2 つの KDC で同一である必要があります。そのため、サービス主体 krbtgt/ENG.EAST.EXAMPLE.COM@EAST.EXAMPLE.COM のパスワードは、2 つのレルムで同じである必要があります。


  3. Kerberos 構成ファイル (krb5.conf) にエントリを追加して、すべてのレルムのドメイン名を定義します。


    # cat /etc/krb5/krb5.conf
    [libdefaults]
     .
     .
    [domain_realm]
            .eng.east.example.com = ENG.EAST.EXAMPLE.COM
            .east.example.com = EAST.EXAMPLE.COM
    

    この例では、ENG.EAST.EXAMPLE.COM レルムと EAST.EXAMPLE.COM レルムのドメイン名を定義しています。Kerberos 構成ファイルは先頭から末尾方向に検索されるため、サブドメインは最初に定義してください。

  4. Kerberos 構成ファイルをこのレルムのすべてのクライアントにコピーします。

    レルム間認証が動作するには、すべてのシステム (スレーブ KDC などのサーバーを含む) に新しいバージョンの Kerberos 構成ファイル (/etc/krb5/krb5.conf) がインストールされている必要があります。

  5. もう一方のレルムで上記の全手順を繰り返します。

Procedure直接接続のレルム間認証を確立する方法

この手順では、ENG.EAST.EXAMPLE.COM レルムと SALES.WEST.EXAMPLE.COM レルムを使用します。レルム間認証は、双方向に確立されます。この手順は、2 つのレルムのマスター KDC 上で完了する必要があります。

始める前に

マスター KDC の各レルムが構成済みである必要があります。認証プロセスを十分にテストするには、複数の Kerberos クライアントが構成されている必要があります。

  1. いずれかのマスター KDC サーバー上でスーパーユーザーになります。

  2. 2 つのレルムに対して、TGT のサービス主体を作成します。

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


    # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: addprinc krbtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM
    Enter password for principal 
      krgtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM: <Type the password>
    kadmin: addprinc krbtgt/SALES.WEST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM
    Enter password for principal 
      krgtgt/SALES.WEST.EXAMPLE.COM@ENG.EAST.EXAMPLE.COM: <Type the password>
    kadmin: quit
    

    注 –

    各サービス主体のパスワードは、2 つの KDC で同一である必要があります。そのため、サービス主体 krbtgt/ENG.EAST.EXAMPLE.COM@SALES.WEST.EXAMPLE.COM のパスワードは、2 つのレルムで同じである必要があります。


  3. Kerberos 構成ファイルにエントリを追加して、遠隔レルムへの直接パスを定義します。

    この例は、ENG.EAST.EXAMPLE.COM レルムのクライアントを示しています。SALES.WEST.EXAMPLE.COM レルムで適切な定義をするには、レルム名を入れ替える必要があります。


    # cat /etc/krb5/krb5.conf
    [libdefaults]
     .
     .
    [capaths]
        ENG.EAST.EXAMPLE.COM = {
            SALES.WEST.EXAMPLE.COM = .
        }
    
        SALES.WEST.EXAMPLE.COM = {
             ENG.EAST.EXAMPLE.COM = .
        }
    
  4. Kerberos 構成ファイルを現在のレルムのすべてのクライアントにコピーします。

    レルム間認証が動作するには、すべてのシステム (スレーブ KDC などのサーバーを含む) に新しいバージョンの Kerberos 構成ファイル (/etc/krb5/krb5.conf) がインストールされている必要があります。

  5. もう一方のレルムで上記の全手順を繰り返します。

Kerberos ネットワークアプリケーションサーバーの構成

ネットワークアプリケーションサーバーとは、次のいずれかのネットワークアプリケーションを 1 つ以上使ってアクセスを提供するホストのことです。 ftprcprloginrshsshtelnet。いくつかの手順を実行するだけで、これらのコマンドの Kerberos バージョンをサーバー上で有効にすることができます。

ProcedureKerberos ネットワークアプリケーションサーバーを構成する方法

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

始める前に

この手順を行う場合には、マスター KDC がすでに構成されていなければなりません。このプロセスを十分にテストするには、複数の Kerberos クライアントが構成されている必要があります。

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

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

  2. 新しいサーバーの主体を追加し、そのサーバーのキータブを更新します。

    次のコマンドは、ホスト主体の存在有無を報告します。


    boston # klist -k |grep host
    4 host/boston.example.com@EXAMPLE.COM
    4 host/boston.example.com@EXAMPLE.COM
    4 host/boston.example.com@EXAMPLE.COM
    4 host/boston.example.com@EXAMPLE.COM

    このコマンドを実行しても主体が返されなかった場合、次の手順に従って新しい主体を作成します。

    Kerberos グラフィカル管理ツールを使って主体を追加する方法については、「新しい Kerberos 主体を作成する方法」を参照してください。次の手順例は、コマンド行から必要な主体を追加する方法を示したものです。マスター KDC を構成するときに作成した admin 主体名を使用して、ログインする必要があります。


    boston # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. サーバーの host 主体を作成します。

      host 主体を使用する目的は次のとおりです。

      • rshssh など、遠隔コマンドの使用時にトラフィックを認証します。

      • pam_krb5 により、host 主体を使用してユーザーの Kerberos 資格が信頼できる KDC から取得されたことを確認し、KDC へのなりすまし攻撃を防ぎます。

      • root ユーザーが root 主体の存在なしで Kerberos 資格を自動的に取得できるようにします。これは、共有で Kerberos 資格が必要な場合に手動の NFS マウントを実行するのに役立つことがあります。

      リモートアプリケーションを使用するトラフィックに Kerberos サービスによる認証が必要な場合は、この主体が必要です。サーバーに複数のホスト名が割り当てられている場合は、ホスト名の FQDN 形式を使用してホスト名ごとに主体を作成します。


      kadmin: addprinc -randkey host/boston.example.com
      Principal "host/boston.example.com" created.
      kadmin: 
    2. サーバーの host 主体をサーバーのキータブに追加します。

      kadmin コマンドが実行中でないときは、次のようにコマンドを再起動します。 /usr/sbin/kadmin -p kws/admin

      サーバーに複数のホスト名が割り当てられている場合は、ホスト名ごとに主体をキータブに追加します。


      kadmin: ktadd host/boston.example.com
      Entry for principal host/boston.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 host/boston.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 host/boston.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 host/boston.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/boston.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin:
    3. kadmin を終了します。


      kadmin: quit
      

Kerberos NFS サーバーの構成

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

表 23–2 Kerberos NFS サーバーの構成 (作業マップ)

作業 

説明 

参照先 

Kerberos NFS サーバーを構成します。 

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

「Kerberos NFS サーバーを構成する方法」

資格テーブルを作成します。 

デフォルトのマッピングが十分でない場合、GSS 資格から UNIX ユーザー ID へのマッピングに使用できる資格テーブルを生成します。 

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

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

資格テーブルの情報を更新します。 

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

類似する 2 つのレルム間の資格マッピングを作成します。 

レルムがパスワードファイルを共有している場合に、あるレルムから別のレルムに UID をマッピングする方法を説明します。 

「レルム間の資格マッピングを提供する方法」

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

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

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

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

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

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

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

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

    Network Time Protocol (NTP) のインストールと使用は必要はありません。ただし、認証が正常終了するには、すべてのクロックが、krb5.conf ファイル内の clockskew 関係指定子で定義されている最大の誤差以内で KDC サーバー上の時刻と同期化されている必要があります。NTP については、「KDC と Kerberos クライアントのクロックの同期化」を参照してください。

  3. NFS サーバーを Kerberos クライアントとして構成します。

    「Kerberos クライアントの構成」の手順に従ってください。

  4. kadmin を起動します。

    Kerberos グラフィカル管理ツールを使って主体を追加する方法については、「新しい Kerberos 主体を作成する方法」を参照してください。追加するときは、マスター KDC を構成するときに作成した admin 主体名を使用してログインする必要があります。ただし、次の例では、コマンド行を使用して、必要な主体を追加しています。


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

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

      NFS データへのアクセスに使用されるシステム上の一意のインタフェースごとに、上記の手順を繰り返します。ホストに一意の名前を持ったインタフェースが複数存在する場合、一意の名前は、それぞれに NFS サービス主体を持つ必要があります。


      kadmin: addprinc -randkey nfs/denver.example.com
      Principal "nfs/denver.example.com" created.
      kadmin:
    2. サーバーの 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:
    3. kadmin を終了します。


      kadmin: quit
      
  5. (省略可能) 必要に応じて、特殊な GSS 資格マップを作成します。

    通常、Kerberos サービスは、GSS 資格と UNIX UID 間の適切な対応表を生成します。デフォルトのマッピングについては、「GSS 資格の UNIX 資格へのマッピング」を参照してください。デフォルトのマッピングが十分でない場合は、「資格テーブルを作成する方法」を参照してください。

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

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

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

gsscred 資格テーブルは、Kerberos 主体を UID に割り当てるために NFS サーバーが使用します。デフォルトでは、主体名の一次の部分が UNIX のログイン名に一致します。NFS クライアントが Kerberos 認証を使用して NFS サーバーからファイルシステムをマウントするには、デフォルトのマッピングが十分でない場合、このテーブルを作成する必要があります。

  1. /etc/gss/gsscred.conf を編集してセキュリティーメカニズムを変更します。

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

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


    # gsscred -m kerberos_v5 -a
    

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

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

始める前に

この手順を行うには、gsscred テーブルがすでに NFS サーバーに作成済みである必要があります。手順については、「資格テーブルを作成する方法」を参照してください。

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

  2. gsscred コマンドを使用して、エントリを資格テーブルに追加します。


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

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

    name

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

    uid

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

    -a

    UID を主体名の割り当てに追加します。


例 23–2 資格テーブルに複数の構成要素主体を追加する

次の例では、 sandy/admin という名前の主体にエントリを 1 つ追加し、UID 3736 に割り当てます。


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


例 23–3 異なるドメインの主体を資格テーブルに追加する

次の例では、sandy/admin@EXAMPLE.COM という名前の主体にエントリを 1 つ追加し、UID 3736 に割り当てます。


# gsscred -m kerberos_v5 -n sandy/admin@EXAMPLE.COM -u 3736 -a

Procedureレルム間の資格マッピングを提供する方法

この手順では、同じパスワードファイルを使用するレルム間の適切な資格マッピングを提供します。この例では、CORP.EXAMPLE.COM レルムと SALES.EXAMPLE.COM レルムは同じパスワードファイル使用します。bob@CORP.EXAMPLE.COMbob@SALES.EXAMPLE.COM の資格は同じ UID にマッピングされます。

  1. スーパーユーザーになります。

  2. クライアントシステム上で、エントリを krb5.conf ファイルに追加します。


    # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = CORP.EXAMPLE.COM
     .
    [realms]
        CORP.EXAMPLE.COM = {
            .
            auth_to_local_realm = SALES.EXAMPLE.COM
            .
        }

例 23–4 同じパスワードファイルを使用してレルム間で資格をマッピングする

この例では、同じパスワードファイルを使用するレルム間の適切な資格マッピングを提供します。この例では、CORP.EXAMPLE.COM レルムと SALES.EXAMPLE.COM レルムは同じパスワードファイル使用します。bob@CORP.EXAMPLE.COMbob@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 資格へのマッピングの監視」を参照してください。

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

この手順により、さまざまなセキュリティーモードまたはフレーバを使用して、NFS サーバーが NFS に安全にアクセスできるようになります。クライアントがセキュリティーフレーバについて NFS サーバーとネゴシエーションを行うとき、クライアントがアクセスしたサーバーが提供する最初のフレーバが使用されます。このフレーバは、NFS サーバーが共有するファイルシステムにおける後続のクライアント要求すべてに使用されます。

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

  2. キータブファイルに 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
  3. /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
  4. /etc/dfs/dfstab ファイルを編集し、必要なセキュリティーモードを sec= オプションに指定して、適切なエントリに追加します。


    share -F nfs -o sec=mode file-system
    
    mode

    ファイルシステムを共有するときに使用するセキュリティーモードを指定します。複数のセキュリティーモードを使用するときは、デフォルトとして、リストの最初のモードが使用されます。

    file-system

    共有するファイルシステムへのパスを定義します。

    指定されたファイルシステムのファイルにアクセスするすべてのクライアントは、Kerberos 認証が必要です。ファイルにアクセスするには、NFS クライアント上にユーザー主体が認証される必要があります。

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

    1 つまたは複数の share コマンドをはじめて実行する場合、NFS デーモンが動作していないことがあります。次のコマンドでデーモンを再起動します。


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

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


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

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


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

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

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


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


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

次の例では、3 つの Kerberos セキュリティーモードがすべて選択されています。クライアントと NFS サーバーの間で、どのモードを使用するかのネゴシエーションが行われます。コマンドの最初のモードが失敗すると、次のモードが試行されます。詳細は、nfssec(5) のマニュアルページを参照してください。


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

Kerberos クライアントの構成

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

Kerberos クライアントの構成 (作業マップ)

次の作業マップは、Kerberos クライアントの設定に関連するすべての手順が含まれます。各行には、作業識別名、その作業を行う理由、および作業へのリンクが含まれます。

作業 

説明 

参照先 

Kerberos クライアントのインストールプロファイルを確立します。 

Kerberos クライアントの自動インストールに使用されるクライアントのインストールプロファイルを生成します。 

「Kerberos クライアントのインストールプロファイルの作成方法」

Kerberos クライアントを構成します。 

手動で Kerberos クライアントをインストールします。各クライアントのインストールに独自のインストールパラメータが必要な場合に、この手順を使用します。 

「Kerberos クライアントを手動で構成する方法」

 

自動的に Kerberos クライアントをインストールします。各クライアントのインストールパラメータが同じ場合に、この手順を使用します。 

「Kerberos クライアントを自動的に構成する方法」

 

対話的に Kerberos クライアントをインストールします。2、3 のインストールパラメータを変更する必要がある場合にだけ、この手順を使用します。 

「Kerberos クライアントを対話的に構成する方法」

クライアントが root ユーザーとして NFS ファイルシステムにアクセスすることを許可します

root アクセス付きで共有される NFS ファイルシステムをクライアントがマウントできるように、root 主体をクライアント上に作成します。また、cron ジョブを実行できるように、NFS ファイルシステムへの非対話的な root アクセスをクライアントがセットアップすることを許可します。

「Kerberos によって保護された NFS ファイルシステムに root ユーザーとしてアクセスする方法」

クライアントのチケット認可チケット (TGT) を発行した KDC の確認を無効にします。 

ローカルのキータブファイルにホスト主体を保存しないクライアントが、TGT を発行した KDC とホスト主体を発行した KDC が同じサーバーであることを確認するセキュリティー検査を省略できるようにします。 

「チケット認可チケット (TGT) の確認を無効にする方法」

ProcedureKerberos クライアントのインストールプロファイルの作成方法

この手順は、Kerberos クライアントをインストールする際に使用される kclient プロファイルを作成します。kclient プロファイルを使用することにより、入力エラーの可能性を減らします。また、プロファイルを使用すると、対話型のプロセスと比べて、ユーザーの介入も減ります。

  1. スーパーユーザーになります。

  2. kclient インストールプロファイルを作成します。

    kclient プロファイルの例は、次のようになります。


    client# cat /net/denver.example.com/export/install/profile
    REALM EXAMPLE.COM
    KDC kdc1.example.com
    ADMIN clntconfig
    FILEPATH /net/denver.example.com/export/install/krb5.conf
    NFS 1
    DNSLOOKUP none

ProcedureKerberos クライアントを自動的に構成する方法

始める前に

この手順では、インストールプロファイルを使用します。 「Kerberos クライアントのインストールプロファイルの作成方法」を参照してください。

  1. スーパーユーザーになります。

  2. kclient インストールスクリプトを実行します。

    プロセスを完了するには、clntconfig 主体のパスワードを入力する必要があります。


    client# /usr/sbin/kclient -p /net/denver.example.com/export/install/profile
    
    Starting client setup
    ---------------------------------------------------
    
    kdc1.example.com
    
    Setting up /etc/krb5/krb5.conf.
    
    Obtaining TGT for clntconfig/admin ...
    Password for clntconfig/admin@EXAMPLE.COM: <Type the password>
    
    nfs/client.example.com entry ADDED to KDC database.
    nfs/client.example.com entry ADDED to keytab.
    
    host/client.example.com entry ADDED to KDC database.
    host/client.example.com entry ADDED to keytab.
    
    Copied /net/denver.example.com/export/install/krb5.conf.
    
    ---------------------------------------------------
    Setup COMPLETE.
    
    client#

例 23–7 コマンド行指定の優先を利用して Kerberos クライアントを自動的に構成する

次の例は、インストールプロファイルに設定されている DNSARG パラメータと KDC パラメータに対しコマンド行での指定が優先します。


# /usr/sbin/kclient -p /net/denver.example.com/export/install/profile\
-d dns_fallback -k kdc2.example.com

Starting client setup
---------------------------------------------------

kdc1.example.com

Setting up /etc/krb5/krb5.conf.

Obtaining TGT for clntconfig/admin ...
Password for clntconfig/admin@EXAMPLE.COM: <Type the password>

nfs/client.example.com entry ADDED to KDC database.
nfs/client.example.com entry ADDED to keytab.

host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.

Copied /net/denver.example.com/export/install/krb5.conf.

---------------------------------------------------
Setup COMPLETE.

client#

ProcedureKerberos クライアントを対話的に構成する方法

この手順では、インストールプロファイルなしで kclient インストールユーティリティーを使用します。

  1. スーパーユーザーになります。

  2. kclient インストールスクリプトを実行します。

    インストールには、次の情報が必要です。

    • Kerberos レルム名

    • KDC マスターホスト名

    • 管理主体名

    • 管理主体のパスワード


例 23–8 kclient インストールユーティリティーの実行

次の出力は、kclient コマンドの実行結果を示しています。


client# /usr/sbin/kclient

Starting client setup
---------------------------------------------------

Do you want to use DNS for kerberos lookups ? [y/n]: n
        No action performed.
Enter the Kerberos realm: EXAMPLE.COM
Specify the KDC hostname for the above realm: kdc1.example.com

Setting up /etc/krb5/krb5.conf.

Enter the krb5 administrative principal to be used: clntconfig/admin
Obtaining TGT for clntconfig/admin ...
Password for clntconfig/admin@EXAMPLE.COM: <Type the password>
Do you plan on doing Kerberized nfs ? [y/n]: n

host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.

Do you want to copy over the master krb5.conf file ? [y/n]: y
Enter the pathname of the file to be copied: \
/net/denver.example.com/export/install/krb5.conf

Copied /net/denver.example.com/export/install/krb5.conf.

---------------------------------------------------
Setup COMPLETE !
#

ProcedureKerberos クライアントを手動で構成する方法

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

  1. スーパーユーザーになります。

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

    デフォルトの Kerberos ファイルを変更する場合は、レルム名とサーバー名を変更する必要があります。gkadmin のヘルプファイルへのパスも指定する必要があります。


    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
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [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
    

    注 –

    暗号化タイプを制限する場合は、default_tkt_enctypes または default_tgs_enctypes の行を設定します。暗号化タイプの制限に関する詳細は、「Kerberos 暗号化タイプの使用」を参照してください。


  3. (省略可能) KDC の検出に使用されるプロセスを変更します。

    Solaris 10 5/08 リリース以降のデフォルトでは、Kerberos レルムから KDC へのマッピングが決定される順序は次のとおりです。

    • krb5.conf 内の realms セクションの定義。

    • DNS 内の SRV レコードの検索による。

    krb5.conf ファイルの libdefaults セクションに dns_lookup_kdc または dns_fallback を追加して、この動作を変更できます。詳細は、krb5.conf(4) のマニュアルページを参照してください。常にリフェラルが最初に試行されます。

  4. (省略可能) ホストのレルムの決定に使用されるプロセスを変更します。

    Solaris 10 5/08 リリース以降のデフォルトでは、ホストからレルムへのマッピングが決定される順序は次のとおりです。

    • KDC がリフェラルをサポートしている場合は、KDC からクライアントに、ホストが属しているレルムが通知されることがある。

    • krb5.conf ファイル内の domain_realm の定義による。

    • ホストの DNS ドメイン名。

    • デフォルトレルム。

    krb5.conf ファイルの libdefaults セクションに dns_lookup_kdc または dns_fallback を追加して、この動作を変更できます。詳細は、krb5.conf(4) のマニュアルページを参照してください。常にリフェラルが最初に試行されます。

  5. (省略可能) NTP などのクロック同期メカニズムを使用して、クライアントのクロックをマスター KDC のクロックと同期化します。

    Network Time Protocol (NTP) のインストールと使用は必要はありません。ただし、認証が正常終了するには、すべてのクロックが、krb5.conf ファイル内の clockskew 関係指定子で定義されている最大の誤差以内で KDC サーバー上の時刻と同期化されている必要があります。NTP については、「KDC と Kerberos クライアントのクロックの同期化」を参照してください。

  6. kadmin を起動します。

    Kerberos グラフィカル管理ツールを使って主体を追加する方法については、「新しい Kerberos 主体を作成する方法」を参照してください。追加するときは、マスター KDC を構成するときに作成した admin 主体名を使用してログインする必要があります。ただし、次の例では、コマンド行を使用して、必要な主体を追加しています。


    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. (省略可能) ユーザー主体が存在しない場合は、ユーザー主体を作成します。

      このホストに関連付けられているユーザーに主体が割り当てられていない場合だけ、ユーザー主体を作成します。


      kadmin: addprinc mre
      Enter password for principal mre@EXAMPLE.COM: <Type the password>
      Re-enter password for principal mre@EXAMPLE.COM: <Type it again>
      kadmin: 
    2. (省略可能) root 主体を作成し、その主体をサーバーのキータブファイルに追加します。

      この手順は、クライアントが NFS サービスによってマウントされたファイルシステムに root アクセスを持つために必要です。また、cron ジョブを root として実行する場合など、非対話的な root アクセスが必要な場合にもこの手順が必要になります。

      クライアントが NFS サービスを使用してマウントされている遠隔ファイルシステムへの root アクセスを必要としない場合は、この手順をスキップできます。root 主体は 2 つの構成要素主体とすべきであり、二番目の構成要素は Kerberos クライアントシステムのホスト名にして、レルム幅の root 主体の作成を回避します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


      kadmin: addprinc -randkey root/client.example.com
      Principal "root/client.example.com" created.
      kadmin: ktadd root/client.example.com
      Entry for principal root/client.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 root/client.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 root/client.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 root/client.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. host 主体を作成し、その主体をサーバーのキータブファイルに追加します。

      host 主体は、認証を提供するために遠隔アクセスサービスによって使用されます。キータブファイルにまだ資格が存在しない場合は、この主体によって root が資格を取得できるようになります。


      kadmin: addprinc -randkey host/denver.example.com
      Principal "host/denver.example.com@EXAMPLE.COM" created.
      kadmin: ktadd host/denver.example.com
      Entry for principal host/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 host/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 host/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 host/denver.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/denver.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin:
    4. (省略可能) サーバーの NFS サービス主体をサーバーのキータブファイルに追加します。

      この手順が必要になるのは、クライアントが Kerberos 認証を使用する NFS ファイルシステムにアクセスする必要がある場合だけです。


      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: 
    5. kadmin を終了します。


      kadmin: quit
      
  7. (省略可能) NFS での Kerberos を有効にします。

    1. /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
    2. DNS を有効にします。

      /etc/resolv.conf ファイルがまだ作成されていない場合は、このファイルを作成します。サービス主体の正規化は DNS に依存して正規化を実行するためです。詳細は、resolv.conf(4) のマニュアルページを参照してください。

    3. gssd サービスを再開します。

      /etc/resolv.conf ファイルを作成または変更したら、gssd デーモンを再起動して、すべての変更を再読み込みする必要があります。


      # svcadm restart network/rpc/gss
      
  8. クライアントから 自動的に TGT を更新するか、または Kerberos チケットの有効期限切れをユーザーに警告する場合は、/etc/krb5/warn.conf ファイルにエントリを作成します。

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


例 23–9 Solaris 以外の KDC を使用するように Kerberos クライアントを設定する

Solaris 以外の KDC を使用するように Kerberos クライアントを設定することができます。この場合、/etc/krb5/krb5.conf ファイルの realms セクションに、1 行を追加する必要があります。この行を追加すると、クライアントが Kerberos パスワード変更サーバーとの通信に使用するプロトコルが変更されます。この行の書式は次のとおりです。


[realms]
                EXAMPLE.COM = {
                kdc = kdc1.example.com
                kdc = kdc2.example.com
                admin_server = kdc1.example.com
                kpasswd_protocol = SET_CHANGE
        }


例 23–10 ホスト名とドメイン名を Kerberos レルムにマッピングするための DNS TXT レコード


@ IN SOA kdc1.example.com root.kdc1.example.com (
                                1989020501   ;serial
                                10800        ;refresh
                                3600         ;retry
                                3600000      ;expire
                                86400 )      ;minimum

                        IN      NS      kdc1.example.com.
kdc1                    IN      A       192.146.86.20
kdc2                    IN      A       192.146.86.21

_kerberos.example.com.             IN      TXT     "EXAMPLE.COM"
_kerberos.kdc1.example.com.        IN      TXT     "EXAMPLE.COM"
_kerberos.kdc2.example.com.        IN      TXT     "EXAMPLE.COM"


例 23–11 Kerberos サーバーの場所を記録する DNS SRV レコード

この例は、KDC、admin サーバー、および kpasswd サーバーの場所を記録するレコードを定義します。


@ IN SOA kdc1.example.com root.kdc1.example.com (
                                1989020501   ;serial
                                10800        ;refresh
                                3600         ;retry
                                3600000      ;expire
                                86400 )      ;minimum

                                   IN      NS      kdc1.example.com.
kdc1                               IN      A       192.146.86.20
kdc2                               IN      A       192.146.86.21

_kerberos._udp.EXAMPLE.COM         IN      SRV 0 0 88  kdc2.example.com
_kerberos._tcp.EXAMPLE.COM         IN      SRV 0 0 88  kdc2.example.com
_kerberos._udp.EXAMPLE.COM         IN      SRV 1 0 88  kdc1.example.com
_kerberos._tcp.EXAMPLE.COM         IN      SRV 1 0 88  kdc1.example.com
_kerberos-adm._tcp.EXAMPLE.COM     IN      SRV 0 0 749 kdc1.example.com
_kpasswd._udp.EXAMPLE.COM          IN      SRV 0 0 749 kdc1.example.com

Procedureチケット認可チケット (TGT) の確認を無効にする方法

この手順では、ローカルの /etc/krb5/krb5.keytab ファイルに保存されているホスト主体の KDC とチケット認可チケットを発行した KDC が同じであることを確認するセキュリティー検査を無効にします。この検査は DNS の偽装攻撃を防止します。ただし、一部のクライアント構成では、ホスト主体を使用できない場合があるため、クライアントが機能できるようにこの検査を無効にする必要があります。次のような構成では、この検査を無効にする必要があります。

  1. スーパーユーザーになります。

  2. krb5.conf ファイルを変更します。

    verify_ap_req_nofail オプションが false に設定されている場合、TGT の確認処理は無効になっています。このオプションの詳細については、krb5.conf(4) のマニュアルページを参照してください。


    client # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
            verify_ap_req_nofail = false
      ...

    注 –

    verify_ap_req_nofail オプションは、krb5.conf ファイルの [libdefaults] セクションまたは [realms] セクションに入力できます。このオプションを [libdefaults] セクションに入力すると、設定はすべてのレルムに使用されます。このオプションを [realms] セクションに入力すると、設定は定義したレルムだけに適用されます。


ProcedureKerberos によって保護された NFS ファイルシステムに root ユーザーとしてアクセスする方法

この手順を実行すると、クライアントは root の ID 特権による Kerberos 認証を必要とする、NFS ファイルシステムにアクセスできるようになります。特に、NFS ファイルシステムが次のようなオプションによって共有されている場合です。-o sec=krb5,root=client1.sun.com

  1. スーパーユーザーになります。

  2. kadmin を起動します。

    Kerberos グラフィカル管理ツールを使って主体を追加する方法については、「新しい Kerberos 主体を作成する方法」を参照してください。追加するときは、マスター KDC を構成するときに作成した admin 主体名を使用してログインする必要があります。ただし、次の例では、コマンド行を使用して、必要な主体を追加しています。


    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. NFS クライアントの root 主体を作成します。

      この主体は、Kerberos 認証を必要とする、NFS マウントされたファイルシステムにスーパーユーザーと同様にアクセスするために使用されます。root 主体は 2 つの構成要素主体とすべきであり、二番目の構成要素は Kerberos クライアントシステムのホスト名にして、レルム幅の root 主体の作成を回避します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


      kadmin: addprinc -randkey root/client.example.com
      Principal "root/client.example.com" created.
      kadmin:
    2. サーバーのキータブファイルに root 主体を追加します。

      NFS サービスを使ってマウントされたファイルシステムにクライアントが root アクセスできるように root 主体を追加する場合にこの手順は必要になります。また、cron ジョブを root として実行する場合など、非対話的な root アクセスが必要な場合にもこの手順が必要になります。


      kadmin: ktadd root/client.example.com
      Entry for principal root/client.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 root/client.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 root/client.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 root/client.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. kadmin を終了します。


      kadmin: quit
      

ProcedureKerberos レルム内のユーザーを自動的に移行するように構成する方法

Kerberos 主体を持たないユーザーを、既存の Kerberos レルムに自動的に移行できます。移行を行うには、/etc/pam.conf のサーバーの認証スタックにある pam_krb5_migrate モジュールの積み重ねにより使用されているサービス用の PAM フレームワークを使用します。

この例では、dtloginother の PAM サービス名が構成され、自動移行を使用します。この手順では、次の構成パラメータを使用します。

始める前に

レルム EXAMPLE.COM の Kerberos クライアントとして server1 を設定します。詳細は、「Kerberos クライアントの構成」を参照してください。

  1. server1 のホストサービス主体が存在するかどうかを確認します。

    server1keytab ファイル内のホストサービス主体は、マスター KDC にサーバーを認証するために使用されます。


    server1 # klist -k
    Keytab name: FILE:/etc/krb5/krb5.keytab
    	KVNO Principal
    	---- ------------------------------------------------
    	   3 host/server1.example.com@EXAMPLE.COM
    	   3 host/server1.example.com@EXAMPLE.COM
    	   3 host/server1.example.com@EXAMPLE.COM
    	   3 host/server1.example.com@EXAMPLE.COM
  2. PAM 構成ファイルを変更します。

    1. dtlogin サービスのエントリを追加します。


      # cat /etc/pam.conf
       .
       .
      #
      # dtlogin service (explicit because of pam_krb5_migrate)
      #
      dtlogin       auth requisite          pam_authtok_get.so.1
      dtlogin       auth required           pam_dhkeys.so.1
      dtlogin       auth required           pam_unix_cred.so.1
      dtlogin       auth sufficient         pam_krb5.so.1
      dtlogin       auth requisite          pam_unix_auth.so.1
      dtlogin       auth optional           pam_krb5_migrate.so.1
      
    2. (省略可能) 必要に応じて、即座のパスワードの変更を強制します。

      新しく作成された Kerberos アカウントは、即座の Kerberos パスワードの変更を強制するために、パスワードの有効期限が現在時刻 (今) に設定されています。有効期限を現在時刻に設定するには、pam_krb5_migrate モジュールを使用する行に expire_pw オプションを追加します。詳細は、pam_krb5_migrate(5) のマニュアルページを参照してください。


      # cat /etc/pam.conf
       .
       .
      dtlogin  auth optional           pam_krb5_migrate.so.1 expire_pw
      
    3. pam_krb5 モジュールをアカウントスタックに追加します。

      この追加により、Kerberos のパスワードの有効期限でアクセスをブロックできるようになります。


      # cat /etc/pam.conf
       .
       .
      #
      # Default definition for Account management
      # Used when service name is not explicitly mentioned for account management
      #
      other   account requisite       pam_roles.so.1
      other   account required        pam_krb5.so.1
      other   account required        pam_unix_account.so.1
    4. pam_krb5 モジュールをパスワードスタックに追加します。

      この追加により、パスワードが期限切れになったらパスワードを更新できるようになります。


      # cat /etc/pam.conf
       .
       .
      #
      # Default definition for Password management
      # Used when service name is not explicitly mentioned for password management
      #
      other   password required       pam_dhkeys.so.1
      other   password requisite      pam_authtok_get.so.1
      other   password requisite      pam_authtok_check.so.1
      other   password sufficient     pam_krb5.so.1
      other   password required       pam_authtok_store.so.1
  3. マスター KDC 上で、アクセス制御ファイルを更新します。

    次のエントリが、root 以外のすべてのユーザーの host/server1.example.com サービス主体に対して、次のエントリは特権の付与、移行、および照会を行います。移行すべきでないユーザーは、kadm5.acl ファイル内で、U 特権を使って示されます。これらのエントリは、permit all または ui エントリの前に置く必要があります。詳細は、kadm5.acl(4) のマニュアルページを参照してください。


    kdc1 # cat /etc/krb5/kadm5.acl
    host/server1.example.com@EXAMPLE.COM U root
    host/server1.example.com@EXAMPLE.COM ui *
    */admin@EXAMPLE.COM *
  4. マスター KDC 上で、Kerberos 管理デーモンを再起動します。

    この手順により、kadmind デーモンが新しい kadm5.acl エントリを使用できるようになります。


    kdc1 # svcadm restart network/security/kadmin
    
  5. マスター KDC 上で、pam.conf ファイルにエントリを追加します。

    次のエントリにより、kadmind デーモンが k5migrate PAM サービスを使用して、移行に必要なアカウントの UNIX ユーザーパスワードを検査できるようになります。


    # grep k5migrate /etc/pam.conf
    k5migrate        auth    required        pam_unix_auth.so.1
    k5migrate        account required        pam_unix_account.so.1

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

Kerberos 認証システムに参加するすべてのホストは、指定した最大時間内に収まるように内部クロックを同期化する必要があります (「クロックスキュー」)。この必要条件は、Kerberos セキュリティーの検査の 1 つです。参加しているホスト間のクロックスキューが超過すると、クライアントの要求が拒否されます。

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

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


注 –

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


KDC と Kerberos クライアント間で同期化したクロックを管理することは重要であるため、NTP (Network Time Protocol ) ソフトウェアを使用して同期化します。デラウェア大学が作成した NTP パブリックドメインソフトウェアが Solaris 2.6 以降の Solaris ソフトウェアに含まれています。


注 –

クロックを同期化するときは、rdate コマンドと cron ジョブを使用することもできます。この方法は、NTP より簡単に使用できます。ただし、ここでは NTP を中心に説明します。ネットワークを使用してクロックを同期化する場合は、クロック同期化プロトコル自体も安全である必要があります。


NTP を使用すると、正確な時刻とネットワーククロック同期をネットワーク環境で管理できます。NTP は基本的にはクライアントサーバー実装の状態をとります。1 つのシステムをマスタークロック (NTP サーバー) として指定します。次に、その他のすべてのシステム (NTP クライアント) をマスタークロックと同期するように設定します。

クロックを同期化するために、NTP は xntpd デーモンを使用して、インターネット標準時サーバーに合わせて UNIX システムの時刻を設定および管理します。次の図は、NTP のクライアントサーバー実装の例です。

図 23–1 NTP を使用したクロック同期

NTP サーバーがマスタークロックとなり、NTP クライアントと Kerberos クライアントが xntpd デーモンを実行しています

    KDC および Kerberos クライアントがクロックを同期化するには、次の手順を実行します。

  1. ネットワークに NTP サーバーを設定します。NTP サーバーは、マスター KDC 以外であればどのシステムでも設定できます。NTP サーバーの作業については、『Solaris のシステム管理 (ネットワークサービス)』「NTP の管理 (作業)」を参照してください。

  2. ネットワークの KDC と Kerberos クライアントを構成するときに、それらを NTP サーバーの NTP クライアントとして設定します。NTP クライアントの作業については、『Solaris のシステム管理 (ネットワークサービス)』「NTP の管理 (作業)」を参照してください。

マスター KDC とスレーブ KDC の入れ替え

マスター KDC とスレーブ KDC を入れ替えるときは、この節で説明する手順を行います。マスター KDC とスレーブ KDC の入れ替えは、マスター KDC に何らかの理由で障害が発生した場合、またはマスター KDC を再インストールする必要がある場合 (新しいハードウェアをインストールした場合など) にだけ行ってください。

Procedure入れ替え可能なスレーブ KDC を構成する方法

この手順は、マスター KDC に入れ替え可能なスレーブ KDC に対して実行します。この手順は、増分伝播を使用していることを想定しています。

  1. KDC をインストールするときに、マスター KDC および入れ替え可能なスレーブ KDC に対して別名を使用します。

    KDC に対してホスト名を定義するときは、各システムの別名が DNS に登録されている必要があります。/etc/krb5/krb5.conf ファイルにホストを定義するときも、別名を使用します。

  2. 手順に従って、スレーブ KDC をインストールします。

    入れ替えするサーバーは、レルム内でスレーブ KDC として動作している必要があります。手順については、「スレーブ KDC を手動で構成する方法」を参照してください。

  3. マスター KDC コマンドを移動します。

    このスレーブ KDC からマスター KDC コマンドが実行されることを防ぐために、kpropkadmind、および kadmin.local コマンドを別の場所に移動します。


    kdc4 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
    kdc4 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
    kdc4 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
    

Procedureマスター KDC とスレーブ KDC を入れ替えする方法

この手順では、旧マスター KDC サーバー名は、kdc1 です。新しいマスター KDC となるスレーブ KDC の名前は、kdc4 です。この手順は、増分伝播を使用していることを想定しています。

始める前に

この手順を実行するには、スレーブ KDC が入れ替え可能なスレーブとして設定されている必要があります。詳細は、「入れ替え可能なスレーブ KDC を構成する方法」を参照してください。

  1. 新しいマスター KDC 上で、kadmin を起動します。


    kdc4 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. kadmind サービスの新しい主体を作成します。

      次の例では、addprinc が 2 行で表示されていますが、1 行に入力する必要があります。


      kadmin: addprinc -randkey -allow_tgs_req +password_changing_service -clearpolicy \
             changepw/kdc4.example.com
      Principal "changepw/kdc4.example.com@ENG.SUN.COM" created.
      kadmin: addprinc -randkey -allow_tgs_req -clearpolicy kadmin/kdc4.example.com
      Principal "kadmin/kdc4.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. キータブファイルを作成します。


      kadmin: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.example.com
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.example.com
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal changepw/kdc4.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin: ktadd -k /etc/krb5/kadm5.keytab kadmin/changepw
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin: 
    3. kadmin を終了します。


      kadmin: quit
      
  2. 新しいマスター KDC 上で、同期を強制します。

    次の手順は、スレーブサーバー上で強制的に KDC を完全に更新します。


    kdc4 # svcadm disable network/security/krb5kdc
    kdc4 # rm /var/krb5/principal.ulog
    
  3. 新しいマスター KDC 上で、更新が完了したことを確認します。


    kdc4 # /usr/sbin/kproplog -h
    
  4. 新しいマスター KDC 上で、KDC サービスを再開します。


    kdc4 # svcadm enable -r network/security/krb5kdc
    
  5. 新しいマスター KDC 上で、更新ログを消去します。

    この手順は、新しいマスター KDC サーバーの更新ログを再度初期化します。


    kdc4 # svcadm disable network/security/krb5kdc
    kdc4 # rm /var/krb5/principal.ulog
    
  6. 旧マスター KDC 上で、kadmind プロセスとkrb5kdc プロセスを終了します。

    kadmind プロセスを終了するときは、旧 KDC データベースに対する変更は行わないでください。


    kdc1 # svcadm disable network/security/kadmin
    kdc1 # svcadm disable network/security/krb5kdc
    
  7. 旧マスター KDC 上で、伝播を要求するポーリング時間を指定します。

    /etc/krb5/kdc.conf 内の sunw_dbprop_master_ulogsize エントリをコメントにして、sunw_dbprop_slave_poll を定義するエントリを追加します。エントリは、ポーリング時間を 2 分に設定します。


    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
                    sunw_dbprop_enable = true
    #               sunw_dbprop_master_ulogsize = 1000
                    sunw_dbprop_slave_poll = 2m
            }
  8. 旧マスター KDC 上で、マスター KDC コマンドと kadm5.acl ファイルを移動します。

    マスター KDC コマンドが実行されることを防ぐために、kpropkadmind、および kadmin.local コマンドを別の場所に移動します。


    kdc1 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
    kdc1 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
    kdc1 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
    kdc1 # mv /etc/krb5/kadm5.acl /etc/krb5/kadm5.acl.save
    
  9. DNS サーバー上で、マスター KDC の別名を変更します。

    サーバーを変更するために、example.com ゾーンファイルを編集して masterkdc のエントリを変更します。


    masterkdc IN CNAME kdc4
  10. DNS サーバー上で、インターネットドメインネームサーバーを再起動します。

    次のコマンドを実行して、新しい別名情報を再ロードします。


    # svcadm refresh network/dns/server
    
  11. 新しいマスター KDC 上で、マスター KDC コマンドとスレーブ kpropd.acl ファイルを移動します。


    kdc4 # mv /usr/lib/krb5/kprop.save /usr/lib/krb5/kprop
    kdc4 # mv /usr/lib/krb5/kadmind.save /usr/lib/krb5/kadmind
    kdc4 # mv /usr/sbin/kadmin.local.save /usr/sbin/kadmin.local
    kdc4 # mv /etc/krb5/kpropd.acl /etc/krb5/kpropd.acl.save
    
  12. 新しいマスター KDC 上で、Kerberos アクセス制御リストファイル (kadm5.acl) を作成します。

    作成された /etc/krb5/kadm5.acl ファイルには、KDC を管理できる主体名がすべて含まれている必要があります。このファイルには、増分伝播を要求するすべてのスレーブもリストされている必要があります。詳細は、kadm5.acl(4) のマニュアルページを参照してください。


    kdc4 # cat /etc/krb5/kadm5.acl
    kws/admin@EXAMPLE.COM   *
    kiprop/kdc1.example.com@EXAMPLE.COM p
    
  13. 新しいマスター KDC 上で、kdc.conf ファイル内の更新ログのサイズを指定します。

    sunw_dbprop_slave_poll エントリをコメントにして、sunw_dbprop_master_ulogsize を定義するエントリを追加します。エントリは、ログサイズを 1000 エントリに設定します。


    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
                    sunw_dbprop_enable = true
    #               sunw_dbprop_slave_poll = 2m
                    sunw_dbprop_master_ulogsize = 1000
            }
  14. 新しいマスター KDC 上で、kiprop 主体を kadmind キータブファイルに追加します。


    kdc4 # kadmin.local
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc4.example.com
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type AES-256 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type Triple DES cbc
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type ArcFour
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type DES cbc mode
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    kadmin.local: quit
    
  15. 新しいマスター KDC 上で、kadmindkrb5kdc を実行します。


    kdc4 # svcadm enable -r network/security/krb5kdc
    kdc4 # svcadm enable -r network/security/kadmin
    
  16. 旧マスター KDC 上で、kiprop サービス主体を追加します。

    krb5.keytab ファイルに kiprop 主体を追加すると、増分伝播サービスに対してkpropd デーモンが自身を認証できるようになります。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Authenticating as pricipal kws/admin@EXAMPLE.COM with password.
    Enter password: <Type kws/admin password>
    kadmin: ktadd kiprop/kdc1.example.com
    Entry for principal kiprop/kdc1.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 kiprop/kdc1.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 kiprop/kdc1.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 kiprop/kdc1.example.com with kvno 3, encryption type ArcFour
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    kadmin: quit
    
  17. 旧マスター KDC 上で、krb5.conf にリストされた各 KDC のエントリを伝播構成ファイル kpropd.acl に追加します。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
    host/kdc3.example.com@EXAMPLE.COM
    host/kdc4.example.com@EXAMPLE.COM
  18. 旧マスター KDC 上で、kpropdkrb5kdc を実行します。

    krb5kdc デーモンが起動すると、システムがスレーブとして構成されている場合、kpropd も起動します。


    kdc1 # svcadm enable network/security/krb5kdc
    

Kerberos データベースの管理

Kerberos データベースは、Kerberos の最も重要な構成要素であるため、適切に管理する必要があります。この節では、データベースのバックアップと復元、増分または並列伝播の設定、stash ファイルの管理など、Kerberos データベースの管理についていくつかの手順を説明します。データベースを初期設定する手順については、「マスター KDC を手動で構成する方法」を参照してください。

Kerberos データベースのバックアップと伝播

マスター KDC の Kerberos データベースをスレーブ KDC に伝播する処理は、構成処理の中で最も重要なものの 1 つです。伝播の頻度が低いと、マスター KDC とスレーブ KDC が同期しなくなります。マスター KDC に障害が発生した場合、スレーブ KDC は最新のデータベース情報を持たないことになります。また、負荷を分散するためにスレーブ KDC がマスター KDC として構成されている場合も、そのスレーブ KDC をマスター KDC として使用するクライアントは最新情報を取得できません。このため、Kerberos データベースの変更頻度に基づいて、伝播頻度を適切に設定する必要があります。増分伝播は手動による伝播より優先されます。これは、データベースを手動で伝播すると管理のオーバーヘッドがより大きくなるためです。また、データベースを完全に伝播する場合は、効率が悪いためです。

マスター KDC を構成するときは、cron ジョブ内に kprop_script コマンドを設定して、Kerberos データベースを /var/krb5/slave_datatrans ダンプファイルに自動的にバックアップし、それをスレーブ KDC に伝播します。ただし、他のファイルと同様に、Kerberos データベースは壊れることがあります。スレーブ KDC のデータが壊れた場合でも、次回のデータベース自動伝播によって最新のコピーがインストールされるため、影響が発生しないこともあります。ただし、マスター KDC のデータが壊れた場合は、壊れたデータベースが次回の伝播ですべてのスレーブ KDC に伝播されます。また、壊れたデータがバックアップされると、マスター KDC 上の壊れていない前回のバックアップファイルが上書きされます。

この場合、安全なバックアップコピーが存在しないため、cron ジョブを設定して slave_datatrans ダンプファイルを定期的に別の場所にコピーするか、kdb5_utildump コマンドを使用して別のバックアップコピーを作成することも必要です。これにより、データベースが壊れても、kdb5_utilload コマンドを使用して、マスター KDC の最新のバックアップを復元することができます。

次の点も重要です。 データベースダンプファイルには主体鍵が含まれているため、許可されないユーザーがアクセスできないように、ファイルを保護する必要があります。デフォルトでは、データベースダンプファイルの読み取り権および書き込み権は、root にだけ与えられます。許可されないアクセスから保護するには、kprop コマンドだけを使用して、データベースダンプファイルを伝播します。この場合、転送するデータが暗号化されます。また、kprop はデータをスレーブ KDC だけに伝播するため、データベースダンプファイルが間違って許可されないホストに送信される可能性が最小限になります。


注意 – 注意 –

Kerberos データベースが伝播されたあとに更新され、次の伝播の前にデータベースが壊れた場合は、スレーブ KDC には更新が反映されません。この更新は失われます。このため、定期的に実行される伝播の前に重要な更新を追加した場合は、データの損失を回避するために手動でデータベースを伝播する必要があります。


kpropd.acl ファイル

スレーブ KDC の kpropd.acl ファイルの各行には、ホスト主体名と、伝播された最新のデータベースの受信元となるシステムが指定されています。マスター KDC を使用してすべてのスレーブ KDC に伝播する場合は、各スレーブ KDC の kpropd.acl ファイルに対してマスター KDC の主体名だけを指定する必要があります。

ただし、このマニュアルの Kerberos のインストールおよびインストール後の構成手順では、マスター KDC とスレーブ KDC に対して同じ kpropd.acl ファイルを追加するように説明しています。このファイルには、すべての KDC ホスト主体名が含まれます。この構成を使用すると、伝播元の KDC が一時的に使用できなくなったときでも、任意の KDC から伝播することができます。また、すべての KDC に同一のコピーを保持すると、構成の管理が容易になります。

kprop_script コマンド

kprop_script コマンドは、kprop コマンドを使用して Kerberos データベースをほかの KDC に伝播します。kprop_script コマンドをスレーブ KDC 上で実行すると、そのスレーブ KDC の Kerberos データベースのコピーがほかの KDC に伝播されます。kprop_script には、ホスト名のリストを引数として指定します。区切り文字は空白です。指定したホスト名は、伝播先の KDC になります。

kprop_script を実行すると、Kerberos データベースのバックアップが /var/krb5/slave_datatrans ファイルに作成され、指定した KDC にそのファイルがコピーされます。Kerberos データベースは、伝播が完了するまでロックされます。

ProcedureKerberos データベースをバックアップする方法

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

  2. kdb5_utildump コマンドを使用して、Kerberos データベースをバックアップします。


    # /usr/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]
    -verbose

    バックアップする各主体とポリシー名を出力します。

    dbname

    バックアップするデータベース名を定義します。ファイルの絶対パスを指定できます。-d オプションを指定しない場合、デフォルトのデータベース名は /var/krb5/principal となります。

    filename

    データベースのバックアップに使用するファイルを定義します。ファイルの絶対パスを指定できます。ファイルを指定しなかった場合、データベースは標準出力にダンプされます。

    principals

    バックアップする主体を 1 つ以上定義します (区切り文字は空白)。主体名は完全指定形式にする必要があります。主体を指定しなかった場合、データベース全体がバックアップされます。


例 23–12 Kerberos データベースのバックアップ

次の例では、Kerberos データベースは dumpfile と呼ばれるファイルにバックアップされます。-verbose オプションが指定されているため、各主体はバックアップされるときに出力されます。


# kdb5_util dump -verbose dumpfile 
kadmin/kdc1.eng.example.com@ENG.EXAMPLE.COM 
krbtgt/ENG.EXAMPLE.COM@ENG.EXAMPLE.COM 
kadmin/history@ENG.EXAMPLE.COM 
pak/admin@ENG.EXAMPLE.COM 
pak@ENG.EXAMPLE.COM
changepw/kdc1.eng.example.com@ENG.EXAMPLE.COM

次の例では、pak および pak/admin 主体が、Kerberos データベースからバックアップされます。


# kdb5_util dump -verbose dumpfile pak/admin@ENG.EXAMPLE.COM pak@ENG.EXAMPLE.COM
pak/admin@ENG.EXAMPLE.COM
pak@ENG.EXAMPLE.COM

ProcedureKerberos データベースを復元する方法

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

  2. マスター上で、KDC デーモンを終了します。


    kdc1 # svcadm disable network/security/krb5kdc
    kdc1 # svcadm disable network/security/kadmin
    
  3. kdb_util コマンドの load コマンドを使用して、Kerberos データベースを復元します。


    # /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 
    -verbose

    復元する各主体とポリシー名を出力します。

    dbname

    復元するデータベース名を定義します。ファイルの絶対パスを指定できます。-d オプションを指定しない場合、デフォルトのデータベース名は /var/krb5/principal となります。

    -update

    既存のデータベースを更新します。指定しない場合、新しいデータベースが作成されるか、既存のデータベースが上書きされます。

    filename

    データベースの復元に使用するファイルを定義します。ファイルの絶対パスを指定できます。

  4. KDC デーモンを起動します。


    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
    

例 23–13 Kerberos データベースの復元

次の例では、database1 というデータベースが、dumpfile ファイルから現在のディレクトリに復元されます。-update オプションが指定されていないため、復元によって新しいデータベースが作成されます。


# kdb5_util load -d database1 dumpfile

Procedureサーバーのアップグレード後に Kerberos データベースを変換する方法

Solaris 8 または Solaris 9 リリースが稼働するサーバー上で KDC データベースが作成されている場合、データベースを変換すると、改善されたデータベースのフォーマットを利用することができます。

始める前に

データベースが古いフォーマットを使用していることを確認してください。

  1. マスター上で、KDC デーモンを終了します。


    kdc1 # svcadm disable network/security/krb5kdc
    kdc1 # svcadm disable network/security/kadmin
    
  2. データベースの一時的なコピーを格納するためのディレクトリを作成します。


    kdc1 # mkdir /var/krb5/tmp
    kdc1 # chmod 700 /var/krb5/tmp
    
  3. KDC データベースをダンプします。


    kdc1 # kdb5_util dump /var/krb5/tmp/prdb.txt
    
  4. 現在のデータベースファイルのコピーを保存します。


    kdc1 # cd /var/krb5
    kdc1 # mv princ* tmp/
    
  5. データベースをロードします。


    kdc1 # kdb5_util load /var/krb5/tmp/prdb.txt
    
  6. KDC デーモンを起動します。


    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
    

Procedureマスター KDC を再構成して増分伝播を使用する方法

この手順を使って、増分伝播を使用するように既存のマスター KDC を再構成します。この手順では、次の構成パラメータを使用します。

  1. 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
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
            }
  2. kiprop 主体を作成します。

    kiprop 主体は、マスター KDC サーバーの認証とマスター KDC からの更新の認証に使用されます。


    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: addprinc -randkey kiprop/kdc1.example.com
    Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
    kadmin: addprinc -randkey kiprop/kdc2.example.com
    Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
    kadmin:
  3. kadmind キータブファイルに kiprop 主体を追加します。

    kadm5.keytabkiprop 主体を追加すると、起動時に kadmind コマンドが自身を認証できます。


    kadmin: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ArcFour
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    kadmin: quit
    
  4. マスター KDC 上で、kadm5.acl に kiprop エントリを追加します。

    このエントリにより、マスター KDC が kdc2 サーバーから増分伝播の要求を受け取ることができるようになります。


    kdc1 # cat /etc/krb5/kadm5.acl
    */admin@EXAMPLE.COM *
    kiprop/kdc2.example.com@EXAMPLE.COM p
    
  5. root の crontab ファイルの kprop 行をコメントにします。

    この手順により、マスター KDC が KDC データベースのコピーを伝播しなくなります。


    kdc1 # crontab -e
    #ident  "@(#)root       1.20    01/11/06 SMI"
    #
    # The root crontab should be used to perform accounting data collection.
    #
    # The rtc command is run to adjust the real time clock if and when
    # daylight savings time changes.
    #
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    #10 3 * * * /usr/lib/krb5kprop_script kdc2.example.sun.com #SUNWkr5ma
  6. kadmind を再起動します。


    kdc1 # svcadm restart network/security/kadmin
    
  7. 増分伝播を使用するすべてのスレーブ KDC サーバーを再構成します。

    詳細な手順については、「スレーブ KDC を再構成して増分伝播を使用する方法」を参照してください。

Procedureスレーブ KDC を再構成して増分伝播を使用する方法

  1. krb5.conf にエントリを追加します。

    新しいエントリにより、増分伝播が有効にされ、ポーリング時間が 2 分に設定されます。


    kdc2 # cat /etc/krb5/krb5.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
                    sunw_dbprop_enable = true
                    sunw_dbprop_slave_poll = 2m
            }
  2. krb5.keytab ファイルに kiprop 主体を追加します。


    kdc2 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: ktadd kiprop/kdc2.example.com
    Entry for principal kiprop/kdc2.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 kiprop/kdc2.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 kiprop/kdc2.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 kiprop/kdc2.example.com with kvno 3, encryption type ArcFour
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
    kadmin: quit
    
  3. kpropd を無効にします。


    kdc2 # svcadm disable network/security/krb5_prop
    
  4. KDC サーバーを再起動します。


    kdc2 # svcadm restart network/security/krb5kdc
    

Procedure完全伝播を使用するようにスレーブ KDC を構成する方法

この手順は Solaris 10 リリースを実行しているスレーブ KDC サーバーを再構成して完全伝播を使用する方法を示しています。通常、この手順は、マスター KDC サーバーが Solaris 9 リリースまたはそれ以前のリリースのいずれかを実行している場合にのみ使用する必要があります。この場合、マスター KDC サーバーは増分伝播をサポートできないので、伝播が機能するようにスレーブを構成する必要があります。

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

始める前に

マスター KDC が構成済みである必要があります。スレーブ KDC を入れ替え可能にする手順については、「マスター KDC とスレーブ KDC の入れ替え」を参照してください。

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

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

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


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

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


      kadmin: addprinc -randkey host/kdc3.example.com
      Principal "host/kdc3@EXAMPLE.COM" created.
      kadmin: 
    2. kadmin を終了します。


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

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


    kdc1 # cat /etc/krb5/krb5.conf
     .
     .
    [realms]
                    EXAMPLE.COM = {
                    kdc = kdc1.example.com
                    kdc = kdc2.example.com
                    kdc = kdc3.example.com
                    admin_server = kdc1.example.com
            }
  4. マスター KDC 上で、マスター 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
    
  5. すべてのスレーブ KDC 上で、KDC 管理ファイルをマスター KDC サーバーからコピーします。

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

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  6. すべてのスレーブ KDC 上で、Kerberos アクセス制御リストファイル kadm5.acl が反映されていないことを確認してください。

    修正前の kadm5.acl ファイルは次のようになっています。


    kdc2 # cat /etc/krb5/kadm5.acl
    */admin@___default_realm___ *

    ファイルに kiprop のエントリがある場合は、それを削除します。

  7. 新しいスレーブ上で、kadmin コマンドを起動します。

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


    kdc2 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. kadmin を使用して、スレーブの host 主体をスレーブのキータブファイルに追加します。

      このエントリにより kprop などの Kerberos アプリケーションが機能します。主体のインスタンスがホスト名のときは、/etc/resolv.conf ファイル内のドメイン名が大文字であるか小文字であるかに関係なく、FQDN は小文字で指定する必要があります。


      kadmin: ktadd host/kdc3.example.com
      Entry for principal host/kdc3.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 host/kdc3.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 host/kdc3.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 host/kdc3.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc3.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    2. kadmin を終了します。


      kadmin: quit
      
  8. マスター KDC 上で、crontab -e を実行し、自動的にバックアップを実行する cron ジョブにスレーブ KDC 名を追加します。そのジョブは、crontab -e によって自動的にバックアップを実行します。

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


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

    バックアップの時刻を変更する場合もあるでしょう。このエントリは、バックアップ処理を毎日午前 3:10 に開始します。

  9. 新しいスレーブ上で、Kerberos 伝播デーモンを起動します。


    kdc3 # svcadm enable network/security/krb5_prop
    
  10. マスター KDC 上で、kprop_script を使ってデータベースをバックアップし、伝播します。

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


    kdc1 # /usr/lib/krb5/kprop_script kdc3.example.com
    Database propagation to kdc3.example.com: SUCCEEDED
  11. 新しいスレーブ上で、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: <Type the key>
    
  12. (省略可能) 新しいスレーブ KDC 上で、NTP などのクロック同期メカニズムを使用して、マスター KDC のクロックを同期化します。

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

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


    kdc3 # svcadm enable network/security/krb5kdc
    

ProcedureKDC サーバーが同期しているかを検査する方法

増分伝播が構成されている場合、この手順は、スレーブ KDC 上の情報が更新されたかを確認します。

  1. KDC マスターサーバー上で、kproplog コマンドを実行します。


    kdc1 # /usr/sbin/kproplog -h
    
  2. KDC スレーブサーバー上で、kproplog コマンドを実行します。


    kdc2 # /usr/sbin/kproplog -h
    
  3. 最終シリアル番号と最終時刻表示の値が一致するかを確認します。


例 23–14 KDC サーバーが同期しているかを検査する

次の例は、マスター KDC サーバー上での kproplog コマンドの実行結果です。


kdc1 # /usr/sbin/kproplog -h

Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
    Log version #: 1
    Log state: Stable
    Entry block size: 2048
    Number of entries: 2500
    First serial #: 137966
    Last serial #: 140465
    First time stamp: Fri Nov 28 00:59:27 2004
    Last time stamp: Fri Nov 28 01:06:13 2004

次の例は、スレーブ KDC サーバー上での kproplog コマンドの実行結果です。


kdc2 # /usr/sbin/kproplog -h

Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
    Log version #: 1
    Log state: Stable
    Entry block size: 2048
    Number of entries: 0
    First serial #: None
    Last serial #: 140465
    First time stamp: None
    Last time stamp: Fri Nov 28 01:06:13 2004

最終シリアル番号と最終時刻表示が同じであることに注意してください。これは、スレーブがマスター KDC サーバーと同期していることを示しています。

スレーブ KDC サーバーの出力で、スレーブ KDC サーバーの更新ログに更新エントリがないことに注意してください。エントリがないのは、スレーブ KDC サーバーはマスター KDC サーバーとは異なり、一連の更新を保持しないためです。また、最初のシリアル番号と最初の時刻表示は関連情報でないため、KDC スレーブサーバーはそれらの情報を取り込みません。


ProcedureKerberos データベースをスレーブ KDC に手動で伝播する方法

この手順では、kprop コマンドを使用して、Kerberos データベースを伝播します。定期的に実行する cron ジョブ以外に、スレーブ KDC とマスター KDC を同期化する必要がある場合は、この手順を行います。kprop_script と異なり、kprop を使用した場合は、現在のデータベースバックアップだけを伝播できます。伝播する前に、Kerberos データベースの新しいバックアップは作成されません。


注 –

増分伝播を使用する場合は、この手順を使用しないでください。


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

  2. (省略可能) kdb5_util コマンドを使用して、データベースをバックアップします。


    # /usr/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. kprop コマンドを使用して、データベースをスレーブ KDC に伝播します。


    # /usr/lib/krb5/kprop -f /var/krb5/slave_datatrans slave-KDC
    

例 23–15 kprop_script を使用してスレーブ KDC に Kerberos データベースを手動で伝播する

定期的に実行する cron ジョブ以外に、データベースをバックアップし、そのファイルをスレーブ KDC に伝播する場合は、次のように kprop_script コマンドを使用することもできます。


# /usr/lib/krb5/kprop_script slave-KDC

並列伝播の設定

ほとんどの場合、マスター KDC は、Kerberos データベースをスレーブ KDC に伝播するときにだけ使用されます。使用するサイトに複数のスレーブ KDC が存在する場合は、伝播処理の負荷を分散させることもできます。この概念は、「並列伝播」と呼ばれます。


注 –

増分伝播を使用する場合は、この手順を使用しないでください。


並列伝播を利用すると、複数のスレーブ KDC 間でマスター KDC の伝播処理を分散できます。処理を分散すると、伝播をより早く実行でき、マスター KDC の作業を軽減することができます。

たとえば、使用するサイトに 1 つのマスター KDC と 6 つのスレーブ KDC があるとします (図 23–2 を参照)。slave-1 から slave-3 で 1 つの論理グループを構成し、slave-4 から slave-6 で別の論理グループを構成しています。並列伝播を設定するには、マスター KDC がデータベースを slave-1slave-4 に伝播し、これらのスレーブ KDC がグループ内のスレーブ KDC にデータベースを伝播するようにします。

図 23–2 並列伝播の構成例

図は、2 つの伝播スレーブを持ったマスター KDC を表示しています。各伝播スレーブは、それぞれのスレーブにマスター KDC データベースを伝播します。

並列伝播を設定するための構成手順

ここでは、並列伝播の詳細な手順は説明しませんが、並列伝播を有効にする構成手順の概要を示します。手順は次のとおりです。

  1. マスター KDC 上で、cron ジョブ内の kprop_script エントリを変更して、次の伝播先のスレーブ KDC ( 伝播スレーブ) だけを引数に指定します。

  2. 伝播スレーブごとに、kprop_script エントリをその cron ジョブに追加し、伝播先のスレーブを引数に指定します。並列伝播を正しく行うには、伝播スレーブが新しい Kerberos データベースから伝播されたあとに、cron ジョブが実行されるように設定する必要があります。


    注 –

    伝播スレーブにかかる伝播時間は、ネットワークの帯域幅や Kerberos データベースのサイズなどの要因によって異なります。


  3. スレーブ KDC ごとに、伝播に必要なアクセス権を設定します。伝播元の KDC のホスト主体名を各スレーブ KDC の kpropd.acl ファイルに追加します。


例 23–16 並列伝播の設定

図 23–2 の例を使用すると、マスター KDC の kprop_script エントリは、次のようになります。


0 3 * * * /usr/lib/krb5/kprop_script slave-1.example.com slave-4.example.com

slave-1kprop_script エントリは、次のようになります。


0 4 * * * /usr/lib/krb5/kprop_script slave-2.example.com slave-3.example.com

このスレーブの伝播は、マスターからの伝播が完了してから 1 時間後に開始します。

伝播スレーブの kpropd.acl ファイルには、次のエントリが含まれます。


host/master.example.com@EXAMPLE.COM

slave-1 から伝播されるスレーブ KDC の kpropd.acl ファイルには、次のエントリが含まれます。


host/slave-1.example.com@EXAMPLE.COM

stash ファイルの管理

「stash ファイル」には、Kerberos データベースのマスター鍵が含まれます。このファイルは、Kerberos データベースを作成すると自動的に作成されます。stash ファイルが壊れた場合は、kdb5_util ユーティリティーの stash コマンドを使用して、置き換えることができます。kdb5_utildestroy コマンドを使用して Kerberos データベースを削除したときは、stash ファイルも削除する必要があります。データベースを削除しても、stash ファイルは自動的に削除されないため、クリーンアップを完了するには、stash ファイルを削除する必要があります。

Procedurestash ファイルを削除する方法

  1. stash ファイルが配置されている KDC の上でスーパーユーザーになります。

  2. stash ファイルを削除します。


    # rm stash-file
    

    この例では、stash-file は stash ファイルのパスを示します。デフォルトでは、stash ファイルは /var/krb5/.k5.realm にあります。


    注 –

    stash ファイルを再作成する場合は、kdb5_util コマンドの -f オプションを使用します。


LDAP ディレクトリサーバーでの KDC の管理

LDAP ディレクトリサーバーを使用した KDC 管理作業のほとんどは、DB2 サーバーを使用した場合と同じです。LDAP を使用した処理に特有の新しい作業がいくつかあります。

表 23–3 LDAP を使用するための KDC サーバーの構成 (作業マップ)

タスク 

説明 

参照先 

マスター KDC を構成します。 

手動のプロセスを使用し、さらに KDC 用に LDAP を使用して、レルムにマスター KDC サーバーとデータベースを構成および構築します。 

「LDAP データサーバーを使用するように KDC を構成する方法」

Kerberos 主体属性を Kerberos 以外のオブジェクトクラス型と結び付けます 

Kerberos レコードで格納された情報をほかの LDAP データベースと共有できるようになります。 

「Kerberos 主体属性を Kerberos 以外のオブジェクトクラス型に結び付ける方法」

レルムを破棄します。 

レルムに関連付けられたデータをすべて削除します。 

「LDAP ディレクトリサーバーでレルムを破棄する方法」

ProcedureKerberos 主体属性を Kerberos 以外のオブジェクトクラス型に結び付ける方法

この手順により、Kerberos 主体属性を Kerberos 以外のオブジェクトクラス型に関連付けることができます。この手順では、krbprincipalauxkrbTicketPolicyAux、および krbPrincipalName 属性が people オブジェクトクラスに関連付けられます。

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

  1. スーパーユーザーになります。

  2. people オブジェクトクラスの各エントリを用意します。

    エントリごとに次の手順を繰り返します。


    cat << EOF | ldapmodify -h dsserver.example.com -D "cn=directory manager"
    dn: uid=willf,ou=people,dc=example,dc=com
    changetype: modify
    objectClass: krbprincipalaux
    objectClass: krbTicketPolicyAux
    krbPrincipalName: willf@EXAMPLE.COM
    EOF
  3. サブツリー属性をレルムコンテナに追加します。

    この手順により、デフォルトの EXAMPLE.COM コンテナだけでなく、ou=people,dc=example,dc=com コンテナでも主体エントリを検索できるようになります。


    # kdb5_ldap_util -D "cn=directory manager" modify \
                -subtrees 'ou=people,dc=example,dc=com' -r EXAMPLE.COM
    
  4. (省略可能) KDC レコードが DB2 に格納されている場合は、DB2 エントリを移行します。

    1. DB2 エントリをダンプします。


      # kdb5_util dump > dumpfile
      
    2. データベースを LDAP サーバーにロードします。


      # kdb5_util load -update dumpfile
      
  5. (省略可能) 主体属性を KDC に追加します。


    # kadmin.local -q 'addprinc willf'

ProcedureLDAP ディレクトリサーバーでレルムを破棄する方法

この手順は、別の LDAP ディレクトリサーバーがレルムを処理するように構成されている場合に使用できます。

  1. スーパーユーザーになります。

  2. レルムを破棄します。


    # kdb5_ldap_util -D "cn=directory manager" destroy
    

Kerberos サーバー上のセキュリティーの強化

Kerberos アプリケーションサーバーと KDC サーバーのセキュリティーを強化するには、次の手順に従ってください。

表 23–4 Kerberos サーバーのセキュリティーの強化 (作業マップ)

タスク 

説明 

説明 

Kerberos 認証を使用してアクセスを有効にします。 

ネットワークアクセスを制限し、サーバーで Kerberos 認証のみが許可されるようにします。 

「Kerberos アプリケーションのみを有効にする方法」

KDC サーバーへのアクセスを制限します。 

KDC サーバーとそのデータのセキュリティーを強化します。 

「KDC サーバーへのアクセスを制限する方法」

辞書ファイルを使用してパスワードセキュリティーを強化します。 

新しいパスワードを辞書と照合してパスワードのセキュリティーを強化します。 

「辞書ファイルを使用してパスワードセキュリティーを強化する方法」

ProcedureKerberos アプリケーションのみを有効にする方法

この手順を実行すると、telnetftprcprsh、および rlogin を実行しているサーバーへのネットワークアクセスが、Kerberos 認証されたトランザクションだけを使用するネットワークアクセスに制限されます。

  1. telnet サービスの exec プロパティーを変更します。

    telnetexec プロパティーに -a user オプションを追加すると、有効な認証情報を提供できるユーザーにアクセスが制限されます。


    # inetadm -m svc:/network/telnet:default exec="/usr/sbin/in.telnetd -a user"
  2. (省略可能) まだ構成されていない場合は、telnet サービスのexec のプロパティーを変更します。

    ftpexec プロパティーに -a オプションを追加すると、Kerberos 認証された接続のみが許可されます。


    # inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a"
  3. 他のサービスを無効にします。

    in.rshdin.rlogind デーモンを無効にする必要があります。


    # svcadm disable network/shell
    # svcadm disable network/login:rlogin
    

ProcedureKDC サーバーへのアクセスを制限する方法

マスター KDC およびスレーブ KDC には、KDC データベースのローカルコピーがあります。データベースを保護するためにこれらのサーバーへのアクセス権を制限することは、Kerberos 全体のセキュリティーにとって重要です。

  1. 必要に応じて、遠隔サービスを無効にします。

    KDC サーバーをセキュリティー保護するために、不要なネットワークサービスをすべて無効にします。構成によっては、いくつかのサービスは既に無効になっています。svcs コマンドを使用して、サービス状態を確認します。ほとんどの環境では、KDC がマスターの場合に動作している必要のあるサービスは krb5kdckadmin のみです。ループバック TLI を使用するサービス (ticltsticotsord、および ticots) は、有効にしておくことができます。


    # svcadm disable network/comsat
    # svcadm disable network/dtspc/tcp
    # svcadm disable network/finger
    # svcadm disable network/login:rlogin
    # svcadm disable network/rexec
    # svcadm disable network/shell
    # svcadm disable network/talk
    # svcadm disable network/tname
    # svcadm disable network/uucp
    # svcadm disable network/rpc_100068_2-5/rpc_udp
    
  2. KDC をサポートするハードウェアに対するアクセスを制限します。

    物理的なアクセスを制限するために、KDC とそのモニターは安全な場所に設置します。このサーバーへのアクセスを完全に制限することが目的です。

  3. KDC データベースのバックアップを、ローカルディスクまたはスレーブ KDC に格納します。

    KDC のバックアップをテープに作成する場合、そのテープのセキュリティーを十分に確保してください。キータブファイルのコピーも、同様に作成します。これらのファイルをローカルファイルシステムに格納する場合は、できるだけほかのシステムと共有しないでください。格納先のファイルシステムは、マスター KDC または任意のスレーブ KDC から選択できます。

Procedure辞書ファイルを使用してパスワードセキュリティーを強化する方法

Kerberos サービスで辞書ファイルを使用することにより、新しい資格の作成時に辞書内の単語がパスワードとして使用されるのを防ぐことができます。辞書の用語がパスワードとして使用されないようにすると、パスワードの推測が困難になります。デフォルトでは /var/krb5/kadm5.dict ファイルが使用されますが、これは空です。

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

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

    行を追加して、サービスで辞書ファイルが使用されるようにする必要があります。この例では、spell ユーティリティーに含まれる辞書を使用します。構成ファイルの詳細は、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
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
                    dict_file = /usr/share/lib/dict/words
                    }
  3. Kerberos デーモンを再起動します。


    kdc1 # svcadm restart -r network/security/krb5kdc
    kdc1 # svcadm restart -r network/security/kadmin