Форум проекта Pro-LDAP.ru

Интеграция => Учётные записи в *nix системах => Тема начата: marawu от 22 Июль 2016, 13:17:32

Название: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 22 Июль 2016, 13:17:32
Добрый день, прошу совета. Имеется парк машин работающих на OS X. Есть сервер openLDAP (debian) использующийся для аутентификации на локальных сайтах. На компьютерах люди работают под локальными учетными записями. Хотелось это исправить. С LDAP я только начинаю знакомится, поэтому хотел бы спросить насколько сложно это реализовать? Нужно ли вносить какие-то изменения на сервер или клиенты?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 25 Июль 2016, 03:48:36
Здравствуйте! С Mac-ами сталкиваться не приходилось, но люди настраивали, вот 2 разных способа:

http://pig.made-it.com/ldap-mac.html (http://pig.made-it.com/ldap-mac.html)
http://vuksan.com/linux/mac-os-x-ldap/openldap-mac-os-x-authentication.html (http://vuksan.com/linux/mac-os-x-ldap/openldap-mac-os-x-authentication.html)

Сложность зависит от текущих настроек Вашего OpenLDAP и опыта. К сожалению, помочь чем-то более конкретным вряд ли получится, никаких mac-ов под рукой нет =( . Могу ответить на теоретические вопросы.

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 25 Июль 2016, 17:59:01
У меня уже есть работающий openLDAP, испотльзующийся для авторизации на корп. сайтах. Я знаком с ссылками, которые Вы отправили, по ним у меня сделать не получилось. MAC говорит, что не может подключится к серверу. К примеру он ищет по пути /LDAPv3/myserver/. Этот путь  есть по-умолчанию или его необходимо добавить в ручную?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 26 Июль 2016, 09:13:49
Здравствуйте! То, что у Вас есть работающий OpenLDAP на Debian я понял ещё с первого раза =) . Но, видно, я плохо объяснил, что с OS X я НИКОГДА не работал, поэтому в настойке этой операционки помочь не смогу =( . С другой стороны, у меня приличный опыт работы с Linux и OpenLDAP, поэтому с серверной частью готов Вам помочь.

Что касается /LDAPv3/myserver/, то при более-менее внимательном изучении материала по первой ссылке можно сделать вывод, что это некий набор конфигурационных файлов в директории /Library/Preferences/OpenDirectory/Configurations/, который образуется после настроек в утилите Users & Groups.

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 01 Сентябрь 2016, 08:25:48
Здравствуйте! То, что у Вас есть работающий OpenLDAP на Debian я понял ещё с первого раза =) . Но, видно, я плохо объяснил, что с OS X я НИКОГДА не работал, поэтому в настойке этой операционки помочь не смогу =( . С другой стороны, у меня приличный опыт работы с Linux и OpenLDAP, поэтому с серверной частью готов Вам помочь.

Что касается /LDAPv3/myserver/, то при более-менее внимательном изучении материала по первой ссылке можно сделать вывод, что это некий набор конфигурационных файлов в директории /Library/Preferences/OpenDirectory/Configurations/, который образуется после настроек в утилите Users & Groups.

Егор

Егор, добрый день, извините за оффтоп, я был занят на другом проекте, но вернулся к этому. Скажите, Вы ещё имеете желание помочь мне? :D
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 01 Сентябрь 2016, 09:33:39
Если смогу, попробую помочь. Пишите.

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 02 Сентябрь 2016, 12:57:17
Если смогу, попробую помочь. Пишите.

Егор

Добрый день, Егор. В очередной раз потратил пару дней на настройку аутентификации, но пока прогресс не большой. Мне удалось найти способ решения для того, чтобы моё MAC-устройство получило данные с сервера:

Цитировать
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist

WS0000:~ admin$ id nikita.spitckij
uid=1537(nikita.spitckij) gid=3174 groups=3174,12(everyone),62(netaccounts),702(com.apple.sharepoint.group.2),701(com.apple.sharepoint.group.1)

Я нашел мануал http://cs.unk.edu/~zhengaw/projects/openldap-server/ (http://cs.unk.edu/~zhengaw/projects/openldap-server/) по настройка openLDAP и OS X. Я так понимаю, файл схемы обязательно должен присутствовать для того, чтобы получить нужные атрибуты, для аутентификации в ОС? Сейчас я застрял на этапе добавления samba.ldif:

Цитировать
@testLDAP:~$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
adding new entry "cn=samba,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: olcAttributeTypes: Duplicate attributeType: "1.3.6.1.4.1.7165.2.1.20"

Хотя дупликата там нет:

Цитировать
dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: samba
olcAttributeTypes: {0}( 1.3.6.1.4.1.7165.2.1.1 NAME 'lmPassword' DESC 'LanMana
 ger Passwd' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch S
 YNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {1}( 1.3.6.1.4.1.7165.2.1.2 NAME 'ntPassword' DESC 'NT Pass
 wd' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.
 3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {2}( 1.3.6.1.4.1.7165.2.1.4 NAME 'acctFlags' DESC 'Account
 Flags' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX
  1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {3}( 1.3.6.1.4.1.7165.2.1.3 NAME 'pwdLastSet' DESC 'NT pwdL
 astSet' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VAL
 UE )
olcAttributeTypes: {4}( 1.3.6.1.4.1.7165.2.1.5 NAME 'logonTime' DESC 'NT logon
 Time' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
  )
olcAttributeTypes: {5}( 1.3.6.1.4.1.7165.2.1.6 NAME 'logoffTime' DESC 'NT logo
 ffTime' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VAL
 UE )
olcAttributeTypes: {6}( 1.3.6.1.4.1.7165.2.1.7 NAME 'kickoffTime' DESC 'NT kic
 koffTime' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-V
 ALUE )
olcAttributeTypes: {7}( 1.3.6.1.4.1.7165.2.1.8 NAME 'pwdCanChange' DESC 'NT pw
 dCanChange' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE
 -VALUE )
olcAttributeTypes: {8}( 1.3.6.1.4.1.7165.2.1.10 NAME 'homeDrive' DESC 'NT home
 Drive' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX
  1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {9}( 1.3.6.1.4.1.7165.2.1.11 NAME 'scriptPath' DESC 'NT scr
 iptPath' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3
 .6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {10}( 1.3.6.1.4.1.7165.2.1.12 NAME 'profilePath' DESC 'NT p
 rofilePath' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {11}( 1.3.6.1.4.1.7165.2.1.13 NAME 'userWorkstations' DESC
 'userWorkstations' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {12}( 1.3.6.1.4.1.7165.2.1.17 NAME 'smbHome' DESC 'smbHome'
  EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1
 .1466.115.121.1.15 )
olcAttributeTypes: {13}( 1.3.6.1.4.1.7165.2.1.18 NAME 'domain' DESC 'Windows N
 T domain to which the user belongs' EQUALITY caseIgnoreIA5Match SUBSTR caseIg
 noreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {14}( 1.3.6.1.4.1.7165.2.1.14 NAME 'rid' DESC 'NT rid' EQUA
 LITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
olcAttributeTypes: {15}( 1.3.6.1.4.1.7165.2.1.15 NAME 'primaryGroupID' DESC 'N
 T Group RID' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGL
 E-VALUE )
olcAttributeTypes: {16}( 1.3.6.1.4.1.7165.2.1.20 NAME 'sambaSID' DESC 'Securit
 y ID' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{64} SI
 NGLE-VALUE )
olcAttributeTypes: {17}( 1.3.6.1.4.1.7165.2.1.23 NAME 'sambaPrimaryGroupSID' D
 ESC 'Primary Group Security ID' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.
 1.1466.115.121.1.26{64} SINGLE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Samba
 Auxilary Account' SUP top AUXILIARY MUST ( uid $ rid ) MAY ( cn $ lmPassword
 $ ntPassword $ pwdLastSet $ logonTime $ logoffTime $ kickoffTime $ pwdCanChan
 ge $ pwdMustChange $ acctFlags $ displayName $ smbHome $ homeDrive $ scriptPa
 th $ profilePath $ description $ userWorkstations $ primaryGroupID $ domain )
  )

В чем может быть ошибка?

ЗЫ Видимо ошибка возникает из-за того, что samba уже был добавлен (я просто сделал копию боевого сервера и экспериментирую на нем). Как мне добавить обновленную схему?

ЗЫЗЫ Разобрался, просто удалил все строки от которых были ошибки о дубликатах
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 05 Сентябрь 2016, 11:58:53
Если смогу, попробую помочь. Пишите.

Егор

Егор, добрый день. У меня возник вопрос относительно домашнего каталога. В openLDAP по умолчанию используется путь /home/uid, а в macOS домашней директорией является /Users/uid. И вот тут у меня возникает вопрос на счет схем. Чтобы openLDAP правильно понимал где лежит хомяк нужно добавить файл apple.schema? Я воспользовался инструкцией (http://cs.unk.edu/~zhengaw/projects/openldap-server/import-apple-and-samba-schemas/), но ничего не изменилось, хотя схема вроде как добавилась:

root@testLDAP:/etc/ldap/schema# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: cn={4}ns-mail,cn=schema,cn=config

dn: cn={5}kolab,cn=schema,cn=config

dn: cn={6}samba,cn=schema,cn=config

dn: cn={7}dyngroup,cn=schema,cn=config

dn: cn={8}samba,cn=schema,cn=config

dn: cn={9}apple,cn=schema,cn=config

В итоге мне нужно чтобы пользователь заходил на ПК и у него создавалась домашняя директория, при чём это должно работать одновременно для Debian, CentOS и macOS.

Сейчас я могу зайти в macOS  если изменю путь до хомяка на сервере и создам его руками на ПК(другие ОС пока не настраивал). Можете подсказать как решить даную проблему?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 06 Сентябрь 2016, 11:31:35
Решил данную проблему с хомяком на macOS:

Цитировать
cat /etc/auto_master
#
# Automounter master map
#
#+auto_master      # Use directory service
/net         -hosts      -nobrowse,hidefromfinder,nosuid
#/home         auto_home   -nobrowse,hidefromfinder
/Network/Servers   -fstab
/-         -static

После закоменчивания строчек перезагрузка и:
Цитировать
sudo rm -rf /home
sudo ln -s /Users /home
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 06 Сентябрь 2016, 12:40:15
Здравствуйте!

Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config

Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
 
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке  описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.

Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.

Такие мысли. Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 07 Сентябрь 2016, 06:56:54
Здравствуйте!

Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config

Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
 
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке  описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.

Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.

Такие мысли. Егор

У меня несколько вопросов:

1. Samba. Если я правильно понял, то мне нужно было в уже существующую схему добавить новые атрибуты? Или просто сформировать LDIF -файл и с его помощью добавить схему. Потому-что как видите у меня получилось что самбы 2.

2. Можно побольше инфы на тему "подключить"?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 07 Сентябрь 2016, 08:39:02
Здравствуйте!
1. Samba. Если я правильно понял, то мне нужно было в уже существующую схему добавить новые атрибуты? Или просто сформировать LDIF -файл и с его помощью добавить схему. Потому-что как видите у меня получилось что самбы 2.
Сначала надо было бы разобраться, нужна ли эта схема вообще =) . То есть, есть ли в ней какие-то атрибуты, которые Вы собираетесь использовать под свои задачи. Если нет, то её вообще не нужно было подлючать. Но сейчас уже поздно: корректного пути удалить лишнюю схему из OpenLDAP нет (пока).

2. Можно побольше инфы на тему "подключить"?
В любой записи каталога есть обязательный (структурный) объектный класс со своими атрибутами, некоторые из которых обязательны для заполнения, остальные -- опциональные. Кроме структурного класса в записи может быть несколько вспомогательных объектных классов со своими атрибутами (в то числе обязательными). То есть "подключить" или "отключить" вспомогательный объектный класс можно, а структурный -- нельзя. Делается это либо через графический LDAP-редактор, либо путём специально сформированного LDIF-файла для модификации. Чтобы не объяснять на пальцах, предлагаю прислать LDIF одной из записей пользователя, я покажу, как её модифицировать.

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 07 Сентябрь 2016, 09:06:36
Сначала надо было бы разобраться, нужна ли эта схема вообще =) . То есть, есть ли в ней какие-то атрибуты, которые Вы собираетесь использовать под свои задачи. Если нет, то её вообще не нужно было подлючать. Но сейчас уже поздно: корректного пути удалить лишнюю схему из OpenLDAP нет (пока).
Во всех мануалах было написано, что они зависимы и apple.schema использует схему самбы. Но на самом деле пока это не критично, пока у меня получилось аутентифицироваться и этого на данном этапе достаточно.

В любой записи каталога есть обязательный (структурный) объектный класс со своими атрибутами, некоторые из которых обязательны для заполнения, остальные -- опциональные. Кроме структурного класса в записи может быть несколько вспомогательных объектных классов со своими атрибутами (в то числе обязательными). То есть "подключить" или "отключить" вспомогательный объектный класс можно, а структурный -- нельзя. Делается это либо через графический LDAP-редактор, либо путём специально сформированного LDIF-файла для модификации. Чтобы не объяснять на пальцах, предлагаю прислать LDIF одной из записей пользователя, я покажу, как её модифицировать.

Егор

dn: uid=user.name,ou=People,dc=name,dc=com
uidNumber: 1537
mailQuota: 1048576
gidNumber: 3174
objectClass: top
objectClass: inetOrgPerson
objectClass: kolabInetOrgPerson
objectClass: mailRecipient
objectClass: organizationalPerson
objectClass: person
objectClass: posixAccount
givenName:: 0J3QuNC60LjRgtCwIA==
ou: ou=People,dc=name,dc=com
mailHost: imap.name.com
sn:: 0KHQv9C40YbQutC40Lk=
preferredLanguage: ru_RU
cn:: 0J3QuNC60LjRgtCwINCh0L/QuNGG0LrQuNC5
uid: user.name
displayName:: 0KHQv9C40YbQutC40LksINCd0LjQutC40YLQsA==
mail: user.name@name.com
userPassword: {SSHA}zWDoAuasXgUBA76+VbQOMD7s7TZlS1Eg
loginShell: /bin/bash
homeDirectory: /home/user.name
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 07 Сентябрь 2016, 12:58:02
В Вашей записи структурный класс inetOrgPerson (и его родители organizationalPerson и person), остальные -- вспомогательные.

LDIF модификации будет примерно такой:
dn: uid=user.name,ou=People,dc=name,dc=com
changetype: modify
add: objectClass
objectClass: apple-user
-
add: apple-user-homeurl
apple-user-homeurl: /Users/user.name
-
add: apple-user-homequota
apple-user-homequota: 10240
То есть сначала добавляется объектный класс, потом все его обязательные атрибуты и те из необязательных, которые Вам нужны. То есть можно добавить какие угодно атрибуты из класса и задать им значения (в примере я поставил значения на угад, наверняка там должно быть что-то специфичное для apple).

Егор

Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 12 Сентябрь 2016, 12:57:54
Здравствуйте!

Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config

Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
 
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке  описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.

Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.

Такие мысли. Егор
А можете немного объяснить, а то я совсем запутался.

Я хочу ограничить доступ к некоторым "серверам" на  MAC OS, чтобы люди не могли залогинится на них. Исходя из информации https://discussions.apple.com/thread/3773658?start=0&tstart=0 и личном тестировании, то на основе групп это сделать не получится.

Я попытался найти информацию про pam_ldap  и pam_filter для OS X, да и вообще в целом, но я только запутался.

Я правильно понимаю, что если я хочу использовать pam_filter, то мне нужно настроить аутентификацию через pam_ldap?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 17 Сентябрь 2016, 01:40:16
Здравствуйте! Извините за задержку с ответом -- было очень много работы.

Я хочу ограничить доступ к некоторым "серверам" на  MAC OS, чтобы люди не могли залогинится на них. Исходя из информации https://discussions.apple.com/thread/3773658?start=0&tstart=0 и личном тестировании, то на основе групп это сделать не получится.

Я попытался найти информацию про pam_ldap  и pam_filter для OS X, да и вообще в целом, но я только запутался.

Я правильно понимаю, что если я хочу использовать pam_filter, то мне нужно настроить аутентификацию через pam_ldap?

pam_filter пользоваться не приходилось. Если система PAM работает в OS X, то аутентификацию пользователей по их учёткам в каталоге можно будет настроить через модуль pam_ldap. И фильтрацию можно будет организовать через него же используя стандартные фильтры поиска LDAP. Посмотрите вот эту тему (http://pro-ldap.ru/forum/index.php?topic=335.0), она похожа на Ваш случай. Используется там не pam_ldap, но настройки можно адаптировать.

Егор

P.S. Прочитав эту статью (https://help.ubuntu.com/community/LDAPClientAuthentication) я понял, что Вы, видимо, имели ввиду не модуль PAM pam_filter, а один из параметров настройки модуля pam_ldap =) . Тогда да, настроив pam_ldap можете прописать LDAP-фильтр в этом параметре.

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 01 Февраль 2017, 07:13:47
И снова вопрос по теме. В данном мануале (http://pig.made-it.com/ldap-mac.html) предлагают создать OU=macosxodconfig. Я поискал в интернете и здесь (http://www.torriefamily.org/~torriem/wiki/computer_stuff:opendir_and_ldap#inital_ldap_configuration), здесь (https://help.ubuntu.com/community/OSXClientAuthenticationToLDAP) и здесь (http://deepport.net/archives/setting-up-a-linux-server-for-os-x-clients/) нашёл небольшое количество информации. В поле комментария этого OU предлагают внести информацию из plist-файла, в котором содержится настройки LDAP, которые вроде как должны загрузится если у вас стоит вариант получения конфигурации с сервера. Но я не совсем понял, в каком месте создавать данную ou? Может, кто уже видел, что-нибудь подобное?
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 01 Февраль 2017, 12:09:27
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ (http://pig.made-it.com/ldap-mac.html), то там написано:

Цитировать
Adding containers

Mac OS X searches the LDAP-tree using the base and filtering on: (&(objectClass=organizationalUnit)(ou=macosxodconfig)), to support having the LDAP Mappings in the LDAP-tree we add this ou with:

dn: ou=macosxodconfig,ou=apps,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit

Later we will fill this with the correct data.

То есть этот контейнер, чтобы удовлетворять поисковому фильтру, может быть где угодно под корневой записью, точнее под той записью, которая настроена в качестве базы поиска. Если база поиска совпадает с корневой запись каталога, то можно создать запись-контейнер даже непосредственно под корневой записью: ou=macosxodconfig,dc=example,dc=com, это не принципиально.

Ниже в том же документе написано, как наполнить атрибут description этой записи-контейнера шаблоном настроек, сохранённым из Directory Utility.

Егор

Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 07 Февраль 2017, 08:03:50
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ (http://pig.made-it.com/ldap-mac.html), то там написано:

Цитировать
Adding containers

Mac OS X searches the LDAP-tree using the base and filtering on: (&(objectClass=organizationalUnit)(ou=macosxodconfig)), to support having the LDAP Mappings in the LDAP-tree we add this ou with:

dn: ou=macosxodconfig,ou=apps,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit

Later we will fill this with the correct data.

То есть этот контейнер, чтобы удовлетворять поисковому фильтру, может быть где угодно под корневой записью, точнее под той записью, которая настроена в качестве базы поиска. Если база поиска совпадает с корневой запись каталога, то можно создать запись-контейнер даже непосредственно под корневой записью: ou=macosxodconfig,dc=example,dc=com, это не принципиально.

Ниже в том же документе написано, как наполнить атрибут description этой записи-контейнера шаблоном настроек, сохранённым из Directory Utility.

Егор



Егор, извините, а не подскажите, как разрешить анонимное чтение для атрибута description у ou? Иначе mac не может получить инфу о том, какую конфигурацию ему загружать?

Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 ACCEPT from IP=192.168.70.42:49154 (IP=0.0.0.0:389)
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SRCH attr=defaultNamingContext namingContexts supportedSASLMechanisms vendorName vendorVersion operatingSystemVersion dNSHostName
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 EXT oid=1.3.6.1.4.1.1466.20037
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 STARTTLS
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 RESULT oid= err=0 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 TLS established tls_ssf=256 ssf=256
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SRCH attr=netlogon
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SRCH attr=description
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SRCH base="cn=accesslog" scope=2 deref=0 filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SRCH attr=description
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=5 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(cn=ldapreplicas)"
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=5 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=6 UNBIND
Feb  7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 closed

Я почитал 8 раздел, перепробовал несколько вариантов, но ничего не работает.  :(

olcAccess: {3}to dn.base="ou=macosxodconfig,dc=example,dc=com"
  by * read
olcAccess: {4}to *
  by peername.ip="xx.xx.xx.xx" read
  by self write
  by users read
  by * none

olcAccess: {3}to dn.one="dc=example,dc=com" filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
  by * read

ЗЫ, если в последнем правиле пишу by * read, то всё работает

Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 07 Февраль 2017, 09:32:44
Тут очень тонкий момент в ACL: если у анонимов нет права на просмотр вышестоящей записи, то он не сможет добраться до нижестоящей. Самый простой способ решить эту проблему -- дать анонимам права search, примерно так:

access to attrs=userPassword
  by self write
  by anonymous auth
  by * none

access to dn.base="ou=macosxodconfig,dc=example,dc=com"
  by * read

access to *
  by self write
  by users read
  by * search

Тогда они не смогут прочитать записи из каталога, но смогут найти и прочитать ou=macosxodconfig,dc=example,dc=com

Егор
Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: marawu от 10 Февраль 2017, 12:17:20
Здравствуйте, это снова я, это снова вы и опять я со своими mac'ами (прошу не кидать в меня тухлые помидоры). Используя данный материал (http://pro-ldap.ru/books/openldap-ubuntu-in-practice/index.html) я настроил Kerberos сервер (единственное, я поднял его на отдельном сервере, что видимо было не очень хорошей идеей). После я вспомнил, что у нас есть OS X Server, на котором тоже поднят LDAP (Open Directory, если я всё правильно понял), но он не используется, а просто поднят по дефолту. Я подключился к нему и нашёл так cn=config, который mac постоянно пытался найти, судя по логам:

кусочек лога, но далеко не всё


Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 fd=68 ACCEPT from IP=192.168.70.120:49163 (IP=0.0.0.0:389)
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SRCH attr=supportedSASLMechanisms defaultNamingContext namingContexts schemaNamingContext saslRealm
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 EXT oid=1.3.6.1.4.1.1466.20037
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 STARTTLS
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 RESULT oid= err=0 text=
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 fd=58 TLS established tls_ssf=256 ssf=256
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 fd=68 TLS established tls_ssf=256 ssf=256
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SRCH base="cn=config,dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=apple-configuration)(cn=kerberos*))"
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SRCH attr=apple-config-realname apple-xmlplist
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SRCH base="cn=config,cn=accesslog" scope=2 deref=0 filter="(&(objectClass=apple-configuration)(cn=kerberos*))"
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SRCH attr=apple-config-realname apple-xmlplist
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 BIND dn="uid=ldap-proxy,ou=Special Users,dc=example,dc=com" method=128
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 BIND dn="uid=ldap-proxy,ou=Special Users,dc=example,dc=com" mech=SIMPLE ssf=0
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 RESULT tag=97 err=0 text=
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 op=4 UNBIND
Feb  9 16:31:49 inldaptest slapd[2410]: conn=3982 fd=58 closed

Я посмотрел, как там всё настроено (можно глянуть в прикрепленном файле).

Я накидал такой ldif :


dn: cn=config,dc=example,dc=com
cn: config
objectClass: container


dn: ou=macosxodconfig,cn=config,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit
description:< file:///root/apple-ldap/macosxodconfig.plist


dn: cn=KerberosKDC,cn=config,dc=example,dc=com
objectClass: apple-configuration
cn: KerberosKDC
apple-config-realname: KDCSETUP
apple-kdc-configdata:< file:///root/apple-ldap/apple-kdc-configdata


dn: cn=KerberosClient,cn=config,dc=example,dc=com
objectClass: top
objectClass: apple-configuration
cn: KerberosClient
apple-xmlplist:< file:///root/apple-ldap/KerberosClient.plist


dn: cn=macosxodpolicy,cn=config,dc=example,dc=com
cn: macosxodpolicy
objectClass: top
objectClass: apple-configuration
apple-xmlplist:< file:///root/apple-ldap/macosxodpolicy.plist

а содержимое файлов копипастнул (кроме macosxodconfig)из OS X Server'a и поменял имя сервера в директивах на свой. Ошибки не появляются, macosxodconfig работает, что очень облегчило мне жизнь, но настройки Kerberos так и не появились :(


(http://cdn1.savepice.ru/uploads/2017/2/10/2e4abbf9665b3361ca7a6ab1cd9a8944-full.png)


У меня такое подозрение, что в файле apple-kdc-configdata ссылки должы указывать на другой сервер (и как указать на другой сервер я не совсем понимаю)



root@inldaptest:~/apple-ldap# cat apple-kdc-configdata
[password_quality]
        policies = builtin:no-check
[kdc]
database = {
        KDCSETUP = {
                realm = KDCSETUP
                acl_file = /var/db/krb5kdc/acl_file.KDCSETUP (kdc01:/etc/krb5kdc/kadm5.acl)?
                mkey_file = /var/db/krb5kdc/m_key.KDCSETUP
                dbname = od:/LDAPv3/ldapi://%2Fvar%2Frun%2Fldapi (ldap://ldap.example.com)?
                log_file = /var/log/krb5kdc/log.KDCSETUP (kdc01:/var/log/krb5kdc.log)
        }
}


Поскольку служба kerberos на другом сервере, то указание на файлы должно вести на этот самый сервер. На сколько вообще  "рентабельно" держать KDC на другом сервере?


Так же я не уверен, что я до конца настроил KDC до конца. Например в OS X Server у учетной записи есть такие атрибуты:

authAuthority: ;ApplePasswordServer;0x02098b10862211e6992d003ee1c11672,1024 65537 126680851980588997076959924167638382612747425551724726660886251257345549336876023999187690505358995675087149894845087595210326276983306294504781977312875647289613983944443305599211538888282087781604582987957739510061791840899029740445046609653617216046603903478376773908967401034837338556668165852674278208149 root@osx.example.com:192.168.250.250
authAuthority: ;Kerberosv5;;admin1@OSX.EXAMPLE.COM;OSX.EXAMPLE.COM;
altSecurityIdentities: Kerberos:admin1@OSX.EXAMPLE.COM


А в моём LDAP-сервере их нет.


Все файлы прикрепил ниже.


ЗЫ. Извините, наверно уже всем надоел с этой темой, но хотелось бы до конца доделать проект и заодно познать LDAP/Kerberos

Название: Re: Как лучше настроить аутентификацию на OS X?
Отправлено: egor от 14 Февраль 2017, 13:02:43
Здравствуйте! Очень тяжело что-то советовать в режиме "гадания на кофейной гуще". Есть предложение вообще убрать из каталога настройки KDC (cn=KerberosKDC,cn=config,dc=example,dc=com), затем настроить kerberos-аутентификацию штатными средствами(через GUI), добиться, чтобы это работало, а потом экспортировать получившиеся настройки в plist и поместить его в каталог (cn=KerberosClient,cn=config,dc=example,dc=com), по аналогии с настройками аутентификации по сети. Методом тыка тут вряд ли получится победить =) .

Егор