インターネットプロジェクトのLDAP

他の部分へのリンク: 2、3、4、5



おそらく誰もが、初心者のインターネットプロジェクトには集中AAAシステム(認証、承認、アカウンティング)が必要であることに同意するでしょう:多くのユーザー、多数のバトルサーバー、少し少ない開発サーバー、svn、管理ページなど...

私もそのような必要に直面しました、そして、私は私がしたことについて話したいです。

したがって、インストールと構成に必要なもの:

  1. OpenLDAP、当然のことながら複製
  2. LDAPバックアップ-正確に2番目の項目、最初(-;
  3. phpldapadmin、グループおよびテンプレートの計画
  4. 管理者の認可-Apache HTTPD mod_ldap
  5. svnの承認(+ sasl)
  6. sshアクセス許可-pam_ldap




このすべての経済をDebian GNU / Linux Lennyの最近のリリースにインストールします。



「なぜ(Active | Apache | Fedora | e)Directory?」という質問を予想して、事前に答えます。

  1. それらはOpenLDAPよりも遅くなっています-決定的な要因かもしれません。
  2. ActiveDirectoryがありません。ActiveDirectoryがある場合は、「どちらの場合でも」10分でベアメタルのバックアップから解除できることをあまり知りません。
  3. eDirectoryは優れていますが、「ちょうど」別のインフラストラクチャを展開する準備ができていません。
  4. 他の2つについては、まったく知らないことを認めます(-:


それでは、行きましょう:

1。



2つの物理サーバーまたは異なる物理サーバー上の2つの仮想サーバーが必要です。それらをldap01.habr.ru(マスター)およびldap02.habr.ru(スレーブ)と呼びましょう。

syncreplを介して、レプリケーションマスタースレーブを実行します。

分散はDNSラウンドロビンを介して機能します。このため、habr.ruゾーンにエントリを追加します。

ldap01.habr.ru. IN A 192.168.100.1

ldap02.habr.ru. IN A 192.168.100.2

ldap.habr.ru. IN A 192.168.100.1

ldap.habr.ru. IN A 192.168.100.2







まず、ldap01.habr.ruを構成します

apt-get install slapd ldap-utils ldapscripts phpldapadmin

インストーラーはドメイン、パスワードについて尋ねてきます-habr.ruと管理者パスワードを入力します。

インストール後、データベースが正しく入力されているかどうかを確認する必要があります-正しいドメインを持つ2つのエントリが必要です(etchに不具合があります-ドメインはdc = habr、dc = ru、dc = habr、dc = ruなどの2回登録されました):

#slapcat

dn: dc=habr,dc=ru

objectClass: dcObject

objectClass: organization

o: habr

dc: habr

structuralObjectClass: organization

entryUUID: f22558c4-8c9d-102d-95a8-73e8f6c3e453

creatorsName: cn=admin,dc=habr,dc=ru

createTimestamp: 20090211153942Z

modifiersName: cn=admin,dc=habr,dc=ru

modifyTimestamp: 20090211153942Z



dn: cn=admin,dc=habr,dc=ru

objectClass: simpleSecurityObject

objectClass: organizationalRole

cn: admin

description: LDAP administrator

structuralObjectClass: organizationalRole

entryUUID: 82bbb18a-8c99-102d-8ac2-1508ef940fe8

creatorsName:

createTimestamp: 20090211150757Z

userPassword:: e0NSWVUIOS9FM25wTGQzU3FXOUE=

modifiersName: cn=admin,dc=habr,dc=ru

modifyTimestamp: 20090217023143Z







ドメインに不具合があった場合、または何かが間違って入力された場合は、次の手順を実行します。

  1. データベースをファイルに保存して編集する

    #slapcat > /root/habr.ru.ldiff



  2. その後、slapdを停止します-/ /etc/init.d/slapd stop



    slapd /etc/init.d/slapd stop



  3. 古いデータベースを削除rm /var/lib/ldap/*



  4. slapdを実行-/ /etc/init.d/slapd start



    slapd /etc/init.d/slapd start



  5. ファイルをインポートしますslapadd -l /root/habr.ru.ldiff





グリッチがなければ、ユーザーcn = syncrepl、dc = habr.ru、dc = ruに対して同様のファイルを作成する必要があります。

ユーザーのパスワードハッシュの生成-slappasswd -h {MD5}

そして、ファイル/root/syncrepl.habr.ru.ldiffを作成します。

cat > /root/syncrepl.habr.ru.ldiff << "EOF"

dn: cn=syncrepl,dc=habr,dc=ru

objectClass: simpleSecurityObject

objectClass: organizationalRole

cn: syncrepl

description: synrepl user

structuralObjectClass: organizationalRole

userPassword:: {MD5}ICy5YqxZB1uWSwcVLSNLcA==

EOF

— slapadd -l /root/syncrepl.habr.ru.ldiff

/etc/ldap/



:

cat > /etc/ldap/ldap.conf << "EOF"

BASE dc=habr, dc=ru

URI ldap://ldap.habr.ru

EOF







:

cat > /etc/ldap/slapd.conf << "EOF"

#

include /etc/ldap/schema/core.schema

include /etc/ldap/schema/cosine.schema

include /etc/ldap/schema/nis.schema

include /etc/ldap/schema/inetorgperson.schema

pidfile /var/run/slapd/slapd.pid

argsfile /var/run/slapd/slapd.args

loglevel 0

modulepath /usr/lib/ldap

moduleload back_bdb



#

moduleload syncprov

sizelimit 500

tool-threads 1

backend bdb



#

database bdb

suffix "dc=habr,dc=ru"

checkpoint 512 30

rootdn "cn=admin,dc=habr,dc=ru"

#

index objectClass,entryCSN,entryUUID eq

overlay syncprov

syncprov-checkpoint 10 1

syncprov-sessionlog 10

directory "/var/lib/ldap"

dbconfig set_cachesize 0 2097152 0

dbconfig set_lk_max_objects 1500

dbconfig set_lk_max_locks 1500

dbconfig set_lk_max_lockers 1500

lastmod on

# . syncrepl

access to attrs=userPassword,shadowLastChange

by dn="cn=admin,dc=habr,dc=ru" write

by dn="cn=syncrepl,dc=habr,dc=ru" read

by anonymous auth

by self write

by * none

access to *

by dn="cn=syncrepl,dc=habr,dc=ru" read

by * break

access to dn.base="" by * read

access to *

by dn="cn=admin,dc=habr,dc=ru" write

by * read

#

EOF









ldap02.habr.ru:

apt-get install slapd





- .



slapd — /etc/init.d/slapd stop





:

cat > /etc/ldap/ldap.conf << "EOF"

BASE dc=habr, dc=ru

URI ldap://ldap.habr.ru

EOF







:

cat > /etc/ldap/slapd.conf << "EOF"

#

include /etc/ldap/schema/core.schema

include /etc/ldap/schema/cosine.schema

include /etc/ldap/schema/nis.schema

include /etc/ldap/schema/inetorgperson.schema

pidfile /var/run/slapd/slapd.pid

argsfile /var/run/slapd/slapd.args

loglevel none

modulepath /usr/lib/ldap

moduleload back_bdb

sizelimit 500

tool-threads 1

#

database bdb

suffix "dc=habr,dc=ru"

rootdn "cn=admin,dc=habr,dc=ru"

directory "/var/lib/ldap"

syncrepl rid=0

provider=ldap://ldap01.habr.ru

type=refreshOnly

interval=00:00:00:10

searchbase="dc=habr,dc=ru"

scope=sub

bindmethod=simple

binddn="cn=syncrepl,dc=habr,dc=ru"

# syncrepl

credentials="password"

dbconfig set_cachesize 0 2097152 0

dbconfig set_lk_max_objects 1500

dbconfig set_lk_max_locks 1500

dbconfig set_lk_max_lockers 1500

index objectClass,entryCSN,entryUUID eq

lastmod on

checkpoint 512 30

access to attrs=userPassword,shadowLastChange

by dn="cn=admin,dc=habr,dc=ru" write

by dn="cn=syncrepl,dc=habr,dc=ru" write

by anonymous auth

by self write

by * none

access to dn.base="" by * read

access to *

by dn="cn=admin,dc=habr,dc=ru" write

by dn="cn=syncrepl,dc=habr,dc=ru" write

by * read

EOF







slapd — /etc/init.d/slapd start





slapd ldap01.habr.ru slapcat.



, :

(backend) - bdb hdb, , .



, .

, .



[UPD]











All Articles