The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Руководство по настройке аутентификации пользователей через LDAP. (ldap auth bsd pam ssh pop3 squid samba)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ldap, auth, bsd, pam, ssh, pop3, squid, samba,  (найти похожие документы)
Date: 7 Jul 2002 From: Михаил Захаров <zakharov@ipb.redline.ru> Subject: Руководство по настройке аутентификации пользователей через LDAP. Руководство по настройке аутентификации пользователей через LDAP. Михаил Захаров (zakharov@ipb.redline.ru) Введение. В крупных организациях увеличение числа пользователей неизбежно ведет к проблемам администрирования их учетных записей. В этом случае возникает необходимость внедрения единой системы аутентификации. Один из вариантов такой системы может быть основан на использовании сервера LDAP. Для построения такой системы на FreeBSD (FreeBSD-4.4-Release) мною было использовано следующее свободно-распространяемое программное обеспечение: OpenLDAP-2.0.23 - www.openldap.org OpenSSH-2.3.0 - www.openssh.org Samba-2.2.4 - www.samba.org Squid-2.4-Stable6 - www.squid-cache.org Qpopper-4.0.4 - www.eudora.com/qpopper pam_ldap-1.5.0 - www.padl.com Перед началом заранее хочу сделать несколько важных замечаний и предостережений. Во-первых, предлагаемое руководство относится к жанру quick start, и приведенные здесь варианты конфигурации не являются идеальным решением проблемы аутентификации, это лишь модель работы системы аутентификации, построенной на LDAP. Во-вторых, проводить изменения в pam.conf нужно осторожно, поскольку возможна ситуация при которой ни один пользователь просто не сможет пройти аутентификацию ни одним методом. И, наконец, в-третьих, после установки сервера LDAP, следует убедиться, что библиотеки liblber.* и libldap.* находятся в каталогах /usr/lib, а файлы disptmpl.h, lber*.h, ldap*.h и srchpref.h располагаются в каталоге /usr/include. Это избавит вас от ошибок компиляции и линкования клиентского программного обеспечения. Настройка сервера LDAP. В качестве сервера LDAP будем настраивать OpenLDAP-2.0.23. Все конфигурационные файлы OpenLDAP находятся в каталоге /usr/local/etc/openldap. Здесь, прежде всего, интересен файл slapd.conf, в котором указываются настройки сервера. В нашем случае этот файл должен состоять как минимум из следующих 8-ми строк: include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/nis.schema database ldbm suffix "dc=testdomain,dc=ru" rootdn "cn=Admin,dc=testdomain,dc=ru" rootpw adminpassword directory /usr/local/var/openldap-ldbm Первые три строки подключают схемы LDAP. Формат и структура данных, хранимые в LDAP, определяются схемами. Порядок подключения схем важен, поскольку схема может использовать значения, определенные в другой схеме. Далее (database) указывается тип базы данных, в которой по-настоящему и хранится информация, в нашем случае это ldbm. Suffix определяет основу для формирования запроса, корень, к которому мы обращаемся при запросе к базе банных LDAP. Suffix выбирается при настройке LDAP-сервера и обычно является доменным именем организации. Затем следует запись об администраторе (rootdn) и его пароль (rootpw). Необходимо заметить, что учетная запись администратора действует даже в тех случаях, когда в самой базе данных административная запись отсутствует или содержит пароль, отличающийся от указанного в rootpw. Последняя строка определяет каталог, в котором будут находиться файлы базы данных LDBM. В завершении, в slapd.conf полезно добавить правила, разграничивающие доступ к ресурсам LDAP, например такие: access to dn=".*,dc=testdomain,dc=ru" attr=userPassword by dn="cn=Admin,dc=testdomain,dc=ru" write by self write by * auth access to dn=".*,dc=testdomain,dc=ru" by dn="cn=Admin,dc=testdomain,dc=ru" write by self write by * read Запускаем сервер LDAP: /usr/local/libexec/slapd Теперь можно заполнять базу данных сервера LDAP. Для этого создадим текстовый файл, например, testdomain.ldif, содержащий записи о нашей организации, администраторе, группе пользователей и, собственно, одном из пользователей: dn: dc=testdomain,dc=ru objectclass: dcObject objectclass: organization o: testdomain dc: testdomain dn: cn=Admin,dc=testdomain,dc=ru objectclass: organizationalRole cn: Admin dn: ou=Users,dc=testdomain,dc=ru ou: Users objectclass: top objectclass: organizationalUnit dn: uid=zmey,ou=Users,dc=testdomain,dc=ru uid: zmey cn: Mikhail E. Zakharov objectclass: account objectclass: posixAccount objectclass: top objectclass: uidObject loginshell: /bin/tcsh uidnumber: 1000 gidnumber: 1000 homedirectory: /home/zmey gecos: Mikhail E. Zakharov,,,, userpassword: topsecret Итак, OpenLDAP настроен. Удостоверимся, что все работает правильно, проверим записи, находящиеся на сервере: ldapsearch -x -b "dc=testdomain,dc=ru" "(objectclass=*)" Ответ сервера должен быть следующим: version: 2 # # filter: (objectclass=*) # requesting: ALL # # Admin, testdomain, ru dn: cn=Admin,dc=testdomain,dc=ru objectClass: organizationalRole cn: Admin # Users, testdomain, ru dn: ou=Users,dc=testdomain,dc=ru ou: Users objectClass: top objectClass: organizationalUnit # zmey, Users, testdomain, ru dn: uid=zmey,ou=Users,dc=testdomain,dc=ru uid: zmey cn: Mikhail E. Zakharov objectClass: account objectClass: posixAccount objectClass: top objectClass: uidObject loginShell: /bin/tcsh uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/zmey gecos: Mikhail E. Zakharov,,,, # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3 Клиенты LDAP. Для обеспечения функционирования сетевых служб на FreeBSD обычно устанавливаются свободно- распространяемые варианты программного обеспечения. Большинство этих программ не могут напрямую взаимодействовать с LDAP, зато поддерживают возможность проведения аутентификации через модули PAM. Поскольку в нашем случае, таких программ большинство, с них и начнем. Прежде всего, модуль PAM, которым мы будем пользоваться, называется pam_ldap. В дистрибутив FreeBSD этот модуль не входит, поэтому его необходимо установить, используя систему портов или скомпилировать вручную, забрав с сервера www.padl.com. Модуль pam_ldap ищет конфигурационный файл ldap.conf. Обычно этот файл должен располагается в каталоге /etc, но иногда, в зависимости от опций, указанных при компиляции, может находиться и в /usr/local/etc/. Наш /etc/ldap.conf будет содержать лишь 3 строки: BASE dc=testdomain,dc=ru HOST ldap_server pam_password clear Здесь BASE - база для поиска в дереве LDAP; HOST - IP-адрес или имя хоста, на котором работает LDAP-сервер; pam_password указывает, что будут использоваться незашифрованные пароли. Это сделано для простоты, на практике разумнее пользоваться шифрованными паролями. Однако, в этом случае необходимо, чтобы пароли, хранимые в LDAP, тоже были шифрованы. Разумеется, и запись rootpw в файле /usr/local/etc/slapd.conf, тоже рекомендуется зашифровать. Для генерации паролей, в том числе и шифрованных, можно воспользоваться утилитой ldappasswd из комплекта OpenLDAP. Основной конфигурационный файл PAM находится в каталоге /etc и называется pam.conf. Он состоит из правил описывающих методы проведения аутентификации для различных сервисов. Для наших сервисов записи в pam.conf могут быть такими: Первое, что мы хотим, это организовать доступ по login: login auth sufficient pam_ldap.so login auth sufficient pam_skey.so login auth requisite pam_cleartext_pass_ok.so login auth required pam_unix.so try_first_pass login account required pam_unix.so login password required pam_permit.so login session required pam_permit.so Для FTP записи выглядят проще: ftpd auth sufficient pam_ldap.so ftpd auth sufficient pam_skey.so ftpd auth requisite pam_cleartext_pass_ok.so ftpd auth required pam_unix.so try_first_pass OpenSSH потребуются следующие правила: sshd auth sufficient pam_ldap.so sshd auth sufficient pam_skey.so sshd auth required pam_unix.so try_first_pass sshd account required pam_unix.so sshd password required pam_permit.so sshd session required pam_permit.so Конфигурация Samba (в нашем случае Samba 2.2.4) требует дополнительных комментариев. Во-первых, хотя Samba и имеет возможность работать с LDAP-серверами напрямую, но этот механизм еще не отработан, и поэтому мы будем использовать PAM. Во-вторых, исходные тексты должны быть скомпилированы с поддержкой PAM. По умолчанию, эта опция отключена, поэтому компилируем и устанавливаем программу так: ./configure --with-pam make make install В /etc/pam.conf требуется наличие следующих строк: samba auth required pam_ldap.so samba session required pam_ldap.so Самая простая конфигурация у Qpopper 4.4. В /etc/pam.conf добавляем: pop3 auth sufficient pam_ldap.so Кроме того, Qpopper тоже должен быть скомпилирован с поддержкой PAM: ./configure --with-pam make make install Единственный продукт, который работает серверами с LDAP без помощи PAM, это SQUID. Для аутентификации через LDAP Squid используется собственный модуль - squid_ldap_auth, представляющий собой внешнюю программу. В дистрибутиве Squid, его исходные тексты находится в каталоге auth_modules/LDAP. Скомпилировав и установив squid_ldap_auth, можно приступать к настройке Squid. В squid.conf указываем, что необходимо использовать наш модуль аутентификации: authenticate_program /usr/local/squid/libexec/squid/squid_ldap_auth -b dc=testdomain,dc=ru ldap_server Здесь -b dc=testdomain,dc=ru - суффикс LDAP, ldap_server - IP-адрес или DNS-имя сервера LDAP. Путь usr/local/squid/libexec/squid/ взят по умолчанию. Далее для проверки, добавим в squid.conf простейший ACL: acl password proxy_auth REQUIRED http_access allow password http_access deny all

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Renny (?), 15:55, 26/01/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Круто, конечно... Только вот уж больно заморочено =(
     
  • 1.2, Руслан (?), 19:18, 22/11/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для связки SQUID - LDAP нужен PAM, или достаточно squid_ldap_auth?
     
  • 1.3, evil_father (?), 15:25, 17/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а как теперь прикрутиить этот LDAP к БАТу или Оутгглюку, чтобы видна была адресная книга???
     
     
  • 2.4, srg (??), 13:37, 22/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше использовать другой клиент .. не TheBat. так как с ним действительно проблеммы при подключении к LDAP серверу.. (поиск юзерей просто не возможен.)
     
     
  • 3.7, леонид (?), 22:16, 24/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Лучше использовать другой клиент .. не TheBat. так как с ним действительно
    >проблеммы при подключении к LDAP серверу.. (поиск юзерей просто не возможен.)
    >


    как прикрутить LDAP к Оутгглюку, чтобы видна была адресная книга???
    ТОЛЬКО ПОДРОБНЕЕ ПЛИЗ!!! А ТО никак не пойму...

     
     
  • 4.8, AlexZonder (?), 12:16, 21/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Ваапсчета, к Батке мона прикрутить LDAP, для этаго:
    1. Создаем Адресную книгу.
    2. в закладке LDAP прописываем адрес сервера аутентификации и порт,
       Базу поиска заполняем примерно так: dc=Домен,dc=ru
       Максимальное число совпадений ставим хотябы и 100
       прописываем аутентификацию (любого юзверя из домена)

    ВСЁ!!!!

     
  • 2.6, леонид (?), 22:14, 24/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    как прикрутить LDAP к БАТу или Оутгглюку, чтобы видна была адресная книга???
    ТОЛЬКО ПОДРОБНЕЕ ПЛИЗ!!! А ТО никак не пойму...
     

  • 1.5, Roman Bogorodskiy (?), 17:36, 26/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ИМХО, в статье забыли сказать, что после всех этих махинаций с testdomain.ldif нужно сделать ldapadd -x -D "cn=Admin,dc=testdomain,dc=ru" -W -f testdomain.ldif ну или что-то в таком духе.
     
  • 1.9, ShajtanWaP (??), 19:36, 25/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Коллеги, а не подскажет ли кто... Такая проблема - странно работает хелпер squid_ldap_auth, при попытке проверить его на работу с AD.
    Запускаю из командной строки, как прописано в мане -
    ./squid_ldap_auth -u cn -b "cn=Users,dc=loniir-org,dc=net" 172.16.1.1
    После этого, если набрать логин и пароль администратора домена - то ответ ОК, и запись в логах контроллера домена есть. Если же заходить другим пользователем, то ответ ERR Success, никаких следов в логах не остаётся. В чём тут может быть заковыка?
     
  • 1.10, ml (??), 15:14, 02/12/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё хорошо, а никто не подскажет как можно заблокировать выход в инет с определённого IP определённым пользователям (squid + пользователи авторизируются через ldap)?
    Например - я подключаюсь через Rdesktop к виндовзному ПК, выхожу в инет через браузер авторизируясь с логином:login и паролем:login_pass. И меня пускает в инет. А например пользователю с логином:pupkin и паролем:pupkin_pass чтоб не был разрешён выход в инет, хотя с других ПК пусть выходит...
     
  • 1.11, ml (??), 14:44, 05/12/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    спасибо, уже разобрался сам :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру