Установка и настройка phpLDAPadmin на Ubuntu 20.04

LDAP — Lightweight Directory Access Protocol, протокол для доступа и управления распределёнными каталогами по сети. phpLDAPadmin — веб‑интерфейс для управления LDAP: позволяет просматривать древовидную структуру, искать записи, добавлять/удалять объекты, редактировать атрибуты (включая изображения) и управлять хэшами паролей.
В этом руководстве пошагово объясняется установка phpLDAPadmin на Ubuntu 20.04 и базовая настройка OpenLDAP.
Что потребуется
- Сервер с Ubuntu 20.04.
- Действующий домен, указывающий на IP сервера (по необходимости).
- Доступ root или права sudo.
Важно: примеры используют домен dc=example,dc=com и пользователя cn=admin,dc=example,dc=com — замените их на ваши значения.
Шаг 1. Обновление системы
Перед началом обновите пакеты:
apt-get update -yПосле обновления можно переходить к установке OpenLDAP.
Шаг 2. Установка и базовая настройка OpenLDAP (slapd)
Установите slapd и утилиты:
apt-get install slapd ldap-utilsВо время установки вас попросят задать пароль администратора (admin). Введите надёжный пароль и продолжите.

Затем рекомендуется заново запустить конфигурацию пакета, чтобы задать домен и организацию:
dpkg-reconfigure slapdПри запросе “Omit OpenLDAP server configuration?” выберите “No” и продолжите.

Укажите DNS‑домен:

Укажите название организации:

Введите админ‑пароль, когда будет предложено:

При вопросе о полной очистке базы (purge) чаще выбирают “Yes” для чистой конфигурации:

Проверьте текущие записи в базе:
slapcatОжидаемый пример вывода показывает корневой DN и запись администратора (см. исходный пример вывода выше).
Шаг 3. Создание организационных единиц (OU) для пользователей и групп
Создайте файл с OU:
nano users-ou.ldifДобавьте:
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groupsСохраните файл. Затем создайте LDIF для обновления ACL базы данных:
nano update-mdb-acl.ldifВставьте (замените dc=example,dc=com на ваш домен при необходимости):
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
by self write
by anonymous auth
by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by dn.exact="cn=readonly,ou=people,dc=example,dc=com" read
by * none
olcAccess: to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by users read
by * noneПримените ACL:
ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldifОжидаемый ответ подтверждает модификацию записи.
Добавьте OU пользователей и групп:
ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldifДолжны появиться записи “ou=people” и “ou=groups”.
Шаг 4. Создание пользователя OpenLDAP
Создайте LDIF для пользователя:
nano hitesh.ldifПример содержимого (замените uidNumber/gidNumber и пути при необходимости):
dn: uid=hiteshj,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: hiteshj
cn: Hitesh
sn: Jethva
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/hiteshj
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0
dn: cn=hiteshj,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: hiteshj
gidNumber: 10000
memberUid: hiteshjДобавьте пользователя в базу:
ldapadd -Y EXTERNAL -H ldapi:/// -f hitesh.ldifУстановите пароль для пользователя:
ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=hiteshj,ou=people,dc=example,dc=com"Введите новый пароль дважды при запросе.
Шаг 5. Создание Bind DN (пользователь для чтения каталога)
Сгенерируйте хеш пароля для bind‑пользователя:
slappasswdСкопируйте полученный {SSHA}‑хеш и создайте LDIF:
nano readonly-user.ldifПример:
dn: cn=readonly,ou=people,dc=example,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb
description: Bind DN user for LDAP OperationsДобавьте Bind DN:
ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldifПроверьте ACL, чтобы убедиться, что readonly имеет нужные права:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccessШаг 6. Установка и настройка phpLDAPadmin
Установите пакет из репозитория Ubuntu:
apt-get install phpldapadmin -yОтредактируйте конфиг phpLDAPadmin:
nano /etc/phpldapadmin/config.phpНайдите и скорректируйте строки (замените значения на свои):
$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','69.87.216.102');
$servers->;setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000));Сохраните изменения.
Шаг 7. Настройка Apache
Файл конфигурации phpLDAPadmin для Apache расположен в /etc/apache2/conf-available/phpldapadmin.conf. По умолчанию его можно оставить без изменений.
Отключите стандартный виртуальный хост и перезапустите Apache:
a2dissite 000-default.conf
systemctl restart apache2Шаг 8. Доступ к веб‑интерфейсу phpLDAPadmin
Откройте в браузере:
http://your-server-ip/phpldapadmin
Вы увидите страницу входа в phpLDAPadmin.

