Установка и настройка OpenLDAP на Debian 11 (Bullseye)
Важно: перед началом убедитесь, что у вас есть резервная копия и доступ под пользователем с sudo-привилегиями.
О чём эта инструкция
Это практическое руководство предназначено для системных администраторов и инженеров DevOps, которым нужно развернуть локальный LDAP-сервер на Debian 11. Показаны команды, примеры LDIF и распространённые проблемы с решениями.
Основные термины (в одну строку)
- LDAP — протокол для централизованного хранения и поиска учётных записей и атрибутов.
- slapd — демон OpenLDAP, реализующий LDAP-сервер.
- LDIF — текстовый формат для импорта/экспорта записей LDAP.
Предварительные требования
- Сервер с Debian 11 (Bullseye).
- Ненулевой пользователь с sudo/root-привилегиями.
- Желательно статический IP и правильная настройка DNS/FQDN.
Шаг 1. Установка пакетов OpenLDAP
Обновите список пакетов и установите slapd и ldap-utils (в репозиториях Debian доступна стабильная ветка OpenLDAP 2.4):
sudo apt update
sudo apt install slapd ldap-utilsВо время установки будет предложено задать пароль администратора и некоторые параметры. Подтвердите установку, нажав Y и Enter.

Далее задайте пароль администратора OpenLDAP при появлении диалога конфигурации, подтвердите его и дождитесь завершения установки.


Шаг 2. Настройка FQDN и /etc/hosts
Для корректной работы сертификатов и логов задайте полное доменное имя (FQDN):
sudo hostnamectl set-hostname ldap.mydomain.localОтредактируйте /etc/hosts и добавьте строку с IP и FQDN:
sudo nano /etc/hostsПример строки в hosts (замените IP и домен на свои значения):
192.168.10.50 ldap.mydomain.local ldapСохраните файл и переподключитесь по SSH, чтобы обновлённый hostname применился.
Шаг 3. Переконфигурация slapd (если нужно)
Если вы хотите изменить параметры, можно запустить:
sudo dpkg-reconfigure slapdКогда спросят, удалять ли старую конфигурацию, выберите No, чтобы сохранить текущую конфигурацию и данные.

Далее укажите локальный DNS-домен (например, mydomain.local), организацию, и повторно введите пароль администратора.


После завершения выполните проверку дампа БД:
sudo slapcatВ выводе вы должны увидеть структуру dc=mydomain,dc=local и организационные подразделения.

Перезапустите сервис и проверьте его статус:
sudo systemctl restart slapd
sudo systemctl status slapdСтатус должен быть active (running).

Шаг 4. Правила UFW (опционально)
Если на сервере включён UFW, откройте порты для LDAP и LDAPS:
sudo ufw allow LDAP
sudo ufw allow LDAPS
sudo ufw reload
sudo ufw statusЭто добавит профили сервисов LDAP/LDAPS в правила UFW.

Важно: открывайте порты только при необходимости и из доверенных сетей.
Шаг 5. Создание организационного подразделения (OU) через LDIF
LDIF — текстовый формат для описания записей LDAP. Создадим OU People:
sudo nano /etc/ldap/users.ldifВставьте:
dn: ou=People,dc=mydomain,dc=local
objectClass: organizationalUnit
ou: PeopleСохраните и импортируйте:
sudo ldapadd -D "cn=admin,dc=mydomain,dc=local" -W -H ldapi:/// -f /etc/ldap/users.ldifДля подключения используется LDAPI (локальная сокетная связь). После успешного добавления вы увидите сообщение о создании новой записи.

Проверка через ldapsearch:
sudo ldapsearch -x -b "dc=mydomain,dc=local" ouВ выводе должна быть запись ou=People.

Шаг 6. Создание пользователя через LDIF
Пример добавления пользователя alice. Создайте файл alice.ldif:
sudo nano alice.ldifВставьте следующий блок, заменив пароль и UID/GID по необходимости:
# Add user alice to LDAP Server
dn: cn=alice,ou=People,dc=mydomain,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: alice
uid: alice
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/alice
userPassword: AlicePassword
loginShell: /bin/bashСохраните и импортируйте:
sudo ldapadd -D "cn=admin,dc=mydomain,dc=local" -W -H ldapi:/// -f alice.ldifПосле успешного выполнения пользователь alice появится в списке:
sudo ldapsearch -x -b "ou=People,dc=mydomain,dc=local"

Важно: хранить пароли в виде открытого текста в LDIF не рекомендуется для production. Используйте хеширование (например, SSHA) — пример ниже.
Хэширование пароля (рекомендуется)
Создайте хеш пароля с помощью slappasswd:
slappasswd
# Введите пароль, получите строку вида {SSHA}... и замените userPassword на неё в LDIF.Примерно:
userPassword: {SSHA}xYZ...generatedhash...Повторно выполните ldapadd или ldapmodify для внесения безопасного пароля.
Проверка и отладка — распространённые ошибки и решения
Ошибка: «ldap_bind: Invalid credentials».
Решение: проверьте DN и пароль администратора; при использовании ldapi:/// убедитесь, что вы запускаете команду от пользователя с правами или используете proper bind DN.Ошибка: «Can’t contact LDAP server».
Решение: проверьте, запущен ли slapd, нет ли блокировки UFW/firewall и корректен ли FQDN/IP.При импорте LDIF «entry already exists».
Решение: используйте ldapmodify для изменения существующих записей или удалите старую запись перед добавлением.Проблемы с правами файлов: убедитесь, что дерективы в /etc/ldap соответствуют владельцу и правам доступа.
Минимальная методология развёртывания (шаги для повторяемости)
- Подготовка сервера: hostname, /etc/hosts, обновление пакетов.
- Установка slapd и ldap-utils.
- Переконфигурация (dpkg-reconfigure) при необходимости.
- Создание OU и базовых записей через LDIF.
- Настройка сети/фаервола.
- Бэкап конфигурации и данных (снимок /var/lib/ldap и /etc/ldap).
- Внедрение TLS и тесты.
Безопасность: базовая защита TLS и SASL
- Получите сертификат для FQDN сервера (самоподписанный или из CA).
- Поместите cert и key в /etc/ssl или каталог, указанный в конфигурации slapd.
- Настройте cn=config через ldapmodify или с помощью olcTLSCertificateFile/olcTLSCertificateKeyFile.
Пример (используя ldapmodify по LDAPI):
cat > tls.ldif <После этого перезапустите slapd и проверьте подключение по LDAPS (порт 636) или StartTLS (порт 389).
Важно: используйте сильные ключи и следите за правами доступа к приватным ключам.
Ролевые чек-листы (кто за что отвечает)
- Системный администратор: установка пакетов, настройка хоста, права файлов, бэкап.
- Инженер безопасности: выпуск сертификатов, аудит соответствия, настройка TLS/SASL.
- DevOps/интегратор: интеграция клиентов, массовая синхронизация учётных записей, CI/CD для LDIF-шаблонов.
- Оператор: мониторинг службы, ответ на инциденты и восстановление из бэкапа.
Критерии приёмки
- slapd активен и отвечает: sudo systemctl status slapd → active (running).
- Базовая запись dc=mydomain,dc=local доступна через slapcat и ldapsearch.
- OU People и пользователь alice видны через ldapsearch.
- При необходимости TLS успешно установлен и проверен клиентом.
Модели зрелости внедрения (кратко)
- Начальный: локальный LDAP, ручное управление LDIF.
- Средний: автоматизация LDIF через репозиторий, бэкапы, базовый TLS.
- Продвинутый: HA-кластеризация, репликация, централизованный аудит и интеграция с SSO.
Советы по миграции и совместимости
- Избегайте ручных изменений в базе данных без использования cn=config или LDIF — это помогает репликации.
- Перед обновлением Debian проверяйте совместимость пакетов OpenLDAP и модулей (SASL, ppolicy и т.п.).
- Для репликации между мастером и слейвом используйте syncrepl/olcSyncRepl, настраивая соответствующие ACL.
Примеры часто используемых команд
- Просмотреть всю базу: sudo slapcat
- Поиск: sudo ldapsearch -x -b “dc=mydomain,dc=local” “(objectClass=*)”
- Добавление из файла: sudo ldapadd -D “cn=admin,dc=mydomain,dc=local” -W -H ldapi:/// -f file.ldif
- Изменение через ldapi по правам EXTERNAL: sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f change.ldif
Проверочные тесты / Acceptance
- Тест 1: ldapsearch возвращает dc=mydomain,dc=local и ou=People.
- Тест 2: аутентификация пользователя alice (например, с помощью pam_ldap) проходит локально.
- Тест 3: TLS соединение по ldap:// или ldaps:// завершается успешно без ошибок сертификата (если доверенный CA).
Отказоустойчивость и откат (runbook)
- Если новый конфиг привёл к падению slapd — откатите изменения cn=config через резервную копию или восстановите каталог /var/lib/ldap из backup.
- Если LDAP недоступен для клиентов — переключите клиентов на резервный источник аутентификации (локальные учётные записи) и восстановите SLAPD.
- Для отката LDIF удалите добавленные записи через ldapdelete по DN.
FAQ
Как безопасно хранить пароли в LDIF?
Используйте slappasswd для генерации SSHA-хэшей и записывайте хэш в userPassword вместо открытого текста.
Можно ли использовать OpenLDAP в продакшене без TLS?
Технически можно, но крайне не рекомендуется: пароли и данные будут передаваться открытым текстом. Используйте TLS или StartTLS.
Как сделать репликацию между серверами OpenLDAP?
Настройте syncrepl/olcSyncRepl на серверах master/slave и убедитесь, что ACL и права доступа корректны.
1‑строчный глоссарий
- slapd — демон OpenLDAP.
- LDIF — формат импорта/экспорта LDAP.
- LDAPI — локальный сокет для администрирования slapd.
- SSHA — формат хеширования паролей.
Заключение
Поздравляем — вы установили и настроили OpenLDAP на Debian 11, создали OU и добавили пользователя через LDIF. Следующие шаги: настроить TLS, продумать резервное копирование и, при необходимости, подключить клиентов (Linux/Unix/приложения) с использованием PAM/ NSS или SSSD.
Важные заметки: используйте хешированные пароли, ограничивайте доступ к ключам и открывайте сетевые порты только для доверенных хостов.
Полезные дальнейшие темы
- Интеграция Linux-клиентов (PAM, NSS, SSSD).
- Настройка репликации и высокодоступных конфигураций.
- Управление схемами и расширениями ppolicy, memberOf.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента