CentOS5.4にOpenLDAPをインストールして設定などする

方針

yumで手っ取り早く入れる。
LDAPといえば、1 master + N slaves構成が有名だが、
まずはクライアントからのアクセスを受けてデータの参照・更新・作成・削除をするslapdのスタンドアローン構成でやってみる。
しかる後、masterサーバでslurpdを動かして、複数のレプリカでデータを同期させる構成にしてみたい。

プラットフォーム

AMD64のCPU。
したがって、architectureがx86_64となっているパッケージを入れる。

yumによるインストール手順

運用したいものがLDAPサーバであるため、openldap-servers.x86_64が必須だが、動作検証などにはopenldap-clients.x86_64が必要そう。
しかし厳密にどのパッケージが必要かを特定するのも面倒なので、以下の3つをインストールすればよいだろう。
必要な依存関係の解決はyumに任せる。

# yum -y install openldap.x86_64 openldap-servers.x86_64 openldap-clients.x86_64

インストール状態の確認

Linuxのいくつかのディストリビューションでよく使われるサービス制御機構でどうなっているか見てみる。

# chkconfig --list ldap
ldap            0:off   1:off   2:off   3:off   4:off   5:off   6:off

# service ldap status
slapd is stopped

どのrun levelでも起動しないことになっていて、実際slapdは落ちている。

最小限の設定

/etc/openldap

このディレクトリにまとめて設定ファイルを置いておくような形でインストールされたもよう。
まずはここのslapd.confを編集していくところからはじめることになるだろう。

LDAPというものについて

下記のURLの管理者ガイドを一通り読むと、LDAPというものについてなんとなーく理解が進んだ。翻訳してくれた方に感謝。
http://www5f.biglobe.ne.jp/~inachi/openldap/
結構ボリュームがあるが、最低限ここを理解しておかないと、以降の設定内容の意味がわからないため、なんとかがんばって読むことが大事。

slapd.conf(5)

LDAPのversion2と3は互換性があまりないらしいので、デフォルトでは3のみ使うことになっているらしいが、yumで入れたところv2も使う設定ファイルが置かれていた。
あまり根源に近い領域の話から入ると実データの領域まで理解が降りてくるまでものすごい時間がかかりそうだったので、suffixとrootdnのところを編集するところから始めてみた。

database        bdb
suffix          "dc=shonbori,dc=net"
rootdn          "cn=Manager,dc=shonbori,dc=net"
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
rootpw                  {SSHA}********************************
directory       /var/lib/ldap

この記述は下記のように理解される。

  • LDAPサービス(slapd)のバックエンドデータベースとしてberkeley dbを使う
  • suffixで、このLDAPサービス(slapd)がどのドメインのデータを扱うのか規定している?
  • そのドメインのrootのdistinguished nameについての情報?
  • /var/lib/ldapにデータを格納する
  • rootpwは、このLDAPサービスのrootパスワードを規定している。
    • 平文・各種ハッシュで暗号化されたパスワード、いろいろ使える。

※参考情報※
slappasswd(8)

Slappasswd is used to generate an userPassword value suitable for use with
ldapmodify(1) or slapd.conf(5) rootpw configuration directive.

LDAP情報を書き換えるときの認証に使うパスワード(?)やslapd.confのrootpwエントリに適したパスワードを生成するツール。
暗号化方式をいろいろ選べる。下記はSHA1アルゴリズムを使ってパスフレーズを暗号化して、パスワードを生成した例。
パスワードとパスフレーズを逆に書いてしまっているかも。

slappasswd -h {ssha}
New password: *****
Re-enter new password: *****
{SSHA}J572QU4BPNkOdrPXx5D/tlA1S70TgsT1

これをそのまま前述のslapd.confに貼り付けてやる。

slapdを動かす

# chkconfig ldap on
# chkconfig --list ldap
ldap            0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service ldap start
Checking configuration files for slapd:  bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2)
Expect poor performance for suffix dc=shonbori,dc=net.
config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]

# service ldap status
slapd (pid 29424) is running...

configチェックの段階で設定内容を酷評されたように見えるが、とりあえずslapdは立ち上がった。
あとは適宜ldapsearchとかldapmodifyを使いながら設定どおりに動くかチェックして、変な動きをしたら設定を見直す作業の繰り返しなのかな。
具体的にどういうデータを運用したい、というのがあればもう少しやりやすそうだとは思うが、今の段階ではまあこんなところか。

つづく。