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/*, без которых авторизация работать
не будет.
Денис
next parent 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