とある業務で導入検討をして、およそ一カ月程度えらく苦戦したので
メモ書き程度にまとめてみる。
なお、1台のPCでサーバ兼クライアントを実現する必要最低限の設定を記載する。
今回サーバとして機能させるLinuxのディストリビューションは、openSUSEである。
Ubuntuなどどは違いかなり情報は少ない。
よって、初心者向けではないことは確かだろう。
このカメレオンの名はGeeko(ギーコ)である。
正直、なぜこれを使わなければならないかは、ちっとも分かっていない。
もしかして、その方面ではスタンダードなのか!?
とりあえず、現時点の最新版12.3をゲットする。
http://software.opensuse.org/123/ja
余分なハードは持ち合わせていないので、VMwareから起動することにした。
完了までかなり不安になるぐらい時間がかかるが、無事に立ち上がった。
なお、一度リポジトリにアクセスしてアップデートしておくといいかもしれない。
これから必要なソフトウェアを追加する。
1. セキュアな通信には欠かせないOpenSSL
公式サイトから、現時点の一番新しいヤツ(1.0.1e)をいただく。
http://www.openssl.org/source/openssl-1.0.1e.tar.gz
解凍およびインストールを行う。 (オプションはお好みで)
# tar zxvf openssl-1.0.1e.tar.gz
# cd openssl-1.0.1e
# ./Configure --prefix=/usr/local shared
# make
# make install
珍しく特にハマるようなことがなかったので次のステップへ
2. OpenLDAP導入には必須となるBerkeley DB
公式サイトから、現時点の一番新しいヤツをいただくと、あとで失敗する。
実はOpenLDAPのREADMEにはこっそりと、但し書きがある。
... require Oracle Berkeley DB 4.4 - 4.8, or 5.0 - 5.1.
どうもバージョンを気にするようなので、いくつか試してみたところ
4.8 だと、後のOpenLDAPの設定もうまくいった。
http://www.oracle.com/technetwork/jp/database/berkeleydb/downloads/index-090620-ja.html
解凍およびインストール。
configureコマンド実行がちょっと変わっている点を除いては、特に問題ない。
# tar zxvf db-4.8.30.tar.gz
# cd db-4.8.30/build_unix
# ../dist/configure --prefix=/usr/local
# make
# make install
次はいよいよOpenLDAP^^
3. OpenLDAP本体
公式サイトから、現時点の一番新しいヤツ(2.4.36)をいただく。
ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.36.tgz
解凍およびインストール。
configure時のBerkeleyのバージョン問題はクリア、後で使うTLSも有効になっており問題なし。
そして言われたとおりに、make dependを行う。
# tar zxvf openldap-2.4.36.tgz
# cd openldap-2.4.36
# ./configure --prefix=/usr/local
# make depend
# make
# make install
では、設定の方に取り掛かる。
4. DB設定ファイルの準備
Berkeley DBを使うことになっているので、基本設定ファイルを配置しておく。
修正する必要はないが、存在しないとslapdがうまく起動しなかったような...
# cp /usr/local/etc/openldap/DB_CONFIG.example /usr/local/var/openldap-data/DB_CONFIG
5. 起動スクリプト設定
とりあえず、簡単なのがあるのでこの辺りからいただく。
必要に応じて修正する。今回の流れではslapdのパスが違った...
http://unixservermemo.web.fc2.com/sv/opldap-startscript.htm
/etc/init.d/slapd として保存する。また、自動起動設定を行っておく。
# chkconfig -add slapd
# chkconfig slapd on
6. slapd.conf設定
/usr/local/etc/openldap/slapd.conf にユーザ認証用スキーマを2つ追加
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
7. ldap.conf設定
/usr/local/etc/openldap/lapd.conf にldapコマンドを実行するための設定を記載
BASE dc=my-domain,dc=com
URI ldap://127.0.0.1
8. ログファイルの設定
/etc/rsyslog.conf に slapd.log を出力するよう修正
local4.* -/var/log/slapd.log
設定が終わったら、再起動する service rsyslog restart
9. slapdを起動し、ログ出力を確認
# /etc/init.d/slapd start
/var/log/slapd.logには例えばこのような出力があるはずだ
2013-10-22T00:02:17.577623-4:00 linux-9rc6 slapd[6068] slapd starting
10. エントリ登録
このユーザは後で、ログインのテストの時も使用する。
以下の内容のファイルを用意し、ldaptest.ldif として保存。
先のslapd.confでもそうだったが、パスワードが平文である。
もちろん実運用ではきちんと暗号化する必要がある。
dn: dc=my-domain,dc=com
objectClass: dcObject
objectClass: organization
dc: my-domain
o: my-domain
dn: ou=People,dc=my-domain,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=my-domain,dc=com
objectClass: organizationalUnit
ou: Group
dn: uid=test3,ou=People,dc=my-domain,dc=com
objectClass: account
objectClass: posixAccount
uid: test3
cn: test3
userPassword: test123
loginShell: /bin/bash
uidNumber: 2013
gidNumber: 2013
homeDirectory: /home/test3
ldapaddコマンドで一気に登録する。
# ldapadd -x -w secret -D "cn=Manager,dc=my-domain,dc=com" -f ldaptest.ldif
ちなみに削除したいときはこのような感じになる。
ldapdelete -w secret -D "cn=Manager,dc=my-domain,dc=com" "ou=Group,dc=my-domain,dc=com"
削除順には気をつける。今回の場合はtest3, Group, People, my-domainの順で削除可。
一気に全削除とか、いきなりdc=my-domain,dc=comは消すといったことはできない。
11. 登録したエントリはldapsearchで確認できる
# ldapsearch -x
どんどん長くなってきたので、ここらで分けるか...