Автор Тема: Как лучше настроить аутентификацию на OS X?  (Прочитано 44770 раз)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #15 : 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. Посмотрите вот эту тему, она похожа на Ваш случай. Используется там не pam_ldap, но настройки можно адаптировать.

Егор

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

Егор
« Последнее редактирование: 17 Сентябрь 2016, 01:50:33 от egor »

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #16 : 01 Февраль 2017, 07:13:47 »
И снова вопрос по теме. В данном мануале предлагают создать OU=macosxodconfig. Я поискал в интернете и здесь, здесь и здесь нашёл небольшое количество информации. В поле комментария этого OU предлагают внести информацию из plist-файла, в котором содержится настройки LDAP, которые вроде как должны загрузится если у вас стоит вариант получения конфигурации с сервера. Но я не совсем понял, в каком месте создавать данную ou? Может, кто уже видел, что-нибудь подобное?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #17 : 01 Февраль 2017, 12:09:27 »
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ, то там написано:

Цитировать
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.

Егор


marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #18 : 07 Февраль 2017, 08:03:50 »
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ, то там написано:

Цитировать
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, то всё работает

« Последнее редактирование: 07 Февраль 2017, 08:51:12 от marawu »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #19 : 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

Егор

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #20 : 10 Февраль 2017, 12:17:20 »
Здравствуйте, это снова я, это снова вы и опять я со своими mac'ами (прошу не кидать в меня тухлые помидоры). Используя данный материал я настроил 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 так и не появились :(





У меня такое подозрение, что в файле 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

« Последнее редактирование: 10 Февраль 2017, 12:29:47 от marawu »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как лучше настроить аутентификацию на OS X?
« Ответ #21 : 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), по аналогии с настройками аутентификации по сети. Методом тыка тут вряд ли получится победить =) .

Егор