Oracle® Solaris 11.2 での Kerberos およびその他の認証サービスの管理

印刷ビューの終了

更新: 2014 年 9 月
 
 

LDAP ディレクトリサーバーを使用するようにマスター KDC を構成する方法

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

  • レルム名 = EXAMPLE.COM

  • DNS ドメイン名 = example.com

  • マスター KDC = kdc1.example.com

  • ディレクトリサーバー = dsserver.example.com

  • admin 主体 = kws/admin

  • LDAP サービスの FMRI = svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1

  • オンラインヘルプ URL = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html


    注 -  gkadmin GUIの説明に従って、オンラインヘルプの場所を指すように URL を調整してください。

始める前に

ホストが DNS を使用するように構成されています。パフォーマンスを向上させるためには、KDC と LDAP ディレクトリサービスを同じサーバーにインストールしてください。さらに、ディレクトリサーバーを実行するようにしてください。次の手順は、Oracle Directory Server Enterprise Edition を使用しているサーバーで機能します。詳細は、Oracle Identity Management – ドキュメントを参照してください。

KDC サーバー上で root 役割になる必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。

  1. SSL を使用してディレクトリサーバーに接続するようにマスター KDC を構成します。

    次の手順では、ディレクトリサーバーの自己署名付き証明書を使用するように KDC を構成します。

    1. ディレクトリサーバー上で、自己署名付き証明書をエクスポートします。
      # /export/sun-ds6.1/ds6/bin/dsadm show-cert -F der /export/sun-ds6.1/directory2 \
      defaultCert > /tmp/defaultCert.cert.der
    2. マスター KDC 上で、ディレクトリサーバーの証明書をインポートします。
      # pktool setpin keystore=nss dir=/var/ldap
      # chmod a+r /var/ldap/*.db
      # pktool import keystore=nss objtype=cert trust="CT" \
      infile=/tmp/defaultCert.cert.der \
      label=defaultCert dir=/var/ldap

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

    3. マスター KDC で、SSL が機能していることをテストします。

      この例では、cn=directory manager エントリに管理権限があることを前提にしています。

      master# /usr/bin/ldapsearch -Z -P /var/ldap -D "cn=directory manager" \
      -h dsserver.example.com -b "" -s base objectclass='*'
      Subject:
      "CN=dsserver.example.com,CN=636,CN=Directory Server,O=Example Corporation

      CN=dsserver.example.com エントリには短い名前ではなく、完全修飾ホスト名が含まれている必要があることに注意してください。

  2. 必要に応じて、LDAP ディレクトリにデータを設定します。
  3. LDAP の既存のスキーマに Kerberos スキーマを追加します。
    # ldapmodify -h dsserver.example.com -D "cn=directory manager" \
    -f /usr/share/lib/ldif/kerberos.ldif
  4. LDAP ディレクトリ内に Kerberos コンテナを作成します。

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

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

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

      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(1M) のマニュアルページを参照してください。

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

    これらのパスワードは、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"
  6. 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: xxxxxxxx
      
      dn: cn=kadmin service,ou=profile,dc=example,dc=com
      cn: kadmin service
      sn: kadmin service
      objectclass: top
      objectclass: person
      userpassword: xxxxxxxx
    2. LDAP ディレクトリ内に役割のエントリを作成します。
      # ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
  7. kadmin 関連の役割に対する 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
  8. Kerberos 構成ファイル krb5.conf を編集します。

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

    kdc1 # pfedit /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://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html
    }

    注 -  gkadmin GUIの説明に従って、オンラインヘルプの場所を指すように URL を調整してください。

    この例では、default_realmkdcadmin_server、およびすべての domain_realm エントリの行が変更されました。さらに、オンラインヘルプ URL も変更されました。


    注 -  古い Kerberos システムと通信する必要がある場合は、暗号化タイプの制限が必要になることがあります。暗号化タイプの制限に関する問題については、Kerberos 暗号化タイプを参照してください。
  9. KDC 構成ファイル kdc.conf を編集します。

    レルムを指定する必要があります。このファイルについては、kdc.conf(4) のマニュアルページを参照してください。

    この例では、管理者はレルム名の定義に加えて、増分伝播とロギングのデフォルト値を変更します。

    kdc1 # pfedit /etc/krb5/kdc.conf
    [kdcdefaults]
    kdc_ports = 88,750
    
    [realms]
    EXAMPLE.COM = {
    profile = /etc/krb5/krb5.conf
    database_name = /var/krb5/principal
    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
    }

    注 -  古い Kerberos システムと通信する必要がある場合は、暗号化タイプの制限が必要になることがあります。暗号化タイプの制限に関する問題については、Kerberos 暗号化タイプを参照してください。
  10. Kerberos アクセス制御リストファイル kadm5.acl を編集します。

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

    kws/admin@EXAMPLE.COM   *

    前のエントリにより、EXAMPLE.COM レルム内の kws/admin 主体は KDC 内の主体やポリシーを変更できるようになります。デフォルトの主体エントリはアスタリスク (*) です。これは、すべての admin 主体に一致します。このエントリはセキュリティーリスクになる場合があります。すべての admin 主体とその権利を明示的に記載するように、このファイルを変更してください。詳細は、kadm5.acl(4) のマニュアルページを参照してください。

  11. kadmin.local コマンドを起動し、admin 主体を作成します。
    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 strong password **/
      Re-enter password for principal kws/admin@EXAMPLE.COM: xxxxxxxx
      Principal "kws/admin@EXAMPLE.COM" created.
      kadmin.local:
    2. kadmin.local を終了します。
      kadmin.local: quit
  12. (オプション) Kerberos サービスの LDAP 依存性を構成します。

    LDAP サーバーと KDC サーバーが同じホスト上で実行されており、かつ LDAP サービスが SMF を使用して構成されている場合は、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
  13. マスター KDC を手動で構成する方法Step 7 からStep 9 までを実行することによって、LDAP での Kerberos の構成を完了します。
  14. スレーブ KDC を構成します。

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