インターネットプロジェクトの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]

Source: https://habr.com/ru/post/J52978/


All Articles