OpenLDAPの設定

OpenLDAPのインストールや設定などを解説します。

今回の環境は、CentOS-5を利用しました。

 

OpenLDAPのインストール

必要なパッケージをインストールします。

yum install openldap-clients openldap-servers

 

インストールしたら、DBのディレクトリ/var/lib/ldap/にDB_CONFIGファイルを置きます。

DB_CONFIGファイルは、雛形があるためこれを利用します。

cp /etc/openldap/DB_CONFIG.example DB_CONFIG

 

ファイルのオーナーを変更します。

chown ldap.ldap /var/lib/ldap/DB_CONFIG

 


OpenLDAPの基本設定

OpenLDAPの設定は、/etc/openldap/slapd.confで行います。主な設定項目は以下の通りです。

設定項目 設定値
include 読み込むスキーマ定義を指定します。
読み込んだスキーマから、LDAPのRFCで定義されている属性名やobjectClassが使用できるようになります。
pidfile PIDファイルの保存場所
databese バックエンドDBの指定
suffix このLDAPのrootサフィックスを指定します。
このサフィックスはLDAPサーバのネーミングコンテキストとして使用されます。
DIT設計に合わせて変更してください。
rootdn 特権ユーザーでDBの全アクセス権を有する、ルートユーザサフィックスを設定します。
rootpw 特権ユーザーのパスワード(暗号化パスワードの利用推奨)
directory 利用するバックエンドDBの置き場所を指定します。
index インデックスを指定します(DBですから、index付けて検索性能を上げるんです。)
indexを編集したらコマンドでindexを再構築してください。

例)slapd.confの設定

include	/etc/ldap/schema/core.schema <---利用するスキーマを指定
include	/etc/ldap/schema/cosine.schema
include	/etc/ldap/schema/inetorgperson.schema

pidfile	/var/run/slapd/slapd.pid

database	bdb <---バックエンドDBの種類を指定

suffix	"dc=unixlife,dc=local" <---rootサフィックスを設定
rootdn	"cn=Manager,dc=unixlife,dc=local" <---rootdnの設定

rootpw	secret <---rootdnのパスワードを設定

directory	"/var/lib/ldap" <---DBファイルの保管場所を指定

index objectClass                       eq,pres <---インデックスの設定
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

 

暗号化パスワードの求め方

slapd.confのrootpwには暗号化した文字列を利用する事を推奨します。

暗号化した文字列は、OpenLDAP付属のlsappasswdコマンドで生成できます。

-h オプションで{CRYPT},{MD5},{SMD5},{SSHA},{SHA}などのハッシュ形式をします。

slappasswd -h {MD5} -s パスワード文字列

標準出力にパスワード文字列のハッシュ化された物({MD5}BhJllfHnfkedなど)が表示されますので、それを利用します。

これで得られた値を、slapd.confで利用します。

rootpw	{MD5}HQJYwkQKjRnnFikrIx4xkA==

 

indexの設定

indexを設定し、効率良くデータを検索できるように設定します。

比較には、pres:存在、eq:等価性、sub:部分文字列、から指定します。

例えば、mail属性にindexを設定する場合は、以下の設定を追加します。

index mail pres,eq,sub

indexの設定を変更したら、indexの再構築を行ってください。

slapindex -v -b dc=unixlife,dc=local -f slapd.conf

 

アクセス制限の設定

ACLの設定方法です。

たとえば、ユーザ認証用のデータベースを作成したとして、以下のルールでアクセス制限を設定します。

ユーザパスワードは、認証したユーザのみ参照、変更が可能

ユーザの他の情報は、認証したユーザは参照、変更が可能、それ以外のユーザは参照のみ可能

access to attrs=userPassword
	by self write
	by anonymous auth
	by * none
access to *
	by self write
	by * read

 

 

OpenLDAPのレプリケーション

OpenLDAPのレプリケーション設定です。マスタ、スレーブ構成での設定方法をご紹介します。

今回のバージョンは、OpenLDAP-2.3を利用した例です。

他のバージョンでは、設定方法が異なりますのでご注意ください。

なお、以降、マスタはプロバイダ、スレーブはコンシューマと呼称します。

 

プロバイダ側の設定

通常、プロバイダ側では、ダイナミックモジュールのsyncprov.aをロードし、syncprovを有効にする記述を追加しますが、今回検証したCentOS-5では必要ありませんでした。

そのため、indexとセッションログの設定を追記します。

モジュールのロード <---=CentOS-5では必要なし
modulepath	/usr/lib64/openldap <---=CentOS-5では必要なし
moduleload syncprov.la <---=CentOS-5では必要なし

indexの追加
index entryCSN,entryUUID eq

syncprov機能を有効にする
overlay syncprov

セッションログの設定
syncprov-checkpoint 100 10
syncprov-sessionlog 100

 

コンシューマの設定

レプリケーションを受ける側(スレーブ)の設定をします。

ここでは、indexの設定とレプリケーション用の設定をします。

なお、レプリケーションする方式は、refreshOnlyモードとrefreshAndPersistモードがありますので、特徴の解説と設定例をそれぞれ記載します。

refreshOnlyモード

refreshOnlyは一定間隔でプロバイダに問い合わせしに行き、リフレッシュ要求から同期をおこないます。

そのため、リアルタイムなデータの同期は行われない事に注意してください。

また、refreshOnlyは削除すべきエントリの割り出しなどにUUIDを比較して行いますので、多少非効率な面があります。

indexの追加
index entryCSN,entryUUID eq

Syncreplの設定
syncrepl rid=123 <---ridの設定。0以上で3桁以内の整数値を指定
	provider=ldap://192.168.1.1 <---プロバイダのIPアドレス
	type=refreshOnly <---Syncreplのモード
	interval=00:03:00 <---同期の間隔(refreshOnlyの場合のみ必要)
	searchbase=dc=unixlife,dc=local <---検索ベースの設定
	bindmethod=simple <---バインドの認証方法を設定(simple or sasl)
	binddn=cn=Manager,dc=unixlife,dc=local <---バインドするDNを設定
	credentials=secret <---認証用パスワードを設定
	updateref ldap://192.168.1.1アップデート要求はマスタサーバを紹介

 

refreshAndPersistモード

refreshAndPersistは初期同期が終了した場合でも、プロバイダに接続したままになり、変更、削除があった場合にプロバイダはコンシューマに通知します。

そのため効率的な処理が行えますが、接続を持続するためプロバイダに接続負荷がかかります。

indexの追加
index entryCSN,entryUUID eq

Syncreplの設定
syncrepl rid=123 <---ridの設定。0以上で3桁以内の整数値を指定
	provider=ldap://192.168.1.1 <---プロバイダのIPアドレス
	type=refreshAndPersist <---Syncreplのモード
	retry="30 60 120 +" <---失敗した場合のリトライ間隔
	searchbase=dc=unixlife,dc=local <---検索ベースの設定
	bindmethod=simple <---バインドの認証方法を設定(simple or sasl)
	binddn=cn=Manager,dc=unixlife,dc=local <---バインドするDNを設定
	credentials=secret <---認証用パスワードを設定  
	updateref ldap://192.168.1.1アップデート要求はマスタサーバを紹介

これでプロバイダとコンシューマの設定は終了です。

*retry=”30 60 120 +” 最初に30秒、失敗したら次は60秒後、それでもダメなら120後 +で無限にリトライ

 

どちらもindexを追加してますので、indexの再構築を行ってください。

slapindex -v -b dc=unixlife,dc=local -f slapd.conf

 


OpenLDAPのチューニング

OpenLDAPは、DB_CONFIGファイルの値を調整したり、キャッシュの調整を行う事でチューニングができます。

また、nscdを使用しする事も非常に効果があります。

 

エントリキャッシュとIDLキャッシュ

エントリキャッシュ

エントリキャッシュはDB内の内部IDとエントリを関連づけてキャッシュします。

理想は、レコード数分以上のキャッシュを待たせる事ですが、マシンのメモリ容量との関連を見ながら設定します。

エントリキャッシュの設定は以下のように記述します。

slapd.conf

cachesize 5000

 

IDLキャッシュ

IDLキャッシュは索引データをメモリにキャッシュします。

IDLキャッシュ値は、エントリキャッシュ値の2倍から4倍程度を目安にすると良いでしょう。

slapd.conf

idlcachesize 20000

 

nscdネームキャッシュデーモン

nscdとは、ネームキャッシュデーモンで、/etc.nsswitch.confに記載してある物をキャッシュする事により効率化を測ります。

nscdは起動しておくだけで非常に大きな効果があります。

nscdはインストールされていると思いますので、起動設定だけご紹介します。

/etc/init.d/nscd start
chkconifg nscd on

nscdでキャッシュする内容を調整したい場合は、/etc/nscd.confで調整してください。

 

 

OpenLDAPのデータ操作

OpenLDAPのデータ登録や検索、削除、変更のコマンドをご紹介します。

また、GUIツールの紹介もします。

 

コマンドでのデータ操作

データ操作には、いくつか利用できるコマンドがありますが、今回はldap***というコマンドを紹介します。

このコマンドは、OpenLDAPを起動した状態で利用できます。

なお、環境は、suffix=’dc=unixlife,dc=local’、rootdn=’cn=Manager,dc=unixlife,dc=local’、rootpw=’secret’とします。

データの登録

user.ldifファイルを登録します。

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret -f user.ldif

 

データの検索

uidの末尾が’01’のデータを検索します。

ldapsearch -x -h localhost -b "dc=unixlife,dc=local" -s sub "(uid=*01)"

 

データの削除

‘dn : uid=ito,dc=unixlife,dc=local’のデータを削除します。

ldapdelete -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret "uid=ito,dc=unixlife,dc=local"

 

データの変更

データの変更には更新用ldifファイルを作成し行います。

ldapmodify -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret < modify.ldif

modify.ldifの書式

1.dn:を指定します。

2.ldifのタイプをmodifyで指定します。

3.属性値を置き換える場合は”replace”、追加する場合は”add”、を指定し、属性と値を記入します。

4.削除する場合は”delete”で削除する属性を指定します。

dn: uid=ito,ou=User,dc=unixlife,dc=local
changetype: modifty
replace: sn
sn: shimizu
-
add: homeDirectory
homeDirectory: /home/shimizu
-
delete: telephoneNumber

 

 

OpenLDAPのGUIクライアントソフト

コマンドから、登録、検索、変更、削除が可能ですが、GUIのツールもいくつか手入できます。

GUIツールをいくつかあげておきます。

Apache LDAP Studio (個人的にお勧め)

LAT LDAP Administration Tool

LDAP Admin

JXplorer

phpLDAPadmin

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">