ここまでに、SSL/TLSを用いて通信経路を暗号化する方法を説明しました。OpenLDAPの通信経路の暗号化には、SSL/TLSを用いるほか、SASLを用いることもできます。SASLは、認証に必要な情報のやりとりにセキュリティ層を確立しますが、その後のアプリケーションレベルでの通信においても暗号化を継続します。
このSASLには多くの認証機構が提供されており、OpenLDAPのページ(注3)にはGSSAPI/KerberosVを利用する方法、DIGEST-MD5を利用する方法などが紹介されています。今回はGSSAPI/KerberosVの設定に比べて比較的簡単なDIGEST-MD5を利用する方法を基本設定の範囲で説明していきます。
DIGEST-MD5は、CentOSのデフォルトインストールでは含まれませんので、まずは、cyrus-sals-md5パッケージをインストールし、OpenLDAPを再起動しておきましょう(注4)。
# ldapsearch -x -b "" -s base -LLL supportedSASLMechanisms |
注3:http://www.openldap.org/doc/admin24/sasl.html
注4:DIGEST-MD5暗号方式を用いてSASL認証を行うためには、このcyrus-sals-md5パッケージをLDAPサーバおよびLDAPクライアントとなる両ホストにインストールする必要があります。
DIGEST-MD5で利用するパスワードは、OpenLDAPサーバの管理するディレクトリデータベースで直接管理できるほか、SASLデータベースに保持することができます。OpenLDAPで直接管理する場合は、登録するエントリのuserPassword属性を利用します。
# vi /tmp/1.tmp |
そして、slapd.conf ファイルのグローバルセクションには次の設定を行います。
# vi /etc/openldap/slapd.conf |
設定後はLDAPサーバを再起動し、簡易認証を意味する「-x」オプションを付与せずに、「-Y」オプションで認証機構と「-U」オプションでユーザー名を指定し、SASL認証が行われることを確認しましょう。以下のように、DIGEST-MD5でのSASL認証が行われている旨のメッセージが表示され、さらにネットワーク上ではチャレンジ&レスポンスのメッセージ交換後に暗号化通信が開始されているはずです。
# service ldap restart |
OpenLDAPサーバの管理するバックエンドデータベースにパスワードを保存するのではなく、別途SASLデータベースを用意してパスワードを保管する方式を選択した場合は、SASLデータベースの設定が必要です。ここでは、SASLのレルムに「my-domain.com」を指定し、test1ユーザーとそのパスワードを設定します。
# saslpasswd2 -c -u my-domain.com test1 ←レルムを指定して、ユーザーを作成 |
以降のパスワード管理は、saslpassword2コマンドを利用してSASLデータベース上で行うことになるので、slapd.confファイルの「password-hash」ディレクティブは不要になります。
# vi /etc/openldap/slapd.conf |
また今回は、SASLデータベースにパスワードを登録しましたので、以下のuserPassword属性を含まないテスト用ユーザーであるtest1のエントリを登録しておきます。
# vi /tmp/2.tmp |
エントリの登録後は、test1ユーザーでSASL認証を実行しましょう。SASLデータベース上のユーザー名とパスワードで照合が行われ、次のような結果が返るはずです。
# ldapsearch -Y DIGEST-MD5 -U test1 -w password uid=test1 -LLL |
今回は、OpenLDAPで利用可能なセキュリティ設定を説明してきました。いかがでしたでしょうか。安全なディレクトリサーバ運用を実現するには、運用環境に応じて、こうした設定を適切に行うことが必要になります。
次回は、OpenLDAPの可用性を高めたり、負荷分散を実現するレプリケーション機能について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.