Проблемы с установкой и настройкой OpenLDAP

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

VldSergio
Сообщения: 4
ОС: CentOS 6, FreeBSD 8.2

Проблемы с установкой и настройкой OpenLDAP

Сообщение VldSergio »

Добрый день всем.
Прошу помощи или хотя бы указания направления движения в настройке OpenLDAP.

Поставлена задача завести на предприятии службу LDAP. Предпосылки есть - почти сотня отдельных площадок, несколько сотен юзеров, соответственно, даже банальное поддержание актуальной адресной книги превращается в проблему. Впрочем, причины не обсуждаются - задача есть.
Есть машина под управлением CentOS 6 - вполне рабочая. Сейчас она используется мной как рабочая станция, в перспективе служба уедет на нормальный сервер, возможно через репликацию - не суть важно.

Установлены из родных репозиториев OpenLDAP и все что он попросил, а так же и все, что рекомендуется в манах, Руководстве Администратора и статьях. В частности, обновлена до 5.2 berkeley DB, установлен openssl, sasl, kerberos, ну и так далее...
Создана первоначальная конфигурация, в соответствии с последними рекомендациями в руководстве - в директории /etc/openldap/slapd.d
Вот содержимое файла /etc/openldap/slapd.d/нашафирма/cn=config.ldif

Код: Выделить всё

dn: cn=config
objectClass: olcGlobal
cn: config
structuralObjectClass: olcGlobal
entryUUID: ccef3fe8-7944-1030-996a-b559c1732ecc
creatorsName: cn=config
createTimestamp: 20110922085836Z
entryCSN: 20110922085836.007980Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110922085836Z


Сервер запущен командой slapd -F /etc/openldap/slapd.d/uнашафирма -u ldap -g ldap -h ldap:///
в процессах есть, порты слушает, на ldapsearch откликается, на ldapadd - тоже.
С помощью последней команды были добавлены все нужные схемы.

Вот содержимое /cn=config

Код: Выделить всё

-rw------- 1 ldap ldap 50253 Sep 22 12:00 cn=schema.ldif
-rw------- 1 ldap ldap   356 Sep 22 11:58 olcDatabase={0}config.ldif
-rw------- 1 ldap ldap   525 Sep 22 11:58 olcDatabase={-1}frontend.ldif


вот содержимое /cn=config/cn=schema

Код: Выделить всё

-rw------- 1 ldap ldap 15497 Sep 22 12:04 cn={0}core.ldif
-rw------- 1 ldap ldap 11290 Sep 22 12:04 cn={1}cosine.ldif
-rw------- 1 ldap ldap  2784 Sep 22 12:04 cn={2}inetorgperson.ldif
-rw------- 1 ldap ldap  6420 Sep 22 12:04 cn={3}nis.ldif
-rw------- 1 ldap ldap  1219 Sep 22 12:05 cn={4}openldap.ldif


Имея, теоретически, базы config и frontend, пытаюсь поднять рабочую базу.

Вот содержимое base.ldif, который я пытаюсь скормить серверу через ldapadd

Код: Выделить всё

dn: olcDatabase={1}bdb, cn=config
objectClass: olcDatabaseConfig
objectClass: olcbdbConfig
olcDatabase: {1}bdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=firma,dc=local
olcRootDN: cn=admin,dc=firma,dc=local
olcRootPW: тут пароль админа
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,uid pres,eq,approx,sub
olcDbIndex: objectClass eq
olcAccess: to attrs=userPassword
 by self write
 by anonymous auth
 by dn.base="cn=admin,dc=firma,dc=local" write
 by * none
 olcAccess: to *
 by self write
 by dn.base="cn=admin,dc=firma,dc=local" write

Получаю отлуп,
ldap_add: Other (e.g., implementation specific) error (80)
additional info: <olcAccess> handler exited with 1
Останавливаю сервер ldap, пытаюсь скормить его slapadd - получаю синтаксическую ошибку
unknown directive <dn:> outside backend info and database definitions. - разумееся, прямо на первую строчку файла.

PS: Ах, да. Вот лог ldap.log

Код: Выделить всё

Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 fd=10 ACCEPT from IP=127.0.0.1:43162 (IP=0.0.0.0:389)
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=0 BIND dn="cn=config" method=128
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=0 BIND dn="cn=config" mech=SIMPLE ssf=0
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=0 RESULT tag=97 err=0 text=
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=1 ADD dn="olcDatabase={1}bdb,cn=config"
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=1 RESULT tag=105 err=80 text=duplicate index definition for attr "uid"
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 op=2 UNBIND
Sep 23 10:53:10 unixsystem slapd[15266]: conn=8 fd=10 closed


В общем - вопрос - где затыка?
/dev/hand уже дрожит, /dev/brain уже кипит.
Спасибо сказали:
Аватара пользователя
lastpriot
Сообщения: 218
ОС: FreeBSD

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение lastpriot »

