ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのネームサービスおよびディレクトリサービスの作業 Oracle Solaris 11.1 Information Library (日本語) |
4. Oracle Solaris Active Directory クライアントの設定 (タスク)
11. LDAP クライアントと Oracle Directory Server Enterprise Edition の設定 (タスク)
プロファイルを使用して LDAP クライアントを初期化する方法
ユーザー別の資格を使用して LDAP クライアントを初期化する方法
プロキシ資格を使用して LDAP クライアントを初期化する方法
ldapclient コマンドは、Oracle Solaris システム上で LDAP クライアントを設定するために使用されます。このコマンドは、サーバーに、適切なクライアントプロファイルがすでに構成されていると想定しています。サーバーをインストールして、適切なプロファイルで構成してからクライアントを設定する必要があります。
注 - LDAP と NIS は network/nis/domain サービスで定義されている同じドメイン名コンポーネントを使用するため、Oracle Solaris OS は、NIS クライアントとネイティブな LDAP クライアントが同じクライアントシステム上に共存する構成をサポートしていません。
ldapclient を使用してクライアントを設定するには主に 2 つの方法があります。
プロファイル
少なくとも、使用するプロファイルとドメインを含むサーバーアドレスを指定する必要があります。プロファイルが指定されていない場合は、デフォルトのプロファイルが使用されます。プロキシと認証データベースの情報を除いて、必要な情報はサーバーから入手できます。クライアントの資格レベルがプロキシまたは匿名プロキシである場合は、プロキシのバインド DN とパスワードを入力してください。詳細は、「クライアント資格レベルの割り当て」を参照してください。
シャドウデータの更新を有効にするには、管理者資格 (adminDN および adminPassword) を指定する必要があります。
手動
クライアント自体でプロファイルを構成します。つまり、コマンド行からすべてのパラメータを定義します。このため、プロファイル情報はキャッシュファイルに格納されサーバーによってリフレッシュされることはありません。
注 - エンタープライズ環境では、プロファイルがマシン間で共有されている場合に LDAP 構成プロファイルを使用すると複雑さを軽減できます。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# ldapclient init -a profileName=new \ -a domainName=west.example.com 192.168.0.1 System successfully configured
始める前に
ユーザー別の資格を使用して LDAP クライアントを設定する前に、次がすでに構成されている必要があります。
1 つまたは複数の Kerberos 鍵配布センター (KDC) サーバーが構成され、実行されている必要があります。
DNS、DNS サーバーへのクライアントアクセス、および少なくとも 1 つの DNS サーバーが構成され、実行されている必要があります。
クライアントマシン上の Kerberos が構成され、有効にされている
次のような Kerberos クライアントのインストールプロファイルが存在する必要があります。
# cat /usr/tmp/krb5.profile REALM EXAMPLE.COM KDC kdc.example.com ADMIN super/admin FILEPATH /usr/tmp/krb5.conf NFS 1 DNSLOOKUP none
LDAP サーバーがインストールされ、sasl/GSSAPI をサポートするように構成されている必要があります。
適切な識別情報マッピング構成が存在する
ディレクトリサーバーおよび KDC 用の Kerberos ホスト主体が KDC 内で設定されている
使用されるディレクトリサーバー DIT 上で idsconfig コマンドが実行されている必要があります。
ユーザー別の適切な gssapi プロファイル (gssapi_EXAMPLE.COM など) が作成済みである
次の部分的な例には、idsconfig コマンド内のユーザー別のプロファイルの図が示されています。
# /usr/lib/ldap/idsconfig Do you wish to continue with server setup (y/n/h)? [n] y Enter the Directory Server's hostname to setup: kdc.example.com Enter the port number for DSEE (h=help): [389] <Enter your port> Enter the directory manager DN: [cn=Directory Manager] <Enter your DN> Enter passwd for cn=Directory Manager : <Enter your password> Enter the domainname to be served (h=help): [example.com] <Enter your domain> Enter LDAP Base DN (h=help): [dc=example,dc=com] <Enter your DN> GSSAPI is supported. Do you want to set up gssapi:(y/n) [n] y Enter Kerberos Realm: [EXAMPLE.COM] EXAMPLE.COM
注 - さらに、gssapi プロファイルの場合は、4 self の資格レベルと、6 sasl/GSSAPI の認証方法を指定する必要があります。
必要なユーザー主体が KDC 内に存在する必要があります。
クライアントマシン上で、次のようなコマンドで、クライアントプロファイルを使用して Kerberos が初期化されている必要があります。
# /usr/sbin/kclient -p /usr/tmp/krb5.profile
ネームサービススイッチが、hosts に dns を使用するように構成されている必要があります。次のコマンドで、現在のリポジトリ値をチェックします。
% svcprop -p config/host system/name-service/switch files\ dns\ nis
DNS が構成され、DNS サービスが実行されている必要があります。詳細は、このドキュメントの DNS に関する章を参照してください。
ディレクトリサーバー DIT が、(少なくとも) このクライアントマシンのユーザー、クライアントホスト、および必要な auto_home LDAP エントリを使用して事前に読み込まれている必要があります。ldapaddent コマンドを使用してエントリを追加する方法についての詳細は、このマニュアルのほかのセクションを参照してください。
注 - どちらのクライアント構成ファイルも直接編集しないでください。これらのファイルの内容を作成または変更する場合は、ldapclient コマンドを使用してください。
# /usr/sbin/ldapclient init -a profilename=gssapi_EXAMPLE.COM -a \ domainname=example.com 9.9.9.50
syslog ファイルにメッセージ libsldap: Status: 7 Mesg: openConnection: GSSAPI bind failed - 82 Local error が表示される場合は、Kerberos が初期化されていないか、またはそのチケットの有効期限が切れている可能性があります。それを参照するには、klist コマンドを実行します。たとえば、kinit -p foo または kinit -R -p foo を実行し、再試行します。
必要に応じて、/etc/pam.conf に pam_krb5.so.1 を追加することにより、ログイン時に kinit コマンドが自動的に実行されるようにすることができます。
例:
login auth optional pam_krb5.so.1 rlogin auth optional pam_krb5.so.1 other auth optional pam_krb5.so.1
ユーザーが kinit コマンドを実行し、syslog メッセージに Invalid credential が示されている場合は、root ホストエントリまたはユーザーエントリが LDAP ディレクトリ内に存在しないか、またはマッピング規則が正しくないことが問題である可能性があります。
ldapclient init コマンドが実行されると、LDAP プロファイルに self/ sasl/GSSAPI 構成が含まれているかどうかがチェックされます。そのコマンドがスイッチのチェックに失敗した場合は、一般的には DNS がホストデータベースの検索条件ではなかったことが原因です。
DNS クライアント ID が有効でないためにチェックに失敗した場合は、svcs -l dns/client を実行して、サービスが無効になっているかどうかを判定します。サービスを有効にするには、svcadm enable dns/client を実行します。
sasl/GSSAPI バインドのためにチェックに失敗した場合は、syslog をチェックして問題を確認します。
詳細は、このガイドおよび『Oracle Solaris 11.1 の管理: セキュリティーサービス』にあるほかの参照資料を参照してください。
注 - どちらのクライアント構成ファイルも直接編集しないでください。これらのファイルの内容を作成または変更する場合は、ldapclient コマンドを使用してください。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# 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 が必要です。サーバーに保存されているプロファイルにはこの資格情報が含まれていないため、クライアントを初期設定するときは資格情報を入力する必要があります。この方法は、プロキシの資格情報をサーバーに保存していた従来の方法に比べて安全性が高くなります。
これらのプロキシ情報は、config および cred プロパティーグループ内の svc:/network/ldap/client サービス内に格納されます。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# 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=<proxy_password> \ 192.168.0.1 System successfully configured
出力は次のようになります。
# svcprop -p cred svc:/network/ldap/client cred/read_authorization astring solaris.smf.value.name-service.ldap.client cred/value_authorization astring solaris.smf.value.name-service.ldap.client cred/bind_dn astring cn=proxyagent,ou=profile,dc=west,dc=example,dc=com cred/bind_passwd astring {NS1}4a3788f8eb85de11 cred/enable_shadow_update boolean true cred/admin_bind_dn astring cn=admin,ou=profile,dc=west,dc=example,dc=com cred/admin_bind_passwd astring {NS1}4a3788f8c053434f
root ユーザーまたは同等の役割を持つ管理者は、手動の LDAP クライアント構成を実行できます。ただし、この処理では多数のチェックが省略されるため、システムを正しく構成できないことがよくあります。また、プロファイルを使用するときのように一括に設定するのではなく、「マシンごとに」設定を変更する必要があります。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# 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
# 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
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# ldapclient mod -a authenticationMethod=simple
# 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 属性は変更できません。これらの属性を変更するには、「プロファイルを使用して LDAP クライアントを初期化する方法」の説明に従って、ldapclient init コマンドを使用して新しいプロファイルを作成します。または、「LDAP クライアントを手動で初期化する方法」の説明に従って、ldapclient manual コマンドを実行します。
ldapclient uninit コマンドは、クライアントのネームサービスを、最新の init、modify、または manual 操作の前の状態に復元します。つまり、このコマンドは、最後に実行された手順に対して「元に戻す」を実行します。たとえば、profile1 を使用するようにクライアントを構成したあとで profile2 を使用するように変更した場合、ldapclient uninit を実行すると、クライアントで profile1 を使用するように構成が元に戻ります。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# ldapclient uninit System successfully recovered
注 - セキュリティーデータベースファイルは、すべてのユーザーから読み取れるようにする必要があります。key3.db ファイル内にはどの非公開鍵も含めないでください。
TLS (Transport Layer Security) を使用している場合は、必要なセキュリティーデータベースがインストールされている必要があります。特に、証明書ファイルと鍵データベースファイルが必要です。たとえば、Mozilla Firefox のより新しいデータベースフォーマットを使用する場合は、cert8.db、key3.db、secmod.db の 3 つのファイルが必要です。cert8.db ファイルには、信頼できる証明書が含まれています。key3.db ファイルには、クライアントの鍵が入ります。LDAP ネームサービスクライアントがクライアントの鍵を使用しない場合でも、このファイルは必要です。secmod.db ファイルには、 PKCS#11 などのセキュリティーモジュールが入ります。このファイルは、古いフォーマットを使用する場合には必要ありません。
注 - ldapclient を実行する前に、このセクションに記述されている必要なセキュリティーデータベースファイルを設定およびインストールしておく必要があります。
使用しているバージョンの Oracle Directory Server Enterprise Edition 用管理者ガイドの「SSL 管理」の章にある、SSL を使用するための LDAP クライアントの構成に関するセクションを参照してください。これらのファイルを作成および管理する方法について。これらのファイルを構成したら、LDAP ネームサービスクライアントで使用できるように所定の場所にそれらを格納する必要があります。この場所を判断するために、属性 certificatePath が使用されます。この属性はデフォルトで /var/ldap です。
たとえば、Mozilla Firefox を使用して、必要な cert8.db、key3.db、および secmod.db ファイルを設定したあと、それらのファイルを次のようにデフォルトの場所にコピーします。
# cp $HOME/.mozilla/firefox/*.default/cert8.db /var/ldap # cp $HOME/.mozilla/firefox/*.default/key3.db /var/ldap # cp $HOME/.mozilla/firefox/*.default/secmod.db /var/ldap
次に、すべてのユーザーに読み取り権を付与します。
# chmod 444 /var/ldap/cert8.db # chmod 444 /var/ldap/key3.db # chmod 444 /var/ldap/secmod.db
注 - Mozilla Firefox では、cert8.db、key3.db、および secmod.db ファイルが、$HOME/.mozilla の下にあるサブディレクトリ内で管理されます。このため、それらのセキュリティーデータベースを LDAP ネームサービスクライアントで使用する場合は、そのコピーをローカルファイルシステム上に格納する必要があります。
pam_ldap モジュールは、LDAP のための 1 つの認証およびアカウント管理 PAM モジュールオプションです。pam_ldap で現在サポートされている機能についての詳細は、pam_ldap(5) のマニュアルページを参照してください。
ユーザー別モードと self 資格オプションの両方を選択した場合は、PAM Kerberos pam_krb5 モジュールも有効にする必要があります。詳細は、pam_krb5(5) のマニュアルページおよび『Oracle Solaris 11.1 の管理: セキュリティーサービス』のドキュメントを参照してください。
UNIX policy を使用するように PAM を構成するには、デフォルトの /etc/pam.conf ファイルを使用します。変更は必要ありません。詳細については、pam.conf(4) のマニュアルページを参照してください。
ただし、shadow データによって制御されるパスワードの有効期限とパスワードポリシーが必要な場合は、クライアントを enableShadowUpdate スイッチを使用して構成および実行する必要があります。詳細は、「LDAP クライアントを初期化してシャドウデータの更新を有効にする方法」を参照してください。
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 アカウント管理を有効にすると、システムにログインする際には、常にすべてのユーザーが認証用にログインパスワードを入力する必要がありました。そのため、ssh などのツールを使用した、パスワードに基づかないログインは失敗します。
アカウント管理を実行し、ユーザーがログインしているときに 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
binding 管理フラグ
binding 管理フラグを使うことにより、ローカルパスワードがリモート (LDAP) パスワードをオーバーライドします。たとえば、ローカルファイルと LDAP 名前空間の両方にユーザーアカウントが見つかった場合、リモートパスワードよりローカルアカウントのパスワードの方が優先されます。したがって、ローカルパスワードの期限が切れているときは、たとえリモート LDAP パスワードがまだ有効であっても認証に失敗します。
server_policy オプション
server_policy オプションによって、pam_unix_auth、 pam_unix_account、および pam_passwd_auth は LDAP 名前空間で検出されたユーザーを無視し、pam_ldap による認証やアカウント検証が可能になります。pam_authtok_store は、新しいパスワードを暗号化せずに LDAP サーバーに渡します。そのため、パスワードはサーバー上で構成されるパスワードの暗号化スキームに基づいたディレクトリに保存されます。詳細は、pam.conf(4) および pam_ldap(5) を参照してください。