Автор Тема: Помощь с LDAP клиентом в виде АТС  (Прочитано 77 раз)

Akavir

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Помощь с LDAP клиентом в виде АТС
« : 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=*
Если что-то необходимо предоставить, может какие-то файлы конфигурации, то скажите, пожалуйста.
« Последнее редактирование: 06 Ноябрь 2020, 23:09:30 от Akavir »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 459
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #1 : 07 Ноябрь 2020, 00:19:13 »
Здравствуйте! Вроде всё выглядит неплохо. Между этапами
Цитировать
#Создадим пользователя для АТС
и
Цитировать
#Установим пароль для пользователя 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?

Егор

Akavir

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #2 : 07 Ноябрь 2020, 08:52:22 »
Добрый день, благодарю за ответ!

Команда:
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 есть какие-то средства мониторинга запросов от клиентов извне, чтобы посмотреть, происходит ли вообще обращение к серверу?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 459
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #3 : 07 Ноябрь 2020, 13:49:56 »
В таком случае эту запись 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 в записи 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). А потом из другой консоли выполнить приведённый выше запрос ldapsearch, и посмотреть, что логирует slapd.

Егор

Akavir

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #4 : 09 Ноябрь 2020, 20:58:25 »
Добрый вечер! Благодарю за ответ!

Проверил, сервер отлично принимает соединения извне.
Подключил логирование, но особенно порадовала команда для отладки, за неё отдельная благодарность. Но к сожалениию, помоему дело не в сервере, а в том, что АТС вообще не обращается к нему (пробовал все уровни от -1 до 256).

Снял видео, что происходит, когда телефон обращается к серверу https://vimeo.com/477249132 и когда АТС https://vimeo.com/477249318

Буду пытаться связаться с техподдержкой, но предчувствую ответ, что у меня что-то не так настроено. Есть ещё предположение, что АТС очень хочет видеть Active Directory, а поддержка OpenLDAP просто для галочки. Может быть имеется вариант прикинуться Активными диреториями от Майкрософта, но подозреваю, что это из области фантастики
« Последнее редактирование: 09 Ноябрь 2020, 21:02:56 от Akavir »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 459
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #5 : 10 Ноябрь 2020, 00:11:42 »
Простите за глупый вопрос: а сервер 192.168.64.10 доступен с АТС 10.8.0.2? То есть, хотя бы ping проходит? Также, возможно, настройки файрвола не дают обратиться к порту 389.
« Последнее редактирование: 10 Ноябрь 2020, 00:15:16 от egor »

Akavir

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помощь с LDAP клиентом в виде АТС
« Ответ #6 : 10 Ноябрь 2020, 09:55:21 »
Простите за глупый вопрос: а сервер 192.168.64.10 доступен с АТС 10.8.0.2? То есть, хотя бы ping проходит? Также, возможно, настройки файрвола не дают обратиться к порту 389.

Вопрос более чем правильный, но это я проверил в первую очередь, устройства видят друг друга и пингуются, межсетевой экран и SELinux на сервере выключены в данный момент.

Но дело оказалось в промежуточных устройствах, которыми я, к сожалению, не управляю, как только переместил LDAP сервер в сеть 10.8.0.0 клиент сразу подключился. Я вас очень благодарю