По просьбам трудящихся, из-за отсутствия простого мануала для всех начинающих, светлых администраторов UNIX, и внедрению технологий светлых в тыл компаний и корпораций использующих темные силы Микрософта - посвящается сие писание =).
Необходимо:
На любом предприятии рано или поздно возникает вопрос о централизованном хранилище электронных адресов, принтеров и тп. Это все может реализовать с помощью OpenLDAP. В данной статье, я опишу основные параметры необходимые для работы OpenLDAP в качестве адресной книги и по дополнительным просьбам я расширю и дополню, если вам будет чего либо не хватать. Но я уверен, что вы и сами сможете расширить функционал OpenLDAP без лишних просьб, а лишь чтением манов и гуглением.
OpenLDAP Software - открытая реализация LDAP, разработанная проектом OpenLDAP Project. Распространяется под собственной лицензией, называемой OpenLDAP Public License. LDAP - платформенно-независимый протокол. В числе прочих есть реализации для различных модификаций BSD, а также GNU/Linux, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (2000, XP) и z/OS.
LDAP (Lightweight Directory Access Protocol) представляет средства доступа к логически иерархической БД. Каталог (БД) состоит из записей (объектов). Иерархическая совокупность объектов (вложение контейнеров) определяет дерево каталога. Правила связывания определяются набором правил, который называется схемой каталога (в схему входят также описания классов). Дерево начинается от корневого объекта (класс Top в Active Directory).
Тип объекта (класс) определяется набором атрибутов: имя, тип значения, обязательность. Строки в кодировке UTF-8. Объект может ассоциироваться с несколькими классами. Класс может быть расширением другого класса (наследование). Кроме простых объектов имеются контейнеры (группировка объектов и контейнеров), псевдонимы (символьные ссылки), переадресация клиента к другому каталогу (переход по ссылкам, chasing referrals).
Каждый объект имеет относительное отличительное имя (Relative Distinguished Name). Полное отличительное имя объекта (DN) образуется конкатенацией RDN объекта с DN объекта верхнего уровня (порядок записи - от младшего к старшему, разделитель - точка). Каждый объект имеет владельца. В качестве идентификатора аутентификации также используется DN (cn=,dc=). Имеется выделенный администратор каталога, обладающий корневыми полномочиями. Для аутентификации используется расширяемый механизм SASL.
Поиск объекта в иерархии производится с помощью составного имени с корня вниз (как в DNS). Есть возможность анонимного доступа. Права доступа - чтение и запись и поддерживается репликация LDAP сервера.
Общие имена атрибутов:
Возможности клиента:
Открытое программное обеспечение OpenLDAP состоит из нескольких основных компонентов:
Также содержится для OpenLDAP проекта:
Установка OpenLDAP стандартна и поэтому, вкратце пройдемся по ней:
Мы нашли две версии этого порта 2.3 и 2.4, и я остановился на 2.4 ввиду ее перспективности.
# cd /usr/ports # make search name=openldap-server Port: openldap-server-2.3.43 Path: /usr/ports/net/openldap23-server Info: Open source LDAP server implementation Maint: delphij@FreeBSD.org B-deps: db44-4.4.20.4 libltdl-1.5.26 libtool-1.5.26 openldap-client-2.3.43 R-deps: db44-4.4.20.4 libltdl-1.5.26 openldap-client-2.3.43 WWW: <a href="http://www.OpenLDAP.org/</p> <p>Port:" title="http://www.OpenLDAP.org/</p> <p>Port:">http://www.OpenLDAP.org/</p> <p>Port:</p></a> openldap-server-2.4.17 Path: /usr/ports/net/openldap24-server Info: Open source LDAP server implementation Maint: delphij@FreeBSD.org B-deps: db46-4.6.21.4 libltdl-1.5.26 libtool-1.5.26 openldap-client-2.4.17 R-deps: db46-4.6.21.4 libltdl-1.5.26 openldap-client-2.4.17 WWW: http://www.OpenLDAP.org/
Сконфигурируем и выберем необходимые модули:
# cd /usr/ports/net/openldap24-server/ && make config ---------------------------------------------------------------------¬ ¦ Options for openldap-server 2.4.17 ¦ ¦ -----------------------------------------------------------------¬ ¦ ¦ ¦ [ ] SASL With (Cyrus) SASL2 support ¦ ¦ ¦ ¦ [ ] DYNACL Run-time loadable ACL (experimental) ¦ ¦ ¦ ¦ [ ] ACI Per-object ACI (experimental) ¦ ¦ ¦ ¦ [ ] DNSSRV With Dnssrv backend ¦ ¦ ¦ ¦ [ ] PASSWD With Passwd backend ¦ ¦ ¦ ¦ [ ] PERL With Perl backend ¦ ¦ ¦ ¦ [ ] RELAY With Relay backend ¦ ¦ ¦ ¦ [ ] SHELL With Shell backend (disables threading) ¦ ¦ ¦ ¦ [ ] SOCK With Sock backend ¦ ¦ ¦ ¦ [ ] ODBC With SQL backend ¦ ¦ ¦ ¦ [ ] RLOOKUPS With reverse lookups of client hostnames ¦ ¦ ¦ ¦ [ ] SLP With SLPv2 (RFC 2608) support ¦ ¦ ¦ ¦ [ ] SLAPI With Netscape SLAPI plugin API ¦ ¦ ¦ ¦ [X] TCP_WRAPPERS With tcp wrapper support ¦ ¦ ¦ ¦ [X] BDB With BerkeleyDB support ¦ ¦ ¦ ¦ [ ] ACCESSLOG With In-Directory Access Logging overlay ¦ ¦ ¦ ¦ [ ] AUDITLOG With Audit Logging overlay ¦ ¦ ¦ ¦ [ ] COLLECT With Collect overy Services overlay ¦ ¦ ¦ ¦ [ ] CONSTRAINT With Attribute Constraint overlay ¦ ¦ ¦ ¦ [ ] DDS With Dynamic Directory Services overlay ¦ ¦ ¦ ¦ [ ] DEREF With Dereference overlay ¦ ¦ ¦ ¦ [ ] DYNGROUP With Dynamic Group overlay ¦ ¦ ¦ ¦ [ ] DYNLIST With Dynamic List overlay ¦ ¦ ¦ ¦ [ ] LASTMOD With Last Modification overlay ¦ ¦ ¦ ¦ [ ] MEMBEROF With Reverse Group Membership overlay ¦ ¦ ¦ ¦ [ ] PPOLICY With Password Policy overlay ¦ ¦ ¦ ¦ [ ] PROXYCACHE With Proxy Cache overlay ¦ ¦ ¦ ¦ [ ] REFINT With Referential Integrity overlay ¦ ¦ ¦ ¦ [ ] RETCODE With Return Code testing overlay ¦ ¦ ¦ ¦ [ ] RWM With Rewrite/Remap overlay ¦ ¦ ¦ ¦ [X] SEQMOD Sequential Modify overlay ¦ ¦ ¦ ¦ [X] SYNCPROV With Syncrepl Provider overlay ¦ ¦ ¦ ¦ [ ] TRANSLUCENT With Translucent Proxy overlay ¦ ¦ ¦ ¦ [ ] UNIQUE With attribute Uniqueness overlay ¦ ¦ ¦ ¦ [ ] VALSORT With Value Sorting overlay ¦ ¦ ¦ ¦ [ ] SMBPWD With Samba Password hashes overlay ¦ ¦ ¦ ¦ [X] DYNAMIC_BACKENDS Build dynamic backends ¦ ¦ +-L------------------------------------------------------------------+ ¦ [ OK ] Cancel ¦ L---------------------------------------------------------------------
Начнем установку:
# cd /usr/ports/net/openldap24-server/ && make install clean ~~~~~ ************************************************************* The OpenLDAP server package has been successfully installed. In order to run the LDAP server, you need to edit /usr/local/etc/openldap/slapd.conf to suit your needs and add the following lines to /etc/rc.conf: slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi" Then start the server with /usr/local/etc/rc.d/slapd start or reboot. Try `man slapd' and the online manual at <a href="http://www.OpenLDAP.org/doc/<br /> for" title="http://www.OpenLDAP.org/doc/<br /> for">http://www.OpenLDAP.org/doc/<br /> for</a> more information. slapd runs under a non-privileged user id (by default `ldap'), see /usr/local/etc/rc.d/slapd for more information. ************************************************************ ===> Installing rc.d startup script(s) ===> Running ldconfig /sbin/ldconfig -m /usr/local/libexec/openldap ===> Installing ldconfig configuration file ===> Registering installation for openldap-server-2.4.17 ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/libexec/slapd This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/slapd If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.OpenLDAP.org/
Приступим к настройке OpenLDAP.
Внесем в /etc/rc.conf следующее:
slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi"
slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/ ldap://192.168.0.2/"' slapd_sockets="/var/run/openldap/ldapi"
# cd /usr/local/etc/openldap/ # cp slapd.conf.default slapd.conf
Отредактируем slapd.conf.
# cat slapd.conf include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args modulepath /usr/local/libexec/openldap moduleload back_bdb access to * by * read access to attr=userPassword by self write by anonymous auth by * none database bdb suffix "dc=ampul,dc=local" rootdn "cn=root,dc=ampul,dc=local" rootpw {SSHA}Password directory /var/db/openldap-data index objectClass eq index cn eq
Пройдемся по конфигурационному файлу:
include - подключаемые схемы; в поставке OpenLDAP их довольно много. И вы подключите только те, которые будете использовать. В принципе, схемы являются частью конфигурационного файла, но для наглядности они вынесены в отдельные фрагменты. С указанием пути откуда они берутся.
modulepath и moduleload - запускаемый сервис и модуль используемого способа хранения данных.
access - для управления доступом используются списки доступа ACL. В данном примере приводятся два списка — в первом из них ограничивается доступ к атрибуту userPassword (полный доступ к нему могут иметь только сам объект либо администратор базы; для всех остальных доступ запрещён). Второе правило гласит, что всем даётся доступ на чтение любых данных (кроме ограниченного предыдущим правилом).
database - способ хранения данных используемый нами.
suffix - корнем иерархической структуры будет являться некоторый объект например dc=example,dc=com (я буду использовать для примера суффикс
dc=ampul,dc=local) у вас он соответственно будет другим. Суффикс для каталога можно взять любой.
rootdn - DN, описывающий администратора
rootpw - хешированый SSHA пароль администратора (см. slappasswd(8))
Утилита slappasswd позволяет создавать хеш пароля для дальнейшего использования в качестве значения атрибута userPassword или опции rootpw файла slapd.conf.
Параметры:
-v - многословный режим
-u - (пока по умолчанию; создавать хеш для userPassword в формате, определённом RFC 2307)
-s - пароль (если не задан здесь или с помощью ключа -T, то запрашивается в диалоге)
-T - имя файла с паролем
-h - схема ({SSHA}; метод хеширования пароля: {CRYPT}, {MD5}, {SMD5}, {SSHA}, {SHA}, {CLEARTEXT})
-c - формат (формат как в sprintf(3) для преобразования случайной строки символов из диапазона [A-Za-z0-9./]; например, "%.2s" даёт соль для стандартной функции crypt(3); "$1$%.8s" приводит к использованию функцией crypt(3) алгоритма MD5, так что результат можно использовать в /etc/shadow)
Создать хешированный пароль для пользователя root можно так:
# slappasswd -s root {SSHA}Password
После изменение slapd.conf запускаем сервис и проверяем работу.
# /usr/local/etc/rc.d/slapd start # ps -ax | grep slap 35430 ?? Is 0:00,01 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/ ldap://192.168.0.2/ -u ldap -g ldap 35544 p0 S+ 0:00,00 grep slap # netstat -nap tcp | grep 389 tcp4 0 0 192.168.0.2.389 *.* LISTEN tcp4 0 0 127.0.0.1.389 *.* LISTEN
Сейчас нам необходимо создать корень:
# cat ampul.local.ldif dn: dc=ampul,dc=local objectClass: top objectClass: dcObject objectClass: organization dc: ampul o: FSI Ust-Luga Branch dn: ou=addressbook,dc=ampul,dc=local objectClass: top objectClass: organizationalUnit ou: addressbook
Добавим нашу схему в OpenLDAP.
# ldapadd -x -h localhost -f ampul.local.ldif -D "cn=root,dc=ampul,dc=local" -W Enter LDAP Password: **** adding new entry "dc=ampul,dc=local" adding new entry "ou=addressbook,dc=ampul,dc=local"
Я давно подсел на web приложения потому, что я могу запускать их отовсюду и из любой системы будь то *NIX, Windows, Linux и т.п. Простота в обслуживании, обновлении, единая точка входа и управления и т.п. Для OpenLDAP есть несколько приложений которые могут помочь в администрировании OpenLDAP - мой выбор остановился на phpLDAPadmin.
# cd /usr/ports/ # make search name=phpLDAPadmin Port: phpldapadmin-1.1.0.7,1 Path: /usr/ports/net/phpldapadmin Info: A set of PHP-scripts to administer LDAP over the web Maint: m.seaman@infracaninophile.co.uk B-deps: R-deps: gettext-0.17_1 libiconv-1.13 libxml2-2.7.3 openldap-client-2.4.16.. WWW: <a href="http://phpldapadmin.sourceforge.net/</p> <p>#" title="http://phpldapadmin.sourceforge.net/</p> <p>#">http://phpldapadmin.sourceforge.net/</p> <p>#</p></a> cd /usr/ports/net/phpldapadmin;make install clean phpldapadmin-1.1.0.7,1 has been installed into: /usr/local/www/phpldapadmin Please edit config.php to suit your needs. To make phpLDAPadmin available through your web site, I suggest that you add something like the following to httpd.conf: Alias /phpldapadmin/ "/usr/local/www/phpldapadmin/htdocs/" <Directory "/usr/local/www/phpldapadmin/htdocs"> Options none AllowOverride none Order Deny,Allow Deny from all Allow from 127.0.0.1 .example.com </Directory> Please note: if you are upgrading from version 0.9.7 or earlier, the layout of the phpldapadmin-1.1.0.7,1 files has been completely reworked. You will need to modify your apache configuration and merge the settings from your original configuration file: /usr/local/www/phpldapadmin/config.php to /usr/local/www/phpldapadmin/config/config.php ===> Registering installation for phpldapadmin-1.1.0.7,1 ===> Cleaning for phpldapadmin-1.1.0.7,1
Alias /phpldapadmin/ "/usr/local/www/phpldapadmin/htdocs/" <Directory "/usr/local/www/phpldapadmin/htdocs"> Options none AllowOverride none Order Deny,Allow Deny from all Allow from 127.0.0.1 .example.com </Directory>
Есть несколько программных продуктов, которые позволяют управлять LDAP серверами, но они, в основном, платные. Я остановился на LDAP Admin, он быстрый, бесплатный и простой, что позволяет его использование обычному пользователю. Настроить его очень легко см скриншоты.
Mozilla Thunderbird
Thunderbird использует LDAPv3. Добавим LDAP-сервер в адресную книгу.
Введем корректный адрес и данные сервера OpenLDAP
Поиск производится при введении строки поиска в поле (ничего нажимать не надо, поиск производится по мере ввода) по cn, givenName, sn и считывает следующий список атрибутов: modifytimestamp, xmozillausehtmlmail, description, notes, custom4, custom3, custom2, custom1, birthyear, homeurl, workurl, nscpaimscreenname, countryname, company, o, departmentnumber, department, orgunit, ou, title, zip, postalcode, region, st, locality, l, streetaddress, postofficebox, carphone, cellphone, mobile, pagerphone, pager, facsimiletelephonenumber, fax, homephone, telephonenumber, xmozillasecondemail, mail, xmozillanickname, displayname, commonname, cn, surname, sn, givenname.
Outlook Express.
Outlook Express использует LDAPv2. Добавим LDAP-сервер в адресную книгу для этого выбираем в меню Сервис -> Учётные записи -> Добавить -> Служба каталогов -> Сервер каталогов (LDAP).
Затем изменить свойствах созданной службы каталогов во вкладке Дополнительно вставте свою Основу поиска например (ou=addressbook,dc=ampul,dc=local).
Поиск производится по нажатию кнопки "Поиск людей", вводу параметров и нажатию кнопки "Найти". Предварительно опрашивается список возможности сервера: subschemaSubentry, dsServiceName, namingContexts, defaultNamingContext, schemaNamingContext, configurationNamingContext, rootDomainNamingContext, supportedControl, supportedLDAPVersion, supportedLDAPPolicies, supportedSASLMechanisms, dnsHostName, ldapServiceName, serverName, supportedCapabilities.
По умолчанию поиск по атрибутам cn, givenName, sn, но можно искать по "имя и адрес" (cn), "электронная почта" (mail), имени (givenName), фамилии (sn), организации (o). Считывает следующий список атрибутов: display-name, cn, commonName, mail, otherMailbox, givenName, sn, surname, st, c, co, organizationName, o, ou, organizationalUnitName, URL, homePhone, facsimileTelephoneNumber, otherFacsimileTelephoneNumber, OfficeFax, mobile, otherPager, OfficePager, pager, info, title, telephoneNumber, l, homePostalAddress, postalAddress, streetAddress, street, department, comment, postalCode, physicalDeliveryOfficeName, initials, conferenceInformation, userCertificate;binary, userSMIMECertificate;binary, labeledURI, Manager, Reports, IPPhone.
Чтобы сохранять всю необходимую информацию о человеке его запись должна иметь классы: top, person, organizationalPerson, inetOrgPerson, residentialPerson.
Outlook 2003
Схема подключения Outlook 2003 к OpenLDAP см прикрепленные файлы к статье.
В) Как в адресной книге вывести всех клиентов у которых есть электронная почта
O) Ввести в поле поиска символ "@"
В) Какой порт использует LDAP сервер
О) Стандартный TCP порт LDAP сервера - 389. Для защиты соединения может использоваться TLS (SSL) (порт 636).
В) Я использую php-5.2.10 и у меня при заходе в ПО показывает ошибку
Declaration of AJAXTree::draw_dn() should be compatible with that of PLMTree::draw_dn()
draw_dn($dn,$level,$first_child=true,$last_child=true)
В) Какой почтовый клиент может записывать информацию в адресную книгу?
О) Единственный почтовый клиент который может писать в LDAP это Evolution.
Вложение | Размер |
---|---|
Схема подключения Outlook 2003 к OpenLDAP.zip | 251.11 КБ |
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
Спасибо! Как раз искал что-то
Спасибо! Как раз искал что-то более-менее подобное для организации =)
файл не найден
Спасибо за статью!
Схема подключения Outlook 2003 к OpenLDAP
Страница не найдена
Запрашиваемая страница не найдена
RE:файл не найден
Пофиксил
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Не могу найти корень вашего LDAP дерева.
Когда захожу на phpLDAPadmin
НА первой странице вижу указание что
Получается сам phpldapadmin работает а связки с Ldap нет.
Где может быть ошибка
ee /var/db/openldap-data/base.ldif
ee /usr/local/www/phpldapadmin/config/config.php
Схему так же добавил в LDAP
У меня подозрение что нужно прописывать в config.php
Но что?(( подскажите кто сталкивался с такой инфой.
RE:Не могу найти корень вашего LDAP дерева.
Попробуй так (проверь чтобы лдап был запущен)
# cat local.ldif
dn: dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
dc: local
o: local
# cat mail.local.ldif
dn: ou=mail,dc=local
objectClass: top
objectClass: organizationalUnit
ou: mail
== К примеру у тебя в slapd.conf.
database bdb
suffix "dc=local"
rootdn "cn=root,dc=local"
rootpw {SSHA}Password_сгенерил_и_подставил_сюда
==
# ldapadd -x -h localhost -f local.ldif -D "cn=root,dc=local" -W
# ldapadd -x -h localhost -f mail.local.ldif -D "cn=root,dc=local" -W
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
А какой атрибут в схеме
А какой атрибут в схеме соответствует полю "Доп.адрес электронной почты" в Thunderbird?
RE:А какой атрибут в схеме
Не могу сказать. Тк если добавлять доп. е-майл то все равно не отображает введенный а отображает первый. А если попытаться добавить атрибут к записи то там нет ничего подходящего. (Надо бы спросить в форуме мозиллы)
==
Да и теперь подобные вопросы пожалуйста задавайте на форуме www.forum.ignix.ru И в конце каждой стати будет указанна ВЕТКА ФОРУМА в которой идет обсуждение данной статьи.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
как организовать достоп извне
Доброго дня!
А не подскажите, как организовать доступ к LDAP для тех, кто не в локальной сети?
Спасибо!
RE:Не могу найти корень вашего LDAP дерева.
Все очень просто, нужно добавить запись в slapd.conf.
access to * by * read
Знаю что вопрос был задан очень давно, но вдруг нужно будет кому.
LdapAdmin
я так понял....при использование LdapAdmin веб-морду не обязательно устанавливать
и подскажите не могу разобраться как пользоваться Ldapadmin
чтоб создавать адреса,а то я создаю а они не появляються в почтовых программах, я думаю я чтото не так делаю
и еще....не получаться прикрутить веб-морду!
куда писать этот альяс
во фре новичок!
Hello world
Hi
Ответить на комментарий | igNix.ru
Helko there! I knoow this is somewhat off topic but I was wondering which blog platform are you
using for this site? I'm getting skck aand tired of Wordpress because
I've had issues with hackers and I'm looking at alternatives for another platform.
I would be awesome if you could point me in the direction of a good platform.
Ответить на комментарий | igNix.ru
Feeling tired magnifies the helpless feeling that
accompanies insomnia - spotting a pattern yet.
The lengthening operation involges making a small incision just above
the base of the penis and cutting the suspensory ligaments, which hold about 2 inches of the penis inside
the body. There have been several reports of death associate with thee use of this drug.
помогите пожалуйста -
помогите пожалуйста - подскажите, где и что надо отредактировать чтобы попасть на вебморду, при попытке попасть по адресу у меня выдает
Fatal error: Cannot redeclare password_hash() in /usr/local/www/phpldapadmin/lib/functions.php on line 2236
...
при подключении в адресную книгу оутлука при попытке создать там контакт
создание записей невозможно...
помогите пожалуйста -
помогите пожалуйста - подскажите, где и что надо отредактировать чтобы попасть на вебморду, при попытке попасть по адресу у меня выдает
Fatal error: Cannot redeclare password_hash() in /usr/local/www/phpldapadmin/lib/functions.php on line 2236
...
при подключении в адресную книгу оутлука при попытке создать там контакт
создание записей невозможно...
как сделать авторизацию ldap
Добрый день!
А как организовать ldap pam авторизацию
Например Сервер на FreeBSD и на нем стоит openldap-server
а клиенты (рабочие станции) на Linux(Crunchbang)
чтобы клиенты смогли авторизоватся с сервера
как это вообще возможно ли это организовать?
могли бы привести пример или скинуть какую нибудь документацию
СПАСИБО!