Нажмите кнопку входа, введите Bind DN или admin DN и пароль:

После успешной аутентификации вы попадёте в панель управления LDAP:

Критерии приёмки
- Веб‑интерфейс phpLDAPadmin доступен по URL и отображается корректно.
- Удачный bind с использованием cn=admin,dc=example,dc=com и с readonly Bind DN.
- Можно просмотреть корневую запись dc=example,dc=com и подразделы ou=people, ou=groups.
- Создан пользователь и группа, установлен пароль пользователя.
Чек‑лист ролей
Администратор
- Установить slapd и phpldapadmin
- Настроить ACL и Bind DN
- Включить TLS и ограничить доступ по сети
Разработчик / DevOps
- Подготовить LDIF‑файлы для автоматизации
- Проверить интеграцию приложений с Bind DN
- Настроить мониторинг и бэкапы
Аудитор / Безопасность
- Проверить соответствие ACL требованиям
- Проверить аудиторские логи и доступы
- Убедиться в корректности хранения паролей
Быстрый набор команд (cheat sheet)
- Установка OpenLDAP и инструментов:
apt-get install slapd ldap-utils- Пересконфигурация slapd:
dpkg-reconfigure slapd- Просмотр содержимого БД:
slapcat- Применение LDIF через unix‑socket:
ldapadd -Y EXTERNAL -H ldapi:/// -f file.ldif- Установка пароля пользователя:
ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=user,ou=people,dc=example,dc=com"- Генерация хеша пароля:
slappasswd- Поиск по каталогу:
ldapsearch -x -b "dc=example,dc=com" "(uid=hiteshj)"Безопасность и жёсткая конфигурация
- Включите TLS/SSL (certificates) для ldap(s) (ldaps или StartTLS) и настройте phpLDAPadmin на использование LDAPS.
- Ограничьте доступ к ldapi:/// и порту 389/636 через firewall (ufw/iptables) и VPN.
- Запретите анонимные бинды, если не нужны.
- Используйте сильные пароли и политику паролей (expiration, длина, блокировки).
- Храните бэкапы LDIF зашифрованными и проверяйте процесс восстановления.
Отладка и типичные проблемы
- Проблема: “Cannot bind to server” — проверьте имя хоста в config.php и используемый DN/пароль.
- Ошибка при ldapadd по ldapi:/// — убедитесь, что вы запускаете команду с root и используете -Y EXTERNAL.
- Пустой вывод после slapcat — проверьте, не было ли выбранo “purge” при установке и корректен ли suffix (dc=example,dc=com).
- Ошибки ACL — запустите ldapsearch на cn=config и проверьте olcAccess для olcDatabase={1}mdb.
Когда это не сработает
- Если у вас уже есть сложная схема LDAP с множеством суффиксов и бэков, аккуратно планируйте миграцию: импорт LDIF может перезаписать данные.
- phpLDAPadmin подходит для администрирования, но для сложных миграций и трансформаций данных используйте инструменты на основе ldapmodify/ldapadd в сочетании со скриптами.
Альтернативные подходы
- Apache Directory Studio — мощный GUI (кроссплатформенный, Eclipse‑основа) для управления LDAP и схемами.
- ldapvi / ldapmodify — для автоматизированных изменений через скрипты.
- Управление с помощью Ansible/LDAP модуля для репликации конфигураций.
Рекомендации по эксплуатации
- Автоматизируйте создание пользователей через LDIF‑шаблоны.
- Периодически проверяйте целостность данных и выполняйте экспорт LDIF.
- Контролируйте доступ к /etc/phpldapadmin/config.php: в нём хранятся строки с базовыми настройками подключения.
Заключение
Поздравляем — вы установили и настроили phpLDAPadmin на Ubuntu 20.04. Теперь через веб‑интерфейс можно управлять организационными единицами, группами и пользователями. Для промышленного использования добавьте TLS, ограничьте доступ и настроьте регулярные бэкапы.
Если нужно — помогу с адаптацией LDIF под вашу структуру домена, настройкой TLS или скриптами автоматизации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента