LINUX.ORG.RU
ФорумAdmin

Синхронизация пользователей ldap AD и openLDAP

 , , , ,


1

1

Добрый день, уважаемые участники форума. Сразу скажу, что я новичок в linux - не судите строго. Итак суть вопроса.

Развернут ldap AD с пользователями. Развернут ldap OpenLDAP (пустой) Развернуты некоторые сервисы, которые подключены к ldap-у OpenLDAP. Права пользователям (чтение, чтение/запись) раздаются по группам ldap-а OpenLDAP в которой находятся пользователи.

Задача: необходимо сделать так, чтобы пользователь мог залогиниться под своей доменной учеткой в сервисе, при этом автоматически эта учетка должна создаваться в openldap и попадать в определенную группу openldap-а (либо чтобы создавалась учетка в openldap, а добавление учетки в группу происходило в ручную).

Соответственно необходимо, чтобы любые изменения атрибутов доменной учетной записи синхронизировались с атрибутами учетной записи openldap.

Подскажите пожалуйста реально ли это реализовать? Знаю, что существуют такие понятия как проксирование, но подозреваю, что это не мой вариант, при проксировании доменный пользователь не создается же в базе OpenLDAP или я ошибаюсь?

Смог поднять проксирование, все работает, но не понимаю куда двигаться дальше. Как заставить openldap автоматом добавлять пользователей в свою базу.

OS: CentOS7

C:\> ldifde -f users.ldif -s ad_server -d «ou=users,dc= example,dc=org» -p subtree -r "(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=example,DC=org)"

# ldapadd -x -D «cn=admin,dc=example,dc=org» -w password -H ldap:// -f users.ldif

mos ★★☆☆☆
()
Ответ на: комментарий от mos

Для того, чтобы это сработало, нужно чтобы все схемы AD были совместимы c openLDAP и подключены к нему. А поскольку это не так, то это не будет работать.

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от mos

Спасибо, принцип понятен. Но на сколько я понимаю это работает лишь единожды и по сути является импортом. А что делать, когда в AD появится новый пользователь? Когда у него изменится фамилия, пароль, и т.п.)? Нужна именно синхронизация.

Palazur
() автор топика
Ответ на: комментарий от zgen

Согласен, отличия между LDAP WIndows и Linux безусловно есть. Предположим теоретически я приведу в соответствие все атрибуты, а что делать дальше? Как заставить синхронизироваться? В этом главный вопрос.

Palazur
() автор топика
Ответ на: комментарий от zgen

само собой. но тут уже ТСу надо работать.

mos ★★☆☆☆
()
Ответ на: комментарий от Palazur

В ОП запрошена не синхронизация. А вообще черте-что. Но и это черте-что можно реализовать, конечно.
Если нужна синхронизация, я бы начал с https://www.google.ru/search?client=ubuntu&channel=fs&q=openldap acti...
вроде для этого не нужно быть специалистом в линАксах (причем тут вообще линакс, кстати, в котором ТС не специалист? openldap возможно собирается даже не на никс-системах...)

mos ★★☆☆☆
()
Ответ на: комментарий от Palazur

зная любовь шапки к винде, я бы посмотрел в сторону FreeIPA, тем более дистр шапковый. не удивлюсь, если там уже что-то готовое.

mos ★★☆☆☆
()
Ответ на: комментарий от mos

Гуглил, пробовал, все не то. LSC дичь какая-то. Вот за FreeIPA большое спасибо, заинтересовал, буду пробовать. Спасибо!

Palazur
() автор топика
Ответ на: комментарий от Palazur

Предположим теоретически я приведу в соответствие все атрибуты, а что делать дальше?

Не приведешь, это физически несовместимо.

В этом главный ответ.


Тебе надо понять что ты хочешь сделать, и подумать, как сделать правильно.

Синхронизировать собачку с солнцем нельзя. Но ведь ты это делаешь для чего-то, вопрос собственно для чего.

zgen ★★★★★
()

Насколько я в курсе, простым способом получить пароль пользователя из AD невозможно. Ни пароль, ни его хэш. Тем более, что хэши паролей у AD слегка надмозговые, и openldap'у вряд ли подойдут.

Наверное это можно сделать какой-то хитрой магией, но не в лоб.

Чем тебя проксирование не устроило? Зачем тебе учётки в локальной базе openldap'а?

LSC дичь какая-то.

А он тебя чем не устроил?

Ivan_qrt ★★★★★
()

а почему бы вместо всего этого просто не использовать AD, раз уж он все равно есть? В нем не хуже чем в openldap можно раскидывать пользователей в группы.

user_undefined
()
Ответ на: комментарий от user_undefined

Ничем не хуже, даже лучше. К сожалению мне не дадут создавать пользователей в AD. Мне нужно, чтобы в сервисы могли зайти как существующие пользователи AD, так и пользователи openldap (которых нельзя завести в AD по некоторым политическим соображениям).

Palazur
() автор топика
Ответ на: комментарий от Ivan_qrt

Чем тебя проксирование не устроило?

Честно? Не до конца понимаю как именно это работает. Я правильно понимаю, что при работающем проксировании, пользователь AD пытается залогиниться в сервисе и входит в него т.к. openldap не находит пользователя в своей базе и ищет в базе AD? Получается пользователь входит, но уровень доступа ему нужно предоставлять отдельно.

В своем розовом мире я хочу чтобы различный уровень доступа к ресурсу раздавался в зависимости от группы в которой находятся пользователи. А как добавить пользователя в группу openldap, если такого пользователя физически нет в базе openldap?) Сам opemldap нужен, чтобы заводить в нем пользователей, которых нельзя завести в AD. Разворачивать новое AD - не дают денег на лицензию.

Если я в чем то ошибаюсь, поправьте пожалуйста.

Palazur
() автор топика

Сам AD не умеет экспортировать пароли, никак. У 389ds есть коннектор, позволяющий гонять учетки с AD. Это отдельная софтина, ставится на сервер AD. Чтобы загнать в 389ds существующих юзеров, нужно запросить сброс пароля для всех юзеров, тогда при смене паролей коннектор сможет их синхронизировать.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Да, когда начал ковырять FreeIPA наткнулся на эту софтину (389passsync вроде называется). Такая реализация к сожалению недопустима, да и сам траст AD и FreeIPA как я понял может работать только в обе стороны, что так же недопустимо.

Спасибо за разъяснение! Похоже, что мои влажные мечты неосуществимы)

Palazur
() автор топика
Ответ на: комментарий от Palazur

В общем так: проксирование - это именно то, что тебе нужно. Забудь про любые синхронизации.

Что делать:
Создаешь базу, присваиваешь ей какой-либо dc, например dc=ldap,dc=loc.
Создаешь прокси, у неё dc будет таким же, как и у ad. Например, dc=ad,dc=loc.
Допустим тебе надо включить две учётки из ad
cn=aduser1,ou=users,dc=ad,dc=loc
cn=aduser2,ou=users,dc=ad,dc=loc
и одну учётку, созданную в ldap'е
uid=ldapuser1,ou=users,dc=ldap,dc=loc
в группу uid=grp1,ou=groups,dc=ldap,dc=loc.

Для этого создаёшь контейнер groups, а в нём группу (objectclass=groupOfNames), и записываешь в неё

member: cn=aduser1,ou=users,dc=ad,dc=loc
member: cn=aduser2,ou=users,dc=ad,dc=loc
member: uid=ldapuser1,ou=users,dc=ldap,dc=loc

Теперь пользователи находятся в данной группе.

Как работает memberof с проксированием я не проверял. Но, по идее, особых проблем не должно быть. В особенности, если нужны только группы из ldap'а.

Ivan_qrt ★★★★★
()

в режиме прокси для OpenLDAP есть замена атрибутов, так что все можно сделать прозрачно.....

overlay rwm + rwm-map attribute

anonymous2 ★★★★★
()
Ответ на: комментарий от Ivan_qrt

Иван, если вас не затруднит, можете связаться со мной, чтобы я спросил пару советов по данной тематике? Skype:shestof Whats App: 89686201488

Palazur
() автор топика

Удалось добиться необходимого путем авторизации через SASL и настройки LSC коннектора. Всем большое спасибо. Тему можно закрывать.

Palazur
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.