SSブログ

CentOS-6.xでのLDAP認証環境の構築 [CentOS]

CentOS 6.x において、LDAP 認証環境を構築することになり、その手順を調べた。
今回の手順は、下記の方針で作成したものである。

・取り敢えず使用できる環境を構築するための手順である(改善の余地がある)。
・LDAP サーバー、LDAP クライアントは同じノード上に構築する。
・OS は CentOS 6.4 を使用する。

1. パッケージのインストール
# yum install openldap-servers openldap-clients

2. LDAP 管理者のパスワードの作成
# slappasswd
(パスワードの入力を求められる。)

(実行例)
# slappasswd
New password: secret                    … 実際にはパスワードは表示されない
Re-enter new password: secret           … 実際にはパスワードは表示されない
{SSHA}O9i1P6yxbfMqm14xjrA00oGhqgNNvwFn  … 暗号化パスワードが出力される


標準出力された暗号化パスワードをメモする。
(今回は、パスワードにはすべてこの値を使用する。)


3. LDAP サーバーの設定


(1) db の設定

# cd /var/lib/ldap
# cp -p /usr/share/openldap-servers/DB_CONFIG.example DB_CONFIG


(2) /etc/openldap/slapd.d の初期化

# cd /etc/openldap
# cp -pR slapd.d slapd.d.org
# rm -fr slapd.d/*


(3) /etc/openldap/slapd.conf の作成

# cp -p /usr/share/openldap-servers/slapd.conf.obsolete \
/etc/openldap/slapd.conf

/etc/openldap/slapd.conf の編集を行う。
・suffix の変更 ("dc=example,dc=com")
・rootdn の変更 ("cn=Manager,dc=example,dc=com")
・rootpw の設定 (上記で作成した LDAP 管理者パスワードを設定)
・アクセス制御の追加 (なくても問題ないかも知れない)
 access to attrs=userPassword
         by self write
         by anonymous auth
         by * none
 access to *
         by self write
         by * read


(4) /etc/openldap/slapd.conf のチェック

# slaptest -u -f /etc/openldap/slapd.conf -v


(5) /etc/openldap/slapd.d の更新

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d


(6) ファイルの所有者とグループの変更

# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/slapd.d


(7) LDAP サーバーの起動

# /etc/init.d/slapd start


(8) LDAP サーバーへのアクセスの確認

# ldapsearch -x -D "cn=Manager,dc=example,dc=com" -W
(LDAP 管理者のパスワードの入力を求められる。)


(9) LDAP サーバーへのデータの登録

# cd /work
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./base.ldif
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./group.ldif
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./user.ldif

(注1) *.ldif については、備考を参照。
(注2) 登録済みの特定のデータの削除(実行例)
   # ldapdelete -x -D "cn=Manager,dc=example,dc=com" -x -W \
   'uid=user01,ou=People,dc=example,dc=com'
(注3) 登録済みの全データの削除
   # rm -fr /var/lib/ldap/*

4. ユーザーのホームディレクトリの作成
# mkdir -p /work/home/user01
# mkdir -p /work/home/user02
# mkdir -p /work/home/user03

5. 認証機能として使用するための設定


(1) パッケージのインストール

# yum install pam_ldap
# yum install nscd nss-pam-ldapd


(2) LDAP クライアントの設定

# authconfig-tui

【認証の設定】
・[Use LDAP] にチェックを入れる。
・[Use LDAP Authentication] にチェックを入れる。
・[Next] を選択する。

【LDAP 設定】
・[OK] を選択する。


CentOS 6.x では、設定ファイルの編集ではなく、上記のコマンドで設定する。
また、設定が終了すると、nslcd が起動される。


6. LDAP を使用した認証のテスト
% telnet localhost
...
(user01, user02, user03 でログインできることを確認する。)

7. 備考

7-1. LDIF(LDAP Data Interchange Format) ファイル


(1) base.ldif

# cat base.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example

dn: cn=Manager,dc=example,dc=com
objectclass: organizationalRole
cn: Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group


(2) group.ldif

# cat group.ldif
dn: cn=member01,ou=group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: member01
gidNumber: 3001

dn: cn=member02,ou=group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: member02
gidNumber: 3002

dn: cn=member03,ou=group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: member03
gidNumber: 3003


(3) user.ldif

# cat user.ldif
dn: uid=user01,ou=People,dc=example,dc=com
uid: user01
cn: Test User 01
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA}O9i1P6yxbfMqm14xjrA00oGhqgNNvwFn  … メモした値
loginShell: /bin/bash
uidNumber: 5001
gidNumber: 3001
homeDirectory: /work/home/user01

dn: uid=user02,ou=People,dc=example,dc=com
uid: user02
cn: Test User 02
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA}O9i1P6yxbfMqm14xjrA00oGhqgNNvwFn  … メモした値
loginShell: /bin/bash
uidNumber: 5002
gidNumber: 3002
homeDirectory: /work/home/user02

dn: uid=user03,ou=People,dc=example,dc=com
uid: user03
cn: Test User 03
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA}O9i1P6yxbfMqm14xjrA00oGhqgNNvwFn  … メモした値
loginShell: /bin/bash
uidNumber: 5003
gidNumber: 3003
homeDirectory: /work/home/user03

7-2. /etc/openldap/slapd.conf
# diff slapd.conf /usr/share/openldap-servers/slapd.conf.obsolete
110,117d109
< access to attrs=userPassword
< 	by self write
< 	by anonymous auth
< 	by * none
< access to *
< 	by self write
< 	by * read
< 
123c115
< suffix		"dc=example,dc=com"
---
> suffix		"dc=my-domain,dc=com"
125c117
< rootdn		"cn=Manager,dc=example,dc=com"
---
> rootdn		"cn=Manager,dc=my-domain,dc=com"
131d122
< rootpw		{SSHA}O9i1P6yxbfMqm14xjrA00oGhqgNNvwFn  … メモした値

8. 追記

8-1. LDAP クライアントの追加


LDAP クライアントのみのノードでは、上記の手順のうち、下記のみを実施する。

(1) パッケージのインストール


openldap-clients のみをインストールする。

# yum install openldap-clients


(2) ホームディレクトリの作成


ホームディレクトリを共有しないため、localhost 上にホームディレクトリを作成する。
手順は、上記の [4. ユーザーのホームディレクトリの作成] と同じである。


(3) 認証機能として使用するための設定


手順は、上記の [5. 認証機能として使用するための設定] と同様である。
ただし、【LDAP設定】の Server のアドレスに LDAP サーバーのアドレスを設定する



nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。