そろそろLDAPにしてみないか?

第18回 OpenLDAPとSASL

この記事を読むのに必要な時間:およそ 2 分

Postfix SMTP AuthとSASL

OpenLDAP側でSASL設定を行っておくことにより,Cyrus-SASLのldapdbプラグインを利用することができるようになります。このプラグインは以前にも紹介したよう,FDSでは対応していないSASLプロキシ設定を行っておかなければなりません。

この概念としては,PostfixからロードされるSASLライブラリがプロキシアカウントであるproxyuserでLDAPサーバに接続し,そのproxyuserが代理で実際のユーザを検索しパスワードを照合する,といったイメージになります。そのため,次のようにプロキシ用のアカウントをLDAP上に登録しておきます。

今までとの違いは,saslAuthzTo属性です。この設定によって,proxyuserがuid=.*,ou=People,dc=example,dc=com以下から照合を行うことができるようになります。

リスト3 proxyuserアカウントの登録

dn: uid=proxyuser,ou=People,dc=example,dc=com 
objectClass: inetOrgPerson 
sn: proxyuser 
cn: proxyuser 
uid: proxyuser 
userPassword: proxy_passwd 
saslAuthzTo: dn.regex: uid=.*,ou=People,dc=example,dc=com 

また,saslAuthzTo属性を有効にするため,slapd.confには

sasl-authz-policy To 

を加えるとともに,proxyuserアカウントが実ユーザのパスワードを検索できるよう,

access to * 
  by self write 
  by dn="uid=proxyuser,ou=People,dc=example,dc=com" write 
  by * read 

といったACLを設定しておきます。あとはSMTP Auth用にsmtpd.confを作成します。

リスト4 /usr/lib/sasl2/smtpd.conf

pwcheck_method: auxprop 
auxprop_plugin: ldapdb 
ldapdb_uri: ldap://localhost 
ldapdb_id: proxyuser 
ldapdb_pw: proxy_passwd 
ldapdb_mech: DIGEST-MD5 
mech_list: LOGIN PLAIN CRAM-MD5 DIGEST-MD5 

駆け足になりましたが,これでsaslauthdを使わずLDAP認証が可能となりましたので,telnetコマンドなどで動作を確認してみてください。

最後に

OpenLDAPには以前紹介したSSLや今回紹介したようなSASLのように,さまざまな暗号化手法が用意されています。どのような手法を選択するかはユーザ次第となりますが,SSLを有効にした上でSASL認証を行ってもあまり意味が無さそうですし,LDAPのメリットである「高速な検索」が暗号化,復号化処理の負荷により失われてしまうかもしれません。

また,LDAPサーバ,クライアントはデータセンターなどの閉鎖的なネットワークに存在することも多く,このような場合にも通信経路を暗号化させる意味はそれほど無いでしょう。そのため,SSLやSASLを有効にする場合には,サーバとクライアントの経路,登録されているデータの機密性など考慮した上で適切な設定を行ってください。

たとえばインターネット越しにLDAP検索を行う場合でも,すでに経路がVPNなどで暗号化されていれば,通常SSLの必要もありません。ただし,検索速度を犠牲にしてでも二重,三重の暗号化を検討したいのであれば,それもまた自由です。

2008年最後の記事となってしまいましたが,来年もよろしくおつきあいください。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。