Гид по технологиям

Установка и настройка OpenLDAP на Debian/Ubuntu

• 6 min read • Инфраструктура • Обновлено 23 Nov 2025
Установка и настройка OpenLDAP на Debian/Ubuntu
Установка и настройка OpenLDAP на Debian/Ubuntu

Version 1.0
Автор: Srijan Kishore
Обложка: логотип и ссылка на Twitter howtoforge Follow howtoforge on Twitter
Последнее редактирование 01 окт 2014

О чём этот документ

Это подробное руководство по установке и настройке OpenLDAP на серверах Debian/Ubuntu. Оно показывает, как развернуть LDAP-сервер, выполнить базовую настройку базы данных директории, подключить веб-интерфейс phpLDAPadmin и создать первые записи (группы, пользователи) в корпоративной иерархии. Опирается на Debian 7.x (Wheezy), но применимо и к схожим версиям Ubuntu/Debian.

Краткое определение: LDAP (Lightweight Directory Access Protocol) — протокол доступа к справочным (директориальным) сервисам, основанный на X.500.

Важно: LDAP — это сетьевой сервис; используйте статический IP и резервное копирование конфигурации перед изменениями.

1. Предварительные замечания

  • Тестовая среда в примерах: IP 192.168.0.100, hostname server1.example.com, dc=example,dc=com. Подставьте свои значения.
  • Руководство написано для установки от имени root (или через sudo).
  • Система должна иметь статический IP.

Примечание: Руководство применимо к Debian и Ubuntu Server. Я привожу конкретные команды и примеры экранов конфигурации.

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

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

Обновите индексы пакетов и установите slapd и ldap-utils:

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

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

Диалог ввода пароля при установке slapd

2.2 Базовая проверка

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

ldapsearch -x

Ожидаемый результат содержит записи корневого dc и администратора (cn=admin,dc=example,dc=com). Пример вывода показан ниже в разделе с примером.

3. Конфигурация клиента LDAP (/etc/ldap/ldap.conf)

Откройте файл клиента:

nano /etc/ldap/ldap.conf

Задайте базовые значения (замените dc и адрес на ваши):

#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE    dc=example,dc=com
URI     ldap://192.168.0.100 ldap://192.168.0.100:666

# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

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

dpkg-reconfigure slapd

В ходе dpkg-reconfigure ответьте на вопросы так, как требуется вашей инфраструктуре: имя компании (о: Test-company в примере), тип бэкенда (HDB), использовать ли LDAPv2 (обычно No).

Выбор параметров в dpkg-reconfigure slapd

Пример ключевых ответов: выбираем No для старого протокола LDAPv2, HDB как backend, задаём административный пароль и имя организации.

4. Проверка работы сервера

Команда проверки:

ldapsearch -x

Пример ожидаемого вывода (урезано):

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

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Test-company
dc: example

# admin, example.com

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Если вы видите root DN и организацию — базовая настройка завершена.

5. Установка phpLDAPadmin (веб-интерфейс)

phpLDAPadmin упрощает администрирование LDAP через веб. Требуется Apache и PHP.

Установите Apache и PHP (пример для PHP5 в исходном материале):

apt-get install apache2 php5 php5-mysql

Затем установите phpLDAPadmin:

apt-get install phpldapadmin

Отредактируйте конфигурацию phpLDAPadmin:

nano /etc/phpldapadmin/config.php

Найдите и замените/установите блок с сервером:

$servers = new Datastore();
$servers->newServer('ldap_pla');
$servers->setValue('server','name','Test-company LDAP');
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
?>

Примечание: dc=example,dc=com необходимо заменить везде на соответствующий вашему домену значения dc.

Откройте в браузере: http://192.168.0.100/phpldapadmin (замените IP на ваш)

Экран входа phpLDAPadmin

Логин: cn=admin, dc=example,dc=com (обычно выбран по умолчанию), введите пароль, заданный при установке slapd.

Ввод пароля в phpLDAPadmin

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

6. Добавление записей (группы и пользователи)

Пример: создание группы Technical-team (posixGroup)

  • В дереве слева раскройте dc=example,dc=com.
  • Нажмите плюс рядом с cn=admin, затем выберите Create a child entry.
  • Выберите Generic: Posix Group и далее заполните cn и gidNumber.

Создание группы через phpLDAPadmin

Ниже — пример последовательности окон создания и подтверждения объектов в phpLDAPadmin.

Выбор шаблона posixGroup

Поля создания объекта

Подтверждение и коммит

После Commit группа появится в дереве.

Список групп после создания

7. Типичные ошибки и когда это не работает

  1. Неправильный BASE или URI в /etc/ldap/ldap.conf — ldapsearch даёт пустой результат или ошибку соединения.
  2. Неправильный пароль администратора — phpLDAPadmin не пропускает. Проверьте /var/log/auth.log и /var/log/syslog.
  3. Порт или firewall блокирует соединение — убедитесь, что порт 389 (или ваш кастомный) открыт.
  4. Несоответствие схемы (schema) — при импорте LDAP-объектов могут возникать ошибки objectClass. Подключайте необходимые схемы (например, cosine, nis) при необходимости.

