Linux -> サーバ構築 -> Ldap

Open Ldap のインストール&基本設定

インストール

RPMパッケージでインストールする場合

Ldapサーバを構築するのに必要なのパッケージは以下の通り。
パッケージ名 説明 今回インストールしたパッケージ
openldap ライブラリ openldap-2.2.29-1.FC4
openldap-servers サーバー openldap-servers-2.2.29-1.FC4
openldap-clients 管理コマンド openldap-clients-2.2.29-1.FC4
nss_ldap pam_ldap,nss_ldーザ認証に使用 nss_ldap-234-4
* OS : Fedora core 4 パッケージは、ftp://download.fedora.redhat.com からダウンロード /pub/fedora/linux/core/4/i386/os/Fedora/RPMS/ ディレクトリ配下 yum でインストールする場合、以下のコマンドを実行する。 # yum install openldap openldap-servers openldap-clients nss_ldap

設定ファイル

LDAP基本設定ファイル

  1. /etc/ldap.conf
  2. /etc/openldap/slapd.conf
  3. /etc/openldap/ldap.conf
1. /etc/ldap.conf pam_ldapモジュール及び nss_ldapモジュールの設定ファイル
     *** 以下 pam_ldap , nss_ldap 共通のパラメータ ***
host  127.0.0.1
base  o=host01,o=example,o=local

     *** 以下の設定は任意 ***
ldap_version 3                                      (デフォルト)
port 389                                            (デフォルト)
binddn dc=Manager,o=host01,o=example,o=local        (匿名検索不可設定の場合のみ指定)
bindpw secret                                       (binddnを指定している場合のみパスワードを指定)
rootbinddn = dc=Manager,o=host01,o=example,o=local  (スーパーユーザでLDAPへバインドする場合指定)
ssl = on                                            (使用する場合は'on' 使用しない場合は省略)
scope = [sub|one|base]                              (何れかを指定)
uri ldap://127.0.0.1/

                  *** 以下 pam_ldap に関するパラメータ ***
pam_password = md5    [clear(平文/デフォルト)|crypt|md5] LDAPサーバ上のパスワード変更方法

                  *** 以下 nss_ldap に関するパラメータ ***
nss_base_passwd   ou=Users,o=host01,o=example,o=local
nss_base_shadow   ou=Users,o=host01,o=example,o=local
nss_base_group    ou=Groups,o=host01,o=example,o=local


 *** この設定により、nss_ldap の検索を最適化しLDAPサーバの不可を軽減させる。
# getent passwd   /etc/passwd 及び LDAPのposixAccountオブジェクトが出力される事を確認する。
# getent shadow   /etc/shadow 及び LDAPのposixAccountオブジェクトが出力される事を確認する。
# getent group    /etc/group  及び LDAPのposixAccountオブジェクトが出力される事を確認する。

2. /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
   include         /etc/openldap/schema/samba.schema    ※ sambaを使用する場合


   allow bind_v2   (LDAPv2バインド要求を無効にする)
   pidfile   /var/run/slapd.pid
   argsfile  /var/run/slapd.args

   *** アクセス制御リスト(ACL) ***

   userPassword について、管理者(cn=Manager)及び自分に書込み権を与え、
   認証されていないユーザ接続(anonymous)に認証するアクセス権限(auth)を与える

   access to attr=userPassword
      by dn="cn=Manager,o=host01,o=example,o=local write
      by self write
      by anonymous auth
      by * none

   sambaと連携させる場合必要なACL
   access to attr=SambaLMPassword
      by dn="cn=Manager,o=iFinance,o=nttd,o=local" write
      by  self write
      by anonymous auth
      by * none

   sambaと連携させる場合必要なACL
   access to attr=SambaLMPassword
      by dn="cn=Manager,o=iFinance,o=nttd,o=local" write
      by  self write
      by anonymous auth
      by * none

   全ての属性(userPassword,SambaLMPassword,SambaLMPasswordは除く)について
   管理者(cn=Manager)及び自分に書込み権を与え、全てのユーザに読込み権を与える。
   access to *
      by dn="cn=Manager,o=host01,o=example,o=local write
      by self write
      by * read

   ※ 全てのユーザに読み取りアクセスを許可するACL
   LDAPサーバにアクセスできない場合、デバック時に以下の設定を使用してみる。
      access to *
      by * read

   *** データベースセクション ***
   dbdバックエンドを使用する場合の設定を記述します。(lbdmを使用する場合の記述はしません)
   database dbd
   suffix  "dc=host01,dc=example,dc=com"
   rootdh  "cn=Manager,dc=host01,dc=example,dc=com"
   rootpw   {SSHA}jfui398r390r
                    rootpw に指定する暗号化パスワードの取得方法
                    # /usr/sbin/slappasswd -h {SSHA}

   directory	/var/lib/ldap	(データベースを格納するディレクトリ)

   検索を最適化する為のインデックスを指定(以下の設定値は初期値)
   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	
                                           ※ indexパラメータ属性の説明
                                              eq   (完全マッチ)
                                              pres (値が含まれるか)
                                              sub  (部分文字列マッチ)

3. /etc/openldap/ldap.conf
   HOST 127.0.0.1
   BASE = o=host01,o=example,o=local

関連設定ファイル

  1. 1. /etc/nsswitch.conf
/etc/nsswitch.conf
   passwd: files ldap
   shadow: files ldap
   group:  files ldap


authconfigによるLDAP有効/無効設定

   Linux の場合 authconfig コマンドを実行すると LDAP 関連ファイルに
   LDAP の使用 を有効/無効の設定ができる。

ldapアカウント

ldap アカウント、グループの作成 /etc/passwd に ldap ユーザ ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false /etc/group に ldap グループ ldap:x:55: RPMでインストールすると自動で作成る。

起動スクリプト

LDAPデーモンを起動するスクリプト /etc/init.d/rc.d/ldap スクリプトの自動起動設定 # chkconfig --list ldap ldap 0:off 1:off 2:on 3:on 4:on 5:on 6:off onになっていない場合 # chkconfig ldap on offにする場合 # chkconfig ldap off 起動 # service ldap start 停止 # service ldap stop 再起動 # service ldap restart 設定ファイルの再読込 # service ldap reload

ログファイルの設定

/etc/syslog.conf に以下の内容を追加する。 local4.debug /var/log/slapd.log ログローテーションの設定 /etc/logrotate.d/syslog ファイルの先頭行に /var/log/slapd.log を追加 slapd.log.1〜4 にローテーションされる。 ローテーションの設定は /etc/logrotate.conf に記述されている。。 syslogdにHUP シグナルを送信し設定ファイルを読込む。 ログの詳細レベルの指定 /etc/openldap/slapd.conf に "loglevel 数値" を指定する。 数値は、以下の出力したい内容の数値の合計値を指定する。 0 ログ情報なし 1 関数呼び出しのトレース 2 パケット処理のデバック情報 4 詳細なデバックトレース 8 接続管理 16 送受信したパケット 32 検索フィルタの処理 64 設定ファイルの処理 128 アクセス制御リストの処理 256 接続・操作・結果の統計 512 クライアントに返された結果の統計 1024 シェルバックエンドとの通信 2048 エントリ解析のデバック情報の出力 例:接続・操作・結果の統計及び設定ファイルの処理を出力したい場合は 256+64=320を指定します。

オブジェクトの作成

ldif ファイルを元にオブジェクトを作成するて手順を行う。

移行用ツール

# cd /usr/share/openldap/migration

設定ファイル

migrate_common.ph $DEFAULT_MAIL_DOMAIN = "host01.example.org"; $DEFAULT_BASE = "dc=host01,dc=example,dc=org"; $DEFAULT_MAIL_HOST = "host01.example.org";

ldifファイルの作成

migrate_base.pl > base.ldif 編集してホストの上位ディレクトリを削除する。 * dc=example,dc=org

ldapaddによるldifファイルの読み込み

# ldapadd -W -x -D "cn=Manager,dc=host01,dc=example,dc=org" -f base.ldif

アカウントの作成

# useradd -u 2001 ldap01 # passwd ldap01 # migrate_passwd.pl /etc/passwd passwd.ldif vi で不要(ldapに移行しない)アカウントを削除する。 # userdel ldap01

グループの作成

# migrate_group.pl /etc/group group.ldif vi で不要(ldapに移行しない)グループ削除する。

アカウントのldapへ登録

# ldapadd -W -x -D "cn=Manager,dc=host01,dc=example,dc=org" -f passwd.ldif # ldapadd -W -x -D "cn=Manager,dc=host01,dc=example,dc=org" -f group.ldif

確認

# ldapsearch -x -b "dc=host01,dc=example,dc=org" # ldapsearch -x -b "dc=host01,dc=example,dc=org" "uid=ldap01"

レプリカサーバ構築時の設定

マスターサーバの設定

マスターサーバの slapd.conf に以下の記述を追加
# Replicas of this database
replogfile /var/lib/ldap/slapd.replog
replica host=192.168.100.102:389 binddn="cn=Manager,dc=example,dc=org"
      bindmethod=simple credentials=secret

レプリカサーバの設定

レプリカサーバの slapd.conf に以下の記述を追加
updatedn         "cn=Manager,dc=example,dc=org"
updateref        ldap://192.168.100.101

その他

以下のファイルは、レプリカサーバ側で、authconfig ツール にてLDAPサーバに
マスターサーバのアドレスをし愛知すると自動更新される。
/etc/ldap.conf
HOST=マスターサーバのIPアドレス

/etc/openldap/ldap.conf
HOST=マスターサーバのIPアドレス

サーバの再起動

マスターサーバでldap プロセスを再起動させる

レプリカサーバの slapd に 変更を伝播するプロセス slurpd が起動していればOK

# ps -ef | egrep "slapd|slurpd"
ldap      4735     1  0 17:32 ?        00:00:00 /usr/sbin/slapd -u ldap -h ldap:///
root      4742     1  0 17:32 ?        00:00:00 /usr/sbin/slurpd

この後、レプリカサーバで slapd を起動する。

先頭へ
      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google