Установка и настройка OpenLDAP на Debian/Ubuntu
Version 1.0
Автор: Srijan Kishore
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 — используйте надежный пароль.

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).

Пример ключевых ответов: выбираем 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 на ваш)

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

После входа вы увидите корневое дерево и сможете создавать OU, группы и пользователей.
6. Добавление записей (группы и пользователи)
Пример: создание группы Technical-team (posixGroup)
- В дереве слева раскройте dc=example,dc=com.
- Нажмите плюс рядом с cn=admin, затем выберите Create a child entry.
- Выберите Generic: Posix Group и далее заполните cn и gidNumber.

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



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

7. Типичные ошибки и когда это не работает
- Неправильный BASE или URI в /etc/ldap/ldap.conf — ldapsearch даёт пустой результат или ошибку соединения.
- Неправильный пароль администратора — phpLDAPadmin не пропускает. Проверьте /var/log/auth.log и /var/log/syslog.
- Порт или firewall блокирует соединение — убедитесь, что порт 389 (или ваш кастомный) открыт.
- Несоответствие схемы (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 (упрощённо):
- Разместите сертификаты в /etc/ssl/ldap/
- В настройках slapd (cn=config) задайте olcTLSCertificateFile и olcTLSCertificateKeyFile.
10. Мини-методология внедрения LDAP в организации
- Определите dc (домен) и структуру OUs (отделы, локации, сервисы).
- Подготовьте схемы (posixAccount, samba, inetOrgPerson и т.д.).
- Установите сервер в тестовой сети, выполните конфигурацию и тесты.
- Синхронизируйте/перенесите учетные записи из старых систем (если есть).
- Настройте мониторинг и бэкапы, затем переходите в прод.
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. Ссылки
- Debian: https://www.debian.org/
- Ubuntu: http://www.ubuntu.com/
- OpenLDAP: http://www.openldap.org/
Итог
Поздравляем — после выполнения описанных шагов у вас должен быть работающий OpenLDAP-сервер с доступом через phpLDAPadmin. Для продакшна добавьте TLS, резервное копирование и мониторинг. Начните с небольшой структуры OU и постепенно расширяйте схему по мере необходимости.
Важно: всегда тестируйте большие изменения (импорт, изменение схемы, миграции) в тестовой среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента