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] dn: distinguished_name attribute_type: attribute_value… attribute_type: attribute_value… …Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意の 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…
yum install package…
たとえば、基本的な LDAP サーバーインストールを実行するには、シェルプロンプトで以下を入力します。
yum install openldap openldap-clients openldap-servers
~]# 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
~]# chown -R ldap:ldap /var/lib/ldap
警告
データの整合性を保持するには、slapadd、slapcat、または slapindex を使用する前に
slapd サービスを停止します。これを行うには、シェルプロンプトで以下を実行できます。
systemctl stop slapd.service
~]# 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/
~]# 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…
olcAllows: feature…Copy to Clipboard Copied! Toggle word wrap Toggle overflow 表9.6「利用可能なolcAllowsオプション」 に記載されている、スペースで区切られた機能のリストを受け入れます。デフォルトオプションはbind_v2です。Expand 表9.6 利用可能な olcAllows オプション オプション Description bind_v2LDAP バージョン 2 バインド要求の受け入れを有効にします。 bind_anon_cred識別名 (DN) が空でない場合は匿名バインドを有効にします。 bind_anon_dn識別名 (DN) が空 でない 場合は匿名バインドを有効にします。 update_anon匿名更新操作の処理を有効にします。 proxy_authz_anon匿名プロキシーの承認制御の処理を有効にします。 例9.1
olcAllowsディレクティブの使用olcAllows: bind_v2 update_anon
olcAllows: bind_v2 update_anonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcConnMaxPending olcConnMaxPendingディレクティブを使用すると、匿名セッションの保留中の要求の最大数を指定できます。以下の形式を取ります。olcConnMaxPending: number
olcConnMaxPending: numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトオプションは100です。例9.2
olcConnMaxPendingディレクティブの使用olcConnMaxPending: 100
olcConnMaxPending: 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcConnMaxPendingAuth olcConnMaxPendingAuthディレクティブを使用すると、認証されたセッションの保留中のリクエストの最大数を指定できます。以下の形式を取ります。olcConnMaxPendingAuth: number
olcConnMaxPendingAuth: numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトオプションは1000です。例9.3
olcConnMaxPendingAuthディレクティブの使用olcConnMaxPendingAuth: 1000
olcConnMaxPendingAuth: 1000Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcDisallows olcDisallowsディレクティブを使用すると、無効にする機能を指定できます。以下の形式を取ります。olcDisallows: feature…
olcDisallows: feature…Copy to Clipboard Copied! Toggle word wrap Toggle overflow 表9.7「利用可能なolcDisallowsオプション」 に記載されている、スペースで区切られた機能のリストを受け入れます。デフォルトでは、機能は無効になりません。Expand 表9.7 利用可能な olcDisallows オプション オプション Description bind_anon匿名バインド要求の受け入れを無効にします。 bind_simple簡単なバインド認証メカニズムを無効にします。 tls_2_anonSTARTTLS コマンドを受け取ると、匿名セッションの強制を無効にします。 tls_authc認証時に STARTTLS コマンドを許可しません。 例9.4
olcDisallowsディレクティブの使用olcDisallows: bind_anon
olcDisallows: bind_anonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcIdleTimeout olcIdleTimeoutディレクティブを使用すると、アイドル状態の接続を閉じる前に待機する秒数を指定できます。以下の形式を取ります。olcIdleTimeout: number
olcIdleTimeout: numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow このオプションは、デフォルトでは無効になっています (つまり0に設定されます)。例9.5
olcIdleTimeoutディレクティブの使用olcIdleTimeout: 180
olcIdleTimeout: 180Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcLogFile olcLogFileディレクティブを使用すると、ログメッセージを書き込むファイルを指定できます。以下の形式を取ります。olcLogFile: file_name
olcLogFile: file_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow ログメッセージはデフォルトで標準エラーに書き込まれます。例9.6
olcLogFileディレクティブの使用olcLogFile: /var/log/slapd.log
olcLogFile: /var/log/slapd.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcReferral olcReferralオプションでは、サーバーがこれを処理できない場合に、要求を処理するサーバーの URL を指定できます。以下の形式を取ります。olcReferral: URL
olcReferral: URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow このオプションはデフォルトで無効になっています。例9.7
olcReferralディレクティブの使用olcReferral: ldap://root.openldap.org
olcReferral: ldap://root.openldap.orgCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcWriteTimeout olcWriteTimeoutオプションでは、未処理の書き込み要求との接続を閉じる前に待機する秒数を指定できます。以下の形式を取ります。olcWriteTimeout
olcWriteTimeoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow このオプションは、デフォルトでは無効になっています (つまり0に設定されます)。例9.8
olcWriteTimeoutディレクティブの使用olcWriteTimeout: 180
olcWriteTimeout: 180Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
# man slapd-hdb
注記
bdb バックエンドおよび hdb バックエンドは非推奨になりました。代わりに、新規インストールに mdb バックエンドを使用することを検討してください。
以下のディレクティブは、データベース固有の設定で一般的に使用されます。
-
olcReadOnly olcReadOnlyディレクティブを使用すると、データベースを読み取り専用モードで使用できます。以下の形式を取ります。olcReadOnly: boolean
olcReadOnly: booleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow TRUE(読み取り専用モードを有効) またはFALSE(データベースの変更を有効) のいずれかを受け入れます。デフォルトのオプションはFALSEです。例9.9
olcReadOnlyディレクティブの使用olcReadOnly: TRUE
olcReadOnly: TRUECopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcRootDN olcRootDNディレクティブを使用すると、LDAP ディレクトリー上の操作に設定されたアクセス制御または管理制限パラメーターが無制限のユーザーを指定できます。以下の形式を取ります。olcRootDN: distinguished_name
olcRootDN: distinguished_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 識別名 (DN) を受け入れます。デフォルトのオプションはcn=Manager,dn=my-domain,dc=comです。例9.10
olcRootDNディレクティブの使用olcRootDN: cn=root,dn=example,dn=com
olcRootDN: cn=root,dn=example,dn=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcRootPW olcRootPWディレクティブを使用すると、olcRootDNディレクティブを使用して指定されるユーザーのパスワードを設定できます。以下の形式を取ります。olcRootPW: password
olcRootPW: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow プレーンテキストの文字列またはハッシュのいずれかを指定できます。ハッシュを生成するには、シェルプロンプトで以下を入力します。slappaswd
~]$ slappaswd New password: Re-enter new password: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例9.11
olcRootPWディレクティブの使用olcRootPW: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxDolcRootPW: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxDCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
olcSuffix olcSuffixディレクティブでは、情報を提供するドメインを指定できます。以下の形式を取ります。olcSuffix: domain_name
olcSuffix: domain_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 完全修飾ドメイン名 (FQDN) を受け入れます。デフォルトのオプションはdc=my-domain,dc=comです。例9.12
olcSuffixディレクティブの使用olcSuffix: dc=example,dc=com
olcSuffix: dc=example,dc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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
olcTLSCACertificateFile: pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow path を、CA 証明書ファイルへのパスに置き換えます。-
olcTLSCACertificatePath olcTLSCACertificatePathディレクティブは、個別の CA 証明書が含まれるディレクトリーへのパスを指定します。このディレクトリーは、実際の証明書ファイルを参照するハッシュ化された名前でシンボリックリンクを生成する OpenSSL c_rehash ユーティリティーで特別に管理する必要があります。通常、代わりにolcTLSCACertificateFileディレクティブを使用することが推奨されます。ディレクティブは以下の形式になります。olcTLSCACertificatePath: path
olcTLSCACertificatePath: pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow path を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。指定したディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。-
olcTLSCertificateFile olcTLSCertificateFileディレクティブは、slapdサーバー証明書を含むファイルを指定します。ディレクティブは以下の形式になります。olcTLSCertificateFile: path
olcTLSCertificateFile: pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow path を、slapdサービスのサーバー証明書ファイルへのパスに置き換えます。-
olcTLSCertificateKeyFile olcTLSCertificateKeyFileディレクティブは、olcTLSCertificateFileで指定されたファイルに保存された証明書に一致する秘密鍵が含まれるファイルを指定します。現在の実装は暗号化された秘密鍵に対応していないため、そのファイルが十分に保護されている必要があることに注意してください。ディレクティブは以下の形式になります。olcTLSCertificateKeyFile: path
olcTLSCertificateKeyFile: pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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.confのTLS_CACERTDIRの前に常に指定する必要があります。ディレクティブは以下の形式になります。TLS_CACERT path
TLS_CACERT pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow path を、CA 証明書ファイルへのパスに置き換えます。-
TLS_CACERTDIR TLS_CACERTDIRディレクティブは、別のファイルに認証局証明書が含まれるディレクトリーへのパスを指定します。サーバーのolcTLSCACertificatePathと同様に、指定されたディレクトリーは OpenSSL c_rehash ユーティリティーで管理する必要があります。TLS_CACERTDIR directory
TLS_CACERTDIR directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow directory を、CA 証明書ファイルを含むディレクトリーのパスに置き換えます。-
TLS_CERT TLS_CERTは、クライアント証明書が含まれるファイルを指定します。このディレクティブは、ユーザーの~/.ldaprcファイルでのみ指定できます。ディレクティブは以下の形式になります。TLS_CERT path
TLS_CERT pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow path を、クライアント証明書ファイルへのパスに置き換えます。-
TLS_KEY TLS_KEYは、TLS_CERTディレクティブで指定されたファイルに保存されている証明書に一致する秘密鍵が含まれるファイルを指定します。サーバーでolcTLSCertificateFileと同様に、暗号化された鍵ファイルはサポートされません。ファイル自体は注意して保護する必要があります。このオプションは、ユーザーの~/.ldaprcファイルでのみ設定できます。TLS_KEYディレクティブは以下の形式になります。TLS_KEY path
TLS_KEY pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
olcMirrorMode onCopy to Clipboard Copied! Toggle word wrap Toggle overflow このオプションは、プロバイダーとコンシューマーの両方で指定する必要があります。serverIDは、syncreplオプションと共に指定する必要があります。詳細は、18.3.4.OpenLDAP ソフトウェア管理ガイド の MirrorMode セクション (「インストールされているドキュメント」を参照)-
olcSyncrepl olcSyncreplディレクティブは、sync レプリケーションモードを有効にします。以下の形式を取ります。olcSyncrepl on
olcSyncrepl onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 同期のレプリケーションモードでは、プロバイダーとコンシューマーの両方に特定の設定が必要になります。この設定は、OpenLDAP ソフトウェア管理ガイド の 18.3.1. Syncrepl セクション (「インストールされているドキュメント」) を参照してください。
9.2.3.8. モジュールとバックエンドの読み込み リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
動的にロードされたモジュールを使用して
slapd サービスを強化できます。これらのモジュールのサポートは、slapd の設定時に --enable-modules オプションを使用して有効にする必要があります。モジュールは、拡張子が .la のファイルに保存されます。
module_name.la
module_name.la
LDAP 要求に対応して、バックエンド がデータを保存または取得します。バックエンドは、静的に
slapd にコンパイルするか、モジュールサポートが有効になっている場合は、動的に読み込むことができます。後者の場合は、以下の命名規則が適用されます。
back_backend_name.la
back_backend_name.la
モジュールまたはバックエンドを読み込むには、
/etc/openldap/slapd.d/ で以下のディレクティブを使用します。
-
olcModuleLoad olcModuleLoadディレクティブは、読み込むモジュール (動的に読み込み可能) を指定します。以下の形式を取ります。olcModuleLoad: module
olcModuleLoad: moduleCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、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 allow_ypbind=1
setsebool -P authlogin_nsswitch_use_ldap=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
~]# systemctl start slapd.service
システムの起動時にサービスが自動的に起動するように設定するには、
root で以下のコマンドを実行します。
systemctl enable slapd.service
~]# 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
~]# systemctl stop slapd.service
システムの起動時にサービスが自動的に起動しないようにするには、
root で以下を入力します。
systemctl disable slapd.service
~]# systemctl disable slapd.service
rm '/etc/systemd/system/multi-user.target.wants/slapd.service'
9.2.5.3. サービスの再起動 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
実行中の
slapd サービスを再起動するには、シェルプロンプトで以下を入力します。
systemctl restart slapd.service
~]# systemctl restart slapd.service
これにより、サービスが停止し、すぐに再起動します。以下のコマンドを使用して、設定を再読み込みします。
9.2.5.4. サービスステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
slapd サービスが実行していることを確認するには、シェルプロンプトで以下を入力します。
systemctl is-active slapd.service
~]$ systemctl is-active slapd.service
active
9.2.6. OpenLDAP を使用してシステムを認証するためのシステムの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
OpenLDAP を使用してシステムを認証するように設定するには、適切なパッケージが LDAP サーバーとクライアントマシンの両方にインストールされていることを確認してください。サーバーの設定方法は、「OpenLDAP スイートのインストール」 および 「OpenLDAP サーバーの設定」 の手順に従います。クライアントで、シェルプロンプトで以下を入力します。
yum install openldap openldap-clients nss-pam-ldapd
~]# yum install openldap openldap-clients nss-pam-ldapd
9.2.6.1. 以前の認証情報の LDAP 形式への移行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
migrationtools パッケージは、認証情報を LDAP 形式に移行するのに役立つシェルおよび Perl スクリプトのセットを提供します。このパッケージをインストールするには、シェルプロンプトで以下を入力します。
yum install migrationtools
~]# yum install migrationtools
これにより、スクリプトが
/usr/share/migrationtools/ ディレクトリーにインストールされます。インストールが完了したら、/usr/share/migrationtools/migrate_common.ph ファイルを編集し、以下の行を変更して正しいドメインを反映させます。
Default DNS domain Default base
# 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
~]# 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 を使用するように設定する方法に関する情報