大事な連休をつぶして CentOS 6.2 を使って LDAP 認証環境を設定した。
今回は、Apache Directory Server + sssd の組み合わせでチャレンジした。
【LDAPサーバ設定】
まず、LDAP サーバだが絶対 OpenLDAP を使いたくなかった。とにかくここ数年間、敗北し続けてきたからだ。google で検索すると、ハマった人が書いたと思しき野良情報が数多く引っかかる。野良情報が多いということは、オリジナルのソフトウェアとマニュアルが熟れてないということだ。fedora ds も野良情報が多いので選択しなかった。
そこで今回選択したのは Apache Directory Server だ。
Apache Directory Server には最初からよく使われるスキーマが登録されている。とにかくインストールするとすぐに使える状態になっているのが良い。nis.schema など一部のスキーマは初期状態では disable となっているので、Apache Directory Studio で cn=nis,ou=schema を開き、m-disable: にFALSE を設定すればよい。
さらに、Apache Directory Studio が良くできていて使いやすい。GUI だけでなく、LDIF ファイルの import/export をサポートしていることがいい。ユーザ登録はここから行った。
困ったことは、Apache DS のホームページで提供されている Documents でほぼ困らなかった。ここでホームページ制作についてはまかなえそうだ。
Apache Project が提供しているソフトウェアは押しなべて出来が良い。
あと、サーバホストの名前を wins で解決できるようにした。
【LDAPクライアント設定】
CentOS 6.2 の nsswitch.conf を見ると、passwd, shadow, group に sss が使われている。
pam_ldap を捨てて新しいものを導入したらしい。ちなみにこいつも野良情報が多い。 system-config-authentication も sssd の設定ができるようになっている。しかし system-config-authentication の設定だけでは、 Apache DS とはつながらなかった。 Apache DS と sssd の間は StartTLS で接続する。
sssd.conf の[domain/default] の設定は以下の通り。
[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
enumerate = True
cache_credentials = True
ldap_search_base = dc=nsdhome,dc=local
krb5_realm = EXAMPLE.COM
id_provider = ldap
#ldap_uri = ldap://192.168.0.24:10389
ldap_uri = ldap://ldap:10389
krb5_kdcip = kerberos.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_reqcert = allow
system-config-authentication で作成したときのゴミも入っているが現状をとりあえず記録しておく。
とにかく StartTLS の設定がよくわからなかったので sssd -i -d 10 でデバッグメッセージを読みながら進めた。
ldapsearch を使うためには以下の設定が必要。
/etc/openldap/ldap.conf
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
URI ldap://ldap:10389
BASE dc=nsdhome,dc=local
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT allow
/etc/ldap.conf
base dc=nsdhome,dc=local
#uri ldap://ldap:10389
uri ldap://ldap:10389
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
bind_policy soft
こちらも wins でホスト名が解決できるようにしておく必要がある。
これでようやく OpenLDAP に時間をつぶされることがなくなると思うと清々しい。
この後、 autofs のマップ登録、pxeboot設定、inifiband の実験と続くのだ。