Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Сетевая аутентификация

1. Сервер OpenLDAP

Lightweight Directory Access Protocol (LDAP) — это протокол запросов и изменений к сервису каталогов на базе X.500, работающий поверх TCP/IP. Текущая версия LDAP — LDAPv3, как определено в RFC45101, а реализация

LDAP в Ubuntu — это OpenLDAP, текущей версии 2.4.25 (Oneiric) (2.4.28 для

Precise — прим. переводчика).

Итак, этот протокол обеспечивает доступ к каталогам LDAP. Здесь приведены некоторые ключевые понятия и термины:

Каталог LDAP — это дерево данных в виде записей, иерархичных по своей природе, которое называется деревом каталогов информации (Directory Information Tree, или DIT).

Запись состоит из набора атрибутов.

Атрибут имеет тип (имя/описание) и одно или несколько значений.

Каждый атрибут должен быть определён как минимум в одном

объектном классе (objectClass).

Атрибуты и объектные классы определяются в схемах (объектный класс фактически рассматривается как специальный вид атрибута).

Каждая запись имеет уникальный идентификатор — отличительное имя (Distinguished Name, или DN). Оно состоит из относительного отличительного имени (RDN), за которым следует запись родительского

DN.

DN записи — это не атрибут. Оно не является частью собственно записи.

Термины объект, контейнер, and узел (node) имеют определенный подтекст, но они все по существу обозначают такую вещь, как запись, технически корректный термин.

Например, далее мы имеем одну запись, содержащую 11 атрибутов. Её DN

— это "cn=John Doe,dc=example,dc=com"; её RDN — это "cn=John Doe"; а родительский DN — "dc=example,dc=com".

dn: cn=John Doe,dc=example,dc=com cn: John Doe

givenName: John sn: Doe

telephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: john@example.com

manager: cn=Larry Smith,dc=example,dc=com

1 http://tools.ietf.org/html/rfc4510

107

Сетевая аутентификация

objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person

objectClass: top

Вышепривёденная запись — это формат LDIF (LDAP Data Interchange Format, то есть формат обмена данными LDAP). Любая информация, которую вы помещаете в ваш DIT, должна быть в таком формате. Это определено в

RFC28492.

Хотя данное руководство описывает, как использовать его для централизованной идентификации, LDAP хорош для всего, что затрагивает большое количество запросов к системе, основанной на атрибутах (имя:значение) и ориентированной преимущественно на чтение. В качестве примеров можно привести адресную книгу, список адресов электронной почты и конфигурацию почтового сервера.

1.1. Установка

Установите демон сервера OpenLDAP и традиционные утилиты управления LDAP. Они находятся в пакетах slapd и ldap-utils, соответственно.

Установка slapd создаст работающую конфигурацию. В частности, она создаст экземпляр базы данных, которую вы можете использовать для хранения своих данных. Однако суффикс (или базовый DN) этого экземпляра будет определён из доменного имени localhost. Если вы

хотите использовать что-то другое, отредактируйте /etc/hosts и замените доменное имя на подходящее. Например, если вам нужен суффикс dc=example,dc=com, то ваш файл должен иметь подобную строку:

127.0.1.1hostname.example.com hostname

Вы можете отменить изменения после установки пакета.

Это руководство будет использовать суффикс базы данных dc=example,dc=com.

Приступаем к установке:

sudo apt-get install slapd ldap-utils

Начиная с Ubuntu 8.10 slapd проектируется так, чтобы настраиваться самостоятельно, выделяя отдельный DIT для этой цели. Это позволяет

2 http://tools.ietf.org/html/rfc2849

108

Сетевая аутентификация

динамически настраивать slapd без необходимости перезапускать сервис. Эта конфигурационная база данных состоит из набора текстовых LDIFфайлов, расположенных в /etc/ldap/slapd.d. Этот вариант работы известен под разными названиями: метод slapd-config, RTC-метод (от Real Time Configuration — настройка в реальном времени) или метод cn=config.

Вы всё ещё можете использовать традиционный метод плоского файла (slapd.conf), но это не рекомендуется; данная функциональность в конечном счете будет убрана.

В настоящее время Ubuntu использует метод slapd-config для настройки slapd, и данное руководство это отражает.

Во время установки вам будет предложено указать учётные данные администратора. Это LDAP-данные для rootDN вашего экземпляра базы данных. По умолчанию DN этого пользователя: cn=admin,dc=example,dc=com. Также по умолчанию не создается административного пользователя для базы данных slapd-config

и вы, следовательно, будете вынуждены использовать внешнюю аутентификацию LDAP для доступа к ней. Мы рассмотрим, как это делается, позднее.

Некоторые классические схемы (cosine, nis, inetorgperson) выпускаются теперь для slapd. Это также включает базовую (core) схему, которая предполагается для любой рабочей схемы.

1.2. Проверка после установки

Процесс установки создаст два DIT. Один для slapd-config и один для ваших данных (dc=example,dc=com). Давайте взглянем:

Здесь показано, как выглядит дерево (DIT) базы данных slapd-config. Напомним, что эта база основана на LDIF и находится в /etc/ldap/slapd.d:

/etc/ldap/slapd.d/

├── cn=config

├── cn=module{0}.ldif

├── cn=schema

│ ├── cn={0}core.ldif

│ ├── cn={1}cosine.ldif

│ ├── cn={2}nis.ldif

│ └── cn={3}inetorgperson.ldif

├── cn=schema.ldif

├── olcBackend={0}hdb.ldif

├── olcDatabase={0}config.ldif

├── olcDatabase={-1}frontend.ldif

109

Сетевая аутентификация

│ └── olcDatabase={1}hdb.ldif └── cn=config.ldif

Не редактируйте базу slapd-config напрямую. Вносите изменения через протокол LDAP (утилитами).

• Здесь показано, как выглядит дерево slapd-config через LDAP протокол:

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn

dn: cn=config

dn: cn=module{0},cn=config dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config dn: cn={1}cosine,cn=schema,cn=config dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config dn: olcBackend={0}hdb,cn=config

dn: olcDatabase={-1}frontend,cn=config dn: olcDatabase={0}config,cn=config dn: olcDatabase={1}hdb,cn=config

Пояснения к записям:

cn=config: глобальные настройки

cn=module{0},cn=config: динамически загружаемый модуль

cn=schema,cn=config: содержит жёстко запрограммированную схему системного уровня

cn={0}core,cn=schema,cn=config: жёстко запрограммированная базовая

(core) схема

cn={1}cosine,cn=schema,cn=config: схема cosine

cn={2}nis,cn=schema,cn=config: схема nis

cn={3}inetorgperson,cn=schema,cn=config: схема inetorgperson

olcBackend={0}hdb,cn=config: тип хранилища 'hdb' заднего плана

olcDatabase={-1}frontend,cn=config: база переднего плана, настройка по умолчанию для других баз данных

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]