судя по логу, два раза определили индекс uid

olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,uid pres,eq,approx,sub

оставьте только один
Спасибо сказали:
VldSergio
Сообщения: 4
ОС: CentOS 6, FreeBSD 8.2

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение VldSergio »

Спасибо. А вообще конечно, строгость формата ldif меня удивляет. ладно, пробелы в начале строки. НО надо же и в конце предыдущей строки тулить пробел, чтобы слова не слились. При этом сообщения об ошибках очень невнятные...

lastpriot писал(а):
23.09.2011 12:40
судя по логу, два раза определили индекс uid

olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,uid pres,eq,approx,sub

оставьте только один


Решил пока вообще убрать индексирование, для тестовых целей не особо нужно.
файл new.ldif приобрел такой вид:

Код: Выделить всё

dn: olcDatabase=bdb, cn=config
objectClass: olcDatabaseConfig
objectClass: olcbdbConfig
olcDatabase: bdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=ufarma,dc=local
olcRootDN: cn=admin,dc=ufarma,dc=local
olcRootPW: admin
olcAccess:to attrs=userPassword
 by self write
 by anonymous auth
 by dn="uid=admin,dc=ufarma,dc=local" write
 by * none


Попытка скормить его закончилась вот таким сообщением на консоль:

Код: Выделить всё

