ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Denis Kirienko <kirienko@mccme.ru>
To: Igor Muratov <migor@altlinux.ru>
Cc: community@altlinux.ru
Subject: [Comm] Снова об авторизации через LDAP
Date: Wed, 20 Nov 2002 19:40:36 +0300 (MSK)
Message-ID: <Pine.LNX.4.44.0211201934530.695-100000@pc11.mccme.ru> (raw)
In-Reply-To: <3DD3C177.7090009@altlinux.ru>

On Thu, 14 Nov 2002, Igor Muratov wrote:

>>> Я не читаю список community и поэтому не знал что у кого-то
>>> LDAP-авторизация вызывает у кого-то проблемы. В дистрибутиве есть все
>>> необходимое и это реально работает. Напишите подробнее что вы делали
>>> и что не получилось.

Все-таки нашел время и решил попробовать насторить LDAP еще раз. Вот что
получилось. Копию письма отправляю в community@altlinux.ru

Устанавливаю Мастер из коробки:

Инсталяция: text mode, группы пакетов "Документация" и "Сетевой
сервер". Обнаружил забавный глюк - под пользователем
ряд программ (bash, mc, man) выдает сообщения по-французски
(наследие Mandrake, вероятно), хотя локаль установлена
русская.

Далее

$ apt-get install openldap openldap-clients openldap-guide openldap-servers

Правлю файл /etc/openldap/slapd.conf в соответствии с руководством
по Мастеру.
       Изменяю корень, имя администратора, пароль
       Снимаю комментарий со строки TLSCipherSuite
       	      (кстати, то, что эта строка закомментирована,
	      а три строки
	      TLSCertificate... - нет, не является багом?)
       password-hash {MD5}
       Добавляю списки прав доступа как в руководстве
       Исправляю в установки индексов surname на surName givenname на givenName

# service ldap start
Starting slapd:/etc/openldap/schema/nadf.schema: No such file or directory  [FAILED]

Комментирую строку с nadf.schema в slapd.conf - теперь запуск удачен
(зачем вообще включена это строка, нет же nadf.schema в Мастере?)

Проверяю отклик сервера:
# ldapsearch -H ldap://server.school179.ru
Есть ответ сервера

# ldapsearch -H ldaps://server.school179.ru
ldap_bind: Can't contact LDAP server

Естественно, поскольку ssl-ключи не сгенерированы.
В документации об этом написано:
"создадим пользователя ldap" (нужды в этом нет - зачем писать)
"... сертификат с помощью программы openssl"
А вот здесь надо гораздо подробней. Поскольку я могу прикинуться чайником
и запустить просто команду openssl. Что же я получаю?
# openssl
bash: openssl: command not found

Ладно, делаю
# apt-get install openssl

Теперь запускаю openssl. Получаю промпт OpenSSL>, с которым совершенно
непонятно, что делать дальше. После длительных поисков (в первый раз,
на пятый раз я уже гораздо быстрее вспоминаю, что надо делать)
догадываюсь запустить файл /usr/share/openldap/gencert.sh

Не без сомнений	отвечаю на некоторые вопросы. После чего обнаруживаю,
что сертификат был создан не в каталоге /etc/openldap,
а в текущем каталоге. Перемещаю его куда надо, перезапускаю сервер -
соединение по протоколу ldaps установить не могу.

Ковыряю файл slapd.conf на предмет настроек TLS.
Выясняю, что важно, стоят ли в начале строк в файле slapd.conf
пробелы или нет (в общем, неочевидная догадка).
В результате на команду

# ldapsearch -H ldaps://server.school179.ru

иногда получаю ответ

ldap_bind: Can't contact LDAP server

а иногда такой

ldap_bind: Can't contact LDAP server
additional info: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Летом Алексей Чуйков писал на community@altlinux.ru,
насколько я понимаю по архиву community,
разрешить эту проблему ему не удалось.

Вспоминаю, про обещанные полчаса, необходимые
на настройку LDAP-авторизации.

Ладно, забываю пока про шифрование, в надежде
вернуться к нему позднее.

Создаю файл intial.ldif

При попытке добавить данные сталкиваюсь с очередной проблемой:
adding new entry "dc=school179,dc=ru"
ldap_add: Operations error

Вспоминаю, в чем дело: в /etc/openldap/slapd.conf написана
по умолчанию строка
directory	/var/lib/ldap/bases
которую я не стал изменять, в то время как такого каталога не существует!

Создаю каталог /var/lib/ldap/bases, не забыв поменять
ему группу и права доступа.

Добавляю данные при помощи ldapadd

Пытаюсь сделать анонимный запрос:

# ldapsearch -xLLL "(uid=denis)"
No such object (32)

После очередных мучений вспоминаю, в чем дело
(опять таки, я все это повторяю не в первый раз, в первый
раз на это уходило гораздо больше времени).
Нужно подправить файл /etc/openldap/ldap.conf, изменив в нем
параметр BASE (и не забыть при этом убрать пробел между двумя
dc=... ) и сделать символическую ссылку /etc/ldap.conf на
/etc/openldap/ldap.conf

Вот это большая тонкость: в пакете openldap есть файл
/etc/openldap/ldap.conf, а на самом деле клиентские
настройки LDAP должны лежать в /etc/ldap.conf.
В документации на Мастер написано, что это именно
/etc/ldap.conf, но когда перед глазами упорно маячит
/etc/openldap/ldap.conf с аналогичными настройками,
очень тяжело понять, что эти настройки нужно указывать
в другом файле - /etc/ldap.conf

Следует заметить, что информация о настройке клиента и файле
/etc/ldap.conf написана в документации на Мастер ПОСЛЕ
предложения выполнить анонимный запрос при помощи ldapsearch,
таким образом этот анонимный запрос выполнить не удастся.
Что будет казаться пользователю очень странным - данные
в базе LDAP лежат, соединение устанавливается, авторизация
проходится, а найти ничего не удается!

Ну вот теперь мне удалось сделать так, чтобы отработал запрос
$ ldapsearch -xLLL "(uid=denis)"

Переходим к разделу "Централизованная авторизация" документации
на Мастер.

Выполняю:

$ apt_get instal nss_ldap pam_ldap

Записываю пароль администратора LDAP в /etc/ldap.secret

Изменяю файл /etc/nsswitch.conf

passwd:     files ldap nisplus nis
shadow:     tcb files ldap nisplus nis
group:      files ldap nisplus nis

(а в документации на Мастер написано:
passwd: file ldap
то есть file, а не files. Такие ляпы в документации сильно
смущают пользователей).

Теперь проверяем, подключены ли пользователи из базы:
$ id denis
uid=1000(denis) gid=1000(luser) groupes=1000(luser)

Однако, войти в систему с консоли не удается.
В /var/log/syslog/messages написано:
Nov 15 21:11:11 server pam_tcb[2919]: login: Authentication failed for denis from (uid=0)

Дальнейшие события не являются каким-либо багом в Мастере,
но представляют интерес с точки зрения возможных грабель
на пути.

Я понимал (судя по community), что теперь надо править файлы /etc/pam.d/*
но в документации на Мастер об этом ничего не сказано!
В конце сентября sergey кидал на community свои конфигурационные файлы,
в том числе /etc/pam.d/system-auth и
/etc/pam.d/system-auth-use_first_pass.
В октябре я попробовал поставить себе эти конфигурационные файлы, это
привело к тому, что вообще невозможно стало войти в систему,
при этом у пользователя даже не запрашивался пароль.
Поскольку сил на LDAP к этому времени я потратил много,
то я решил сделать простое "временное" решение, отложив
настройку LDAP в длинный список TODO.

Теперь, вернувшись к настройке авторизации через LDAP, я снова
наткнулся на эти грабли. Опять скопировал примеры
/etc/pam.d/system-auth* от sergey, опять обнаружил, что пользователя
в систему не пускают. Но на этот раз каким-то наитием я догадался
взглянуть на эти файлы в шестнадцатеричном просмотрщике.
Как вы думаете, что я обнаружил? Естественно, \0x0D\0x0A
в качестве концов строк! После исправления этого недоразумения
авторизация заработала! К сожалению, сейчас я уже затрудняюсь
ответить на вопрос, каким образом я приносил на свою
машину, не подключенную к интернету, эти файлы и кто
виноват в возникновении этой досадной проблемы.

Итак, резюмирую:

0. На настройку авторизации мне понадобилось несколько
   часов, с учетом того, что на все грабли я натыкался
   не в первый раз и процесс их устранения занимал
   гораздо меньше времени, нежели при первом наступании.
1. Описание LDAP в документации на Мастер выполнено
   с рядом неточностей и нуждается в серьезном исправлении.
2. Хорошо бы исправить соответствующие пакеты
   в Мастере (отсутствие файлов /etc/openldap/schema/nadf.schema
   и /etc/ldap.conf)
3. В документации на Мастер не описан процесс настройки
   протокола ldaps, попытки самостоятельно выполнить настройку
   не увенчались успехом, а ставить авторизацию без шифрования -
   небезопасно.
4. В документации на Мастер не описаны изменения, которые необходимо
   сделать в файлах /etc/pam.d/*, без которых авторизация работать
   не будет.

                                          Денис


       reply	other threads:[~2002-11-20 16:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-20 16:40 ` Denis Kirienko [this message]
2002-11-20 16:36   ` aen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0211201934530.695-100000@pc11.mccme.ru \
    --to=kirienko@mccme.ru \
    --cc=community@altlinux.ru \
    --cc=migor@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git