Автор Тема: Доступ к данным LDAP  (Прочитано 103205 раз)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #15 : 04 Май 2013, 09:48:16 »
Здравствуйте! Попробуйте так:
dn: cn=PPolicy Default,ou=System,dc=mycompany,dc=ru
objectClass: applicationProcess
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
cn: PPolicy Default
pwdAttribute: 2.5.4.35
pwdInHistory: 3
pwdCheckModule: check_password.so
pwdCheckQuality: 1

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #16 : 11 Май 2013, 22:23:10 »
Егор, доброго Вам времени суток!

Сначала с прошедшими Вас праздниками!!!

В общем возвращаюсь к вопросу, т.к. не было времени заниматься, появлялись другие приоритетные задачи!!!
По Вашей рекомендации, последней:
Цитировать
dn: cn=PPolicy Default,ou=System,dc=mycompany,dc=ru
objectClass: applicationProcess
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
cn: PPolicy Default
pwdAttribute: 2.5.4.35
pwdInHistory: 3
pwdCheckModule: check_password.so
pwdCheckQuality: 1
Спасибо! Удалось добавить.
Пытаюсь поставить готовый пакет, но не получается, хочет openldap-ltb. Когда пытаюсь поставить open-ltb.ругается на openldap-servers :(
Что можете посоветовать?

Позже нашел, вот этот пакет, вроде тоже похоже. Но все сделал, но так и не работает! :(

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #17 : 14 Май 2013, 00:51:20 »
Здравствуйте! Честно говоря, судя по предыдущим постам, я думал что с установкой Вы уже справились. У меня нет под рукой centos, поэтому я скомпилировал LTB-библиотеку из исходников в Ubuntu 12.04, скопировал готовый файл check_password.so туда, где лежат все модули от slapd, создал файл /etc/ldap/check_password.conf :
minPoints 3
useCracklib 0
minUpper 2
minLower 4
minDigit 1
minPunct 0

Потом исправил политику по умолчанию в DIT чтобы было так:
dn: cn=PPolicy Default,ou=System,dc=mycompany,dc=ru
objectClass: applicationProcess
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
cn: PPolicy Default
pwdAttribute: userPassword
pwdInHistory: 3
pwdCheckModule: check_password.so
pwdCheckQuality: 1

Собственно, после этого стало работать:
# ldappasswd -x -D 'uid=egor,ou=Users,dc=mycompany,dc=ru' -w 123 -s 1234
Result: Constraint violation (19)
# ldappasswd -x -D 'uid=egor,ou=Users,dc=mycompany,dc=ru' -w 123 -s 111aaa
Result: Constraint violation (19)
# ldappasswd -x -D 'uid=egor,ou=Users,dc=mycompany,dc=ru' -w 123 -s 111aaA
Result: Constraint violation (19)
# ldappasswd -x -D 'uid=egor,ou=Users,dc=mycompany,dc=ru' -w 123 -s 1aaaaAA
Последний пароль ldappasswd принял.

Вероятно, у Вас не совпала версия OpenLDAP с той, с которой товарищ собирал rpm. Соберите из исходников, должно заработать.

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #18 : 14 Май 2013, 15:17:01 »
Егор, подскажите, пожалуйста, с какими параметрами собирали?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #19 : 16 Май 2013, 03:38:52 »
Здравствуйте! Последовательность действий в моём случае:
1. Сначала я убедился, что заголовочного файла cracklib у меня нет, установил стандартный пакет для Ubuntu и ещё раз проверил -- теперь файл на месте:
# whereis crack
crack:
# apt-get install libcrack2-dev (для rpm-систем тут будет другая команда)
...
# whereis crack
crack: /usr/include/crack.h
2. Далее я выяснил свою версию slapd, скачал и распаковал исходники OpenLDAP:
# slapd -V
...
# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/
...
# tar xzf ./openldap-2.4.28.tgz -C /tmp/
3. После этого я скомпилировал openldap:
# cd /tmp/openldap-2.4.28
# ./configure
...
# make
...
4. Дальше я скачал и распаковал ltb-библиотеку
# wget http://tools.ltb-project.org/attachments/download/51/ltb-project-openldap-ppolicy-check-password-1.1.tar.gz
...
#  tar xzf ./ltb-project-openldap-ppolicy-check-password-1.1.tar.gz -C /tmp/openldap-2.4.28/
5. Теперь, собственно, сборка:
# cd /tmp/openldap-2.4.28/ltb-project-openldap-ppolicy-check-password-1.1
# make CONFIG="/etc/ldap/check_password.conf" LDAP_INC="-I/tmp/openldap-2.4.28/include/ -I/tmp/openldap-2.4.28/servers/slapd"
...
Параметр CONFIG указывался, поскольку в Ubuntu стандартные настройки OpenLDAP лежат в /etc/ldap (а не в /etc/openldap). В параметре LDAP_INC указал пути на только что скомпилированные библиотеки OpenLDAP.

Дальше всё как я описал в предыдущем посте.
Егор
« Последнее редактирование: 16 Май 2013, 03:42:51 от egor »

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #20 : 21 Май 2013, 06:42:56 »
Егор, добрый день!

Огромное спасибо, благодаря Вашему совету и подробному описанию, мне удалось победить в данном направлении LDAP!

Но теперь следующая проблема встала предо мной, в консоли все здорово работает, а вот если через клиент (сейчас я использую LDAP Account Manager) могу менять пароль на какой угодно, правила не работают. Подскажите, что можно сделать, чтоб правило работало и в клиенте?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #21 : 21 Май 2013, 14:57:40 »
Здравствуйте! Есть мнение, что в LAM смена пароля выполняется с помощью обычной операции modify, когда значение атрибута заменяется на другое, а ldappasswd использует операцию LDAP Password Modify Extended Operation (RFC 3062). Поэтому при  изменении пароля в LAM условия наложения ppolicy не применяются. Посмотрите, может быть в настройках LAM есть какая-нибудь опция типа "использовать RFC 3062 при смене пароля".

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #22 : 28 Май 2013, 10:44:45 »
Егор, доброго времени суток!

Наконец-то снова дошли руки до настройки.

Все успешно настроил, в LAM оказывается все это делается в настройках самого приложения, выставил нужные параметры = политикам установленным на сервере и все!!!

Еще раз спасибо!!!

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #23 : 28 Май 2013, 11:27:45 »
Егор, разрешите вопрос.

Для общего развития?

Немного отлучусь назад по нашему диалогу. По правам на просмотр ldap. Я по Вашим советам сделал следующее:
access to *
        by self write
        by anonymous auth
        by * search
т.е. доступ на чтение и изменение только к своих данных.

Сейчас задумался, в перспективе, сделать, чтоб у конкретного пользователя были права, на чтение всей БД, у остальных на чтение запись только своих. Подскажите, как это будет выглядеть?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #24 : 28 Май 2013, 13:59:50 »
Здравствуйте! Если у конкретного пользователя должен быть доступ на чтение всей базы, включая парольные атрибуты, то можно так:
access to *
        by self write
        by dn.base="uid=someuser,ou=Users,dc=mycompany,dc=ru" read
        by anonymous auth
        by * search

Если доступ на чтение всего, кроме парольных атрибутов, то так:
access to attr=userPassword
        by self write
        by anonymous auth
        by * none

access to *
        by self write
        by dn.base="uid=someuser,ou=Users,dc=mycompany,dc=ru" read
        by * search
В принципе, эти ACL из категории простейших. Не хочу показаться бестактным, но может стоит почитать теорию ACL в OLAG или в LFRS?

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #25 : 29 Май 2013, 23:21:17 »
Егор, доброго времени суток!

Спасибо Вам огромное за помощь! Без Вас я бы еще долго разбирадся бы.

Solo

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #26 : 11 Сентябрь 2013, 09:59:13 »
Егор, здравствуйте.

Помогите настроить ACL на следующую задачу:
LDAP будет использоваться только как адресаная книга, но для нескольких доменов. Необходимо чтобы у каждого домена был свой суперпользователь с полными правами, а другие пользователи каждого домена получали доступ к только к своей книге на чтение по паролю (мне видится просто единый отдельный пользователь с паролем только на чтение).

Текущий конфиг (пока заведен только один домен):

access to * by * write

database   bdb

cachesize   200
suffix      "dc=example,dc=ru"
rootdn      "cn=admin,dc=example,dc=ru"

rootpw {SSHA}H08zq1G+kmYoYDGjxEAzlUhUfgxv+qom

directory   /var/lib/ldap

index objectClass                       eq,pres
index cn,sn,uid                 eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub
index pgpCertID,pgpKeyID,pgpKeyType,pgpUserID,pgpKeyCreateTime sub,eq
index pgpSignerID,pgpSubKeyID,pgpKeySize,pgpKeyExpireTime sub,eq
index pgpDisabled,pgpRevoked eq
index homePhone,mobile eq
index mail eq

access to attr=userPassword
            by self write
            by anonymous auth
            by dn.base="cn=admin,dc=example,dc=ru" write
            by * none

access to attrs=userPassword
        by self
        by anonymous auth
        by dn.regex="cn=(.+),ou=ab,dc=example,dc=ru" write

access to *
        by dn.regex="cn=(.+),ou=ab,dc=example,dc=ru" write

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #27 : 11 Сентябрь 2013, 10:32:46 »
Здравствуйте!
LDAP будет использоваться только как адресаная книга, но для нескольких доменов. Необходимо чтобы у каждого домена был свой суперпользователь с полными правами, а другие пользователи каждого домена получали доступ к только к своей книге на чтение по паролю (мне видится просто единый отдельный пользователь с паролем только на чтение).
Честно говоря, не совсем понятно, что Вы имеете ввиду под терминами "домен", "книга", "суперпользователь домена", "пользователи домена" и "единый отдельный пользователь". Если ACL строится под структуру дерева каталога (а это, если я правильно понял, как раз Ваш случай), что для грамотного составления ACL требуется знать эту самую структуру дерева. Короче говоря, если это не секрет, приведите свою структуру: те записи, которые должны получать доступ и те записи, к которым доступ нужен. Если секрет -- пишите в личку.

Егор

Solo

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #28 : 11 Сентябрь 2013, 10:40:29 »
Не секрет.

Как я это себе представляю:
есть адресная книга LDAP для нескольких организаций с доменами example.ru и primer.ru.
Пользователи каждой из организаций должны иметь доступ только к своей адресной книге и только на чтение. Также у каждой организации должен быть свой пользователь с правами на изменение всех атрибутов и добавление новых записей (только в свою книгу).

Solo

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #29 : 11 Сентябрь 2013, 11:14:26 »
Под доменом я понимаю базовые уровни дерева (dc=example,dc=ru; dc=primer,dc=com).