Когда этот подход может не подойти:

  • Если вам нужен корпоративный каталог с поддержкой Active Directory специфичных функций (Kerberos, GPO), лучше рассмотреть AD или Samba4.
  • Для крупномасштабных развертываний с тысячами запросов/сек — рассмотрите оптимизацию индексов, репликацию и сёрверы-кластеры.

8. Альтернативные решения

  • 389 Directory Server — корпоративный LDAP-сервер с GUI и встроенной репликацией.
  • OpenDJ (ранее OpenDS) — Java-базированный LDAP, ориентирован на масштабируемость.
  • Samba4 — если нужна интеграция с Active Directory протоколами.

9. Безопасность и практика жёсткой настройки

Рекомендации:

  • Включите TLS/SSL (LDAPS или StartTLS). Получите сертификат от CA или используйте внутренний PKI и настройте TLS_CACERT в /etc/ldap/ldap.conf.
  • Ограничьте доступ к службе через firewall: доступ только с доверенных хостов; используйте iptables/ufw.
  • Используйте надежные пароли и, по возможности, аутентификацию по сертификатам для сервисных аккаунтов.
  • Регулярно резервируйте /var/lib/ldap и файлы конфигурации (/etc/ldap, /etc/ssl).
  • Контролируйте аудит: собирайте логи LDAP-запросов (loglevel в slapd.conf или cn=config).

Пример включения StartTLS (упрощённо):

  1. Разместите сертификаты в /etc/ssl/ldap/
  2. В настройках slapd (cn=config) задайте olcTLSCertificateFile и olcTLSCertificateKeyFile.

10. Мини-методология внедрения LDAP в организации

  1. Определите dc (домен) и структуру OUs (отделы, локации, сервисы).
  2. Подготовьте схемы (posixAccount, samba, inetOrgPerson и т.д.).
  3. Установите сервер в тестовой сети, выполните конфигурацию и тесты.
  4. Синхронизируйте/перенесите учетные записи из старых систем (если есть).
  5. Настройте мониторинг и бэкапы, затем переходите в прод.

11. Ролевые чек-листы

Администратор LDAP (инженер):

  • Установить slapd и ldap-utils.
  • Настроить /etc/ldap/ldap.conf и dpkg-reconfigure slapd.
  • Настроить TLS/SSL.
  • Настроить репликацию (при необходимости).
  • Настроить бэкапы и мониторинг.

DevOps / Сервисный инженер:

  • Открыть/перекинуть порты в firewall.
  • Развернуть phpLDAPadmin (или другой GUI) на отдельной машине.
  • Настроить систему логирования и алерты.

Разработчик/QA:

  • Протестировать CRUD операции через ldapsearch и phpLDAPadmin.
  • Подготовить тестовые записи и сценарии авторизации сервисов.

12. Краткий глоссарий (1 строка на термин)

  • DN: Distinguished Name — уникальный идентификатор записи в дереве LDAP.
  • dc: domain component — компонент домена (например dc=example).
  • OU: Organizational Unit — организационная единица.
  • cn: common name — имя элемента (пользователя/группы).
  • slapd: OpenLDAP Daemon — сервер OpenLDAP.

13. Отладка и тест-кейсы

Полезные команды:

ldapsearch -x -b "dc=example,dc=com" -H ldap://127.0.0.1
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f newentry.ldif
slapcat   # экспорт базы в LDIF
slapadd   # импорт LDIF в базу (осторожно, перезаписывает данные)

Критерии приёмки:

  • ldapsearch возвращает корневую запись и администратора.
  • phpLDAPadmin позволяет логиниться под админом и создавать объекты.
  • TLS успешно работает (если настроен).
  • Бэкапы восстанавливают данные в тестовой среде.

14. Конфигурационные примеры и шаблоны

Пример minimal LDIF для добавления группы:

dn: cn=Technical-team,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: Technical-team
gidNumber: 10000

Пример minimal LDIF для пользователя:

dn: uid=jdoe,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: jdoe
sn: Doe
givenName: John
cn: John Doe
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/jdoe
userPassword: {SSHA}...

15. Примечания по конфиденциальности и соответствию (GDPR)

  • Храните минимально необходимый набор персональных данных в LDAP.
  • Контролируйте доступ к записям: разграничивайте права чтения/записи по нуждам сервиса.
  • Обеспечьте журналирование доступа для расследования инцидентов и запросов субъектов данных.

16. Ссылки

Итог

Поздравляем — после выполнения описанных шагов у вас должен быть работающий OpenLDAP-сервер с доступом через phpLDAPadmin. Для продакшна добавьте TLS, резервное копирование и мониторинг. Начните с небольшой структуры OU и постепенно расширяйте схему по мере необходимости.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро