Database JUNKY

MySQL,MariaDBを中心としたブログです

OpenLDAPでアカウントを一元管理!~サーバの構築~クライアントの設定手順

VMであろうが、物理マシンであろうが、台数が増えてくると、アカウントの管理が面倒になってくるもので、よくもまあ、いままで個別ホストでアカウントを管理していたなと自分で自分をほめたい気分です。というわけで、今回、Ldapサーバを構築してみました。

とはいっても、細かな設定方法は記載しておりません。まずは簡単に構築できることを目標にしております。細かな設定はばっさり切っておりますので深く知りたい方、別のサイト様を参照したほうがよろしいかと思います。^^; ここでは、「まず、動かす」、「アカウントを一元管理する」のみに絞った設定を記載しております。(実際これだけでもかなり一元管理の恩恵を受けれます)

【検証環境】 OSは、CENTOS5.5 IA64 でメモリは、384MBです。ディスクも負荷もそんなには大きくならないかと思い、あえて、スペックの低い構成で検証してみました。

以下設定手順になります。

1.yumでのインストール

[shell] [root@sqldap01 ~]# yum install openldap-servers openldap-clients [/shell]

2.管理者パスワードの設定(これはメモしておく) [shell] [root@sqldap01 ~]# slappasswd -s testpassword {SSHA}umUy9PPMqlcfeOrEQwV+JAbX+3Xnj25W [/shell]

3.ldap設定ファイルの編集 [shell]

---- /etc/openldap/slapd.conf -------------------------

include    /etc/openldap/schema/core.schema include    /etc/openldap/schema/cosine.schema include    /etc/openldap/schema/inetorgperson.schema include    /etc/openldap/schema/nis.schema

allow bind_v2

pidfile    /var/run/openldap/slapd.pid argsfile    /var/run/openldap/slapd.args

ユーザー自身がパスワードを変更できるようにする設定を加える

access to attrs=userPassword by dn="cn=proxy,dc=mydc,dc=com" read by self write by anonymous auth by * none access to * by self write by users read by anonymous auth by * none

database bdb suffix "dc=mydc,dc=com" rootdn "cn=Manager,dc=mydc,dc=com"

slappasswdのコマンド結果をここに記入

rootpw    {SSHA}umUy9PPMqlcfeOrEQwV+JAbX+3Xnj25W directory /var/lib/ldap index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub

---- /etc/openldap/slapd.conf -------------------------

[/shell]

  1. DB環境設定 [root@sqldap01 ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG cp: `/var/lib/ldap/DB_CONFIG' を上書きしてもよろしいですか(yes/no)? yes

5.ldapの開始 [shell] [root@sqldap01 ~]# service ldap start slapd の設定ファイルをチェック中:  bdb_db_open: DB_CONFIG for suffix dc=mydc,dc=com has changed. Performing database recovery to activate new settings. bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered. config file testing succeeded [  OK  ] slapd を起動中:                                            [  OK  ] [/shell] ・ldap.conf の編集 [shell]

---- /etc/openldap/ldap.conf ---------------------------

BASE dc=mydc,dc=com URI ldap://localhost

---- /etc/openldap/ldap.conf ---------------------------

[/shell]

5.DB環境設定ファイルの編集 [shell] cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG cp: `/var/lib/ldap/DB_CONFIG' を上書きしてもよろしいですか(yes/no)? yes [/shell]

6.自動起動の設定をonにし、ldapを起動する [shell] [root@sqldap01 ~]#  chkconfig ldap on [root@sqldap01 ~]# service ldap start slapd の設定ファイルをチェック中:  bdb_db_open: DB_CONFIG for suffix dc=mydc,dc=com has changed. Performing database recovery to activate new settings. bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered. config file testing succeeded [  OK  ] slapd を起動中:                                            [  OK  ] [/shell]

7.管理者設定ファイルの作成(ファイルは任意の位置に作成してかまいません) [shell]

--- domain.ldif ---

dn: dc=mydc,dc=com objectClass: dcObject objectClass: organization o: mydc ldap dc: mydc

dn: cn=Manager,dc=mydc,dc=com objectClass: organizationalRole cn: Manager

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

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

--- domain.ldif ---

[/shell]

8.上記7にて作成した設定ファイルをldapに登録する

[root@sqldap01 ~]# ldapadd -x -D "cn=Manager,dc=mydc,dc=com" -w testpassword -f domain.ldif

adding new entry "dc=mydc,dc=com"

adding new entry "cn=Manager,dc=mydc,dc=com"

adding new entry "ou=People,dc=mydc,dc=com"

adding new entry "ou=Group,dc=mydc,dc=com"

  1. 認証用設定ファイルの作成 [shell] [root@sqldap01 ~]# slappasswd -s testpassword {SSHA}ROwuIrwIYrGs+z+g7OFN6sQUTvIwcwcd

-- auth.ldif ----------------------------------

dn: cn=mydcgroup,ou=Group,dc=mydc,dc=com objectClass: posixGroup cn: mydcgroup gidNumber: 10000

dn: cn=proxy,dc=mydc,dc=com objectclass: organizationalRole objectClass: simpleSecurityObject cn: proxy userPassword: {SSHA}ROwuIrwIYrGs+z+g7OFN6sQUTvIwcwcd

-- auth.ldif ----------------------------------

[/shell]

10.認証ファイルを、ldapに登録 [shell] [root@sqldap01 ~]# ldapadd -x -D "cn=Manager,dc=mydc,dc=com" -w testpassword -f auth.ldif adding new entry "cn=mydcgroup,ou=Group,dc=mydc,dc=com"

adding new entry "cn=proxy,dc=mydc,dc=com" [/shell]

11.ユーザーの作成(とりあえずデフォルトのパスワードは、yourpassword [shell] [root@sqldap01 ~]# slappasswd -s yourpassword {SSHA}L9mdI8M1l1G5gfx+fvY/LAbOHMwrF8e9 [/shell]

  1. ldapuserのユーザー設定ファイルを作成する [shell]

    -- ldapuser ldif ------------------------------

    dn: uid=ldapuser,ou=People,dc=mydc,dc=com changetype: add objectClass: person objectClass: posixAccount objectClass: inetOrgPerson objectClass: shadowAccount cn: ldapuser sn: mydcuser uid: ldapuser mail: ldapuser@mydc.com uidNumber: 10001 gidNumber: 10000 homeDirectory: /home/ldapuser userPassword: {SSHA}L9mdI8M1l1G5gfx+fvY/LAbOHMwrF8e9 loginShell: /bin/bash shadowLastChange: 10000 shadowMin: 0 shadowMax: 99999 shadowWarning: 14 shadowInactive: 99999 shadowExpire: -1

dn: cn=mydcgroup,ou=Group,dc=mydc,dc=com changetype: modify add: memberUid memberUid: ldapuser

-- ldapuser ldif ------------------------------

[/shell] 13. 設定ファイルを反映(addでなく、ldapmodifyで実行) [shell] [root@sqldap01 ~]# ldapmodify -x -D "cn=Manager,dc=mydc,dc=com" -w testpassword -f ldapuser.ldif adding new entry "uid=ldapuser,ou=People,dc=mydc,dc=com"

modifying entry "cn=mydcgroup,ou=Group,dc=mydc,dc=com" [/shell]

▼以降クライアントの設定説明になります

  1. ldapクライアントの設定

    authconfig-tuiで認証設定ツールを起動する

  2. Use Ldapにチェック
  3. Use Ldap Authenticationにチェック

Next ボタンをクリック

15.Ldap Settings画面 UseTLSにはチェックしない Serverは、ldap://127.0.0.1/ BASE DNは、dc=mydc,dc=com

16.上記の作業を行ったあと、/etc/ldap.conf を以下の通り編集して保存します(bindpwは、上記に認証設定をした時のパスワードを平文で入力します)

 vi  /etc/ldap.conf

base dc=mydc,dc=com binddn cn=proxy,dc=mydc,dc=com bindpw testpassword timelimit 120 bind_timelimit 120 idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon uri ldap://127.0.0.1/ ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5

 vi  /etc/ldap.conf

17.設定確認 さきほど作成したldapuserが登録できているか確認します。 [root@sqldap01 ~]# getent passwd ldapuser ldapuser:x:10001:10000:ldapuser:/home/ldapuser:/bin/bash

18.接続チェック [root@sqldap01 ~]# ssh ldapuser@localhost ldapuser@localhost's password: (初期パスワードのyourpasswordを入れております) Last login: Sun Dec 12 12:15:47 2010 from ldap01.konoha.local Could not chdir to home directory /home/ldapuser: No such file or directory -bash-3.2$

※ldapuserでログインできました(/homeディレクトリがないというエラーが気持ち悪い場合は、とりあえず、NASにでもマウントポイントを作ればエラーはきえます)

19.パスワードの変更 デフォルトのパスワードをyourpasswordから、risutorakouhoに変更できるか試してみます。

-bash-3.2$ passwd Changing password for user ldapuser. Enter login(LDAP) password: New UNIX password: Retype new UNIX password: LDAP password information changed for ldapuser passwd: all authentication tokens updated successfully.

※変更できました。つまりこれは、ユーザーが自由にパスワードを変更できるというわけです。

20.おまけ 他ホストから当該、LDAPサーバに接続する設定を行う場合

  1. ldapクライアントの設定

    authconfig-tuiで認証設定ツールを起動する

  2. Use Ldapにチェック
  3. Use Ldap Authenticationにチェック

Next ボタンをクリック

22.Ldap Settings画面 UseTLSにはチェックしない Serverは、ldap://192.168.101.40/ BASE DNは、dc=mydc,dc=com

23.上記の作業を行ったあと、/etc/ldap.conf を以下の通り編集して保存します(bindpwは、上記に認証設定をした時のパスワードを平文で入力します)

 vi  /etc/ldap.conf

base dc=mydc,dc=com binddn cn=proxy,dc=mydc,dc=com bindpw testpassword timelimit 120 bind_timelimit 120 idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon uri ldap://192.168.101.40/ ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5

これで面倒なアカウント管理からも開放です。LDAPは、SMBとか、gmailgoogle apps)とかさまざまなアカウント管理とも連携できます。今回の説明はこれで終わりますがこれをベースにもっと良いものが作れると思いますのでみなさまぜひともチャレンジしてください!!