Вы просматриваете: » » Сервер LDAP
Категория: Информация, Unix, опубликовал: rob96, добавлено: 13-03-2015, 09:37
 

Lightweight Directory Access Protocol (LDAP) — это протокол запросов и изменений к сервису каталогов на базе X.500, работающий поверх TCP/IP. . Этот протокол обеспечивает доступ к каталогам 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
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top

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

Установка



Установите демон сервера OpenLDAP и традиционные утилиты управления LDAP. Они находятся в пакетах slapd и ldap-utils, соответственно.
Установка slapd создаст работающую конфигурацию. В частности, она создаст экземпляр базы данных, которую вы можете использовать для хранения своих данных. Однако суффикс (или базовый DN) этого экземпляра будет определён из доменного имени localhost. Если вы хотите использовать что-то другое, отредактируйте /etc/hosts и замените доменное имя на подходящее. Например, если вам нужен суффикс dc=example,dc=com, то ваш файл должен иметь подобную строку:

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

Установка:
sudo apt-get install slapd ldap-utils

slapd проектируется так, чтобы настраиваться самостоятельно, выделяя отдельный DIT для этой цели. Это позволяет динамически настраивать 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) схему, которая предполагается для любой рабочей схемы.


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



Процесс установки создаст два 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
│ └── 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: база переднего плана, настройка по умолчанию для других баз данных
olcDatabase={0}config,cn=config: конфигурационная база slapd (cn=config)
olcDatabase={1}hdb,cn=config: экземпляр вашей базы данных (dc=examle,dc=com)

• А здесь показано как выглядит дерево dc=example,dc=com:
ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com

Пояснения к записям:
dc=example,dc=com: базовый уровень вашего дерева (DIT)
cn=admin,dc=example,dc=com: администратор (rootDN) данного дерева (заполняется в процессе установки пакета)


Изменение/заполнение вашей базы данных



Введём некоторые данные в нашу базу:
• узел (node) с названием People (для хранения пользователей)
• узел с названием Groups (для хранения групп)
• группу с названием miners
• пользователя с именем john

Для этого создайте следующий LDIF файл и назовите его add_content.ldif:

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=miners,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: miners
gidNumber: 5000

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount

uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john


Важно, чтобы значения uid и gid в вашем каталоге не совпадали
с локальными значениями. Используйте диапазон больших чисел,
начинающийся, например, с 5000. Установка больших значений uid
и gid для ldap также позволяет упростить контроль за тем что могут
делать локальные пользователи, а что ldap.

Добавляем данные:

ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif
Enter LDAP Password: ********
adding new entry "ou=People,dc=example,dc=com"
adding new entry "ou=Groups,dc=example,dc=com"
adding new entry "cn=miners,ou=Groups,dc=example,dc=com"
adding new entry "uid=john,ou=People,dc=example,dc=com"


Мы можем проверить что информация добавлена правильно с помощью
утилиты ldapsearch:
ldapsearch -x -LLL -b dc=example,dc=com 'uid=john' cn gidNumber
dn: uid=john,ou=People,dc=example,dc=com
cn: John Doe
gidNumber: 5000

Объяснения ключей команды:
• -x: "простое" связывание; не будет использоваться метод SASL по
умолчанию
• -LLL: отключить вывод посторонней информации
• uid=john: — «фильтр» для поиска пользователя john
• cn gidNumber: запрос на вывод определенных атрибутов (по умолчанию
выводятся все атрибуты)


Изменение базы данных настройки slapd



Дерево (DIT) slapd-config также может запрашиваться и изменяться. Здесь приведено несколько примеров.
• Используйте ldapmodifyдля добавления индекса (атрибут DbIndex) для вашей {1}hdb,cn=config базы (dc=example,dc=com). Создайте файл с названием uid_index.ldif следующего содержания:
dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uid eq,pres,sub


Затем выполните команду:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f uid_index.ldif
modifying entry "olcDatabase={1}hdb,cn=config"


Вы можете подтвердить изменения следующим способом:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={1}hdb)' olcDbIndex
dn: olcDatabase={1}hdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: uid eq,pres,sub

Давайте добавим схему. Сначала её нужно преобразовать в формат LDIF. Вы можете найти не преобразованные схемы в добавление к преобразованным в каталоге /etc/ldap/schema.
• Удаление схемы из базы slapd-config — нетривиальная задача.
Потренируйтесь добавлять схемы на тестовой системе.
• Перед добавлением любой схемы вам следует проверить, какие
схемы уже установлены (показан вывод по умолчанию, для
состояния "из коробки"):
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=schema,cn=config dn
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

В следующем примере мы добавим схему CORBA.
1. Создайте конфигурационный файл преобразования schema_convert.conf, содержащий следующие строки:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/ldapns.schema
include /etc/ldap/schema/pmi.schema


2. Создайте выходной каталог ldif_output.

3. Определите индекс схемы:
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep corba,cn=schema
cn={1}corba,cn=schema,cn=config


Когда slapd вводит объекты с тем же родительским DN,
он создает индекс для этого объекта. Индекс обрамляется
скобками: {X}.

4. Используйте slapcat для выполнения преобразования:
slapcat -f schema_convert.conf -F ldif_output -n0 -H \ ldap:///cn={1}corba,cn=schema,cn=config

Сконвертированная (преобразованная) схема теперь в cn=corba.ldif

5. Редактируйте cn=corba.ldif по достижении следующих атрибутов:
dn: cn=corba,cn=schema,cn=config
...
cn: corba

Также удалите следующие строки в конце:
structuralObjectClass: olcSchemaConfig
entryUUID: 52109a02-66ab-1030-8be2-bbf166230478
creatorsName: cn=config
createTimestamp: 20110829165435Z
entryCSN: 20110829165435.935248Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110829165435Z

Значения ваших атрибутов могут быть другими.

6. Наконец, используйте ldapadd для добавления новой схемы к дереву slapd-config:

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=corba.ldif
adding new entry "cn=corba,cn=schema,cn=config"

7. Проверьте текущую загруженную схему:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn

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: cn={4}corba,cn=schema,cn=config

Для аутентификации с помощью LDAP внешних приложений и
клиентов, они должны быть специфически настроены. Обратитесь к
соответствующей документации по поводу деталей.


Ведение журнала



Ведение журнала активности для slapd обязательно, когда осуществляется решение на базе OpenLDAP, поэтому его требуется включить вручную после установки приложения. Иначе только элементарные сообщения будут доступны в журналах. Ведение журналов, как и другие настройки slapd, подключаются через базу данных slapd-config.
OpenLDAP поставляется с несколькими подсистемами (уровнями) журналирования, каждая из которых включает подчиненную (дополнительную). Хороший вариант, который стоит попробовать — это stats. Страница slapd-config3 содержит больше информации по иным подсистемам.
Создайте файл logging.ldif со следующим содержимым:
dn: cn=config
changetype: modify
add: olcLogLevel
olcLogLevel: stats


Производим изменения:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif

Это породит значительный объем записи в журнал и вы захотите уменьшить уровень детализации когда ваша система станет боевой. С таким уровнем детализации система журналирования вашего хоста (rsyslog) может отнимать значительное время процессора, а также пропускать сообщения:
rsyslogd-2177: imuxsock lost 228 messages from pid 2547 due to rate-limiting

Вы можете решить изменить настройки rsyslog. В файл /etc/rsyslog.conf поместите следующее:
# Disable rate limiting
# (default is 200 messages in 5 seconds; below we make the 5 become 0)
$SystemLogRateLimitInterval 0


А затем перезапустите демон rsyslog:
sudo service rsyslog restart
     Комментариев оставлено: (0)    Просмотров: 6705   
Теги:   Linux, Ldap, сервер

Другие новости по теме:

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии к новости:

Оставить свой комментарий:

Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Вставка ссылкиВставка защищенной ссылки Картинка Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении:


управление аккаунтом
Профиль пользователя
, вы вошли как гость


Если вы на сайте впервые, то вы можете зарегистрироваться!

Вы забыли пароль?
самые интересные новости
Популярные новости
Материалы данного ресурса принадлежат пользователям и предназначены для расширения кругозора всех желающих
Unix Windows Техника Железо Mobile For Games Сплетни Net
  • Шпаргалки