@ Карта сайта News Автора!

Bog BOS: LDAP и OpenLDAP

Последние изменения:
2009.09.30: sysadmin: Zabbix - распределённая система мониторинга

Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2010.03.12

Bog BOS: LDAP и OpenLDAP

Протокол LDAP (Lightweight Directory Access Protocol, упрощённый протокол службы каталогов) является развитием (упрощением и адаптацией к TCP/IP) стандарта ISO/ITU X.500 (1993 год). Используется во всех службах каталогов (NDS/eDirectory, Active Directory, OpenLDAP, iPlanet, Fedora Directory). Версии LDAP: версия 1 (RFC 1487, 1993, не используется), версия 2 (RFC 1777, 1995; RFC 3494, упразднение в 2003), версия 3 (RFC 2251, 1997). LDAPv3 предусматривает возможность сортировки информации, разбиения на страницы, расширяемые операции, хранение схемы в каталоге, поддержку интернационализации для имён объектов и значений атрибутов, использование SASL для расширения методов аутентификации, возврат ссылки на другой сервер.

Основные понятия

LDAP представляет средства доступа к логически иерархической БД (реальное хранилище может быть реализовано по другому). Каталог (БД) состоит из записей (объектов). Тип объекта (класс) определяется набором атрибутов: имя, тип значения, обязательность. Строки в кодировке UTF-8. Объект может ассоциироваться с несколькими классами. Класс может быть расширением другого класса (наследование). Кроме простых объектов имеются контейнеры (группировка объектов и контейнеров), псевдонимы (символьные ссылки), переадресация клиента к другому каталогу (переход по ссылкам, chasing referrals). Иерархическая совокупность объектов (вложение контейнеров) определяет дерево каталога. Правила связывания определяются набором правил, который называется схемой каталога (в схему входят также описания классов). Дерево начинается от корневого объекта (класс Top в Active Directory). Поиск объекта в иерархии производится с помощью составного имени. Каждый объект имеет относительное отличительное имя (Relative Distinguished Name). Полное отличительное имя объекта (DN) образуется конкатенацией RDN объекта с DN объекта верхнего уровня (порядок записи - от младшего к старшему, разделитель - точка). Каждый объект имеет владельца. В качестве идентификатора аутентификации также используется DN (cn=,dc=). Имеется выделенный администратор каталога, обладающий корневыми полномочиями. Для аутентификации используется расширяемый механизм SASL. Имеется возможность анонимного доступа. Права доступа - чтение, запись. ACL не стандартизованы. Поддерживается репликация.

Общие имена атрибутов:

Клиент может:

Стандартный TCP порт сервера LDAP - 389 (возможность использования протокола UDP зарезервирована, но не используется). Для шифрования может использоваться TLS (SSL) (порт 636).

