Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)

第 12 章 LDAP クライアントの設定 (手順)

この章では、Solaris LDAP ネームサービスクライアントの設定方法について説明します。この章で扱う内容は、次のとおりです。

LDAP クライアント設定の前提条件

Solaris クライアントで LDAP をネームサービスとして使用するためには、次の要件が満たされている必要があります。

ldapclient ユーティリティーは、サーバーの起動を除き、上記の手順をすべて実行するので、LDAP クライアントを設定するための鍵となります。この章の後半では、ldapclient ユーティリティーを使用して LDAP クライアントを設定する方法や、それ以外の各種 LDAP ユーティリティーを使用して LDAP クライアントに関する情報を取得したり LDAP クライアントの状態をチェックしたりする方法について、例を挙げて説明します。

LDAP とサービス管理機能

LDAP クライアントサービスは、サービス管理機能を使用して管理されます。SMF の概要については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。また、詳細については、svcadm(1M) および svcs(1) のマニュアルページを参照してください。

LDAP クライアントの初期化

ldapclient(1M) は、Solaris システムで LDAP クライアントを設定するためのユーティリティーです。ldapclient ユーティリティーでは、サーバーがすでに適切なクライアントプロファイルで構成されていることを前提としています。サーバーをインストールして、適切なプロファイルで構成してからクライアントを設定する必要があります。


注 –

Solaris オペレーティングシステムは、NIS クライアントとネイティブな LDAP クライアントが同一のクライアントマシン上に共存する構成をサポートしません。


ldapclient を使用してクライアントを設定するには、主に次の 2 つの方法があります。


注 –

クライアントを手動で構成することも可能ですが、お勧めしません。構成用のプロファイルを使用すると、クライアントの管理が容易になりコストも削減できます。


プロファイルを使用してクライアントを初期化する

Procedureプロファイルを使用してクライアントを初期化する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. init を指定して ldapclient を実行します。


    # ldapclient init \
    -a profileName=new \
    -a domainName=west.example.com 192.168.0.1
    System successfully configured

ユーザー別の資格を使用する


注 –

どちらのクライアント構成ファイルも直接編集しないでください。これらのファイルの内容を作成または変更する場合は、ldapclient コマンドを使用してください。


Procedureユーザー別の資格を使用してクライアントを初期化する方法

始める前に

ユーザー別の資格を使用してクライアントを設定する前に、次の項目が構成済みである必要があります。

  1. ldapclient init を実行し、gssapi プロファイルを使用してクライアントを初期化します。


    # /usr/sbin/ldapclient init -a profilename=gssapi_SPARKS.COM -a \
    domainname=example.com 9.9.9.50
    
  2. ユーザーとしてログインを試みます。

    kinit -p user を実行します。

    ユーザーのログインセッションで ldaplist -l passwd user を実行します。「userpassword」が表示されるはずです。

    一方、ldaplist -l passwd bar を実行すると、userpassword なしでエントリを取得できます。デフォルトでは、root はすべてのユーザーの userpassword を引き続き表示できます。

ユーザー別の資格の使用について

詳細については、このマニュアルのほかの箇所および『Solaris のシステム管理 (セキュリティサービス)』を参照してください。

プロキシの資格を使用する

Procedureプロキシの資格を使用してクライアントを初期化する方法


注 –

どちらのクライアント構成ファイルも直接編集しないでください。これらのファイルの内容を作成または変更する場合は、ldapclient を使用してください。


  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. ldapclient を実行します (プロキシ値を定義します)。


    # ldapclient init \
    -a proxyDN=cn=proxyagent,ou=profile,dc=west,dc=example,dc=com \
    -a domainName=west.example.com \
    -a profileName=pit1 \
    -a proxyPassword=test1234 192.168.0.1
    System successfully configured

    使用するプロファイルが proxy 用に設定されている場合は、-a proxyDN と -a proxyPassword が必須です。サーバーに保存されているプロファイルにはこの資格情報が含まれていないため、クライアントを初期設定するときは資格情報を入力する必要があります。この方法は、プロキシの資格情報をサーバーに保存していた従来の方法に比べて安全性が高くなります。

    プロキシ情報は、/var/ldap/ldap_client_cred の作成に使用されます。それ以外の情報は、/var/ldap/ldap_client_file に格納されます。

LDAP でのシャドウ更新を有効にする

Solaris 10 10/09 リリース以降では、enableShadowUpdate スイッチが使用できます。

Procedureクライアントを初期化してシャドウデータの更新を有効にする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. enableShadowUpdate スイッチを設定し、管理者資格を定義するには、ldapclient コマンドを実行します。

    • 既に実行中のクライアントを更新するには、次のコマンドを使用します。


      # ldapclient mod -a enableShadowUpdate=TRUE \
      -a adminDN=cn=admin,ou=profile,dc=west,dc=example,dc=com \
      -a adminPassword=admin-password
      System successfully configured
    • クライアントを初期化するには、次のコマンドを使用します。


      # ldapclient init \
      -a adminDN=cn=admin,ou=profile,dc=west,dc=example,dc=com \
      -a adminPassword=admin-password
      -a domainName=west.example.com \
      -a profileName=WestUserProfile \
      -a proxyDN=cn=proxyagent,ou=profile,dc=west,dc=example,dc=com \
      -a proxyPassword=i<proxy_password> \
      192.168.0.1
      System successfully configured
  3. 構成を検証するには、/var/ldap/ldap_client_cred ファイルの内容を表示します。

    出力には、次のような行を含むべきです。


    # cat /var/ldap/ldap_client_cred
    
       NS_LDAP_BINDDN= cn=proxyagent,ou=profile,dc=west,dc=example,dc=com
       NS_LDAP_BINDPASSWD= {NS1}4a3788f8eb85de11
       NS_LDAP_ENABLE_SHADOW_UPDATE= TRUE
       NS_LDAP_ADMIN_BINDDN= cn=admin,ou=profile,dc=west,dc=example,dc=com
       NS_LDAP_ADMIN_BINDPASSWD= {NS1}4a3788f8c053434f

クライアントを手動で初期設定する

スーパーユーザー、または同等の役割の管理者は、クライアントを手動で構成できます。ただし、この処理では多数のチェックが省略されるため、システムを正しく構成できないことがよくあります。また、プロファイルを使用するときのように一括に設定するのではなく、「マシンごとに」設定を変更する必要があります。

Procedureクライアントを手動で初期設定する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. ldapclient manual を実行してクライアントを初期化します。


    # ldapclient manual \
    -a domainName=dc=west.example.com \
    -a credentialLevel=proxy \
    -a defaultSearchBase=dc=west,dc=example,dc=com \ 
    -a proxyDN=cn=proxyagent,ou=profile,dc=west,dc=example,dc=com \ 
    -a proxyPassword=testtest 192.168.0.1
    
  3. ldapclient list を使用して確認します。


    NS_LDAP_FILE_VERSION= 2.0
    NS_LDAP_BINDDN= cn=proxyagent,ou=profile,dc=west,dc=example,dc=com
    NS_LDAP_BINDPASSWD= {NS1}4a3788e8c053424f
    NS_LDAP_SERVERS= 192.168.0.1
    NS_LDAP_SEARCH_BASEDN= dc=west,dc=example,dc=com
    NS_LDAP_CREDENTIAL_LEVEL= proxy

手動によるクライアント構成を変更する

Procedure手動による構成を変更する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. ldapclient mod コマンドを使用して、認証方法を simple に変更します。


    # ldapclient mod -a authenticationMethod=simple
    
  3. ldapclient list を実行して、更新が行われたことを確認します。


    # ldapclient list
    NS_LDAP_FILE_VERSION= 2.0
    NS_LDAP_BINDDN= cn=proxyagent,ou=profile,dc=west,dc=example,dc=com
    NS_LDAP_BINDPASSWD= {NS1}4a3788e8c053424f
    NS_LDAP_SERVERS= 192.168.0.1
    NS_LDAP_SEARCH_BASEDN= dc=west,dc=example,dc=com
    NS_LDAP_AUTH= simple
    NS_LDAP_CREDENTIAL_LEVEL= proxy
注意事項

LDAP クライアント設定には、mod サブコマンドでは変更できない属性があります。たとえば、profileName 属性や profileTTL 属性は変更できません。これらの属性を変更するには、「プロファイルを使用してクライアントを初期化する」で説明されているように、ldapclient init コマンドを使用して新しいプロファイルを作成します。「クライアントを手動で初期設定する」で説明されているように、ldapclient manual コマンドを実行することもできます。

クライアントの初期設定を解除する

ldapclient uninit コマンドは、クライアントのネームサービスを元の状態 (initmodify、または manual の最後の操作が行われる前の状態) に復元します。言い換えれば、最後に行われた手順を「元に戻します」。たとえば、profile1 を使用するようにクライアントを設定したあとで profile2 を使用するように変更した場合、ldapclient uninit を実行すると、クライアントで profile1 を使用するように設定が元に戻ります。

Procedureクライアントの初期設定を解除する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  2. ldapclient uninit を実行します。


    # ldapclient uninit
    System successfully recovered

TLS のセキュリティーの設定


注 –

