LDAP: Установка и настройка LDAP-сервера

LDAP: Установка и настройка LDAP-сервераLDAP расшифровывается как Lightweight Directory Access Protocol, облегченный протокол доступа к каталогам. Это достаточно простой протокол, который позволяет производить операции аутентификации, поиска данных, сравнения, добавления, изменения и удаления записей. Сами каталоги используются для хранения структурированной информации. К сожалению, настройка LDAP для неподготовленного человека может быть сложна без предварительной подготовки. Поэтому давайте разберемся, что это такое и как это работает.

Установка OpenLDAP

Для всех современных дистрибутивов в официальных репозиториях есть уже готовые пакеты, поэтому установка обычно сводится к установке соответствующих пакетов:

По зависимостям будет установлено еще несколько пакетов. При установке будет запрошен пароль пользователя admin. Задавайте любой, мы все равно будем после установки задавать собственную конфигурацию.

Если вам нужна самая свежая версия OpenLDAP, то исходные коды можно скачать на официальном сайте.

Схемы LDAP

По умолчанию OpenLDAP включает уже готовые схемы. Схемы — это структуры, определяющие объекты, используемые в системе каталогов. Схемы включают в себя классы объектов, у каждого класса есть определенный набор атрибутов. Каждая запись может относиться к одному или нескольким классам и, соответственно, иметь те наборы атрибутов, которые включены в соответствующие классы. В терминологии LDAP классы так и называются — ObjectClass. Вот несколько классов объектов, которые можно использовать:

top
organization
organizationalUnit
person
inetOrgPerson

При создании объекта вы указываете, к каким классам он относится и, исходя из этого, можно задавать соответствующие атрибуты. Примеры чуть ниже. Файлы схем хранятся в директории /etc/ldap/slapd.d/cn=config/cn=schema. В них хранятся описания классов объектов и атрибутов. Для просмотра объектов, которые используются в данный момент, используется команда

Она выводит содержимое базы данных объектов.

Редактировать файлы схемы не рекомендуется. Хотя в интернете достаточно много статей по настройке LDAP, где рекомендуют отредактировать ldif-файлы схемы, это делать не нужно, более того, в самих файлах указан комментарий о том, что файлы нельзя редактировать вручную и необходимо для редактирования использовать команду ldapmodify. К сожалению, информации об использовании этой команды гораздо меньше, чем о ручном редактировании файлов .ldif, хотя ее использование в чем-то даже проще, чем редактирование файлов напрямую.

Настройка OpenLDAP

После установки пакетов надо переконфигурировать сервер, задать свои данные. Первое, что мы сделаем — создадим свой домен «mydomain.com». Для этого выполним команду

Вы увидите такой экран:

slapd01

Отвечаем No.

slapd02

Введем данные для нашего домена. У нас это будет «mydomain.com». Нажимаем OK.

slapd03

Вводим название организации «mydomain». Нажимаем OK.

slapd04

Вводим пароль администратора LDAP-сервера. Пароль желательно вводить сложный, это  как-никак пароль администратора. Нажимаем ОК.

slapd05

Повторяем пароль, нажимаем OK

slapd06

Выбираем «HDB» для типа сервера, нажимаем ОК.

slapd07

На вопрос удалять ли базу данных при вычистке slapd отвечаем утвердительно

slapd08

На вопрос о перемещении старой базы данных также отвечаем утвердительно

slapd09

На предложение включить старый протокол LDAPv2 отвечаем No/Нет

На этом первоначальная настройка завершена. Если сервис не стартовал, запускаем его вручную командой

Проверим, есть ли данные в базе:

Можно сразу проверить, правильно ли работает сервер OpenLDAP. Это можно сделать следующей командой:

После ввода команды будет запрошен пароль. Если вы не хотите вводить пароль в интерактивном режиме, вы можете использовать параметр -w:

Результат команды поиска будет выглядеть следующим образом:

Параметр «-b» определяет поисковую базу, то есть тот узел дерева объектов, с которого будет начинаться поиск.

Можно продолжать настройку

Создадим группу пользователей с названием «users» при помощи команды ldapmodify

Всё, начиная с «dn: » вводим руками точно так, как написано выше. После ввода строки описания («description: Domain Users») нажимаем Enter два раза. Если всё введено без ошибок, вы должны увидеть такое сообщение:

Нажимаем Ctrl+C для выхода

Теперь надо проверить, внесены ли данные:

Всё верно, и теперь можно внести первого пользователя. Сначала сгенерируем хэш пароля для пользователя.

Этот хэш нам понадобится при создании пользователя

Снова запускаем ldapmodify и создаем пользователя. По окончании ввода значений полей дважды нажимаем Enter

После ввода нажимаем Ctrl+C и выходим

Проверяем, есть ли запись с uid=jdoe:

Запись есть, отлично. Теперь надо проверить аутентификацию:

После ввода правильного пароля получаем запрошенную информацию

Обратите внимание на то, что даже если для записи указан uid, представляющий собой логин пользователя, вы не сможете использовать его для логина. Причина этого в том, что само поле не является первичным ключом записи. Если вы хотите использовать именно jdoe, то вам придется создать запись

И задать для этой записи пароль. Эти две записи будут существовать в одно и то же время, поэтому вам нужно заранее подумать о том, какое поле вы будете использовать для аутентификации.

LDAP: Установка и настройка LDAP-сервера: 11 комментариев

  1. ivan

    Будет ли описание, как использовать этот сервер для авторизации ssh и др.?

  2. OverDriven

    после команды «ldapsearch -D «cn=admin,dc=mydomain,dc=com» -W»
    имею:

    # extended LDIF
    #
    # LDAPv3
    # base (default) with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #

    # search result
    search: 2
    result: 32 No such object

    хотя : slapcat дает результат:

    dn: dc=mydomain,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: mydomain
    dc: mydomain
    structuralObjectClass: organization
    entryUUID: 5086ad0c-6624-1035-9168-b1f8a077e573
    creatorsName: cn=admin,dc=mydomain,dc=com
    createTimestamp: 20160212223259Z
    entryCSN: 20160212223259.652393Z#000000#000#000000
    modifiersName: cn=admin,dc=mydomain,dc=com
    modifyTimestamp: 20160212223259Z

    dn: cn=admin,dc=mydomain,dc=com
    objectClass: simpleSecurityObject
    objectClass: organizationalRole
    cn: admin
    description: LDAP administrator
    userPassword:: e1NTSEF9U2czZUlEZ3BoeXJwUzZMbS9pVXAramJmV3lTNHJHU2o=
    structuralObjectClass: organizationalRole
    entryUUID: 508730c4-6624-1035-9169-b1f8a077e573
    creatorsName: cn=admin,dc=mydomain,dc=com
    createTimestamp: 20160212223259Z
    entryCSN: 20160212223259.655759Z#000000#000#000000
    modifiersName: cn=admin,dc=mydomain,dc=com
    modifyTimestamp: 20160212223259Z

    Подскажите новичку, что не так?

    1. mnorin Автор записи

      Похоже, при использовании base (default) используется не та база, которая у вас реально есть, поэтому попробуйте один из этих вариантов:
      1) Использовать параметр -b «your-base»:

      ldapsearch -D "cn=admin,dc=mydomain,dc=com" -W -b "dc=mydomain,dc=com"

      2) Указать BASE в файле /etc/ldap/ldap.conf

  3. Виктор

    День добрый! При инсталяции из всех настроек возможно было задать толко пароль админа, а все остальные настройки подхватились из кофигурации сервера (например, базовый DN определился из доменного имени сервера). В чем может быть причина?

    1. mnorin Автор записи

      Не могли бы вы уточнить, какая операционная система (название, версия), чтобы более детально посмотреть?
      Как один из вариантов — на машине ранее уже стояли соответствующие пакеты, их удалили, а настройки остались. И сейчас была повторная установка.

  4. Никита

    Хоть убейте, не могу понять. LDAP почему-то не видит заголовки, и принимает {SSHA}пароль как пароль в чистом виде «{SSHA}пароль». Что делать? :(

    1. mnorin Автор записи

      Для начала скопировать сюда то, что в терминале, чтобы понятно было, что значит «не видит заголовки».

      1. Никита

        Все в порядке, извините за глупый вопрос) Думал, что у меня шифрование не работает в LDAP, а оказывается просто при использовании LDAP для хранения пользователей и использования другим серивсом он передает пароли только в чистом виде)

  5. Дмитрий

    Спасибо большое за статью!!! Все коротко и ясно!!! Но хотелось бы продолжения!)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *