9.2. OpenLDAP
このセクションでは、LDAPv2 プロトコルおよび LDAPv3 プロトコルのオープンソース実装である OpenLDAP 2. 4 のインストールおよび設定について説明します。
注記
Red Hat Enterprise Linux 7.4 以降、openldap-server パッケージは非推奨となり、Red Hat Enterprise Linux の今後のメジャーリリースには含まれません。このため、Red Hat Enterprise Linux または Red Hat Directory Server に含まれる Identity Management に移行します。Identity Management の詳細は、『Linux ドメイン ID、認証、およびポリシーガイド』を参照してください。Directory Server の詳細は、「Red Hat Directory Server」 を参照してください。
9.2.1. LDAP の概要
クライアントサーバーアーキテクチャーを使用すると、LDAP は、ネットワークからアクセスできる中央情報ディレクトリーを作成する信頼できる手段を提供します。クライアントがこのディレクトリー内で情報の修正を試みると、サーバーは、ユーザーに変更を行うパーミッションを検証し、要求された時にエントリーを追加または更新します。通信が保護されるようにするには、Transport Layer Security (TLS) 暗号プロトコルを使用して、攻撃者が送信を傍受しないようにすることができます。
重要
Red Hat Enterprise Linux 7.5 以降の OpenLDAP スイートは、ネットワークセキュリティーサービス (NSS) の Mozilla 実装を使用しなくなりました。代わりに OpenSSL を使用します。OpenLDAP は、引き続き既存の NSS データベース設定で動作します。
重要
Resolution for POODLE SSLv3.0 vulnerability (CVE-2014-3566) for components that do not allow SSLv3 to be disabled via configuration settings に記載の脆弱性により、Red Hat はセキュリティー保護のために
SSLv3
プロトコルに依存しないことを推奨しています。OpenLDAP は、SSLv3
を効果的に無効にできるようにする設定パラメーターを提供しないシステムコンポーネントの 1 つです。リスクを軽減するには、stunnel コマンドを使用してセキュアなトンネルを提供し、SSLv3
の使用から stunnel を無効にすることが推奨されます。stunnel の使用に関する詳細は、Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。
LDAP サーバーは、いくつかのデータベースシステムをサポートしているため、管理者は、提供する予定の情報の種類に最適なソリューションを柔軟に選択できます。明確に定義されたクライアントの アプリケーションプログラミングインターフェイス (API) により、LDAP サーバーと通信できるアプリケーションの数は多数であり、数量と品質の両方で増加します。
9.2.1.1. LDAP の用語
以下は、本章で使用される LDAP 固有の用語の一覧です。
- entry
- LDAP ディレクトリー内の単一のユニット。各エントリーは、固有の 識別名 (DN) で識別されます。
- attribute
- エントリーに直接関連付けられた情報。たとえば、組織が LDAP エントリーとして表される場合、この組織に関連付けられている属性にはアドレス、fax 番号などが含まれる場合があります。同様に、個人の電話番号やメールアドレスなどの一般的な属性のエントリーとして、ユーザーを表示することもできます。属性は、単一の値、または順序付けられていないスペースで区切られた値のリストのいずれかを持つことができます。特定の属性は任意ですが、その他は必須です。必要な属性は
objectClass
定義を使用して指定し、/etc/openldap/slapd.d/cn=config/cn=schema/
ディレクトリーにあるスキーマファイルにあります。属性とそれに対応する値のアサーションは、RDN (Relative Distinguished Name) とも呼ばれます。グローバルで一意となる識別名とは異なり、相対識別名はエントリーごとに一意のみになります。 - LDIF
- LDAP データ交換形式 (LDIF) は LDAP エントリーのプレーンテキスト表現です。以下の形式を取ります。
[id] dn: distinguished_name attribute_type: attribute_value… attribute_type: attribute_value… …
任意の id は、エントリーの編集に使用されるアプリケーションによって決定される数値です。各エントリーには、対応するスキーマファイルにすべて定義されている限り、必要が数の attribute_type と attribute_value のペアを含めることができます。空白行は、エントリーの最後を示します。
9.2.1.2. OpenLDAP の機能
OpenLDAP スイートは、以下の重要な機能を提供します。
- LDAPv3 サポート: LDAP バージョン 2 以降のプロトコルの変更の多くは、LDAP よりセキュアにするように設計されています。そのため、これには SASL (Simple Authentication and Security Layer)、TLS (Transport Layer Security)、および SSL (Secure Sockets Layer) プロトコルのサポートが含まれます。
- LDAP Over IPC: プロセス間の通信 (IPC) を使用すると、ネットワーク上で通信する必要がなくなります。
- IPv6 サポート: OpenLDAP は、インターネットプロトコルの次世代である IPv6 (Internet Protocol version 6) に準拠しています。
- LDIFv1 サポート: OpenLDAP は LDIF バージョン 1 に完全に準拠しています。
- 更新された C API: 現在の C API は、プログラマーが LDAP ディレクトリーサーバーに接続し、使用する方法を向上させます。
- 強化されたスタンドアロン LDAP サーバー: これには、更新されたアクセス制御システム、スレッドプール、より良いツールなどが含まれています。
9.2.1.3. OpenLDAP サーバーの設定
Red Hat Enterprise Linux で LDAP サーバーを設定する通常の手順は以下のとおりです。
- OpenLDAP スイートをインストールします。必要なパッケージの詳細は、「OpenLDAP スイートのインストール」 を参照してください。
- 「OpenLDAP サーバーの設定」 の説明に従って設定をカスタマイズします。
- 「OpenLDAP サーバーの実行」 の説明に従って
slapd
サービスを起動します。 - ldapadd ユーティリティーを使用して、エントリーを LDAP ディレクトリーに追加します。
- ldapsearch ユーティリティーを使用して、
slapd
サービスが情報に正しくアクセスしていることを確認します。
9.2.2. OpenLDAP スイートのインストール
OpenLDAP ライブラリーおよびツールのスイートは、以下のパッケージで提供されます。
パッケージ | Description |
---|---|
openldap | OpenLDAP サーバーとクライアントアプリケーションの実行に必要なライブラリーを含むパッケージ。 |
openldap-clients | LDAP サーバーのディレクトリーを表示および変更するコマンドラインユーティリティーを含むパッケージ。 |
openldap-servers | LDAP サーバーを設定し、実行するサービスとユーティリティーの両方を含むパッケージ。これには、スタンドアロンの LDAP デーモン slapd が含まれます。 |
compat-openldap | OpenLDAP 互換性ライブラリーを含むパッケージ。 |
また、以下のパッケージは、一般的に LDAP サーバーで使用されます。
パッケージ | Description |
---|---|
nss-pam-ldapd | nslcd を含むパッケージ。ユーザーがローカル LDAP クエリーを実行できるようにするローカルの LDAP 名サービス。 |
mod_ldap | mod_authnz_ldap モジュールおよび mod_ldap モジュールを含むパッケージ。mod_authnz_ldap モジュールは、Apache HTTP Server の LDAP 承認モジュールです。このモジュールは、LDAP ディレクトリーに対してユーザーの認証情報を認証でき、ユーザー名、完全な DN、グループメンバーシップ、任意の属性、または完全なフィルター文字列に基づいてアクセス制御を強制できます。同じパッケージに含まれる mod_ldap モジュールは、設定可能な共有メモリーキャッシュを提供し、多くの HTTP リクエストでのディレクトリーアクセスの繰り返しを回避し、SSL/TLS もサポートします。このパッケージは Optional チャンネルにより提供されることに注意してください。Red Hat 追加チャンネルの詳細は、『System Administrator's Guide』のAdding the Optional and Supplementary Repositoriesを参照してください。
|
これらのパッケージをインストールするには、以下の形式で yum コマンドを使用します。
yum install
package…
たとえば、基本的な LDAP サーバーインストールを実行するには、シェルプロンプトで以下を入力します。
~]# yum install openldap openldap-clients openldap-servers
このコマンドを実行するには、スーパーユーザー権限が必要です(つまり、
root
でログインしている必要があります)。Red Hat Enterprise Linux に新しいパッケージをインストールする方法の詳細は、『System Administrator's Guide』のInstalling Packagesを参照してください。
9.2.2.1. OpenLDAP サーバーユーティリティーの概要
管理タスクを実行するには、openldap-servers パッケージにより、
slapd
サービスとともに以下のユーティリティーがインストールされます。
コマンド | Description |
---|---|
slapacl | 属性の一覧へのアクセスを確認できます。 |
slapadd | LDIF ファイルから LDAP ディレクトリーにエントリーを追加できます。 |
slapauth | 認証および承認権限の ID のリストを確認できます。 |
slapcat | デフォルト形式の LDAP ディレクトリーからエントリーを取得し、LDIF ファイルに保存できます。 |
slapdn | 利用可能なスキーマ構文に基づいて、識別名 (DN) の一覧を確認できます。 |
slapindex | 現在のコンテンツに基づいて slapd ディレクトリーを再インデックス化できます。設定ファイルのインデックスオプションを変更する場合に、このユーティリティーを実行します。 |
slappasswd | ldapmodify ユーティリティーまたは slapd 設定ファイルで使用する暗号化されたユーザーパスワードを作成できます。 |
slapschema | 対応するスキーマでデータベースのコンプライアンスを確認できます。 |
slaptest | LDAP サーバー設定を確認できるようにします。 |
これらのユーティリティーとその使用方法の詳細な説明は、「インストールされているドキュメント」 に記載されている、対応する man ページを参照してください。
重要
slapadd を実行できるのは
root
のみですが、slapd
サービスは ldap
ユーザーとして実行します。このため、ディレクトリーサーバーは、slapadd で作成したファイルを変更できません。この問題を修正するには、slapdadd ユーティリティーの実行後に、シェルプロンプトで以下を入力します。
~]# chown -R ldap:ldap /var/lib/ldap
警告
データの整合性を保持するには、slapadd、slapcat、または slapindex を使用する前に
slapd
サービスを停止します。これを行うには、シェルプロンプトで以下を実行できます。
~]# systemctl stop slapd.service
slapd
サービスの現在の状態の開始、停止、再起動、および確認の方法は、「OpenLDAP サーバーの実行」 を参照してください。
9.2.2.2. OpenLDAP クライアントユーティリティーの概要
openldap-clients パッケージは、LDAP ディレクトリーのエントリーの追加、変更、および削除に使用できる以下のユーティリティーをインストールします。
コマンド | Description |
---|---|
ldapadd | エントリーは、ファイルまたは標準入力から LDAP ディレクトリーに追加できます。これは、ldapmodify -a へのシンボリックリンクです。 |
ldapcompare | 指定属性を LDAP ディレクトリーエントリーと比較できます。 |
ldapdelete | LDAP ディレクトリーからエントリーを削除できます。 |
ldapexop | 拡張 LDAP 操作を実行できます。 |
ldapmodify | LDAP ディレクトリー (ファイルまたは標準入力のいずれか) のエントリーを変更できます。 |
ldapmodrdn | LDAP ディレクトリーエントリーの RDN 値を変更できます。 |
ldappasswd | LDAP ユーザーのパスワードを設定または変更できるようにします。 |
ldapsearch | LDAP ディレクトリーエントリーを検索できます。 |
ldapurl | LDAP URL の組み立てまたは分解を可能にします。 |
ldapwhoami | LDAP サーバーで whoami 操作を実行できます。 |
ldapsearch を除き、各ユーティリティーは、LDAP ディレクトリー内で変更する各エントリーのコマンドを入力するのではなく、加えられる変更を含むファイルを参照することで簡単に使用できます。このようなファイルの形式は、各ユーティリティーの man ページで説明されています。
9.2.2.3. 共通 LDAP クライアントアプリケーションの概要
サーバー上にディレクトリーを作成および変更できるさまざまなグラフィカル LDAP クライアントがありますが、Red Hat EnterpriseLinux には含まれていません。読み取り専用モードのディレクトリーにアクセスできる一般的なアプリケーションには、Mozilla Thunderbird、Evolution、Ekiga などがあります。
9.2.3. OpenLDAP サーバーの設定
デフォルトでは、OpenLDAP 設定は
/etc/openldap/
ディレクトリーに保存されます。以下の表は、このディレクトリー内の最も重要なディレクトリーおよびファイルを示しています。
パス | Description |
---|---|
/etc/openldap/ldap.conf | OpenLDAP ライブラリーを使用するクライアントアプリケーションの設定ファイルこれには、ldapadd、ldapsearch、Evolution などが含まれます。 |
/etc/openldap/slapd.d/ | slapd 設定を含むディレクトリー。 |
OpenLDAP は、
/etc/openldap/slapd.conf
ファイルから設定を読み取らなくなりました。代わりに、/etc/openldap/slapd.d/
ディレクトリーにある設定データベースを使用します。以前のインストールの既存の slapd.conf
ファイルがある場合は、以下のコマンドを実行して新しい形式に変換できます。
~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
slapd
設定は、階層的なディレクトリー構造で整理された LDIF エントリーで設定され、これらのエントリーを編集する方法として、「OpenLDAP サーバーユーティリティーの概要」 で説明されているサーバーユーティリティーを使用することが推奨されます。
重要
LDIF ファイルのエラーにより、
slapd
サービスが起動しないことがあります。このため、/etc/openldap/slapd.d/
内の LDIF ファイルを直接編集しないことが強く推奨されます。
9.2.3.1. グローバル設定の変更
LDAP サーバーのグローバル設定オプションは、
/etc/openldap/slapd.d/cn=config.ldif
ファイルに保存されます。一般的には、以下のディレクティブが使用されます。
-
olcAllows
olcAllows
ディレクティブを使用すると、有効にする機能を指定できます。以下の形式を取ります。olcAllows
: feature…表9.6「利用可能なolcAllows
オプション」 に記載されている、スペースで区切られた機能のリストを受け入れます。デフォルトオプションはbind_v2
です。表9.6 利用可能な olcAllows オプション オプション Description bind_v2
LDAP バージョン 2 バインド要求の受け入れを有効にします。 bind_anon_cred
識別名 (DN) が空でない場合は匿名バインドを有効にします。 bind_anon_dn
識別名 (DN) が空 でない 場合は匿名バインドを有効にします。 update_anon
匿名更新操作の処理を有効にします。 proxy_authz_anon
匿名プロキシーの承認制御の処理を有効にします。 例9.1
olcAllows
ディレクティブの使用olcAllows: bind_v2 update_anon
-
olcConnMaxPending
olcConnMaxPending
ディレクティブを使用すると、匿名セッションの保留中の要求の最大数を指定できます。以下の形式を取ります。olcConnMaxPending
: numberデフォルトオプションは100
です。例9.2
olcConnMaxPending
ディレクティブの使用olcConnMaxPending: 100
-
olcConnMaxPendingAuth
olcConnMaxPendingAuth
ディレクティブを使用すると、認証されたセッションの保留中のリクエストの最大数を指定できます。以下の形式を取ります。olcConnMaxPendingAuth
: numberデフォルトオプションは1000
です。例9.3
olcConnMaxPendingAuth
ディレクティブの使用olcConnMaxPendingAuth: 1000
-
olcDisallows
olcDisallows
ディレクティブを使用すると、無効にする機能を指定できます。以下の形式を取ります。olcDisallows
: feature…表9.7「利用可能なolcDisallows
オプション」 に記載されている、スペースで区切られた機能のリストを受け入れます。デフォルトでは、機能は無効になりません。表9.7 利用可能な olcDisallows オプション オプション Description bind_anon
匿名バインド要求の受け入れを無効にします。 bind_simple
簡単なバインド認証メカニズムを無効にします。 tls_2_anon
STARTTLS コマンドを受け取ると、匿名セッションの強制を無効にします。 tls_authc
認証時に STARTTLS コマンドを許可しません。 例9.4
olcDisallows
ディレクティブの使用olcDisallows: bind_anon
-
olcIdleTimeout
olcIdleTimeout
ディレクティブを使用すると、アイドル状態の接続を閉じる前に待機する秒数を指定できます。以下の形式を取ります。olcIdleTimeout
: numberこのオプションは、デフォルトでは無効になっています (つまり0
に設定されます)。例9.5
olcIdleTimeout
ディレクティブの使用olcIdleTimeout: 180
-
olcLogFile
olcLogFile
ディレクティブを使用すると、ログメッセージを書き込むファイルを指定できます。以下の形式を取ります。olcLogFile
: file_nameログメッセージはデフォルトで標準エラーに書き込まれます。例9.6
olcLogFile
ディレクティブの使用olcLogFile: /var/log/slapd.log
-
olcReferral
olcReferral
オプションでは、サーバーがこれを処理できない場合に、要求を処理するサーバーの URL を指定できます。以下の形式を取ります。olcReferral
: URLこのオプションはデフォルトで無効になっています。例9.7
olcReferral
ディレクティブの使用olcReferral: ldap://root.openldap.org
-
olcWriteTimeout
olcWriteTimeout
オプションでは、未処理の書き込み要求との接続を閉じる前に待機する秒数を指定できます。以下の形式を取ります。olcWriteTimeout
このオプションは、デフォルトでは無効になっています (つまり0
に設定されます)。例9.8
olcWriteTimeout
ディレクティブの使用olcWriteTimeout: 180
9.2.3.2. フロントエンド設定
OpenLDAP フロントエンド設定は
etc/openldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
ファイルに保存され、アクセス制御リスト(ACL)などのグローバルデータベースオプションを定義します。詳細は、slapd-config(5) の man ページの Global Database Options セクションを参照してください。
9.2.3.3. Monitor バックエンド
/etc/openldap/slapd.d/cn=config/olcDatabase=psycmonitor.ldif
ファイルは、OpenLDAP モニターのバックエンドを制御します。これを有効にすると、デーモンの実行ステータスに関する情報で、OpenLDAP により自動生成され、動的に更新されます。接尾辞は cn=Monitor
で、変更できません。詳細は、slapd-monitor(5) の man ページをご覧ください。
9.2.3.4. データベース固有の設定
デフォルトでは、OpenLDAP サーバーは
hdb
データベースバックエンドを使用します。サブツリーの名前をサポートする階層データベースレイアウトを使用する他に、bdb
バックエンドと同じであり、同じ設定オプションを使用します。このデータベースバックエンドの設定は、/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
ファイルに保存されます。
その他のバックエンドデータベースの一覧は、slapd.backends(5) の man ページを参照してください。個々のバックエンドの man ページにあるデータベース固有の設定。以下に例を示します。
# man slapd-hdb
注記
bdb
バックエンドおよび hdb
バックエンドは非推奨になりました。代わりに、新規インストールに mdb
バックエンドを使用することを検討してください。
以下のディレクティブは、データベース固有の設定で一般的に使用されます。
-
olcReadOnly
olcReadOnly
ディレクティブを使用すると、データベースを読み取り専用モードで使用できます。以下の形式を取ります。olcReadOnly
: booleanTRUE
(読み取り専用モードを有効) またはFALSE
(データベースの変更を有効) のいずれかを受け入れます。デフォルトのオプションはFALSE
です。例9.9
olcReadOnly
ディレクティブの使用olcReadOnly: TRUE
-
olcRootDN
olcRootDN
ディレクティブを使用すると、LDAP ディレクトリー上の操作に設定されたアクセス制御または管理制限パラメーターが無制限のユーザーを指定できます。以下の形式を取ります。olcRootDN
: distinguished_name識別名 (DN) を受け入れます。デフォルトのオプションはcn=Manager,dn=my-domain,dc=com
です。例9.10
olcRootDN
ディレクティブの使用olcRootDN: cn=root,dn=example,dn=com
-
olcRootPW
olcRootPW
ディレクティブを使用すると、olcRootDN
ディレクティブを使用して指定されるユーザーのパスワードを設定できます。以下の形式を取ります。olcRootPW
: passwordプレーンテキストの文字列またはハッシュのいずれかを指定できます。ハッシュを生成するには、シェルプロンプトで以下を入力します。~]$ slappaswd New password: Re-enter new password: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxD
例9.11
olcRootPW
ディレクティブの使用olcRootPW: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxD
-
olcSuffix
olcSuffix
ディレクティブでは、情報を提供するドメインを指定できます。以下の形式を取ります。olcSuffix
: domain_name完全修飾ドメイン名 (FQDN) を受け入れます。デフォルトのオプションはdc=my-domain,dc=com
です。例9.12
olcSuffix
ディレクティブの使用olcSuffix: dc=example,dc=com
9.2.3.5. スキーマの拡張
OpenLDAP 2.3 以降、
/etc/openldap/slapd.d/
ディレクトリーには、/etc/openldap/schema/
に以前あった LDAP 定義も含まれます。OpenLDAP で使用されるスキーマを拡張して、デフォルトのスキーマファイルをガイドとして使用して、追加の属性タイプとオブジェクトクラスをサポートすることができます。ただし、このタスクは本章の範囲外です。このトピックの詳細については、https://openldap.org/doc/admin24/schema.html を参照してください。
9.2.3.6. セキュアな接続の確立
OpenLDAP スイートとサーバーは、Transport Layer Security (TLS) フレームワークを使用して保護できます。TLS は、ネットワーク上の通信セキュリティーを提供するために設計された暗号プロトコルです。Red Hat Enterprise Linux 7 の OpenLDAP スイートは、TLS 実装として OpenSSL を使用します。
TLS を使用してセキュアな接続を確立するには、必要な証明書を取得します。次に、クライアントとサーバーの両方で複数のオプションを設定する必要があります。最低でも、認証局 (CA) 証明書と、独自のサーバー証明書および秘密鍵を使用してサーバーを設定する必要があります。クライアントは、すべての信頼される CA 証明書を含むファイルの名前で設定する必要があります。
通常、サーバーは単一の CA 証明書に署名することだけが必要になります。クライアントはさまざまな安全なサーバーに接続したい場合があるため、設定で複数の信頼できる CA のリストを指定するのが一般的です。
サーバー設定
本セクションでは、TLS を確立するために OpenLDAP サーバーの
/etc/openldap/ slapd
.d/cn=config.ldif
ファイルで指定する必要がある slapd のグローバル設定ディレクティブを一覧表示します。
古いスタイルの設定は単一のファイルを使用しますが、通常は
/usr/local/etc/openldap/slapd.conf
としてインストールされますが、新しいスタイルは slapd
バックエンドデータベースを使用して設定を保存します。設定データベースは通常、/usr/local/etc/openldap/slapd.d/
ディレクトリーにあります。
以下のディレクティブは、SSL を確立するためにも有効です。TLS ディレクティブの他に、サーバー側で SSL 専用のポートを有効にする必要があります。通常はポート 636 です。これを行うには、
/etc/sysconfig/slapd
ファイルを編集し、SLAPD_URLS
ディレクティブで指定された URL のリストに ldaps:
/// 文字列を追加します。
-
olcTLSCACertificateFile
olcTLSCACertificateFile
ディレクティブは、信頼された CA 証明書が含まれる PEM (Privacy-enhanced mail) スキーマでエンコードされるファイルを指定します。ディレクティブは以下の形式になります。olcTLSCACertificateFile
: pathpath を、CA 証明書ファイルへのパスに置き換えます。-
olcTLSCACertificatePath
olcTLSCACertificatePath
ディレクティブは、個別の CA 証明書が含まれるディレクトリーへのパスを指定します。このディレクトリーは、実際の証明書ファイルを参照するハッシュ化された名前でシンボリックリンクを生成する OpenSSL c_rehash ユーティリティーで特別に管理する必要があります。通常、代わりにolcTLSCACertificateFile
ディレクティブを使用することが推奨されます。ディレクティブは以下の形式になります。olcTLSCACertificatePath
: pathpath を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。指定したディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。-
olcTLSCertificateFile
olcTLSCertificateFile
ディレクティブは、slapd
サーバー証明書を含むファイルを指定します。ディレクティブは以下の形式になります。olcTLSCertificateFile
: pathpath を、slapd
サービスのサーバー証明書ファイルへのパスに置き換えます。-
olcTLSCertificateKeyFile
olcTLSCertificateKeyFile
ディレクティブは、olcTLSCertificateFile
で指定されたファイルに保存された証明書に一致する秘密鍵が含まれるファイルを指定します。現在の実装は暗号化された秘密鍵に対応していないため、そのファイルが十分に保護されている必要があることに注意してください。ディレクティブは以下の形式になります。olcTLSCertificateKeyFile
: pathpath を、秘密鍵ファイルへのパスに置き換えます。
クライアント設定
クライアントシステムの
/etc/openldap/ldap.conf
設定ファイルで以下のディレクティブを指定します。これらのディレクティブのほとんどは、サーバー設定オプションと並行して行います。/etc/openldap/ldap.conf
のディレクティブはシステム全体で設定されますが、各ユーザーは ~/.ldaprc
ファイルで上書きすることができます。
同じディレクティブを使用して SSL 接続を確立できます。
ldaps://
文字列は、ldapsearch などの OpenLDAP コマンドの ldap://
の代わりに使用する必要があります。これにより、コマンドはサーバーで設定された SSL のデフォルトポートであるポート 636 を使用するように強制されます。
-
TLS_CACERT
TLS_CACERT
ディレクティブは、クライアントが認識するすべての認証局の証明書を含むファイルを指定します。これは、サーバーのolcTLSCACertificateFile
ディレクティブと同じです。TLS_CACERT
は、/etc/openldap/ldap.conf
のTLS_CACERTDIR
の前に常に指定する必要があります。ディレクティブは以下の形式になります。TLS_CACERT
pathpath を、CA 証明書ファイルへのパスに置き換えます。-
TLS_CACERTDIR
TLS_CACERTDIR
ディレクティブは、別のファイルに認証局証明書が含まれるディレクトリーへのパスを指定します。サーバーのolcTLSCACertificatePath
と同様に、指定されたディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。TLS_CACERTDIR
directorydirectory を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。-
TLS_CERT
TLS_CERT
は、クライアント証明書が含まれるファイルを指定します。このディレクティブは、ユーザーの~/.ldaprc
ファイルでのみ指定できます。ディレクティブは以下の形式になります。TLS_CERT
pathpath を、クライアント証明書ファイルへのパスに置き換えます。-
TLS_KEY
TLS_KEY
は、TLS_CERT
ディレクティブで指定されたファイルに保存されている証明書に一致する秘密鍵が含まれるファイルを指定します。サーバーでolcTLSCertificateFile
と同様に、暗号化された鍵ファイルはサポートされません。ファイル自体は注意して保護する必要があります。このオプションは、ユーザーの~/.ldaprc
ファイルでのみ設定できます。TLS_KEY
ディレクティブは以下の形式になります。TLS_KEY
pathpath を、クライアント証明書ファイルへのパスに置き換えます。
9.2.3.7. レプリケーションの設定
レプリケーションは、ある LDAP サーバー (プロバイダー) から 1 つ以上の他のサーバーまたはクライアント (コンシューマー) に、更新をコピーするプロセスです。プロバイダーはディレクトリーの更新をコンシューマーに複製し、受信した更新はコンシューマーによって他のサーバーにさらに伝播されるため、コンシューマーは同時にプロバイダーとして機能することもできます。また、コンシューマーは LDAP サーバーである必要がなく、LDAP クライアントである必要はありません。OpenLDAP では、複数のレプリケーションモードを使用できます。ほとんどの場合は ミラー および 同期 です。OpenLDAP レプリケーションモードの詳細は、openldap-servers パッケージ (「インストールされているドキュメント」を参照) でインストールされる OpenLDAP Software Administrator's Guide を参照してください。
選択したレプリケーションモードを有効にするには、プロバイダーとコンシューマーの両方で、
/etc/openldap/slapd.d/
で以下のいずれかのディレクティブを使用します。
-
olcMirrorMode
olcMirrorMode
ディレクティブは、ミラーのレプリケーションモードを有効にします。以下の形式を取ります。olcMirrorMode
on
このオプションは、プロバイダーとコンシューマーの両方で指定する必要があります。serverID
は、syncrepl
オプションと共に指定する必要があります。詳細は、18.3.4.OpenLDAP ソフトウェア管理ガイド の MirrorMode セクション (「インストールされているドキュメント」を参照)-
olcSyncrepl
olcSyncrepl
ディレクティブは、sync レプリケーションモードを有効にします。以下の形式を取ります。olcSyncrepl
on
同期のレプリケーションモードでは、プロバイダーとコンシューマーの両方に特定の設定が必要になります。この設定は、OpenLDAP ソフトウェア管理ガイド の 18.3.1. Syncrepl セクション (「インストールされているドキュメント」) を参照してください。
9.2.3.8. モジュールとバックエンドの読み込み
動的にロードされたモジュールを使用して
slapd
サービスを強化できます。これらのモジュールのサポートは、slapd
の設定時に --enable-modules
オプションを使用して有効にする必要があります。モジュールは、拡張子が .la のファイルに保存されます。
module_name.la
LDAP 要求に対応して、バックエンド がデータを保存または取得します。バックエンドは、静的に
slapd
にコンパイルするか、モジュールサポートが有効になっている場合は、動的に読み込むことができます。後者の場合は、以下の命名規則が適用されます。
back_backend_name.la
モジュールまたはバックエンドを読み込むには、
/etc/openldap/slapd.d/
で以下のディレクティブを使用します。
-
olcModuleLoad
olcModuleLoad
ディレクティブは、読み込むモジュール (動的に読み込み可能) を指定します。以下の形式を取ります。olcModuleLoad
: moduleここで、module は、読み込むモジュールまたはバックエンドを含むファイルを表します。
9.2.4. LDAP を使用したアプリケーションの SELinux ポリシー
SELinux は、Linux カーネルにおける強制アクセス制御メカニズムの実装です。デフォルトでは、SELinux は、アプリケーションが OpenLDAP サーバーにアクセスできないようにします。複数のアプリケーションで必要な LDAP による認証を有効にするには、SELinux ブール値
allow_ypbind
を有効にする必要があります。特定のアプリケーションでは、このシナリオで有効な authlogin_nsswitch_use_ldap
ブール値も要求します。次のコマンドを実行して、前述のブール値を有効にします。
~]# setsebool-P
allow_ypbind
=1
~]# setsebool-P
authlogin_nsswitch_use_ldap
=1
-P
オプションを使用すると、システムを再起動してもこの設定が維持されます。SELinux に関する詳細情報は、Red Hat Enterprise Linux 7 SELinux User's and Administrator's Guide も併せて参照してください。
9.2.5. OpenLDAP サーバーの実行
本セクションでは、スタンドアロン LDAP デーモン の開始、停止、再起動、および現在のステータスの確認方法を説明します。システムサービス全般を管理する方法は、『System Administrator's Guide』のManaging Services with systemdを参照してください。
9.2.5.1. サービスの起動
現行セッションで
slapd
サービスを起動するには、root
で次のコマンドを実行します。
~]# systemctl start slapd.service
システムの起動時にサービスが自動的に起動するように設定するには、
root
で以下のコマンドを実行します。
~]# systemctl enable slapd.service
ln -s '/usr/lib/systemd/system/slapd.service' '/etc/systemd/system/multi-user.target.wants/slapd.service'
9.2.5.2. サービスの停止
現行セッションで実行中の
slapd
サービスを停止するには、root
で次のコマンドを実行します。
~]# systemctl stop slapd.service
システムの起動時にサービスが自動的に起動しないようにするには、
root
で以下を入力します。
~]# systemctl disable slapd.service
rm '/etc/systemd/system/multi-user.target.wants/slapd.service'
9.2.5.3. サービスの再起動
実行中の
slapd
サービスを再起動するには、シェルプロンプトで以下を入力します。
~]# systemctl restart slapd.service
これにより、サービスが停止し、すぐに再起動します。以下のコマンドを使用して、設定を再読み込みします。
9.2.5.4. サービスステータスの確認
slapd
サービスが実行していることを確認するには、シェルプロンプトで以下を入力します。
~]$ systemctl is-active slapd.service
active
9.2.6. OpenLDAP を使用してシステムを認証するためのシステムの設定
OpenLDAP を使用してシステムを認証するように設定するには、適切なパッケージが LDAP サーバーとクライアントマシンの両方にインストールされていることを確認してください。サーバーの設定方法は、「OpenLDAP スイートのインストール」 および 「OpenLDAP サーバーの設定」 の手順に従います。クライアントで、シェルプロンプトで以下を入力します。
~]# yum install openldap openldap-clients nss-pam-ldapd
9.2.6.1. 以前の認証情報の LDAP 形式への移行
migrationtools パッケージは、認証情報を LDAP 形式に移行するのに役立つシェルおよび Perl スクリプトのセットを提供します。このパッケージをインストールするには、シェルプロンプトで以下を入力します。
~]# yum install migrationtools
これにより、スクリプトが
/usr/share/migrationtools/
ディレクトリーにインストールされます。インストールが完了したら、/usr/share/migrationtools/migrate_common.ph
ファイルを編集し、以下の行を変更して正しいドメインを反映させます。
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "example.com"; # Default base $DEFAULT_BASE = "dc=example,dc=com";
または、コマンドラインで直接環境変数を指定することもできます。たとえば、デフォルトのベースを
dc=example,dc=com
に設定して migrate_all_online.sh
スクリプトを実行するには、以下を入力します。
~]# export DEFAULT_BASE="dc=example,dc=com" \ /usr/share/migrationtools/migrate_all_online.sh
ユーザーデータベースを移行するために実行するスクリプトを決定するには、表9.8「一般的に使用される LDAP 移行スクリプト」 を参照してください。
既存のネームサービス | LDAP が実行しているか ? | 使用するスクリプト |
---|---|---|
/etc フラットファイル | はい | migrate_all_online.sh |
/etc フラットファイル | いいえ | migrate_all_offline.sh |
NetInfo | はい | migrate_all_netinfo_online.sh |
NetInfo | いいえ | migrate_all_netinfo_offline.sh |
NIS (YP) | はい | migrate_all_nis_online.sh |
NIS (YP) | いいえ | migrate_all_nis_offline.sh |
これらのスクリプトの使用方法は、
/usr/share/doc/migrationtools-version/
ディレクトリーの README
ファイルおよび migration-tools.txt
ファイルを参照してください。
9.2.7. 関連情報
以下のリソースは、Lightweight Directory Access Protocol に関する追加情報を提供します。システムで LDAP を設定する前に、『OpenLDAP Software 管理者ガイド』 など、これらのリソースを確認することを強く推奨します。
インストールされているドキュメント
以下のドキュメントは、openldap-servers パッケージでインストールされます。
/usr/share/doc/openldap-servers-version/guide.html
: 『OpenLDAP ソフトウェア管理者ガイド』 のコピー。/usr/share/doc/openldap-servers-version/README.schema
: インストールされたスキーマファイルの説明が含まれる README ファイル。
また、パッケージ openldap、openldap-servers、および openldap-clients でインストールされる man ページも多数あります。
- クライアントアプリケーション
- ldapadd(1) : ldapadd コマンドの man ページでは、LDAP ディレクトリーにエントリーを追加する方法を説明します。
- ldapdelete(1) : ldapdelete コマンドの man ページでは、LDAP ディレクトリー内のエントリーを削除する方法を説明します。
- ldapmodify(1) : ldapmodify コマンドの man ページでは、LDAP ディレクトリー内のエントリーを変更する方法を説明します。
- ldapsearch(1) : ldapsearch コマンドの man ページでは、LDAP ディレクトリー内のエントリーを検索する方法を説明します。
- ldappasswd(1) : ldappasswd コマンドの man ページでは、LDAP ユーザーのパスワードを設定または変更する方法を説明します。
- ldapcompare(1) : ldapcompare ツールの使用方法を説明します。
- ldapwhoami(1) : ldapwhoami ツールの使用方法を説明します。
- ldapmodrdn(1): エントリーの RDN を変更する方法を説明します。
- サーバーアプリケーション
- slapd(8C): LDAP サーバーのコマンドラインオプションを説明します。
- 管理アプリケーション
- slapadd(8C) : slapd データベースにエントリーを追加するために使用されるコマンドラインオプションを説明します。
- slapcat(8C) : slapd データベースから LDIF ファイルを生成するために使用されるコマンドラインオプションを説明します。
- slapindex(8C) : slapd データベースの内容に基づいてインデックスを再生成するために使用されるコマンドラインオプションを説明します。
- slappasswd(8C): LDAP ディレクトリーのユーザーパスワードを生成するのに使用されるコマンドラインオプションを説明します。
- 設定ファイル
- ldap.conf(5) :
ldap.conf
ファイルの man ページでは、LDAP クライアントの設定ファイル内で利用可能な形式およびオプションが説明されています。 - slapd-config(5) :
/etc/openldap/slapd.d
設定ディレクトリーで利用可能な形式およびオプションを説明します。
その他リソース
- 『OpenLDAP および Mozilla NSS 互換性レイヤー』 NSS データベース後方互換性に関する実装の詳細。
- 『How do I use TLS/SSL?』OpenLDAP が OpenSSL を使用するように設定する方法に関する情報