セキュリティーデータベースファイルは、すべてのユーザーから読み取れるようにする必要があります。key3.db に非公開鍵を含めないようにしてください。


TLS を使用する場合は、必要なセキュリティーデータベースをインストールしなければなりません。具体的には証明書ファイルと鍵データベースファイルが必要です。たとえば、Netscape Communicator の古いデータベースフォーマットを使用する場合、cert7.dbkey3.db の 2 つのファイルが必要です。あるいは、Mozilla の新しいデータベースフォーマットを使用する場合、cert8.dbkey3.db、および secmod.db の 3 つのファイルが必要です。cert7.db ファイルまたは cert8.db ファイルには、信頼された証明書が入ります。key3.db ファイルには、クライアントの鍵が入ります。LDAP ネームサービスクライアントがクライアントの鍵を使用しない場合でも、このファイルは必要です。secmod.db ファイルには、 PKCS#11 などのセキュリティーモジュールが入ります。このファイルは、古いフォーマットを使用する場合には必要ありません。


注 –

ldapclient を実行する前に、この節に記述されている必要なセキュリティーデータベースファイルを設定およびインストールしておく必要があります。


これらのファイルを作成および管理する方法については、ご使用のバージョンの Sun Java System Directory Server の『管理者ガイド』の「SSL 管理」の章の中の LDAP クライアントで SSL を利用するための構成に関する節を参照してください。これらのファイルを構成したら、LDAP ネームサービスクライアントで使用できるように所定の場所にそれらを格納する必要があります。この場所を判断するために、属性 certificatePath が使用されます。この属性はデフォルトで /var/ldap です。

たとえば、Netscape Communicator を使用して必要な cert7.db ファイルと key3.db ファイルを設定したあとで、これらのファイルをデフォルトの位置にコピーします。


# cp $HOME/.netscape/cert7.db /var/ldap
# cp $HOME/.netscape/key3.db /var/ldap

次に、すべてのユーザーに読み取り権を付与します。


# chmod 444 /var/ldap/cert7.db
# chmod 444 /var/ldap/key3.db

注 –

Netscape は cert7.db ファイルと key3.db ファイルを $HOME/.netscape ディレクトリで管理し、Mozilla は cert8.db ファイル、key3.db ファイル、および secmod.db ファイルを $HOME/.mozilla のサブディレクトリで管理します。このため、それらのセキュリティーデータベースを LDAP ネームサービスクライアントで使用する場合は、そのコピーをローカルファイルシステム上に格納する必要があります。


PAM を構成する

pam_ldap は、LDAP の認証およびアカウント管理用 PAM モジュールオプションの 1 つです。pam_ldap で現在サポートされている機能の詳細については、pam_ldap(5) のマニュアルページと付録 A Solaris 10 ソフトウェアの DNS、NIS、および LDAP の更新を参照してください。

ユーザー別モードと自己資格オプションの両方を選択した場合は、PAM Kerberos pam_krb5(5) pam モジュールも有効にする必要があります。詳細については、pam_krb5(5) のマニュアルページおよび『Solaris のシステム管理 (セキュリティサービス)』を参照してください。

UNIX policy を使用するための PAM の構成

UNIX policy を使用するように PAM を構成するには、pam_ldap に対応した pam.conf ファイルの例」に示す例に従ってください。pam_ldap.so.1 を含む行をクライアントの /etc/pam.conf ファイルに追加します。詳細については、pam.conf(4) のマニュアルページを参照してください。

LDAP server_policy を使用するための PAM の構成

LDAP server_policy を使用するように PAM を構成するには、「アカウント管理のために pam_ldap を構成した pam.conf ファイル例」に示す例に従ってください。pam_ldap.so.1 を含む行をクライアントの /etc/pam.conf ファイルに追加します。さらに、サンプルの pam.conf ファイルの中でいずれかの PAM モジュールが binding フラグと server_policy オプションを定義している場合は、クライアントの /etc/pam.conf ファイルの対応するモジュールに、同じフラグとオプションを記述します。また、サービスモジュール pam_authtok_store.so.1 を含む行に、server_policy オプションを追加します。


注 –

以前は、pam_ldap アカウント管理を有効にすると、システムにログインする際には、常にすべてのユーザーが認証用にログインパスワードを入力する必要がありました。そのため、rshrloginssh などのツールによるパスワードを使用しないログインは失敗します。

一方、pam_ldap(5) を Sun Java System Directory Server DS5.2p4 以降のリリースで使用することで、ユーザーはパスワードを入力せずに、rshrloginrcp、および ssh を使ってログインできるようになりました。

pam_ldap(5) は変更され、ユーザーのログイン時に Directory Server への認証を実行せずに、アカウントの管理およびユーザーのアカウント状態の取得を実行できるようになりました。Directory Server 上でこの機能を制御するのは、1.3.6.1.4.1.42.2.27.9.5.8 です。これは、デフォルトで有効になっています。

この制御をデフォルト以外に変更する場合は、Directory Server 上でアクセス制御情報 (ACI) を追加します。


dn: oid=1.3.6.1.4.1.42.2.27.9.5.8,cn=features,cn=config
objectClass: top
objectClass: directoryServerFeature
oid:1.3.6.1.4.1.42.2.27.9.5.8
cn:Password Policy Account Usable Request Control
aci: (targetattr != "aci")(version 3.0; acl "Account Usable"; 
     allow (read, search, compare, proxy)
     (groupdn = "ldap:///cn=Administrators,cn=config");)
creatorsName: cn=server,cn=plugins,cn=config
modifiersName: cn=server,cn=plugins,cn=config

LDAP ネームサービス情報の検出

ldaplist ユーティリティーを使用して、LDAP ネームサービスについての情報を取得できます。この LDAP ユーティリティーは、LDAP サーバーから取得したネームサービス情報を LDIF フォーマットで表示します。このユーティリティーは、トラブルシューティングに役立ちます。詳細については、ldaplist(1) のマニュアルページを参照してください。

すべての LDAP コンテナを表示する

ldaplist は、レコードを空行で区切って出力を表示します。この表示方法は、複数行にまたがる大きなレコードに有効です。


注 –

ldaplist の出力は、クライアントの構成によって変わります。たとえば、ns_ldap_search の値が one ではなく sub である場合は、ldaplist によって現在の検索 baseDN の下にあるエントリがすべて表示されます。


次に ldaplist の出力例を示します。


# ldaplist
dn: ou=people,dc=west,dc=example,dc=com

dn: ou=group,dc=west,dc=example,dc=com

dn: ou=rpc,dc=west,dc=example,dc=com

dn: ou=protocols,dc=west,dc=example,dc=com

dn: ou=networks,dc=west,dc=example,dc=com

dn: ou=netgroup,dc=west,dc=example,dc=com

dn: ou=aliases,dc=west,dc=example,dc=com

dn: ou=hosts,dc=west,dc=example,dc=com

dn: ou=services,dc=west,dc=example,dc=com

dn: ou=ethers,dc=west,dc=example,dc=com

dn: ou=profile,dc=west,dc=example,dc=com

dn: automountmap=auto_home,dc=west,dc=example,dc=com

dn: automountmap=auto_direct,dc=west,dc=example,dc=com

dn: automountmap=auto_master,dc=west,dc=example,dc=com

dn: automountmap=auto_shared,dc=west,dc=example,dc=com

すべてのユーザーエントリ属性を表示する

ユーザーの passwd エントリなど特定の情報を表示する場合は、次のように getent を使用します。


# getent passwd user1
user1::30641:10:Joe Q. User:/home/user1:/bin/csh

すべての属性を表示する場合は、-l オプションを指定して ldaplist コマンドを実行します。


# ldaplist -l passwd user1dn: uid=user1,ou=People,dc=west,dc=example,dc=com
        uid: user1
        cn: user1
        uidNumber: 30641
        gidNumber: 10
        gecos: Joe Q. User
        homeDirectory: /home/user1
        loginShell: /bin/csh
        objectClass: top
        objectClass: shadowAccount
        objectClass: account
        objectClass: posixAccount
        shadowLastChange: 6445

LDAP クライアント環境のカスタマイズ

以降の節では、クライアント環境をカスタマイズする方法について説明します。

どのサービスも変更できますが注意が必要です。変更したサービスのデータがサーバー上に生成されない場合、カスタマイズは無効になります。また、ファイルがデフォルトで設定されない場合もあります。

LDAP 用の nsswitch.conf ファイルを変更する

/etc/nsswitch.conf ファイルを変更して、各サービスが情報を取得する場所をカスタマイズできます。デフォルトの設定は /etc/nsswitch.ldap に保存されており、クライアントの初期化時に ldapclient がこのファイルを使って /etc/nsswitch.conf ファイルを作成します。

LDAP で DNS を有効にする

/etc/resolv.conf ファイルを設定して DNS を使用可能にする場合は、次に示すように、DNS を hosts 行に追加します。


hosts:      ldap dns [NOTFOUND=return] files

推奨構成を次に示します。

hosts: files dns

ipnodes: files dns

ユーザー別の認証を使用する場合、sasl/GSSAPI および Kerberos 機構は dns ネームサービスが構成され、有効になっていることを前提に動作します。詳細については、この管理ガイドの DNS に関する章を参照してください。