Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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_valueattribute_type: attribute_value…
…
任意の id は、エントリーの編集に使用されるアプリケーションによって決定される数値です。各エントリーには、対応するスキーマファイルにすべて定義されている限り、必要が数の attribute_typeattribute_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 サーバーを設定する通常の手順は以下のとおりです。
  1. OpenLDAP スイートをインストールします。必要なパッケージの詳細は、「OpenLDAP スイートのインストール」 を参照してください。
  2. 「OpenLDAP サーバーの設定」 の説明に従って設定をカスタマイズします。
  3. 「OpenLDAP サーバーの実行」 の説明に従って slapd サービスを起動します。
  4. ldapadd ユーティリティーを使用して、エントリーを LDAP ディレクトリーに追加します。
  5. ldapsearch ユーティリティーを使用して、slapd サービスが情報に正しくアクセスしていることを確認します。

9.2.2. OpenLDAP スイートのインストール

OpenLDAP ライブラリーおよびツールのスイートは、以下のパッケージで提供されます。

表9.1 OpenLDAP パッケージの一覧

パッケージ Description
openldap OpenLDAP サーバーとクライアントアプリケーションの実行に必要なライブラリーを含むパッケージ。
openldap-clients LDAP サーバーのディレクトリーを表示および変更するコマンドラインユーティリティーを含むパッケージ。
openldap-servers LDAP サーバーを設定し、実行するサービスとユーティリティーの両方を含むパッケージ。これには、スタンドアロンの LDAP デーモン slapd が含まれます。
compat-openldap OpenLDAP 互換性ライブラリーを含むパッケージ。
また、以下のパッケージは、一般的に LDAP サーバーで使用されます。

表9.2 一般的にインストールされている追加 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 サービスとともに以下のユーティリティーがインストールされます。

表9.3 OpenLDAP サーバーユーティリティーの一覧

コマンド 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
警告
データの整合性を保持するには、slapaddslapcat、または slapindex を使用する前に slapd サービスを停止します。これを行うには、シェルプロンプトで以下を実行できます。
~]# systemctl stop slapd.service
slapd サービスの現在の状態の開始、停止、再起動、および確認の方法は、「OpenLDAP サーバーの実行」 を参照してください。

9.2.2.2. OpenLDAP クライアントユーティリティーの概要

openldap-clients パッケージは、LDAP ディレクトリーのエントリーの追加、変更、および削除に使用できる以下のユーティリティーをインストールします。

表9.4 OpenLDAP クライアントユーティリティーの一覧

コマンド 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 ThunderbirdEvolutionEkiga などがあります。

9.2.3. OpenLDAP サーバーの設定

デフォルトでは、OpenLDAP 設定は /etc/openldap/ ディレクトリーに保存されます。以下の表は、このディレクトリー内の最も重要なディレクトリーおよびファイルを示しています。

表9.5 OpenLDAP 設定ファイルとディレクトリーの一覧

パス Description
/etc/openldap/ldap.conf OpenLDAP ライブラリーを使用するクライアントアプリケーションの設定ファイルこれには、ldapaddldapsearchEvolution などが含まれます。
/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: boolean
TRUE (読み取り専用モードを有効) または 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: path
path を、CA 証明書ファイルへのパスに置き換えます。
olcTLSCACertificatePath
olcTLSCACertificatePath ディレクティブは、個別の CA 証明書が含まれるディレクトリーへのパスを指定します。このディレクトリーは、実際の証明書ファイルを参照するハッシュ化された名前でシンボリックリンクを生成する OpenSSL c_rehash ユーティリティーで特別に管理する必要があります。通常、代わりに olcTLSCACertificateFile ディレクティブを使用することが推奨されます。
ディレクティブは以下の形式になります。
olcTLSCACertificatePath: path
path を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。指定したディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。
olcTLSCertificateFile
olcTLSCertificateFile ディレクティブは、slapd サーバー証明書を含むファイルを指定します。ディレクティブは以下の形式になります。
olcTLSCertificateFile: path
path を、slapd サービスのサーバー証明書ファイルへのパスに置き換えます。
olcTLSCertificateKeyFile
olcTLSCertificateKeyFile ディレクティブは、olcTLSCertificateFile で指定されたファイルに保存された証明書に一致する秘密鍵が含まれるファイルを指定します。現在の実装は暗号化された秘密鍵に対応していないため、そのファイルが十分に保護されている必要があることに注意してください。ディレクティブは以下の形式になります。
olcTLSCertificateKeyFile: path
path を、秘密鍵ファイルへのパスに置き換えます。
クライアント設定
クライアントシステムの /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.confTLS_CACERTDIR の前に常に指定する必要があります。ディレクティブは以下の形式になります。
TLS_CACERT path
path を、CA 証明書ファイルへのパスに置き換えます。
TLS_CACERTDIR
TLS_CACERTDIR ディレクティブは、別のファイルに認証局証明書が含まれるディレクトリーへのパスを指定します。サーバーの olcTLSCACertificatePath と同様に、指定されたディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。
TLS_CACERTDIR directory
directory を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。
TLS_CERT
TLS_CERT は、クライアント証明書が含まれるファイルを指定します。このディレクティブは、ユーザーの ~/.ldaprc ファイルでのみ指定できます。ディレクティブは以下の形式になります。
TLS_CERT path
path を、クライアント証明書ファイルへのパスに置き換えます。
TLS_KEY
TLS_KEY は、TLS_CERT ディレクティブで指定されたファイルに保存されている証明書に一致する秘密鍵が含まれるファイルを指定します。サーバーで olcTLSCertificateFile と同様に、暗号化された鍵ファイルはサポートされません。ファイル自体は注意して保護する必要があります。このオプションは、ユーザーの ~/.ldaprc ファイルでのみ設定できます。
TLS_KEY ディレクティブは以下の形式になります。
TLS_KEY path
path を、クライアント証明書ファイルへのパスに置き換えます。

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 移行スクリプト」 を参照してください。

表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 ファイル。
また、パッケージ openldapopenldap-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 設定ディレクトリーで利用可能な形式およびオプションを説明します。

その他リソース