LDIF (LDAP Data Interchange Format, RFC 2849) - стандарт на экспорт каталога в текстовый файл с целью дальнейшего импорта файла на другой сервер. Текстовый файл в каждой строке содержит имя и значение одного атрибута. Если атрибут имеет несколько значений, то они записываются на нескольких строчках. Имя атрибута 'dn' используется для задания DN имени очередного объекта (описания объектов также разделяются пустой строкой). Имя атрибута objectClass используется для определения класса (типа) объекта. Имя атрибута отделяется от значения строкой ': ' (значение в кодировке UTF-8), строкой ':: ' (значение в кодировке base64), строкой ':< ' (указывается URI, по которому находится значение; обычно file:///...). Строки, начинающиеся с '#', являются комментариями. Продолжение строки обозначается пробелом или табуляцией в первой позиции следующей строки.

OpenLDAP

Разрабатывается OpenLDAP Foundation. Лицензия своя (BSD-like). Стабильная версия - 2.3.39 (20071118); CentOS 4.5 - версия 2.2.13; CentOS 5 - 2.3.27; FC6 - 2.3.30; FC3 - 2.2.19. Пакеты - openldap, openldap-devel, openldap-clients, openldap-servers. В качестве внутреннего хранилища используется Berkeley DB (Sleepycat Software, куплена Oracle в 2006 году, /var/lib/ldap, каждый атрибут в отдельном файле имя-атрибута.bdb, права доступа к каталогу - ldap:ldap 700).

Клиентские программы и библиотеки (ldap - LDAP, lber - кодировка BER/DER). Файл настройки - /etc/openldap/ldap.conf (ldap.conf.5) и ~/.ldaprc или ~/ldaprc или ./ldaprc (перекрывают общесистемные настройки). Переменная окружения LDAPNOINIT отключает все установки по умолчанию. С помощью переменных LDAPCONF (абсолютный или относительный путь) и LDAPRC (имя файла в текущем или домашнем каталоге) можно задать имена дополнительных файлов настройки. Значение опции XYZ можно установить с помощью переменной окружения LDAPXYZ. Опции:

Опции SASL аутентификации:

Опции TLS:

Настройки сервера (slapd(8)) в файле /etc/openldap/slapd.conf (должен иметь права доступа root:ldap 640). Модули схемы в каталоге /etc/openldap/schema (берутся командами include из slapd.conf). Опции настройки:

Скрипт запуска сервера - /etc/rc.d/init.d/ldap (можно использовать стандартные команды chkconfig и service, имя сервиса - ldap)

slurpd - сервер репликации.

Утилиты для работы с каталогом (slapadd, slapcat, slapd_db_*, slapdn, slapindex, slaptest - проверка правильности конфигурационного файла slapd.conf).

Утилита slappasswd позволяет создавать хеш пароля для дальнейшего использования в качестве значения атрибута userPassword или опции rootpw файла slapd.conf. Параметры:

Утилиты для работы с файлами в формате LDIF (ldapadd, ldapsearch) и доступа к каталогу (ldapcompare, ldapdelete, ldapmodify, ldapmodrdn, ldappasswd, ldapwhoami).

Модуль аутентификации для SASL.

Модуль PAM.

Наполнение каталогов для нескольких доменов

Редактируем slapd.conf для работы с несколькими доменами:

...
allow bind_v2
...
database        bdb
suffix          "dc=company1"
rootdn          "cn=root,dc=company1"
rootpw          {SSHA}хешированный-пароль
directory       /var/lib/ldap-company1
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

...

Создаём объекты верхнего уровня для каждого домена:

cat << EOF | ldapadd  -v -x -D 'cn=root,dc=company1' -W
dn: dc=company1
objectClass: top
objectClass: domain
#objectClass: dcObject
#objectClass: organization
dc: company1
o: название организации
description: дополнительная информация
l: местность (город)
st: область
street: улица и номер дома
postalCode: почтовый индекс
postalAddress: почтовый адрес
telephoneNumber: номер рабочего телефона
facsimileTelephoneNumber: номер факса
EOF

Создаём объекты ou=people для каждого домена:

cat << EOF | ldapadd  -v -x -D 'cn=root,dc=company1' -W
dn: ou=people,dc=company1
objectClass: top
objectClass: organizationalUnit
ou: people
EOF

Можно разбить адресную книгу по подразделениям:

cat << EOF | ldapadd  -v -x -D 'cn=root,dc=company1' -W
dn: ou=IT,ou=people,dc=company1
objectClass: top
objectClass: organizationalUnit
ou: IT
EOF

Создаём объекты для каждого сотрудника (значения атрибутов не наследуются):

cat << EOF | ldapadd  -v -x -D 'cn=root,dc=company1' -W
dn: uid=vasiliy_pupkin,ou=people,dc=company1
uid: vasiliy_pupkin
cn: Пупкин Василий
sn: Пупкин
gn: Василий
initials: В.И.
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
#objectClass: residentialPerson
#objectClass: newPilotPerson
objectClass: userSecurityInformation
telephoneNumber: номер рабочего телефона
mobile: номер сотового телефона
homePhone: номер домашнего телефона
faximileTelephoneNumber: номер факса
mail: адрес электронной почты
description: дополнительная информация
title: название должности (номер комнаты)
departmentNumber: название отдела
ou: название отдела
physicalDeliveryOfficeName: 
roomNumber: 
employeeNumber:
employeeType: permanent
jpegPhoto:
o: название организации
street: улица и номер дома
streetAddress: улица и номер дома
l: местность (город)
st: регион
postalCode: почтовый индекс
postalAddress: почтовый адрес
postOfficeBox: почтовый адрес
EOF

Для редактирования можно использовать gq.

Использование в адресных книгах

Thunderbird использует LDAPv3. Добавление LDAP-сервера в адресную книгу: выбрать в меню Address Book -> File -> New -> LDAP, настроить имя книги , имя (адрес) хоста , DN базы (dc=company1 ). Результаты в prefs.js. Поиск производится при введении строки поиска в поле (ничего нажимать не надо, поиск производится по мере ввода) по 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.

Mozilla имеет возможности расширенного поиска (например, по имени отдела и т.д.).

The Bat использует LDAPv2, делает поиск по cn и считывает следующий список атрибутов: display-name, cn, commonName, mail, otherMailbox, givenName, sn, surname, st, c, l, co, organizationName, o, ou, organizationalUnitName, URL, homePhone, facsimileTelephoneNumber, otherFacsimileTelephoneNumber, OfficeFax, mobile, otherPager, OfficePager, pager, info, title, telephoneNumber, homePostalAddress, postalAddress, streetAddress, street, department, comment, postalCode, physicalDeliveryOfficeName, initials, objectClass, uid, uniqueIdentifier, userCertificate, userSMIMECertificate.

Outlook Express. Добавление LDAP-сервера в адресную книгу: выбрать в меню Адрес -> Сервис -> Учётные записи -> Добавить. Сервер каталогов: имя или адрес хоста. Затем изменить свойства (имя книги, основа поиска). Поиск производится по нажатию кнопки "Поиск людей", вводу параметров и нажатию кнопки "Найти". Предварительно опрашивается список возможносте сервера: 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.

gq

gq представляет собой графический визуализатор каталогов LDAP и схем. Имеется поиск и возможность внесения изменений. После изменения параметров сервера необходимо перезапустить программу. Довольно удобно.

lbe

lbe представляет собой графический визуализатор каталогов LDAP. Имеется поиск и возможность внесения изменений.

Ссылки

@ Карта сайта News Автора!

Bog BOS: LDAP и OpenLDAP

Последние изменения:
2009.09.30: sysadmin: Zabbix - распределённая система мониторинга

TopList
Смотреть кино трансформеры 3.
Copyright © 1996-2009 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)