Установка и настройка openldap ubuntu

Обновлено: 06.07.2024

Данная статья рассчитана на начинающих, она позволит «с нуля» настроить OpenLDAP и интегрировать с ним Samba 3. Является объединением знаний из статей Домен на Samba и OpenLDAP в Ubuntu 12.04 (с ошибками в статье, о которых автору написали в комментариях, но он их так и не исправил) и Samba and LDAP, в которой до сих пор не исправили ошибку.

Необходимо умение работы с терминалом, например по этой статье.

Команды в статье начинаются с символа «$» ­— его вводить не надо, это приветствие терминала, нужно чтобы в статье отличить вводимую команду от вывода.

Содержание

В статье везде для редактирования используется команда editor — она является ссылкой на ваш любимый консольный редактор. Поменять его можно командой:

Обязательно обновляем информацию о пакетах в репозитории:

Редактируем файл hosts:

Добавляем (или заменяем) строку:

Убедимся, что настройка применилась:

Установим OpenLDAP и утилиты для него:

На запрос при установке, вводим новый пароль администратора. Далее в статье, заменяем «MYSECRETPASSWORD» на введённый здесь пароль.

Для проверки работоспособности OpenLDAP, добавим индексы (можно будет сделать позже вместе с Samba):

Заполняем следующими данными:

По-умолчанию, slapd в Ubuntu заполняется минимально необходимыми правилами. Проверим их:

Создаём индексы, чтобы Samba быстрее забирала данные из LDAP:

Записываем в файл:

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

Смотрим уникальный номер созданного вами домена — SID (сохраняем его куда-нибудь в блокнот):

Примеры конфигураций можно распаковать, можно просто скопировать прямо из статьи.

Приводим файл к такому виду (SID вводим тот, который запомнили ранее):

Добавляем в него пароль администратора домена:

Исправляем ошибку «Use of qw(. ) as parentheses is deprecated at /usr/share/perl5/smbldap_tools.pm line 1423, <DATA> line 522»:

заменяем (строка 1423)

Можно сразу заполнить LDAP данными для Samba:

а можно создать ldif-файл, отредактировать и внести его. Параметр -a позволяет указать local administrator login name (default: root).

Можно отредактировать samba.ldif, чтобы задать uidNumber и gidNumber для пользователя admin, заодно завести такого же в linux (он нам понадобится позже для команды net rpc join -U admin):

Исправляем ошибку «Failed to execute: /usr/sbin/smbldap-passwd.cmd: No such file or directory at /usr/sbin/smbldap-useradd line 668»:

Применяем новую конфигурацию перезапуском процессов Samba:

Отдаём samba пароль LDAP-администратора (rootDN)?

(TODO: лучше наверно так, чтобы не светить пароль: sudo smbpasswd admin — но не работает, выдаёт ldap_connect_system: Failed to retrieve password from secrets.tdb)

Добавим нового пользователя:

Отвечаем на вопросы:

  • LDAP server Uniform Resource Identifier: ldap://127.0.0.1/ (или оставить ldapi:/// для работы через локальный сокет?)
  • Distinguished name of the search base: dc=example,dc=com
  • LDAP version to use: 3
  • Make local root Database admin: Yes
  • Does the LDAP database require login? No
  • LDAP account for root: cn=admin,dc=example,dc=com
  • LDAP root account password:

Эти изменения будут сохранены в /etc/ldap.conf (в Debian — в /etc/libnss-ldap.conf)

Пароль к rootbinddn сохраняется в сыром виде в /etc/ldap.secret

Если ошиблись, настраиваем заново с помощью команды sudo dpkg-reconfigure ldap-auth-config

Активируемые профили PAM: Unix authentication, LDAP Authentication

должна выдать и системных пользователей, и пользователей user1 и user2 из LDAP.

Если перед этим не создать системного пользователя admin, то получим ошибку smbd: Failed to find a Unix account for admin User admin in passdb, but getpwnam() fails!

Делаем группу «Domain Admins» настоящими администраторами:

Создаём файл /usr/share/pam-configs/my_mkhomedir:

Если используется не Ubuntu 12.04, то данная статья была проверена для следующих версий программ:

  • slapd 2.4.28;
  • samba 3.6.3;
  • ldap-utils 2.4.28;
  • smbldap-tools 0.9.7.

Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike версии 3.0 или более новой.

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

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

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

Каждая запись имеет уникальный идентификатор: свое Отличительное имя (DN или dn). Она состоит из своего Относительного отличительного имени (RDN), следующим за записью родительского DN.

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

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

Например, далее мы имеем одну запись, содержащую 11 атрибутов. Ее DN - это "cn=John Doe,dc=example,dc=com"; ее RND - это "cn=John Doe"; а родительский DN - "dc=example,dc=com".

Установка

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

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

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

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

Продолжим с установкой:

Начиная с Ubuntu 8.10 slapd проектируется, чтобы настраиваться самостоятельно, выделяя отдельный DIT для этой цели. Это позволяет динамически настраивать slapd без необходимости перестартовывать сервис. Эта конфигурационная база данных содержит коллекцию текстовых LDIF файлов, расположенных в /etc/ldap/slapd.d. Этот вариант работы известен под разными именами: метод slapd-config, RTC метод (настройка в реальном времени) или cn=config метод. Вы все еще можете использовать традиционный метод плоского файла (slapd.conf), но это не рекомендуется; данная функциональность в конечном счете будет убрана.

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

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

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

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

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

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

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

Объяснение по записям:

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

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

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

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

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

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

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

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

olcDatabase=config,cn=config: конфигурационная база slapd (cn=config)

olcDatabase=hdb,cn=config: экземпляр вашей базы данных (dc=examle,dc=com)

А здесь показано как выглядит дерево dc=example,dc=com:

Объяснение по записям:

dc=example,dc=com: базовый уровень вашего дерева (DIT)

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

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

Давайте введем некоторые данные в нашу базу. Мы добавим следующее:

ноду с названием People (сохранять пользователей)

ноду с названием Groups (сохранять группы)

группу с названием miners

пользователя с именем john

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

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

Мы можем проверить, что информация добавлена правильно с помощью утилиты ldapsearch:

Объяснения по параметрам:

-x: "простое" связывание; не будет использоваться метод SASL по умолчанию

-LLL: отключить вывод посторонней информации

uid=john: "фильтр" для нахождения пользователя john

cn gidNumber: запрос на вывод определенных атрибутов (по умолчанию выводятся все атрибуты)

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

Дерево (DIT) slapd-config также может запрашиваться и изменяться. Здесь приведено несколько примеров.

Используйте ldapmodify для добавления индекса (атрибут DbIndex) для вашей hdb,cn=config базы (dc=example,dc=com). Создайте файл с названием uid_index.ldif следующего содержания:

Затем выполните команду:

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

Давайте добавим схему. Это будет первый раз, когда потребуется конвертация в LDIF формат. Вы можете найти несконвертированные схемы в добавление к сконвертированным в каталоге /etc/ldap/schema.

Удаление схемы из базы slapd-config - нетривиальная задача. Потренируйтесь добавлять схемы на тестовой системе.

Перед добавлением любой схемы, вам следует проверить какие схемы уже установлены (показан вывод по умолчанию, для состояния "из коробки"):

В следующем примере мы добавим схему CORBA.

Создайте конфигурационный файл преобразования schema_convert.conf, содержащий следующие строки:

Создайте каталог назначения ldif_output.

Определите индекс схемы:

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

Используйте slapcat для выполнения преобразования:

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

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

Также удалите следующие строки в конце:

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

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

Проверьте текущую загруженную схему:

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

Создайте файл logging.ldif со следующим содержимым:

Вы можете решить изменить настройки rsyslog. В файл /etc/rsyslog.conf поместите следующее:

А затем перезапустите сервис rsyslog:

Репликация

Репликация доступна через механизм Syncrepl. Он позволят синхронизировать изменения используя модель Потребитель-Поставщик. Специфический вид репликации, который мы будем реализовывать в этом руководстве, является комбинацией следующих режимов: refreshAndPersist и delta-syncrepl. Это подразумевает что Потребитель передает измененные записи Поставщику, как только они появляются, но при этом посылаются только актуальные изменения, а не все записи.

Настройка Поставщика

Начнем с настройки Поставщика.

Создадим LDIF файл со следующим содержимым и назовем его provider_sync.ldif:

Замените rootDN в LDIF файле на соответствующий вашему каталогу.

Профиль apparmor для slapd нужно будет отрегулировать для расположения базы accesslog. Отредактируйте /etc/apparmor.d/local/usr.sbin.slapd, добавив следующее:

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

Добавляем новый контент и, поскольку изменили apparmor, перестартуем сервис:

Поставщик теперь настроен.

Настройка Потребителя

А теперь настроим Потребителя.

Установим программное обеспечение как указано в Установке. Убедитесь, что база slapd-config аналогична базе Поставщика. Особенно проверьте, что одинаковы схемы и суффикс базы.

Создайте LDIF файл со следующим содержимым и назовите его consumer_sync.ldif:

Убедитесь, что следующие атрибуты имеют корректные значения:

binddn (DN администратора, которым вы пользуетесь)

credentials (пароль для DN администратора, который вы используете)

searchbase (суффикс базы, которую вы используете)

olcUpdateRef (hostname сервера Поставщика или его IP адрес)

rid (Replica ID, уникальное трехзначное число, идентифицирующее данную копию. Каждый Потребитель должен иметь минимум один rid)

Добавьте новый контент:

Вы сделали это! Две базы (суффикс: dc=example,dc=com) будут теперь синхронизированы.

Проверка

Как только репликация стартует, вы можете отслеживать ее запустив:

Если contextCSN Потребителя отсутствует или не совпадает со значением Поставщика, вы должны остановиться и понять причину проблемы перед тем как продолжить. Попробуйте проверить slapd (syslog - системный журнал) и файлы журналов авторизации Поставщика, чтобы увидеть удачны ли были запросы авторизации Потребителя и не возвращались ли ошибки в ответ на запросы данных (они будут видны как множество записей ldapsearch).

Чтобы проверить, что все работает, просто запросите на Потребителе DN из базы:

Контроль доступа

Управление какой тип доступа (чтение, запись и пр.) пользователей должен быть предоставлен к ресурсам известен как контроль доступа. Сочетания подобных директив называются Списками контроля доступа (ACL ).

FIXME

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

Это может быть представлено по-другому для лучшего понимания:

Атрибут userPassword не доступен для всех других пользователей за исключением rootDN, который имеет полный доступ.

Для того чтобы пользователи могли менять собственные пароли, используя passwd или иные утилиты, атрибут shadowLastChange должен быть доступен как только пользователь авторизовался.

Как указывалось ранее, никаких административных пользователей не создается для базы slapd-config. Однако существует идентификация SASL, которая обеспечивает полный к ней доступ. Она подобна суперпользователю для localhost (root/sudo). Вот она:

Следующая команда покажет ACL базы slapd-config:

Вы должны использовать sudo для идентификации как root чтобы ACL сработали.

Механизм EXTERNAL работает через IPC (доменные сокеты UNIX). Это означает , что вы должны использовать ldapi формат адресации (URI ).

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

Есть еще много что сказать по контролю доступа. Смотрите страницу руководства по slapd.access.

Когда происходит аутентификация на OpenLDAP сервере, лучше всего это делать используя зашифрованную сессию. Это может быть достигнуто использованием транспортного уровня шифрования (TLS).

Устанавливаем пакеты gnutls-bin и ssl-cert:

Создаем секретный ключ Центра сертификатов:

Создаем временный файл /etc/ssl/ca.info для определения CA:

Создаем самоподписанный сертификат центра:

Создаем секретный ключ для сервера:

Замените ldap01 в имени файла на имя вашего сервера (hostname). Имена сертификата и ключа для узла и сервиса, которые будут их использовать, помогут сохранять ясность понимания.

Создаем информационный файл /etc/ssl/ldap01.info, содержащий следующее:

Данный сертификат будет действителен 10 лет (3650 дней). Вы можете выбрать другое значение.

Создаем серверный сертификат:

Используйте команду ldapmodify, чтобы сказать slapd о работе нашего TLS через базу данных slapd-config:

Вопреки распространенному мнению, вам не обязательно указывать ldaps:// в /etc/default/slapd чтобы использовать шифрование. Вам достаточно указать:

Сужаем права на владение и доступ:

Проверьте ваши системные журналы (/var/log/syslog) чтобы убедиться что сервер запустился правильно.

Репликация и TLS

Если вы настроили репликацию между серверами, существует общая практика шифровать (StartTLS) трафик репликации для исключения прослушивания. Лучше всего использовать шифрование с аутентификацией как мы делали выше. В этой секции мы будем основываться на проделанной работе по TLS-аутентификации.

Здесь предполагается, что вы настроили репликацию между Поставщиком и Провайдером в соответствии с секцией Репликация и настроили TLS для аутентификации на Поставщике следуя инструкциям секции TLS.

На Поставщике:

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

Создаем информационный файл ldap02.info для сервера Потребителя; подставляйте свои соответствующие значения:

Создаем сертификат Потребителя:

Получаем копию сертификата CA:

Все готово. Теперь переносим каталог ldap02-ssl на сервер Потребителя. Здесь мы использовали scp (данные изменяем соответственно):

На Потребителе:

Настраиваем TLS аутентификацию:

Создаем файл /etc/ssl/certinfo.ldif со следующим содержимым (исправляйте соответственно):

Настраиваем базу slapd-config:

Настраиваем /etc/default/slapd как на Поставщике (SLAPD_SERVICES).

На Потребителе:

Настраиваем TLS для репликации на стороне Потребителя. Изменяем существующий атрибут olcSyncrepl присоединяя некоторые TLS опции. Делая это, мы увидим в первый раз как изменять значения атрибутов.

Создаем файл consumer_sync_tls.ldif со следующим содержимым:

Применяем эти изменения:

И перестартуем slapd:

На Постащике:

Установление подлинности через LDAP

Результат диалога можно увидеть в /etc/ldap.conf. Если ваш сервер требует опции, недоступные в меню, редактируйте этот файл самостоятельно.

Настраиваем систему на использование LDAP для аутентификации:

Теперь вы имеете возможность входить в систему, используя учетные записи на основе LDAP .

Запросы имеют таймаут и будет попытка обратиться к Потребителю (ldap02), если Поставщик (ldap01) станет недоступным.

Альтернативой пакету libnss-ldap является пакет libnss-ldapd. Однако он добавит в систему пакет nscd, который, возможно, нежелателен. Просто впоследствии удалите его.

Управление пользователями и группами

Пакет ldap-utils поставляется с достаточным количеством утилит для управления каталогами, но необходимость использовать длинные строки с опциями делает их применение обременительным. Пакет ldapscripts содержит оберточные сценарии (wrapper scripts) для этих утилит, которые некоторые находят более удобными в использовании.

Затем редактируем файл /etc/ldapscripts/ldapscripts.conf для получения нечто похожего на следующее:

Теперь создаем файл ldapscripts.passwd чтобы разрешить rootDN доступ к каталогу:

Замените "secret" на действующий пароль для пользователя rootDN вашей базы.

Сценарии теперь готовы помогать в управлении вашим каталогом. Здесь несколько примеров как их использовать:

Создать нового пользователя:

Это создаст пользователя с uid george и установит gid example в качестве первичной пользовательской группы.

LDAP (Lightweight Directory Access Protocol) – это стандартный протокол, предназначенный для управления и доступа к иерархии информации каталога по сети. Его можно использовать для хранения любой информации, хотя чаще всего он используется в качестве централизованной системы аутентификации или для корпоративных почтовых и телефонных каталогов.

Требования

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

Сначала нужно установить сервер LDAP и дополнительные утилиты. Все необходимые пакеты можно найти в стандартном репозитории системы.

Войдите на сервер. Обновите индекс пакетов и установите необходимые пакеты.

sudo apt-get update
sudo apt-get install slapd ldap-utils

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

Теперь нужно настроить пакет. Пакет slapd может задавать много важных вопросов для конфигурации, но по умолчанию они пропускаются в процессе установки. Чтобы получить доступ ко всем запросам программы, запустите перенастройку пакета:

sudo dpkg-reconfigure slapd

Программа выдаст все запросы информации. Большинство из них нужно оставить по умолчанию.

Теперь сервер LDAP запущен и настроен. Откройте порт LDAP в брандмауэре.

sudo ufw allow ldap

Протестируйте соединение LDAP с помощью ldapwhoami:

ldapwhoami -H ldap:// -x
anonymous

anonymous – ожидаемый результат, поскольку команда ldapwhoami была запущена без аутентификации на сервере LDAP.

2: Установка и настройка интерфейса phpLDAPadmin

Управлять LDAP можно с помощью командной строки, но многим удобнее будет делать это через интерфейс. Для этого установите phpLDAPadmin, приложение PHP для управления LDAP.

Репозиторий Ubuntu содержит пакет phpLDAPadmin. Установите его:

sudo apt-get install phpldapadmin

Эта команда установит приложение, включит необходимые конфигурации Apache и перезагрузит Apache.

Теперь веб-сервер настроен на обслуживание приложения, нужно внести некоторые дополнительные изменения в настройку. Настройте phpLDAPadmin для использования домена и отключите автозаполнение регистрационной информации LDAP.

Откройте главный конфигурационный файл.

sudo nano /etc/phpldapadmin/config.php

Этот параметр предварительно заполняет учетные данные администратора в веб-интерфейсе. Эту информацию нельзя предоставлять, если страница phpLDAPadmin общедоступна.

Сохраните и закройте файл. Чтобы обновить настройки, ничего перезапускать не нужно.

Откройте приложение phpLDAPadmin в веб-браузере. Обязательно укажите свой домен:

Будет загружена лендинг-страница phpLDAPadmin. Нажмите ссылку для входа в левом меню на странице. На экране появится форма входа в систему:

Login DN – это имя пользователя, которое вы будете использовать. Оно состоит из имени учетной записи (в разделе cn=) и компонентов домена (разделенного на разделы dc=). Учетная запись администратора по умолчанию называется admin. Потому чтобы войти, нужно ввести следующее:

После этого введите пароль администратора, который вы создали во время настройки, затем нажмите кнопку Authenticate.

Вы попадете в основной интерфейс.

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

LDAP позволяет гибко структурировать иерархии данных и каталогов. Вы можете создать любую структуру и правила для их взаимодействия.

4: Настройка шифрования StartTLS LDAP

Веб-интерфейс зашифрован, но внешние клиенты LDAP по-прежнему передают данные в виде простого текста.

Копирование сертификата

Сначала откройте новый текстовый файл для сценария оболочки:

sudo nano /usr/local/bin/renew.sh

Сохраните и закройте файл.

sudo chmod u+x /usr/local/bin/renew.sh

Убедитесь, что сценарий работает. Для этого запросите список файлов /etc/ssl:

Команда ls выведет данные о трех файлах. Проверьте привилегии и права собственности.

Теперь нужно настроить certbot.

Автоматизация certbot

Добавьте certbot в cron job, чтобы сценарий запускался автоматически после обновления сертификатов.

В таблице должна быть строка certbot renew. Добавьте в нее выделенные красным параметры.

Сохраните и закройте crontab.

Поддержка безопасных соединений slapd

Добавьте пользователя openldap в группу ssl-cert, чтобы демон slapd смог читать закрытые ключи.

sudo usermod -aG ssl-cert openldap

sudo systemctl restart slapd

Затем нужно настроить slapd для использования этих сертификатов и ключей. Для этого добавьте изменения конфигурации в файл LDIF (это формат обмена данными LDAP) и загрузите их на сервер LDAP с помощью команды ldapmodify.

Откройте файл LDIF:

В пустой файл добавьте следующие строки.

Сохраните и закройте файл.

Примените новые параметры с помощью ldapmodify:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ssl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

Не нужно перезагружать slapd для загрузки новых сертификатов, это происходит автоматически с помощью ldapmodify. Запустите команду ldapwhoami еще раз. На этот раз нужно указать правильное имя хоста и добавить параметр -ZZ для принудительного безопасного подключения:

При использовании безопасного соединения нужно указывать полное имя хоста, потому что имя хоста должно совпадать с именем в сертификате. Это предотвращает атаки man-in-the-middle, когда злоумышленник может перехватить ваше соединение и выдавать себя за ваш сервер.

Команда ldapwhoami должна вернуть anonymous без ошибок. Шифрование соединений LDAP успешно настроено.

Заключение

Полученная система достаточно гибкая, по мере необходимости ее легко кастомизировать под собственные потребности.


Мануал

Информационная модель LDAP основана на записях.

Запись в каталоге LDAP представляет собой отдельную единицу или информацию и уникально идентифицируется тем, что называется отличительным именем (DN). Каждый из атрибутов записи имеет тип и одно или несколько значений.

Атрибут является частью информации, связанной с записью.

Типами обычно являются мнемонические строки, такие как «cn» для общего имени или «mail» для адреса электронной почты.

Каждому атрибуту присваивается одно или несколько значений, состоящих из списка через пробел.

Ниже приведена иллюстрация того, как информация размещена в каталоге LDAP.

В этой статье мы покажем, как установить и настроить сервер OpenLDAP для централизованной аутентификации в Ubuntu 16.04 / 18.04 и CentOS 7.

Шаг 1: Установка сервера LDAP

1. Сначала начните с установки OpenLDAP, реализации LDAP с открытым исходным кодом и некоторых традиционных утилит управления LDAP с помощью следующих команд.

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

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

2. В CentOS 7 выполните следующие команды, чтобы запустить демон сервера openldap, включить его автоматический запуск во время загрузки и проверить, работает ли он и запущен (в Ubuntu служба должна запускаться автоматически в systemd, вы можете просто проверить его статус)

3. Затем разрешите запросы к демону сервера LDAP через брандмауэр, как показано далее

Шаг 2. Настройка сервера LDAP

Примечание. Не рекомендуется редактировать конфигурацию LDAP вручную, вам необходимо добавить конфигурации в файл и использовать команду ldapadd или ldapmodify, чтобы загрузить их в каталог LDAP, как показано ниже.

4. Теперь создайте пользователя-администратора OpenLDAP и назначьте пароль для этого пользователя.

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

5. Затем создайте файл LDIF (ldaprootpasswd.ldif), который используется для добавления записи в каталог LDAP.

Добавьте следующее содержание:

объяснение пар атрибут-значение выше:

  • olcDatabase: указывает конкретное имя экземпляра базы данных и обычно находится в /etc/openldap/slapd.d/cn=config.
  • cn = config: указывает глобальные параметры конфигурации.
  • PASSWORD: это хэшированная строка, полученная при создании админиского кароля

6. Затем добавьте соответствующую запись LDAP, указав URI со ссылкой на сервер ldap и файл выше.

Шаг 3. Настройка базы данных LDAP

7. Теперь скопируйте пример файла конфигурации базы данных для slapd в каталог /var/lib/ldap и установите правильные права для файла.

8. Затем импортируйте некоторые базовые схемы LDAP из каталога /etc/openldap/schema следующим образом.

9. Теперь добавьте ваш домен в базу данных LDAP и создайте файл с именем ldapdomain.ldif для вашего домена.

Добавьте в него следующее содержимое (замените пример своим доменом и PASSWORD на хеш-значение, полученное ранее):

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

11. На этом этапе нам нужно добавить несколько записей в наш каталог LDAP.

Создайте другой файл с именем baseldapdomain.ldif со следующим содержимым.

Сохраните файл и затем добавьте записи в каталог LDAP.

12. Следующим шагом является создание пользователя LDAP, например, tecmint и установка пароля для этого пользователя следующим образом.

13. Затем создайте определения для группы LDAP в файле с именем ldapgroup.ldif со следующим содержимым.

14. Затем создайте другой файл LDIF с именем ldapuser.ldif и добавьте определения для пользователя tecmint.

затем загрузите конфигурацию в каталог LDAP.

Заключение

В этой статье мы показали, как установить и настроить сервер OpenLDAP для централизованной аутентификации, в Ubuntu 16.04 / 18.04 и CentOS 7.

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

Читайте также: