From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 20 Nov 2002 19:40:36 +0300 (MSK) From: Denis Kirienko To: Igor Muratov Cc: community@altlinux.ru In-Reply-To: <3DD3C177.7090009@altlinux.ru> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=koi8-r Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from BASE64 to 8bit by ns.mccme.ru id RAA20815 Subject: [Comm] =?koi8-r?B?887P18Egz8IgwdfUz9LJ2sHDyckg3sXSxdogTERBUA==?= Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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/*, без которых авторизация работать не будет. Денис