Install ldap on linux

2. Установка OpenLDAP

2.1 Установка пакетов

Где работаем: ldap-srv

Прежде чем установить пакет sudo-ldap необходимо задать пароль для учетной записи root. Пакеты sudo и sudo-ldap взаимоисключающие, поэтому нужно перестраховаться, если с их установкой или работой случится беда.

Теперь установим все необходимые пакеты. Мы сразу устанавливаем krb5-kdc-ldap и sudo-ldap, даже несмотря на то, что настроим их позже. Идея заключается в том, чтобы сразу получить необходимые схемы наборов данных OpenLDAP.

Во время установки Вам будет предложено задать некоторые настройки:

  • Пароль учётной записи admin для доступа к конфигурации OpenLDAP;
  • Название области Kerberos (realm);
  • Сервер Kerberos для нашей области;
  • Управляющий сервер области.

На данном этапе эти настройки не важны. Мы последовательно опишем их в дальнейшем.

Прежде чем продолжить, убедитесь, что нужные пакеты установились:

2.2 Инициализация конфигурации каталога

Где работаем: ldap-srv

Инициализацию конфигурации каталога мы произведём с нуля с использованием нового подхода, OLC ( cn=config ).

Создайте каталог для работы со службой каталогов. У нас будет много конфигурационных файлов, неплохо бы класть их в одно место:

Избавимся от установленных по-умолчанию конфигурации slapd и его базы данных:

Создадим пустой каталог для нашей новой конфигурации:

Создадим файл 2.2-init-config.ldif с новой конфигурацией и запишем в него:

В этом файле первым делом мы определяем корневую запись DIT (Directory Information Tree), cn=config . С помощью директив olcPidFile и olcArgsFile мы указали, куда необходимо записать ID процесса службы каталогов и аргументы его запуска соответственно.

Во втором разделе задаём служебную базу данных конфигурации cn=config . Мы так же добавили правило доступа (ACL, Access Control List), разрешающее манипулировать ей от имени пользователя root (uid=0, gid=0) с помощью механизма SASL EXTERNAL и идентификационной сущности IPC. Помните, что в конце каждого ACL, если не задан модификатор break , подразумевается наличие правила by * none . То есть остальной доступ к объекту в условии to — запрещён.

Последним разделом мы добавляем в конфигурацию контейнер для наборов схем данных.

Модификатор -n 0 говорит о том, что мы добавляем данные в базу данных с индексом 0, который зарезервирован для cn=config .

Проверим, всё ли в порядке с нашей конфигурацией:

Поправим права доступа, разрешив пользователю openldap заправлять в каталоге /etc/ldap/slapd.d:

2.3 Запуск службы каталогов

Где работаем: ldap-srv

Разрешим нашей службе каталогов использовать только IPv4. Для этого установим SLAPD_OPTIONS=»-4″ в файле /etc/default/slapd. В остальном конфигурация стандартная:

Настроим rsyslog, чтобы он писал события службы каталогов в отдельный файл. Для этого достаточно добавить три строки в его конфигурацию после глобальных директив (/etc/rsyslog.conf):

Создадим файл для журнала службы каталогов и зададим для него права доступа. Затем перезапустим rsyslog, чтобы изменения вступили в силу:

Настроим logrotate для управления этим журналом. Создадим файл конфигурации /etc/logrotate.d/slapd и запишем в него:

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

Наконец запускаем нашу службу каталогов:

Заглянем в файл журнала slapd.log. Всё ли в порядке?

Проверим, активен ли TCP порт 389:

Убедимся, что UNIX сокет тоже активен:

Читайте также:  Nokia monitor test mac os

Для пущей убедительности проверим текущую конфигурацию каталога с помощью ldapsearch:

Заметьте, что slapadd (из предыдущего пункта) добавил в наш каталог описание служебной базы данных frontend (в ней можно определить опции, которые будут применяться ко всем базам данных в текущей конфигурации OLC). Однако, если те же самые опции (в том числе правила ACL) определены в конкретной базе данных, то будут применяться именно они.

2.4 Подключение динамических модулей

Где работаем: ldap-srv

Для работы нам понадобится два модуля. Один — для механизма базы данных mdb. На данный момент он рассматривается как основной для нормальных баз данных и должен прийти на смену bdb и hdb. Второй модуль — monitor, для создания и динамической поддержки ветки с информацией о текущем статусе демона slapd.

Чтобы их подключить нам понадобится всего один короткий LDIF-файл и специальная запись cn=module,cn=config . Назовём файл 2.4-add-modules.ldif и запишем в него:

Каталог с модулями в нашем случае — /usr/lib/ldap.

Добавим наш LDIF-файл в конфигурацию:

2.5 Добавление наборов схем данных

Где работаем: ldap-srv

Прежде чем добавлять наборы схем данных в каталог, необходимо подготовить наборы схем из пакетов krb5-kdc-ldap и sudo-ldap к загрузке (перевести их в формат LDIF).

В используемой нами версии Ubuntu искомые наборы схем находятся здесь:

Скопируем их во временный каталог:

На просторах сети был найден несложный скрипт для преобразования файлов schema в формат LDIF. Немного откорректируем его (для универсальности) и сохраним в том же каталоге

/ldap под именем 2.5-schema-ldif.sh:

Сделаем его исполняемым и запустим, передав через переменную SCHEMAS имена файлов конвертируемых наборов схем:

На выходе должны получить два набора схем данных в формате LDIF:

Переместим их в каталог к остальным наборам схем и поправим права доступа:

Удалим не нужные больше наборы схем данных:

Создадим LDIF-файл с необходимыми нам наборами схем данных. Порядок их следования в файле очень важен! Атрибуты наборов схем иерархически связаны и требуют их объявления с соблюдением иерархии. Назовём файл 2.5-add-schemas.ldif и запишем в него:

Последними строчками мы указали получившиеся в результате конвертации наборы схем kerberos.ldif и sudo.ldif.

Добавим наши наборы схем:

2.6 Инициализация базы данных

Где работаем: ldap-srv

Вот мы и подошли к созданию базы данных, в которой будем хранить нашу рабочую информацию.

Для начала создадим пароль администратора. Утилита slappasswd генерирует посоленный хэш вводимого нами пароля:

Не забудьте сам пароль! 🙂

Сформируем конфигурационный LDIF-файл для нашей базы данных (2.6-db.ldif) и запишем получившийся хэш в атрибут olcRootPW :

И вновь несколько комментариев.

  • В качестве механизма манипуляции данными выбираем ранее подключенный модуль mdb.
  • В качестве суффикса (корневой записи) создаваемого DIT (Directory Information Tree) обычно используется имя домена DNS. Но это не является обязательным. Для примера мы задали суффикс dc=example,dc=com .
  • В атрибуте olcDbDirectory мы указали путь к каталогу бузы данных. Атрибут обязательный и требует существование каталога на момент загрузки в базу данных.
  • Механизм mdb требует указания максимального размера базы данных. Он задается в байтах и должен быть больше её ожидаемого размера, даже с учётом прироста. В файловой системе должно быть достаточно свободного места для размещения базы данных такого размера.
  • В атрибут olcRootDN мы записываем DN администратора нашей базы данных.
  • Для пользователя, указанного в атрибуте olcRootDN , задавать правило в ACL не нужно, он обладает полным доступом к данным в вашей базе. Поэтому постарайтесь сохранить его пароль в надежном месте (например, используя keepass или gpg).
  • Добавляем три правила доступа для базы данных mdb:
    • Доступ ко всей базе данных:
      • Разрешить доступ пользователю root с использованием механизма SASL EXTERNAL.
      • Продолжить анализ ACL, если нет совпадений с субъектами доступа, указанными с помощью директивы by .
    • Доступ к атрибуту userPassword :
      • Разрешить доступ для смены пароля самим пользователем.
      • Разрешить доступ для аутентификации.
    • Доступ к остальной базе данных:
      • Разрешить пользователям просматривать свои записи (важно для аутентификации через nslcd, раздел 5).
  • С помощью механизма monitor включаем мониторинг базы данных (добавляем базу данных monitor ).
Читайте также:  Когда будет обновление до windows 10 nokia lumia 930

Для нашей базы данных необходимо создать каталог и задать ему права доступа:

Загрузим конфигурацию базы данных:

Определим RootDN для доступа к конфигурации службы каталогов. Он будет ссылаться на RootDN, находящийся в нашей БД. Эта запись желательна только при первоначальной настройке или в тестовой конфигурации. Не оставляйте её в боевой системе! Для <-1>frontend зададим минимально необходимые права для доступа к RootDSE. Создадим LDIF-файл 2.6-acl-mod.ldif, модифицирующий права доступа:

Загрузим LDIF, изменяющий ACL:

Теперь мы ещё больше повысили значимость учётной записи администратора. С её помощью теперь можно получить полный доступ к службе каталогов. Имейте это ввиду. 🙂

Проверим корректность всех ACL и, заодно, наличие всех добавленных нами данных (вывод отформатирован для наглядности):

Убедимся, что учётная запись администратора имеет доступ к нашей службе каталогов:

Отлично! Теперь у нас есть работающий сервер OpenLDAP.

Отредактируем файл /etc/ldap/ldap.conf. Это нужно только для того, чтобы немного упростить себе жизнь и меньше печатать в дальнейшем. В BASE подставьте свой суффикс, а в URI — FQDN Вашего сервера OpenLDAP:

С настройкой TLS мы разберемся в следующем разделе.

И последний штрих. Добавим демон нашей службы каталогов в автозагрузку:

Источник

MNorin.com

Блог про Linux, Bash и другие информационные технологии

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

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

Установка OpenLDAP

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

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

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

Схемы LDAP

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

top
organization
organizationalUnit
person
inetOrgPerson

Читайте также:  Building with cmake windows

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

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

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

Настройка OpenLDAP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью