« ソフトウェアRAIDに障害が発生した時の確認方法 | メイン | sshでアクセス出来るユーザを制限する »

CentOS4でopenLDAPを使ったユーザ情報の管理その1

CentOS4でディレクトリサービスをする場合openldapを利用しましょう。
パッケージopenldap-serversが入っていない場合があるので確認を。
今回はユーザ名とパスワード、それに電子メールアドレスを登録していきます。

始めにツリー構造を考えます。

---
dn 識別名
objectClass オブジェクトクラス
dc ドメイン構成要素
o 組織名
ou 組織単位,組織の部局
cn 一般名称,人名
---

構成の例
---
dc=com
dc=mydomain

ou=jinji,ou=eigyo,ou=gijyutsu
---
この場合は人事,営業,技術という3つのツリー構造(入れ物?)にそれぞれのデータを入れていくことになります。設定は以下。

# vi /etc/openldap/slapd.conf
---
suffix "dc=mydomain,dc=com"
rootdn "cn=Manager,dc=mydomain,dc=com"
---

suffixでベースDN(Directory Name)名を指定します。インターネットの世界でもユニークになるようにDNSと同じ設定をしておきましょう。
rootdnはこのLDAP管理者です。
パスワードを設定する必要があるんですが暗号化して記述したいので slappasswd コマンドで
出力された暗号化パスワードを記述しましょう。

# vi /etc/openldap/slapd.conf
---
rootpw {SSHA}KOwKieVxsDtLQVBwC0t10aX3YAoFKUZL
---

次はアクセス制御を施しましょう。

# /etc/openldap/slapd.conf
---
access to attr=userPassword
by self write
by dn="cn=Manager,dc=anan-nct,dc=ac,dc=jp" write
by anonymous auth
by * none

access to *
by self write
by dn="cn=Manager,dc=anan-nct,dc=ac,dc=jp" write
by * read
---
上の設定の意味は,
パスワードについてはopenLDAP管理者と本人は書換も可,
匿名ユーザでも認証すればパスワードの利用を許可。

パスワード以外についてはopenLDAP管理者と本人は書換OK,
その他の人は読込OK。

アクセス制御は /etc/host.allow /etc/hosts.deny でも可能です。
端末制御はこちらで行いましょう。


次は検索の際の高速化設定です。
デフォルトの設定でも問題ありませんがやはりきちんと設定したいところ。
今回はsn,cn(ユーザ名)とuidとメールアドレスの高速化を図りましょう。

# vi /etc/openldap/slapd.conf
---
index sn,cn,uid,mail eq,pres,sub
---


ログの設定もしておきましょう。
openLDAPのログはデフォルトでlocal4に出力し,レベルは256です。
openLDAPのログを指定したファイルに出力する場合は以下の設定をしましょう。

# vi /etc/openldap/slapd.conf
---
loglevel 256
---
この記述は新規追加になります。

# vi /etc/syslog.conf
---
local4.* /var/log/ldap.log
---

# touch /var/log/ldap.log
# chown ldap.ldap /var/log/ldap.log

ログのローテーション設定もしておきましょう。
以下のファイルに /var/log/ldap.log を追加します。
おそらく見ればどこに追加すればよいか分かると思います。

/etc/logrotate.d/syslog


どのようなログを出力させたいかは以下を参考に。

1
(0x1 trace) 関数呼出しのトレース
2
(0x2 packet) パケット処理のデバッグ
4
(0x4 args) (関数の引数も含めた)詳細なデバッグトレース
8
(0x8 conns) 接続管理
16
(0x10 BER) パケット送受信の印字
32
(0x20 filter) 検索フィルタの処理
64
(0x40 config) 設定ファイルの処理
128
(0x80 ACL) アクセス制御リストの処理
256
(0x100 stats) 接続/操作/結果の統計ログ
512
(0x200 stats2) エントリ送信の統計ログ
1024
(0x400 shell) shell バックエンドとの通信の印字
2048
(0x800 parse) エントリの解析
4096
(0x1000 cache) データのキャッシュ処理(未使用)
8192
(0x2000 index) データの索引処理(未使用)
16384
(0x4000 sync) LDAPSync 複製
32768
(0x8000 none) ログレベルの設定にかかわらずログを取るメッセージのみ

any指定で全ログを取ります。0は全く取らない。
接続管理ログも取りたければ8+256で264という風に指定します。


ここまでで設定が終了です。確認のコマンドを打ってみます。

# slaptest
config file testing succeeded

上のように表示されたらうまく設定できていますので起動してみましょう。

# service ldap start

システム起動時にopenldapを起動したい場合は以下のコマンドを打っておきます。

# chkconfig ldap on