Author Topic: nss_ldap + kerberos  (Read 5058 times)

0 Members and 1 Guest are viewing this topic.

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
nss_ldap + kerberos
« on: June 26, 2006, 20:58:42 »
Речь об nss_ldap от Padl software в сочетании с kerberos. В общем начал разбираться, и что то не совсем понял. По идее, до входа в сеть пользователя, читать из ldap машина должна под аккаунтом из keytab aka host/wildcomp.realm.tld, а после использовать уже мандат пользователя. Как же это осуществить на деле я не понял. Да и должно ли оно быть конкретно в таком виде? Может есть предложения? Кто как это делал? В любом случае, до логина пользователя должна же как то система обращаться к ldap  

PS  Google не помог, может кому то повезло больше?
« Last Edit: June 26, 2006, 20:59:46 by deepwalker »

Offline Krueger

  • Full Member
  • ***
  • Posts: 195
  • Karma: +0/-0
    • http://www.zaonsv.ru
nss_ldap + kerberos
« Reply #1 on: June 26, 2006, 22:41:53 »
Сам только начал разбираться с Ldap, поэтому почти наугад скажу, что надо бы поглядеть и прописать нужный модуль авторизации в /etc/pam.d/system (это для FreeBSD, где в линуксе не знаю). Если я не прав, то поправьте.

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
nss_ldap + kerberos
« Reply #2 on: June 27, 2006, 10:41:00 »
Ну тогда поясню : )) раз не в курсе. nss - это не pam е мое!!!
PAM stands for Pluggable Authentication Modules and thus shouldn't be doing authorization.

 И чхать мне на пам если честно. Для входа в систему есть керберизованный login, а для служб есть sasl.
« Last Edit: June 27, 2006, 10:44:00 by deepwalker »

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
nss_ldap + kerberos
« Reply #3 on: June 27, 2006, 11:45:48 »
Quote from: deepwalker
Ну тогда поясню : )) раз не в курсе. nss - это не pam е мое!!!
PAM stands for Pluggable Authentication Modules and thus shouldn't be doing authorization.

 И чхать мне на пам если честно. Для входа в систему есть керберизованный login, а для служб есть sasl.
Так http://www.slackware.tomsk.ru/docs/questions/. А то получается построение nss_ldap + kerberos для "сферической лошади в вакууме".
А чихать на PAM не надо, через PAM такие решения делаются наиболее просто и быстро.
Есть вот такая дока http://www.ofb.net/~jheiss/krbldap/howto.html -- Replacing NIS with Kerberos and LDAP HOWTO. Но она ориентирована на RHL и соответственно на использование PAM на клиентской стороне.
Вот тут http://gazette.linux.ru.net/rus/articles/lnx_nov_edir.html можно посмотреть как скрестить Линукс с Novell e-Directory, но опять таки с использованием PAM.
Особой разницы настройки клиента для общения с Novell e-Directory и OpenLDAP нет.

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
nss_ldap + kerberos
« Reply #4 on: June 27, 2006, 13:03:14 »
А без pam никак? Нужно в Slackware, где как известно pam нет и не планируется. В принципе я его конечно прикручивал, но получалось коряво довольно таки. Я пару раз натыкался на обрывки по теме, но это всего лишь обрывки : ((
Хотелось с минимальными изменениями в системе.

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
nss_ldap + kerberos
« Reply #5 on: June 29, 2006, 00:03:21 »
Если кому тоже надо. В общем kinit имеет опции для аутентификации через keytab. Получаем билет на машину при загрузке, а затем каждые 4 часа обновляем. Таким образом для nss_ldap всегда будет билет. После логина пользователя будет использоваться его билет. Пока не пробовал, но должно работать.

Offline Krueger

  • Full Member
  • ***
  • Posts: 195
  • Karma: +0/-0
    • http://www.zaonsv.ru
nss_ldap + kerberos
« Reply #6 on: June 29, 2006, 00:49:24 »
Quote from: deepwalker
Если кому тоже надо. В общем kinit имеет опции для аутентификации через keytab. Получаем билет на машину при загрузке, а затем каждые 4 часа обновляем. Таким образом для nss_ldap всегда будет билет. После логина пользователя будет использоваться его билет. Пока не пробовал, но должно работать.
А ты каталог LDAP уже заполнил данными? а то проблемка вылезла с русскими буквами (base64), вот и не знаю, то-ли новую тему создать то-ли здесь приткнуться?

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
nss_ldap + kerberos
« Reply #7 on: June 29, 2006, 01:19:20 »
Пока нет. У меня все последовательно : )) kdc, openafs, openldap. Именно в таком порядке.
Сейчас добью AFS и возьмусь за ldap. Кстати в нем же вроде utf, не замечал я проблем с русским (от программ конечно зависит, некоторые русский не восприняли). Ориентировочно ldap буду через неделю две поднимать, так что если что найдешь полезного - пиши : ))

Offline Krueger

  • Full Member
  • ***
  • Posts: 195
  • Karma: +0/-0
    • http://www.zaonsv.ru
nss_ldap + kerberos
« Reply #8 on: June 29, 2006, 11:20:33 »
Quote from: deepwalker
Пока нет. У меня все последовательно : )) kdc, openafs, openldap. Именно в таком порядке.
Сейчас добью AFS и возьмусь за ldap. Кстати в нем же вроде utf, не замечал я проблем с русским (от программ конечно зависит, некоторые русский не восприняли). Ориентировочно ldap буду через неделю две поднимать, так что если что найдешь полезного - пиши : ))
у меня тоже всё последовательно.. сначала базу заполнить, а потом уже к готовому прикручивать всё остальное:-)
В общем вылело 2 проблемы
1.
Code: [Select]
adding new entry "uid=alex,ou=Users,dc=local,dc=zaonsv,dc=ru"
ldap_add: Invalid syntax (21)
        additional info: gecos: value #0 invalid per syntax
Вылезает, когда в поле gecos: встречаются Русские символы.
2.
Code: [Select]
ldapadd: invalid format (line 3) entry: "uid=alex,ou=Users,dc=local,dc=zaonsv,dc=ru"вылезает, когда строка закодированная base64 превышает определённую длину и переносится на следующую (в RFC2849 это оговорено и приведены примеры, где строки переносятся и всё при этом должно работать..) По первой же ссылке вычитал, что все русские символы должны кодироваться base64, а юникод неприемлим, ссылались на RFC, скачал этот RFC, почитал, оказалось, что не обязательно кодировать base64 строки, которые закодированы UTF8:
Quote
4)  Any dn or rdn that contains characters other than those
          defined as "SAFE-UTF8-CHAR", or begins with a character other
          than those defined as "SAFE-INIT-UTF8-CHAR", above, MUST be
          base-64 encoded.  Other values MAY be base-64 encoded.  Any
          value that contains characters other than those defined as
          "SAFE-CHAR", or begins with a character other than those
          defined as "SAFE-INIT-CHAR", above, MUST be base-64 encoded.
          Other values MAY be base-64 encoded.
Но первая ошибка всё-равно вылезала, несмотря на то, что данные подавались в виде UTF8. Решил внимательнее приглядеться к подключаемым схемам. Оказалось, что синтаксис поля gecos принципиально не позволял принимать данные иные кроме 7-bit. Пришлось изменить это.
Code: [Select]
attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
        DESC 'The GECOS field; the common name'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
теперь всё заработало, данные занеслись. . Пришлось немного откорректировать скрипт migrate_passwd.pl из комплекта MigrationTools-46 для адаптации к FreeBSD. От юникода на текущий момент отказался, всё равно, что юникод, что обычный 8битный текст в БД шифруется base64.
« Last Edit: June 29, 2006, 11:21:12 by Krueger »