Форум проекта Pro-LDAP.ru
Общие вопросы по LDAP => Работа с LDAP-клиентами => Тема начата: Akavir от 06 Ноябрь 2020, 23:04:01
-
Добрый вечер! Старался выбрать нужный раздел для темы.
Речь совсем не про настройку АТС, речь про настройку сервера OpenLDAP. Задача состоит в том, чтобы АТС брала данные из каталога LDAP и обновляла информацию в контейнере. Проблема состоит в подключении к серверу, вся найденная информация по данному вопросу представлена на скане, прикрепленном к сообщению. Просьба направить в нужном направлении по настройке сервера LDAP.
Я пробовал вводить в поле User ID cn=admin,dc=panasonic,dc=local
но подключение не происходит. Я так понял, что нужна иная учетная запись с возможностью чтения каталогов LDAP, поэтому двигался в этом направлении. Также подозреваю, что для авторизации нужна запись, начинающаяся именно с uid.
Исходные данные:
1. АТС Panasonic NSX1000 с возможность подключения LDAP каталогов.
2. CentOS 7 с установленным OpenLDAP
3. Адресная книга по адресу ou=employees,dc=panasonic,dc=local которая успешно функционирует и загружается на телефонные аппараты с учетными данными cn=admin,dc=panasonic,dc=local и паролем
Я совсем новичок в LDAP, поэтому записал все команды, которы вводил при конфигурации сервера.
Последовательность настройки сервера:
1. Устанавливаем пакеты для OpenLDAP
yum install openldap*
2. Запускаем службу
systemctl start slapd
systemctl enable slapd
#Генерируем пароль и копируем его кэш
slappasswd
{SSHA}VsRTw20WYTiFsSaed75doks6rZMY4n9L
#Переходим в директорию с конфигурационными файлами
cd /etc/openldap/slapd.d/cn\=config
ls
#Проверяем значения в файле конфигурации базы данных olcDatabase
nano olcDatabase\=\{2\}hdb.ldif
#Создаем ldif файл для редактирования hdb.ldif
cd
nano db.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=panasonic,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=panasonic,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}VsRTw20WYTiFsSaed75doks6rZMY4n9L
#Модифицируем файл конфигурации db.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
#Создаем ldif файл для редактирования monitor.ldif
cd
nano monitor.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by
dn.base="cn=admin,dc=panasonic,dc=local" read by * none
#Модифицируем файл конфигурации monitor.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
#Скопируем файл шаблона конфигурации и зададим права
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*
#Добавляем шаблоны схем
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
#Создаем ldif файл базы данных с нодами
nano base.ldif
dn: dc=panasonic,dc=local
dc: panasonic
objectClass: dcObject
objectClass: organization
dn: cn=admin,dc=panasonic,dc=local
objectClass: organizationalRole
cn: admin
description: LDAP Manager
dn: ou=employees,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: employees
dn: ou=groups,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: groups
dn: ou=equipment,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: equipment
#Добавляем в базу данных информацию о нодах
ldapadd -x -D "cn=admin,dc=panasonic,dc=local" -W -f base.ldif
#Проверяем информацию
ldapsearch -D cn="admin,dc=panasonic,dc=local" -W -b "dc=panasonic,dc=local" objectClass=*
#Проверим, что учетная запись администратора имеет доступ к службе каталогов
ldapwhoami -WD cn=admin,dc=panasonic,dc=local
#Создадим пользователя для АТС
dn: uid=NSX1000,ou=equipment,dc=panasonic,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: NSX1000
cn: NSX1000
userPassword: 12345678
shadowLastChange: 15140
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
gidNumber: 1000
uidNumber: 1000
loginShell: /bin/false
homeDirectory: /home/NSX1000
#Установим пароль для пользователя NSX1000
ldappasswd -xZZWD cn=admin,dc=panasonic,dc=local -S uid=NSX1000,ou=equipment,dc=panasonic,dc=local
#Предоставляем доступ пользователю NSX1000 на чтение атрибутов учетных записей
nano nsx1000-acl-mod.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" manage
by * break
-
add: olcAccess
olcAccess: {1}to attrs=userPassword
by self write
by anonymous auth
-
add: olcAccess
olcAccess: {2}to *
by self read
by dn.base="uid=NSX1000,ou=equipment,dc=panasonic,dc=local" read
#Загрузим nsx1000-acl-mod.ldif, чтобы изменить ACL
ldapmodify -xZZWD cn=admin,dc=panasonic,dc=local -f nsx1000-acl-mod.ldif
#Проверим, что учетная запись NSX1000 имеет доступ на чтение каталогов
ldapsearch -D uid="NSX1000,ou=equipment,dc=panasonic,dc=local" -W -b "dc=panasonic,dc=local" objectClass=*
Если что-то необходимо предоставить, может какие-то файлы конфигурации, то скажите, пожалуйста.
-
Здравствуйте! Вроде всё выглядит неплохо. Между этапами
#Создадим пользователя для АТС
и
#Установим пароль для пользователя NSX1000
вы выполнили само добавление записи пользователя в каталог? Что-то вроде такого:
ldapadd -x -D "cn=admin,dc=panasonic,dc=local" -W -f add_NSX1000_user.ldif
где add_NSX1000_user.ldif -- тот файл, в котором вы описали запись пользователя?
Если да, то что выводят команды:
ldapsearch -D uid=NSX1000,ou=equipment,dc=panasonic,dc=local -W -b dc=panasonic,dc=local
и
ldapwhoami -xWD uid=NSX1000,ou=equipment,dc=panasonic,dc=local
?
Егор
-
Добрый день, благодарю за ответ!
Команда:
ldapsearch -D uid=NSX1000,ou=equipment,dc=panasonic,dc=local -W -b dc=panasonic,dc=local
Выводит:
# extended LDIF
#
# LDAPv3
# base <dc=panasonic,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# panasonic.local
dn: dc=panasonic,dc=local
dc: panasonic
objectClass: dcObject
objectClass: organization
# admin, panasonic.local
dn: cn=admin,dc=panasonic,dc=local
objectClass: organizationalRole
cn: admin
description: LDAP Manager
# employees, panasonic.local
dn: ou=employees,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: employees
# Robert Smith, employees, panasonic.local
dn: cn=Robert Smith,ou=employees,dc=panasonic,dc=local
objectClass: inetOrgPerson
cn: Robert Smith
cn: Robert J Smith
cn: bob smith
sn: smith
uid: rjsmith
carLicense: HISCAR 123
homePhone: 555-111-2222
mail: r.smith@example.com
mail: rsmith@example.com
mail: bob.smith@example.com
description: swell guy
# groups, panasonic.local
dn: ou=groups,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: groups
# equipment, panasonic.local
dn: ou=equipment,dc=panasonic,dc=local
objectClass: organizationalUnit
ou: equipment
# users, groups, panasonic.local
dn: cn=users,ou=groups,dc=panasonic,dc=local
objectClass: groupOfNames
cn: users
description: Users group
member: cn=Robert Smith,ou=employees,dc=panasonic,dc=local
# admin, groups, panasonic.local
dn: cn=admin,ou=groups,dc=panasonic,dc=local
objectClass: groupOfNames
cn: admin
description: Admins group
member: cn=Smith Smith,ou=employees,dc=panasonic,dc=local
# \D0\9C\D0\B0\D0\BB\D0\B8\D0\BA\D0\BE\D0\B2 \D0\94.\D0\98. \D0\BA\D0\B0\D0\B1.
117, employees, panasonic.local
dn:: Y2490JzQsNC70LjQutC+0LIg0JQu0JguINC60LDQsS4xMTcsb3U9ZW1wbG95ZWVzLGRjPXBhb
mFzb25pYyxkYz1sb2NhbA==
sn:: 0JzQsNC70LjQutC+0LI=
cn:: 0JzQsNC70LjQutC+0LIg0JQu0JguINC60LDQsS4xMTc=
objectClass: inetOrgPerson
objectClass: top
# other, equipment, panasonic.local
dn: cn=other,ou=equipment,dc=panasonic,dc=local
cn: other
gidNumber: 500
objectClass: posixGroup
objectClass: top
# NSX1000, equipment, panasonic.local
dn: uid=NSX1000,ou=equipment,dc=panasonic,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: NSX1000
cn: NSX1000
shadowLastChange: 15140
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
uidNumber: 1000
loginShell: /bin/false
homeDirectory: /home/NSX1000
gidNumber: 500
userPassword:: e1NTSEF9d3FaVzV0UjExd0dLVjA5YWF5TG5rZ0tTN256QzJqMUM=
# search result
search: 2
result: 0 Success
# numResponses: 12
# numEntries: 11
Я дополнительно ещё записи делал, тренируясь, так что в выводе чуть-чуть больше получилось.
Команда:
ldapwhoami -xWD uid=NSX1000,ou=equipment,dc=panasonic,dc=local
Выводит:
dn:uid=NSX1000,ou=equipment,dc=panasonic,dc=local
Ещё хотел спросить может быть у OpenLDAP есть какие-то средства мониторинга запросов от клиентов извне, чтобы посмотреть, происходит ли вообще обращение к серверу?
-
В таком случае эту запись uid=NSX1000,ou=equipment,dc=panasonic,dc=local с её паролем и следует указать в настройках АТС. Для чистоты эксперимента нужно ещё проверить, принимает ли сервер соединения извне (а не только с localhost), что-то типа такого:
ldapsearch -H ldap://myserver.mydomain.net -D uid=NSX1000,ou=equipment,dc=panasonic,dc=local -W -b dc=panasonic,dc=local
где вместо myserver.mydomain.net нужно указать DNS-имя (или IP-адрес) вашего сервера. Но скорее всего должен принимать.
Ещё хотел спросить может быть у OpenLDAP есть какие-то средства мониторинга запросов от клиентов извне, чтобы посмотреть, происходит ли вообще обращение к серверу?
Обычно это просто логи (настраиваются значением атрибута olcLogLevel (https://pro-ldap.ru/tr/zytrax/ch6/#loglevel) в записи cn=config), например:
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: 256
Если нужно понимать, что действительно происходит, я запускаю slapd в debug-режиме, когда он слушает соединения, а логи выводит сразу в консоль, точнее, в STDOUT. Сначала нужно остановить штатный slapd:
systemctl stop slapd
а затем запустить slapd с правами root из консоли с параметром -d (debug-режим), примерно так:
/usr/sbin/slapd -h ldap://myserver.mydomain.net -u ldap -g ldap -F /etc/openldap/slapd.d -d 256
(смысл всех параметров можно посмотреть с man-старнице slapd (https://pro-ldap.ru/tr/man/slapd.8.html)). А потом из другой консоли выполнить приведённый выше запрос ldapsearch, и посмотреть, что логирует slapd.
Егор
-
Добрый вечер! Благодарю за ответ!
Проверил, сервер отлично принимает соединения извне.
Подключил логирование, но особенно порадовала команда для отладки, за неё отдельная благодарность. Но к сожалениию, помоему дело не в сервере, а в том, что АТС вообще не обращается к нему (пробовал все уровни от -1 до 256).
Снял видео, что происходит, когда телефон обращается к серверу https://vimeo.com/477249132 и когда АТС https://vimeo.com/477249318
Буду пытаться связаться с техподдержкой, но предчувствую ответ, что у меня что-то не так настроено. Есть ещё предположение, что АТС очень хочет видеть Active Directory, а поддержка OpenLDAP просто для галочки. Может быть имеется вариант прикинуться Активными диреториями от Майкрософта, но подозреваю, что это из области фантастики
-
Простите за глупый вопрос: а сервер 192.168.64.10 доступен с АТС 10.8.0.2? То есть, хотя бы ping проходит? Также, возможно, настройки файрвола не дают обратиться к порту 389.
-
Простите за глупый вопрос: а сервер 192.168.64.10 доступен с АТС 10.8.0.2? То есть, хотя бы ping проходит? Также, возможно, настройки файрвола не дают обратиться к порту 389.
Вопрос более чем правильный, но это я проверил в первую очередь, устройства видят друг друга и пингуются, межсетевой экран и SELinux на сервере выключены в данный момент.
Но дело оказалось в промежуточных устройствах, которыми я, к сожалению, не управляю, как только переместил LDAP сервер в сеть 10.8.0.0 клиент сразу подключился. Я вас очень благодарю