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

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

• 5 min read • DevOps • Обновлено 20 Nov 2025
Установка phpLDAPadmin на Ubuntu 20.04
Установка phpLDAPadmin на Ubuntu 20.04

Иллюстрация интерфейса и концепции LDAP и phpLDAPadmin

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). Введите надёжный пароль и продолжите.

Запрос пароля при установке slapd

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

dpkg-reconfigure slapd

При запросе “Omit OpenLDAP server configuration?” выберите “No” и продолжите.

Вопрос об опускании конфигурации OpenLDAP

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

Ввод DNS‑домена для slapd

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

Ввод названия организации для slapd

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

Запрос админ‑пароля для slapd

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

Подтверждение удаления базы данных при конфигурации slapd

Проверьте текущие записи в базе:

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.

Экран phpLDAPadmin

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

Экран входа phpLDAPadmin

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

Дашборд phpLDAPadmin с древовидным представлением каталога

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

  • Веб‑интерфейс 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 зашифрованными и проверяйте процесс восстановления.

Отладка и типичные проблемы

  1. Проблема: “Cannot bind to server” — проверьте имя хоста в config.php и используемый DN/пароль.
  2. Ошибка при ldapadd по ldapi:/// — убедитесь, что вы запускаете команду с root и используете -Y EXTERNAL.
  3. Пустой вывод после slapcat — проверьте, не было ли выбранo “purge” при установке и корректен ли suffix (dc=example,dc=com).
  4. Ошибки 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 или скриптами автоматизации.

Поделиться: 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 быстро