9.2. OpenLDAP

本セクションでは、LDAPv2 および LDAPv3 プロトコルのオープンソース実装である OpenLDAP 2.4 をインストール/設定する方法について取り上げます。

注記

openldap-server パッケージは、Red Hat Enterprise Linux 7.4 以降は非推奨とされ、Red Hat Enterprise Linux の今後のメジャーリリースには同梱されません。この理由から、Red Hat Enterprise Linux に同梱された Identity Management または Red Hat Directory Server へ移行してください。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 (設定から SSLv3 を無効にできないコンポーネントで POODLE SSLv3.0 脆弱性 (CVE-2014-3566) を解決する方法) に説明されている脆弱性により、Red Hat はセキュリティー保護のために SSLv3 プロトコルに依存しないことを推奨しています。OpenLDAP は、SSLv3 を効果的に無効にする設定パラメーターを提供しないシステムコンポーネントの 1 つです。リスクの軽減策として、stunnel コマンドを使用してセキュアなトンネルを提供し、stunnelSSLv3 を使用できないようにすることが推奨されます。stunnel の使用方法についての詳細は、Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。
LDAP サーバーは複数のデータベースシステムをサポートするため、管理者は適用する予定の情報のタイプに最適なソリューションを柔軟に選択できます。明確に定義された アプリケーションプログラミングインターフェース (API) クライアントにより、LDAP サーバーと通信できるアプリケーションは多く、その数と質ともに向上しています。

9.2.1.1. LDAP の用語

以下は、本章で使用されている LDAP 特有の用語一覧です。
エントリー
LDAP ディレクトリー内の単一ユニットです。各エントリーは一意の DN (Distinguished Name: 識別名) で識別されます。
属性
エントリーに直接関連付けられた情報です。たとえば、ある組織が LDAP エントリーとして表示されている場合に、アドレス、ファックス番号などがこの組織に関連付けられた属性です。同様に、人も電話番号や電子メールアドレスのような共通の属性を持つエントリーとして表示することができます。
属性には、単一値または順不同の空白で区切られた値の一覧のどちらかがあります。一部の属性はオプションですが、その他は必須です。必須の属性は 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 をよりセキュアにするように設計されています。その他の改善点としては、Simple Authentication and Security Layer (SASL)、Transport Layer Security (TLS) および Secure Sockets Layer (SSL) プロトコルに対するサポートがあります。
  • IPC 上の LDAP — プロセス間通信 (IPC) の使用により、ネットワーク上で通信する必要性をなくすことでセキュリティーを強化します。
  • IPv6 サポート — OpenLDAP は、次世代のインターネットプロトコルである Internet Protocol version 6 (IPv6) に準拠しています。
  • 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 パッケージの一覧

パッケージ詳細
openldapOpenLDAP サーバー/クライアントアプリケーションを実行するために必要なライブラリーを含むパッケージです。
openldap-clientsLDAP サーバー上のディレクトリーを表示、修正するためのコマンドラインユーティリティーを含むパッケージです。
openldap-serversLDAP サーバーを設定して実行するためのサービスとユーティリティーの両方を含むパッケージです。これには、スタンドアロン LDAP デーモン である slapd が含まれます。
compat-openldapOpenLDAP 互換ライブラリーを含むパッケージです。
また、LDAP サーバーと共によく使用されるパッケージは以下のとおりです。

表9.2 一般的にインストールされるその他の LDAP パッケージの一覧

パッケージ詳細
nss-pam-ldapdユーザーがローカルの LDAP クエリーを実行できるようにするローカル LDAP ネームサービスである、nslcd を含むパッケージです。
mod_ldap
mod_authnz_ldap および mod_ldap モジュールを含むパッケージです。mod_authnz_ldap モジュールは Apache HTTP Server の LDAP 承認モジュールです。このモジュールは、LDAP ディレクトリーに対してユーザーの認証情報を認証でき、ユーザー名、完全 DN、グループメンバーシップ、任意の属性、または完全なフィルター文字列に基づいてアクセス制御を行います。同じパッケージに含まれる mod_ldap モジュールは、数多くの HTTP リクエストでのディレクトリーアクセスの繰り返しを防ぐために設定可能な共有メモリーキャッシュ、および SSL/TLS のサポートを提供します。このパッケージは Optional チャンネルで提供されることに注意してください。Red Hat の追加チャンネルの詳細は、『システム管理者のガイド』の「Optional および Supplementary リポジトリーの追加」 を参照してください。
これらのパッケージをインストールするには、以下の形式で yum コマンドを使用します。
yum install package
たとえば、基本的な LDAP サーバーをインストールするには、シェルプロンプトで以下を入力します。
~]# yum install openldap openldap-clients openldap-servers
このコマンドを実行するには、スーパーユーザー権限を持っている (root としてログインしている) 必要があります。Red Hat Enterprise Linux に新しいパッケージをインストールする方法の詳細については、『システム管理者のガイド』の「パッケージのインストール」を参照してください。

9.2.2.1. OpenLDAP サーバーユーティリティーの概要

管理タスクを実行するために、openldap-servers パッケージは slapd サービスと共に以下のユーティリティーをインストールします。

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

コマンド詳細
slapacl属性の一覧へのアクセスをチェックできるようにします。
slapaddLDIF ファイルから LDAP ディレクトリーへエントリーを追加できるようにします。
slapauth認証/承認のパーミッション用に ID の一覧をチェックできるようにします。
slapcatLDAP ディレクトリーからデフォルト形式でエントリーをプルして、LDIF ファイル内に保存できるようにします。
slapdn利用可能なスキーマ構文を基に、識別名 (DN) の一覧をチェックできるようにします。
slapindex現在の内容を基に、slapd ディレクトリーのインデックスを再構築できるようにします。設定ファイル内のインデックスオプションを変更する時は常にこのユーティリティーを実行します。
slappasswd暗号化されたユーザーパスワードを作成できるようにします。このパスワードは、ldapmodify ユーティリティーと共に、または slapd 設定ファイル内で使用できます。
slapschema対応するスキーマとのデータベースの整合性をチェックできるようにします。
slaptestLDAP サーバーの設定をチェックできるようにします。
これらのユーティリティーとその使用方法の詳しい説明については、 「インストールされているドキュメント」 にある各 man ページを参照してください。

重要

slapadd が実行可能なのは root のみですが、slapd サービスは ldap ユーザーとして実行します。このため、ディレクトリーサーバーは slapadd によって作成されたファイルは修正することができません。この問題を解決するには、slapdadd ユーティリティーの実行後に、シェルプロンプトで以下を入力します。
~]# chown -R ldap:ldap /var/lib/ldap

警告

データの整合性を維持するために、slapaddslapcatslapindex を使用する前に slapd サービスを停止します。シェルプロンプトで以下を入力します:
~]# systemctl stop slapd.service
slapd サービスの起動、停止、再起動および現在のステータスの確認を行う方法の詳細については、「OpenLDAP サーバーの実行」 を参照してください。

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

openldap-clients パッケージは、LDAP ディレクトリー内のエントリーを追加/修正/削除するために使用できる以下のユーティリティーをインストールします。

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

コマンド詳細
ldapaddファイルまたは標準入力からエントリーを LDAP ディレクトリーに追加できるようにします。これは ldapmodify -a へのシンボリックリンクです。
ldapcompare任意の属性と LDAP ディレクトリーのエントリーを比較できるようにします。
ldapdeleteLDAP ディレクトリーからエントリーを削除できるようにします。
ldapexopLDAP の拡張操作を実行できるようにします。
ldapmodifyLDAP ディレクトリー内のエントリーをファイルまたは標準入力から修正できるようにします。
ldapmodrdnLDAP ディレクトリーエントリーの RDN 値を修正できるようにします。
ldappasswdLDAP ユーザー用のパスワードを設定/変更できるようにします。
ldapsearchLDAP ディレクトリーエントリーを検索できるようにします。
ldapurlLDAP URL を生成/分解できるようにします。
ldapwhoamiLDAP サーバー上で whoami 操作を実行できるようにします。
ldapsearch は例外ですが、これらのユーティリティーをより簡単に利用するには、LDAP ディレクトリー内で変更を加えるエントリーごとにコマンドを入力するのではなく、変更が含まれるファイルを参照します。このようなファイルの形式は、各ユーティリティーの man ページに要約されています。

9.2.2.3. 一般的な LDAP クライアントアプリケーションの概要

サーバー上のディレクトリーを作成/修正できるグラフィカルな LDAP クライアントは各種存在しますが、どれも Red Hat Enterprise Linux には含まれていません。読み取り専用モードでディレクトリーにアクセスできる人気のアプリケーションとしては、Mozilla ThunderbirdEvolutionEkiga があります。

9.2.3. OpenLDAP サーバーの設定

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

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

パス詳細
/etc/openldap/ldap.confOpenLDAP ライブラリーを使用するクライアントアプリケーション用の設定ファイルです。これには 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 のオプション

オプション詳細
bind_v2LDAP バージョン 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 のオプション

オプション詳細
bind_anon匿名バインド要求の受け入れを無効にします。
bind_simple簡易バインド認証のメカニズムを無効にします。
tls_2_anonSTARTTLS コマンドの受け取り時に、匿名セッションの強制を無効にします。
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. 監視のバックエンド

/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif ファイルは、OpenLDAP 監視バックエンドを制御します。有効な場合には、このファイルは OpenLDAP により自動的に生成され、デーモンの実行状況に関する情報で動的に更新されます。サフィックスは cn=Monitor で、変更できません。詳細情報は slapd-monitor(5) の man ページを参照してください。

9.2.3.4. データベース固有の設定

OpenLDAP サーバーはデフォルトで、 hdb データベースのバックエンドを使用します。OpenLDAP サーバーは、サブツリーの名前変更をサポートする階層データベースのレイアウトを使用しているのに加え、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 により使用されるスキーマを拡張することができます。ただし、このタスクは本章の範囲外です。このトピックの詳細については、http://www.openldap.org/doc/admin/schema.html を参照してください。

9.2.3.6. セキュアな接続の確立

OpenLDAP スイートとサーバーは、Transport Layer Security (TLS) フレームワークを使用することでセキュリティー保護ができます。TLS は、ネットワーク上の通信セキュリティーを提供するように設計された暗号化プロトコルです。Red Hat Enterprise Linux 7 の OpenLDAP スイートは、OpenSSL を TLS 実装として使用します。
TLS を使用して安全な接続を確立するには、必要な証明書を獲得します。そして、クライアントとサーバーの両方で多くのオプションを設定する必要があります。少なくとも、認証局 (CA) の証明書とそれ自体のサーバー証明書および秘密鍵で、サーバーを設定する必要があります。クライアントは、信頼できる CA 証明書すべてを含むファイル名で設定する必要があります。
サーバーは通常、1 つの 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 ファイルを編集し、ldaps:/// 文字列を SLAPD_URLS ディレクティブで指定された URL の一覧に追加します。
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
pathslapd サービスのサーバー証明書ファイルへのパスに置き換えます。
olcTLSCertificateKeyFile
olcTLSCertificateKeyFile ディレクティブは、olcTLSCertificateFile で指定されたファイルに保存されている証明書に適合する秘密鍵を含むファイルを指定します。現在の実装では秘密鍵の暗号化はサポートされていないことから、この鍵を含むファイルは十分に保護される必要があることに注意してください。ディレクティブは以下の形式になります。
olcTLSCertificateKeyFile: path
path を秘密鍵ファイルへのパスに置き換えます。
クライアント設定
以下のディレクティブを、クライアントシステム上の /etc/openldap/ldap.conf 設定ファイルで指定します。これらのディレクティブのほとんどは、サーバー設定オプションと並行するものです。/etc/openldap/ldap.conf 内のディレクティブは、システム全体ベースで設定されていますが、個別のユーザーは ~/.ldaprc ファイルでこれを上書きすることができます。
SSL 接続を確立するには同じディレクティブを使用できます。ldapsearch などの OpenLDAP コマンドでは、ldap:// ではなく ldaps:// 文字列を使用する必要があります。これにより、コマンドはサーバーで設定される SSL のデフォルトポートであるポート 636 を使用するように強制されます。
TLS_CACERT
TLS_CACERT ディレクティブは、クライアントが認識するすべての CA 証明書を格納しているファイルを指定します。これは、サーバー上の olcTLSCACertificateFile ディレクティブに相当します。TLS_CACERT は常に、/etc/openldap/ldap.conf 内の TLS_CACERTDIR の前に指定されなければなりません。ディレクティブの形式は以下のとおりです。
TLS_CACERT path
path を CA 証明書ファイルへのパスに置き換えます。
TLS_CACERTDIR
TLS_CACERTDIR ディレクティブは、個別ファイルにある CA 証明書を含むディレクトリーへのパスを指定します。サーバー上の 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 では、いくつかの複製モードが使用可能で、なかでも重要なのは mirrorsync です。OpenLDAP 複製モードに関する詳細情報は、openldap-servers パッケージとインストールされる OpenLDAP Software Administrator's Guide を参照してください (「インストールされているドキュメント」 を参照)。
選択した複製モードを有効にするには、プロバイダーとコンシューマーの両方の /etc/openldap/slapd.d/ で、以下のディレクティブのいずれかを使用します。
olcMirrorMode
olcMirrorMode ディレクティブは、mirror 複製モードを有効にします。以下の形式になります。
olcMirrorMode on
このオプションは、プロバイダーとコンシューマーの両方で指定する必要があります。また、serverIDsyncrepl オプションで指定する必要もあります。OpenLDAP Software Administrator's Guide18.3.4. MirrorMode セクションにある詳細例を参照してください (「インストールされているドキュメント」 を参照)。
olcSyncrepl
olcSyncrepl ディレクティブは、sync 複製モードを有効にします。以下の形式になります。
olcSyncrepl on
sync 複製モードは、プロバイダーとコンシューマーの両方で特定の設定が必要になります。この設定は、OpenLDAP Software Administrator's Guide18.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 での認証を可能にするには、allow_ypbind SELinux ブール値を有効にする必要があります。このシナリオの一部のアプリケーションでは、有効にされた authlogin_nsswitch_use_ldap ブール値も必要になります。以下のコマンドを実行してこのブール値を有効にしてください。
~]# setsebool -P allow_ypbind=1
~]# setsebool -P authlogin_nsswitch_use_ldap=1
-P オプションは、システムの再起動時にこの設定を永続化します。SELinux についての詳細情報は、『Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド』を参照してください。

9.2.5. OpenLDAP サーバーの実行

本セクションでは、Standalone LDAP Daemon の起動、停止、再起動、現行ステータスの確認方法を説明しています。システムサービス全般の詳細情報については、『システム管理者のガイド』 の 「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. その他のリソース

以下のリソースは、LDAP (Lightweight Directory Access Protocol) に関するさらなる情報を提供します。システムに LDAP を設定する前に、以下の資料、特に 『OpenLDAP Software Administrator's Guide (OpenLDAP ソフトウェア管理者ガイド)』 を確認することを強く推奨します。

インストールされているドキュメント

以下のドキュメントは、openldap-servers パッケージでインストールされます。
  • /usr/share/doc/openldap-servers-version/guide.html — 『OpenLDAP Software Administrator's Guide』 のコピー。
  • /usr/share/doc/openldap-servers-version/README.schema — インストールされているスキーマファイルが含まれる README ファイル。
さらに、openldapopenldap-serversopenldap-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) — LDIF ファイルを slapd データベースから生成するために使用されるコマンドラインオプションについて説明しています。
  • slapindex(8C)slapd データベースのコンテンツに基づいてインデックスを再生成するために使用されるコマンドラインオプションについて説明しています。
  • slappasswd(8C) — LDAP ディレクトリーのユーザーパスワードを生成するために使用されるコマンドラインオプションについて説明しています。
設定ファイル
  • ldap.conf(5)ldap.conf ファイルの man ページで、LDAP クライアントの設定ファイル内で利用可能なフォーマットおよびオプションについて説明しています。
  • slapd-config(5)/etc/openldap/slapd.d 設定ディレクトリー内で利用可能なフォーマットおよびオプションについて説明しています。

その他のリソース