CentOS 5.1 に OpenLDAP 2.3.27 をインストール

Xenの導入によってマシンが増えるし、現状のサーバーは OS / Samba / Apache / Postfix / Dovecot などがそれぞれ別にパスワードを管理していたので、定期的パスワードの変更が面倒だった。そこで、今回の新しいサーバーではLDAPを導入して一元管理することにした。このエントリーでは CentOS 5.1 にOpenLDAPを使用してLDAPサーバーを構築するところまで記す。

まずはOpenLDAPサーバーとOpenLDAPクライアントをインストールする。

# yum install openldap-servers openldap-clients
……
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
openldap-clients x86_64 2.3.27-8.el5_1.3 updates 186 k
openldap-servers x86_64 2.3.27-8.el5_1.3 updates 2.2 M
Installing for dependencies:
libtool-ltdl x86_64 1.5.22-6.1 base 37 k
……
Complete!

LDAPツリー全体を無制限にアクセスできるルートDNのパスワードをSSHAハッシュとして作成する。

# slappasswd
New password:
Re-enter new password:
{SSHA}WYw6VmQWzX+jqB2aEwZtsPeEFMkItIv2

/etc/openldap/slapd.confsuffix / rootdn / rootpw を設定する。rootdncn=Managerとすることが多いようだ。

/etc/openldap/slapd.conf

……
suffix “dc=rewse,dc=jp”
rootdn “cn=Manager,dc=rewse,dc=jp”
rootpw {SSHA}WYw6VmQWzX+jqB2aEwZtsPeEFMkItIv2
……

設定ファイルに間違いがないかを確認しよう。

# slaptest -v
config file testing succeeded

続いてOpenLDAPが後ろで使う Berkeley DB のパラメーター・ファイルをサンプルそのままコピーする。

# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

これでOpenLDAPの設定はひとまず完了。起動しよう。

# service ldap start
slapd の設定ファイルをチェック中: config file testing succeeded
[ OK ]
slapd を起動中: [ OK ]
# chkconfig ldap on

現状のLDAPツリーは空っぽなので、基礎となるデータを挿入する必要がある。データを/var/lib/ldap/ldif/init.ldifとして今回は作成した。

# mkdir /var/lib/ldap/ldif
# touch /var/lib/ldap/ldif/init.ldif
# chmod -R 600 /var/lib/ldap/ldif

/var/lib/ldap/ldif/init.ldif

dn: dc=rewse,dc=jp
objectClass: organization
objectClass: dcObject
o: Rewse Lab.
dc: rewse

dn: cn=Manager,dc=rewse,dc=jp
objectClass: organizationalRole
cn: Manager

dn: ou=People,dc=rewse,dc=jp
objectClass: organizationalUnit
ou: People

dn: ou=Services,dc=rewse,dc=jp
objectClass: organizationalUnit
ou: Services

dn: ou=Groups,dc=rewse,dc=jp
objectClass: organizationalUnit
ou: Groups

dn: ou=Machines,dc=rewse,dc=jp
objectClass: organizationalUnit
ou: Machines

これをldapaddコマンドで読み込む。パスワードはslappasswdで入力したものだ。

# ldapadd -cxW -D “cn=Manager,dc=rewse,dc=jp” -f /var/lib/ldap/ldif/init.ldif
Enter LDAP Password:
adding new entry “dc=rewse,dc=jp”

adding new entry “cn=Manager,dc=rewse,dc=jp”

adding new entry “ou=People,dc=rewse,dc=jp”

adding new entry “ou=Services,dc=rewse,dc=jp”

adding new entry “ou=Groups,dc=rewse,dc=jp”

adding new entry “ou=Machines,dc=rewse,dc=jp”

ボクのLDAPはデータ量が小さいので、データを変更したい場合はldapmodifyを使用せず、ldapdeleteldapaddすることでLDIFファイルを常にLDAPデータと同一にする管理方法を採用することにした。これにより、万が一LDAPデータが破損してた場合はもう一度ldapaddするだけだ。以下はldapdeleteの例だ。

/var/lib/ldap/ldif/del_init.ldif

ou=People,dc=rewse,dc=jp
ou=Services,dc=rewse,dc=jp
ou=Groups,dc=rewse,dc=jp
ou=Machines,dc=rewse,dc=jp

# ldapdelete -cxW -D “cn=Manager,dc=rewse,dc=jp” -f /var/lib/ldap/ldif/del_init.ldif
Enter LDAP Password:

なお、このままではすべてのユーザーがすべてのデータを読み書きできてしまう。そのためユーザー自身のデータはすべて変更可能、匿名ユーザーはすべてのuserPasswordをバインド可能、すべてのユーザーはuserPassword以外のすべてのデータを読取り可能という設定をした。なお、rootdnはこのアクセス権限設定を無視してすべてのデータを変更可能だ。

/etc/openldap/slapd.conf

……
access to attrs=userPassword
by self =rwcsx
by anonymous auth
by * none

access to *
by self =rwcsx
by * read
……

新しい設定を読み込ませるためにLDAPサーバーを再起動しよう。

# service ldap restart
slapd を停止中: [ OK ]
slapd の設定ファイルをチェック中: config file testing succeeded
[ OK ]
slapd を起動中: [ OK ]

<

p>ボクの環境ではLDAPサーバーはLAN内からしかアクセスがないので LDAP over SSL/TLS にはしないが、LDAPサーバーにインターネット経由でアクセスするなどの場合は設定したほうが良いだろう。

3 thoughts on “CentOS 5.1 に OpenLDAP 2.3.27 をインストール”

コメントを残す