[root@unixsystem]# ldapadd -x -v -V -D "cn=config" -W -f new.ldif
ldapadd: @(#) $OpenLDAP: ldapmodify 2.4.23 (Sep 20 2011 17:03:49) $
    sergienko@unixsystem.ufarma:/home/sergienko/Downloads/openldap-2.4.23/clients/tools
    (LDAP library: OpenLDAP 20423)
ldap_initialize( <DEFAULT> )
Enter LDAP Password:
add objectClass:
    olcDatabaseConfig
    olcbdbConfig
add olcDatabase:
    bdb
add olcDbDirectory:
    /var/lib/ldap
add olcSuffix:
    dc=ufarma,dc=local
add olcRootDN:
    cn=admin,dc=ufarma,dc=local
add olcRootPW:
    admin
add olcAccess:
    to attrs=userPassword by self write by anonymous auth by dn="uid=admin,dc=ufarma,dc=local" write by * none
adding new entry "olcDatabase=bdb, cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcRootPW> failed startup

*** glibc detected *** ldapadd: munmap_chunk(): invalid pointer: 0x00000000010c89c7 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3cb3075676]
ldapadd[0x4034c5]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x3cb301ec5d]
ldapadd[0x402929]
======= Memory map: ========
00400000-00410000 r-xp 00000000 08:02 77251                              /usr/local/bin/ldapmodify
00610000-00611000 rw-p 00010000 08:02 77251                              /usr/local/bin/ldapmodify
010bf000-010e0000 rw-p 00000000 00:00 0                                  [heap]
3706e00000-3706e03000 r-xp 00000000 08:02 74172                          /lib64/libcom_err.so.2.1
3706e03000-3707002000 ---p 00003000 08:02 74172                          /lib64/libcom_err.so.2.1
3707002000-3707003000 rw-p 00002000 08:02 74172                          /lib64/libcom_err.so.2.1
3707200000-3707253000 r-xp 00000000 08:02 74831                          /usr/lib64/libssl.so.1.0.0
3707253000-3707453000 ---p 00053000 08:02 74831                          /usr/lib64/libssl.so.1.0.0
3707453000-370745b000 rw-p 00053000 08:02 74831                          /usr/lib64/libssl.so.1.0.0
3707a00000-3707a38000 r-xp 00000000 08:02 74830                          /lib64/libgssapi_krb5.so.2.2
3707a38000-3707c37000 ---p 00038000 08:02 74830                          /lib64/libgssapi_krb5.so.2.2
3707c37000-3707c39000 rw-p 00037000 08:02 74830                          /lib64/libgssapi_krb5.so.2.2
3708200000-37082d0000 r-xp 00000000 08:02 74829                          /lib64/libkrb5.so.3.3
37082d0000-37084cf000 ---p 000d0000 08:02 74829                          /lib64/libkrb5.so.3.3
37084cf000-37084da000 rw-p 000cf000 08:02 74829                          /lib64/libkrb5.so.3.3
3cb2800000-3cb281e000 r-xp 00000000 08:02 79287                          /lib64/ld-2.12.so
3cb2a1e000-3cb2a1f000 r--p 0001e000 08:02 79287                          /lib64/ld-2.12.so
3cb2a1f000-3cb2a20000 rw-p 0001f000 08:02 79287                          /lib64/ld-2.12.so
3cb2a20000-3cb2a21000 rw-p 00000000 00:00 0
3cb2c00000-3cb2c02000 r-xp 00000000 08:02 79298                          /lib64/libdl-2.12.so
3cb2c02000-3cb2e02000 ---p 00002000 08:02 79298                          /lib64/libdl-2.12.so
3cb2e02000-3cb2e03000 r--p 00002000 08:02 79298                          /lib64/libdl-2.12.so
3cb2e03000-3cb2e04000 rw-p 00003000 08:02 79298                          /lib64/libdl-2.12.so
3cb3000000-3cb3175000 r-xp 00000000 08:02 79288                          /lib64/libc-2.12.so
3cb3175000-3cb3375000 ---p 00175000 08:02 79288                          /lib64/libc-2.12.so
3cb3375000-3cb3379000 r--p 00175000 08:02 79288                          /lib64/libc-2.12.so
3cb3379000-3cb337a000 rw-p 00179000 08:02 79288                          /lib64/libc-2.12.so
3cb337a000-3cb337f000 rw-p 00000000 00:00 0
3cb3400000-3cb3417000 r-xp 00000000 08:02 79324                          /lib64/libpthread-2.12.so
3cb3417000-3cb3617000 ---p 00017000 08:02 79324                          /lib64/libpthread-2.12.so
3cb3617000-3cb3618000 r--p 00017000 08:02 79324                          /lib64/libpthread-2.12.so
3cb3618000-3cb3619000 rw-p 00018000 08:02 79324                          /lib64/libpthread-2.12.so
3cb3619000-3cb361d000 rw-p 00000000 00:00 0
3cb4400000-3cb441d000 r-xp 00000000 08:02 79317                          /lib64/libselinux.so.1
3cb441d000-3cb461c000 ---p 0001d000 08:02 79317                          /lib64/libselinux.so.1
3cb461c000-3cb461d000 r--p 0001c000 08:02 79317                          /lib64/libselinux.so.1
3cb461d000-3cb461e000 rw-p 0001d000 08:02 79317                          /lib64/libselinux.so.1
3cb461e000-3cb461f000 rw-p 00000000 00:00 0
3cb4800000-3cb4815000 r-xp 00000000 08:02 79294                          /lib64/libz.so.1.2.3
3cb4815000-3cb4a14000 ---p 00015000 08:02 79294                          /lib64/libz.so.1.2.3
3cb4a14000-3cb4a15000 rw-p 00014000 08:02 79294                          /lib64/libz.so.1.2.3
3cb5000000-3cb5016000 r-xp 00000000 08:02 79316                          /lib64/libresolv-2.12.so
3cb5016000-3cb5216000 ---p 00016000 08:02 79316                          /lib64/libresolv-2.12.so
3cb5216000-3cb5217000 r--p 00016000 08:02 79316                          /lib64/libresolv-2.12.so
3cb5217000-3cb5218000 rw-p 00017000 08:02 79316                          /lib64/libresolv-2.12.so
3cb5218000-3cb521a000 rw-p 00000000 00:00 0
3cbf000000-3cbf016000 r-xp 00000000 08:02 28852                          /lib64/libgcc_s-4.4.4-20100726.so.1
3cbf016000-3cbf215000 ---p 00016000 08:02 28852                          /lib64/libgcc_s-4.4.4-20100726.so.1
3cbf215000-3cbf216000 rw-p 00015000 08:02 28852                          /lib64/libgcc_s-4.4.4-20100726.so.1
3cc0c00000-3cc0c02000 r-xp 00000000 08:02 14966                          /lib64/libkeyutils.so.1.3
3cc0c02000-3cc0e01000 ---p 00002000 08:02 14966                          /lib64/libkeyutils.so.1.3
3cc0e01000-3cc0e02000 rw-p 00001000 08:02 14966                          /lib64/libkeyutils.so.1.3
3fa6400000-3fa6571000 r-xp 00000000 08:02 16787                          /usr/lib64/libcrypto.so.1.0.0
3fa6571000-3fa6770000 ---p 00171000 08:02 16787                          /usr/lib64/libcrypto.so.1.0.0
3fa6770000-3fa6793000 rw-p 00170000 08:02 16787                          /usr/lib64/libcrypto.so.1.0.0
3fa6793000-3fa6796000 rw-p 00000000 00:00 0
3fa6800000-3fa680a000 r-xp 00000000 08:02 16780                          /lib64/libkrb5support.so.0.1
3fa680a000-3fa6a09000 ---p 0000a000 08:02 16780                          /lib64/libkrb5support.so.0.1
3fa6a09000-3fa6a0a000 rw-p 00009000 08:02 16780                          /lib64/libkrb5support.so.0.1
3fa7400000-3fa7427000 r-xp 00000000 08:02 16784                          /lib64/libk5crypto.so.3.1
3fa7427000-3fa7627000 ---p 00027000 08:02 16784                          /lib64/libk5crypto.so.3.1
3fa7627000-3fa7629000 rw-p 00027000 08:02 16784                          /lib64/libk5crypto.so.3.1
3fa7800000-3fa7807000 r-xp 00000000 08:02 16771                          /lib64/libcrypt-2.12.so
3fa7807000-3fa7a07000 ---p 00007000 08:02 16771                          /lib64/libcrypt-2.12.so
3fa7a07000-3fa7a08000 r--p 00007000 08:02 16771                          /lib64/libcrypt-2.12.so
3fa7a08000-3fa7a09000 rw-p 00008000 08:02 16771                          /lib64/libcrypt-2.12.soAborted


Логи сказали вот что:
... Опс. Ничего, в логе вообще чисто.
сам демон slapd что удивительно, не упал.
Спасибо сказали:
Аватара пользователя
lastpriot
Сообщения: 218
ОС: FreeBSD

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение lastpriot »

в olcRootPW указывается не сам пароль а его хеш (пример {SSHA}gshFCLqYNesAoFlB9M22Nuoiyf7kEgG9 )
Спасибо сказали:
VldSergio
Сообщения: 4
ОС: CentOS 6, FreeBSD 8.2

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение VldSergio »

Спасибо, недоглядел. А если я согласен мириться с простой аутентификацией, все равно надо хранить хэш?

Но да ладно, поменял. Опять подпихиваю
получаю тот же мусор на консоли, в частности это:

adding new entry "olcDatabase=bdb, cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: <olcRootPW> failed startup

и в логе:

Код: Выделить всё

Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 fd=10 ACCEPT from IP=127.0.0.1:42637 (IP=0.0.0.0:389)
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 op=0 BIND dn="cn=config" method=128
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 op=0 BIND dn="cn=config" mech=SIMPLE ssf=0
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 op=0 RESULT tag=97 err=0 text=
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 op=1 ADD dn="olcDatabase=bdb,cn=config"
Sep 23 12:14:21 unixsystem slapd[15266]: bdb(dc=ufarma,dc=local): unrecognized name-value pair: txn_checkpoint
Sep 23 12:14:21 unixsystem slapd[15266]: bdb_db_open: database "dc=ufarma,dc=local" cannot be opened, err 22. Restore from backup!
Sep 23 12:14:21 unixsystem slapd[15266]: bdb(dc=ufarma,dc=local): txn_checkpoint interface requires an environment configured for the transaction subsystem
Sep 23 12:14:21 unixsystem slapd[15266]: bdb_db_close: database "dc=ufarma,dc=local": txn_checkpoint failed: Invalid argument (22).
Sep 23 12:14:21 unixsystem slapd[15266]: backend_startup_one (type=bdb, suffix="dc=ufarma,dc=local"): bi_db_open failed! (22)
Sep 23 12:14:21 unixsystem slapd[15266]: olcRootPW: value #0: <olcRootPW> failed startup (pX#020�C#177)!
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 op=1 RESULT tag=105 err=80 text=<olcRootPW> failed startup
Sep 23 12:14:21 unixsystem slapd[15266]: conn=16 fd=10 closed (connection lost)


Меня смущают строки шестая и от нее вниз....
Спасибо сказали:
Аватара пользователя
lastpriot
Сообщения: 218
ОС: FreeBSD

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение lastpriot »

скорей всего поврежденна БД openldap

Код: Выделить всё

db_recover -h /var/lib/openldap


или вручную удалите БД openldap с диска (по дефолту /var/lib/openldap) и все по новой сделайте
Спасибо сказали:
VldSergio
Сообщения: 4
ОС: CentOS 6, FreeBSD 8.2

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение VldSergio »

lastpriot писал(а):
23.09.2011 13:25
скорей всего поврежденна БД openldap

Код: Выделить всё

db_recover -h /var/lib/openldap


или вручную удалите БД openldap с диска (по дефолту /var/lib/openldap) и все по новой сделайте

Там от базы одни ошметки. Вместо полудюжины полагающихся файлов только один alock размером два кило.
Похоже, ошибка на более раннем этапе, т .е. slapd запускается и работает на моем конфиге, но чего-то в нем не хватает для нормального функционала.
Можно посоветоваться - пытаться ли добить /slapd.d, или взять какой либо из многочисленных примеров slapd.conf валяющихся на сайтах, и попытаться начать сначала? Смущает что все эти конфиги чуть ли не 2004 года, и даже публикации посвежее растут из тех же старых решений...
Спасибо сказали:
Аватара пользователя
lastpriot
Сообщения: 218
ОС: FreeBSD

Re: Проблемы с установкой и настройкой OpenLDAP

Сообщение lastpriot »

мое предпочтение slapd.conf
+ на nixp.ru и lissyara.su есть вменяемые примеры
Спасибо сказали: