考えておこう! OpenLDAPのセキュリティ設定OpenLDAPで始めるディレクトリサーバ構築(4)(3/3 ページ)

» 2009年01月21日 00時00分 公開
[菊池研自伊藤忠テクノソリューションズ株式会社]
前のページへ 1|2|3       

SASLを用いた通信経路の暗号化

 ここまでに、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
dn:

# yum install cyrus-sasl-md5
# service ldap restart
# ldapsearch -x -b "" -s base -LLL supportedSASLMechanisms

dn:
supportedSASLMechanisms: CRAM-MD5            ← CRAM-MD5とDIGEST-MD5
supportedSASLMechanisms: DIGEST-MD5             暗号方式が利用可能になった

注3:http://www.openldap.org/doc/admin24/sasl.html

注4:DIGEST-MD5暗号方式を用いてSASL認証を行うためには、このcyrus-sals-md5パッケージをLDAPサーバおよびLDAPクライアントとなる両ホストにインストールする必要があります。


DIGEAST-MD5、ディレクトリデータベースを利用する場合

 DIGEST-MD5で利用するパスワードは、OpenLDAPサーバの管理するディレクトリデータベースで直接管理できるほか、SASLデータベースに保持することができます。OpenLDAPで直接管理する場合は、登録するエントリのuserPassword属性を利用します。

# vi /tmp/1.tmp
dn: uid=test,ou=People,dc=my-domain,dc=com
objectClass: Person
objectClass: inetOrgPerson
uid: test
cn: test
sn: test
userPassword: password        ←登録するパスワードは、平文である必要があります

# ldapadd -x -D cn=Manager,dc=my-domain,dc=com -w secret -f /tmp/1.tmp

そして、slapd.conf ファイルのグローバルセクションには次の設定を行います。

# vi /etc/openldap/slapd.conf
……[略]……
sasl-realm        my-domain.com        ←SASL認証で利用するレルムを指定
sasl-host         localhost            ←SASL認証で利用するホストを指定
authz-regexp                           ←SASL認証で利用識別名をDN名に変換
        uid=([^,]*),cn=my-domain.com,cn=DIGEST-MD5,cn=auth
        uid=$1,ou=People,dc=my-domain,dc=com
password-hash     {CLEARTEXT}          ←userPassword属性を平文とすることを指定

 設定後はLDAPサーバを再起動し、簡易認証を意味する「-x」オプションを付与せずに、「-Y」オプションで認証機構と「-U」オプションでユーザー名を指定し、SASL認証が行われることを確認しましょう。以下のように、DIGEST-MD5でのSASL認証が行われている旨のメッセージが表示され、さらにネットワーク上ではチャレンジ&レスポンスのメッセージ交換後に暗号化通信が開始されているはずです。

# service ldap restart
# ldapsearch -Y DIGEST-MD5 -U test -w password uid=test -LLL

SASL/DIGEST-MD5 authentication started
SASL username: test
SASL SSF: 128
SASL installing layers
dn: uid=test,ou=People,dc=my-domain,dc=com
……[略]……

DIGEAST-MD5、SASLデータベースを利用する場合

 OpenLDAPサーバの管理するバックエンドデータベースにパスワードを保存するのではなく、別途SASLデータベースを用意してパスワードを保管する方式を選択した場合は、SASLデータベースの設定が必要です。ここでは、SASLのレルムに「my-domain.com」を指定し、test1ユーザーとそのパスワードを設定します。

# saslpasswd2 -c -u my-domain.com test1    ←レルムを指定して、ユーザーを作成
Password: password
Again (for verification): password

# sasldblistusers2                         ←作成したユーザーを確認
test1@my-domain.com: userPassword

# chgrp ldap /etc/sasldb2                  ←OpenLDAPにSASL DBの参照を許可

 以降のパスワード管理は、saslpassword2コマンドを利用してSASLデータベース上で行うことになるので、slapd.confファイルの「password-hash」ディレクティブは不要になります。

# vi /etc/openldap/slapd.conf
……[略]……
sasl-realm    my-domain.com        ← SASL認証で利用するレルム(領域)を指定
sasl-host     localhost            ← SASL認証で利用するホストを指定
authz-regexp                       ← SASL認証で利用する識別名をDN名に変換
        uid=([^,]*),cn=my-domain.com,cn=DIGEST-MD5,cn=auth
        uid=$1,ou=People,dc=my-domain,dc=com

# service ldap restart

 また今回は、SASLデータベースにパスワードを登録しましたので、以下のuserPassword属性を含まないテスト用ユーザーであるtest1のエントリを登録しておきます。

# vi /tmp/2.tmp
dn: uid=test1,ou=People,dc=my-domain,dc=com
objectClass: Person
objectClass: inetOrgPerson
uid: test1
cn: test1
sn: test1

# ldapadd -x -D cn=Manager,dc=my-domain,dc=com -w secret -f /tmp/2.tmp

 エントリの登録後は、test1ユーザーでSASL認証を実行しましょう。SASLデータベース上のユーザー名とパスワードで照合が行われ、次のような結果が返るはずです。

# ldapsearch -Y DIGEST-MD5 -U test1 -w password uid=test1 -LLL
SASL/DIGEST-MD5 authentication started
SASL username: test1
SASL SSF: 128
SASL installing layers
dn: uid=test1,ou=People,dc=my-domain,dc=com
……[略]……

 今回は、OpenLDAPで利用可能なセキュリティ設定を説明してきました。いかがでしたでしょうか。安全なディレクトリサーバ運用を実現するには、運用環境に応じて、こうした設定を適切に行うことが必要になります。

 次回は、OpenLDAPの可用性を高めたり、負荷分散を実現するレプリケーション機能について説明します。


 

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。