Установка OpenLDAP на AlmaLinux 9
TL;DR
OpenLDAP — свободная реализация LDAP. В этой инструкции показано, как установить и настроить OpenLDAP на AlmaLinux 9: настроить FQDN, установить пакеты из EPEL, запустить slapd, импортировать схемы, создать базовый домен и добавить пользователей через LDIF. Включены советы по безопасности, проверке и отладке.
Важно: перед внесением изменений сделайте резервную копию текущих конфигураций и данных.
Что такое OpenLDAP (кратко)
OpenLDAP — это набор серверных и клиентских программ для реализации протокола LDAP (Lightweight Directory Access Protocol). Он включает демона slapd, инструменты репликации и утилиты управления. Простой обзор: LDAP — это централизованный каталог для учётных записей, групп и другой информации о пользователях.
Ключевые термины: LDAP — протокол для работы с директориями; slapd — основной LDAP-демон; LDIF — формат для импорта/экспорта данных.
Требования и подготовка
Перед началом убедитесь, что у вас есть:
- Сервер с AlmaLinux 9 (в примерах используется hostname ldap и IP 192.168.10.50).
- Непользователь root с правами sudo.
- Доступ к сети и возможность открыть порты в межсетевом экране.
Совет: выполняйте инструкции под учётной записью администратора и документируйте любые изменения.
Настройка FQDN
OpenLDAP сильно зависит от корректного FQDN. Пример настроек для сервера с fqdn ldap.hwdomain.local.
Выполните:
sudo hostnamectl set-hostname ldap.hwdomain.localОткройте файл /etc/hosts и добавьте строку (отредактируйте под свой IP и имя):
sudo nano /etc/hostsВставьте:
192.168.10.50 ldap.hwdomain.local ldapПроверьте:
sudo hostname -f
ping -c3 ldap.hwdomain.local
ALT: Скриншот команды hostnamectl и вывода ping, показывающий настройку FQDN
Установка OpenLDAP Server
Пакеты OpenLDAP доступны в репозитории EPEL. Сначала добавим EPEL, затем установим openldap-servers и openldap-clients.
Добавление EPEL:
sudo dnf install epel-release -y
Установка OpenLDAP:
sudo dnf install openldap-servers openldap-clientsПри запросе подтвердите ‘y’. Если потребуется добавить GPG-ключ EPEL, подтвердите тоже.

Запустите и включите сервис slapd:
sudo systemctl start slapd
sudo systemctl enable slapdПроверка статуса:
sudo systemctl status slapdЕсли всё запущено, вы увидите active (running).

Откройте сервисы LDAP и LDAPS в firewalld:
sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reloadПроверьте правила firewalld:
sudo firewall-cmd --list-allВы должны увидеть ldap и ldaps в списке сервисов.

ALT: Вывод firewall-cmd с активированными сервисами ldap и ldaps
Базовая конфигурация OpenLDAP
После установки настроим администратора и импортируем базовые схемы.
- Сгенерируйте хэш пароля:
slappasswdВведите пароль, повторите и сохраните полученный хэш.
- Создайте файл chrootpw.ldif:
nano chrootpw.ldifВставьте (замените olcRootPW на ваш хэш):
# chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}yK9Dk+Kz9S9CLu3Y+ZtJVAYF+MPIRl1XПримените:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldifЕсли успешно, вы увидите подтверждение.

ALT: Вывод ldapadd при добавлении olcRootPW в конфигурацию slapd
- Импортируйте базовые схемы:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldifЭто добавит схемы cosine, nis и inetOrgPerson.

ALT: Терминал с выводом ldapadd при импорте стандартных схем
Настройка домена и базового домена
Далее зададим суффикс (dc) и создадим базовую структуру (ou=Manager, People, Group).
Конфигурация имени домена
Создайте chdomain.ldif:
nano chdomain.ldifПример содержимого (обязательно замените dc=hwdomain,dc=local и olcRootPW на ваши значения):
# chdomain.ldif
# replace to your own domain name for [dc=*,dc=*] section
# specify the password generated above for [olcRootPW] section
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=hwdomain,dc=local" read by * none
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=hwdomain,dc=local
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=hwdomain,dc=local
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}yK9Dk+Kz9S9CLu3Y+ZtJVAYF+MPIRl1X
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=hwdomain,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=hwdomain,dc=local" write by * readПримените изменения:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldifПроверьте, что namingContexts содержит ваш домен:
sudo ldapsearch -H ldap:// -x -s base -b "" -LLL "namingContexts"
ALT: Вывод ldapsearch с namingContexts, содержащим новый домен
Конфигурация базового домена
Создайте basedomain.ldif:
nano basedomain.ldifПример содержимого (замените dc и поля организации под себя):
# basedomain.ldif
# replace to your own domain name for [dc=*,dc=*] section
dn: dc=hwdomain,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: Hwdomain Local
dc: hwdomain
dn: cn=Manager,dc=hwdomain,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=hwdomain,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=hwdomain,dc=local
objectClass: organizationalUnit
ou: GroupДобавьте запись:
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=local -W -f basedomain.ldifПроверьте список ou:
sudo ldapsearch -x -b "dc=hwdomain,dc=local" ouВы должны увидеть Manager, People и Group.

ALT: Вывод ldapsearch показывающий organizationalUnit Manager, People и Group
Добавление пользователя через LDIF
Чтобы создать пользователя вручную, сгенерируйте хэш пароля slappasswd и подготовьте LDIF-файл.
Сгенерируйте хэш:
slappasswdСоздайте newuser.ldif:
nano newuser.ldifПример содержимого (замените uid, uidNumber, gidNumber, homeDirectory и userPassword на ваши значения):
# newuser.ldif
# Change detail username and path home directory and default domain name
dn: uid=alma,ou=People,dc=hwdomain,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: alma
sn: temp
userPassword: {SSHA}l/lZ6zZSGgGP1s7pezz6faYX86Tx3Fv/
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/alma
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
dn: cn=alma,ou=Group,dc=hwdomain,dc=local
objectClass: posixGroup
cn: alma
gidNumber: 2000
memberUid: almaДобавьте пользователя и группу:
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=local -W -f newuser.ldifПроверьте:
sudo ldapsearch -x -b "ou=People,dc=hwdomain,dc=local"
sudo ldapsearch -x -b "ou=Group,dc=hwdomain,dc=local"
ALT: Вывод ldapadd при добавлении нового пользователя и группы

ALT: Результат ldapsearch, показывающий запись пользователя alma

ALT: Результат ldapsearch, показывающий запись группы alma
Проверка и базовые тесты
Минимальные проверки после установки:
- slapd запущен (systemctl status slapd).
- Список namingContexts показывает ваш dc.
- Права olcAccess корректно применены (ldapsearch на корень и на базу dc).
- Пользователь и группа успешно добавлены (ldapsearch по ou=People и ou=Group).
- Порты 389/636 открыты и доступны с клиентских хостов.
Критерии приёмки
- slapd активен и слушает порты LDAP.
- Менеджер (cn=Manager,dc=…) может аутентифицироваться и изменять записи.
- Создана и доступна базовая структура OU.
- При входе через ldapsearch видны ожидаемые записи.
Безопасность и рекомендации по защите
Важно защитить LDAP, особенно в продакшене. Рекомендации:
- Настройте TLS (LDAPS) с реальными сертификатами. Используйте certbot/CA для подписи.
- Отключите анонимный доступ к критичным атрибутам (userPassword, shadow*).
- Ограничьте доступ по IP/сетям в firewall и настройках olcAccess.
- Используйте надежные хэши паролей (SSHA рекомендован), не храните пароли в открытом виде.
- Разделите роли управления: человек, создающий пользователей, не должен иметь доступ к бэкапам LDAP-файлов.
- Планируйте регулярные бэкапы /var/lib/ldap и экспорт LDIF.
Пример высокоуровневого шага по включению TLS:
- Получите сертификат и ключ (CA-signed или самоподписанный для теста).
- Скопируйте cert и key в /etc/openldap/certs/ и задайте права доступа.
- Измените конфигурацию slapd (cn=config) чтобы указать olcTLSCertificateFile и olcTLSCertificateKeyFile.
- Перезапустите slapd и проверьте доступ по LDAPS (порт 636).
Важно: подробная конфигурация TLS выходит за рамки этой инструкции, но её настройка обязательна для публичных сервисов.
Руководство по проектированию LDAP (мини-методология)
Перед развертыванием подумайте о:
- Иерархии dc и организационных единиц (OU). Простая практика: dc=example,dc=com → ou=People, ou=Groups, ou=Services.
- Схемах: планируйте какие атрибуты и objectClass вам понадобятся (inetOrgPerson, posixAccount и т.д.).
- UID/GID: назначение uidNumber и gidNumber, чтобы избежать конфликтов с системными UID.
- Реконсилиация с существующими системами (AD, SSO). Решите, будет ли LDAP единственным источником правды.
- План репликации и резервного копирования.
Эти шаги помогают избежать ошибок в будущем и упростить интеграцию.
Проверка работоспособности: тест-кейсы
Тест 1: Поиск корневого namingContexts
- Команда: sudo ldapsearch -H ldap:// -x -s base -b “” -LLL “namingContexts”
- Ожидаемый результат: содержит dc вашего домена.
Тест 2: Аутентификация менеджера
- Команда: ldapwhoami -x -D “cn=Manager,dc=…” -W
- Ожидаемый результат: успешная идентификация cn=Manager
Тест 3: Поиск добавленного пользователя
- Команда: ldapsearch -x -b “ou=People,dc=…” uid=alma
- Ожидаемый результат: запись alma присутствует.
Тест 4: Проверка LDAPS (если настроен)
- Команда: ldapsearch -H ldaps://ldap.hwdomain.local -x -b “dc=…”
- Ожидаемый результат: успешное соединение по TLS.
Типичные ошибки и способы их устранения
- slapd не запускается: проверьте журналы systemctl status slapd и /var/log/messages. Частая причина — права на /etc/openldap/slapd.d или повреждённая конфигурация.
- ldapadd/ldapmodify жалуется на аутентификацию: убедитесь, что вы используете ldapi:/// и -Y EXTERNAL для операций с cn=config, или правильный DN и пароль для -D.
- Права доступа не применяются: проверьте olcAccess и порядок правил; более ранние правила могут переопределять последующие.
- Проблемы с FQDN: SSL-сертификат должен соответствовать FQDN сервера.
Рекомендации по эксплуатации и бэкапам
- Регулярно экспортируйте данные в LDIF: ldapsearch -x -b “dc=…” > backup.ldif
- Делайте файловые бэкапы каталога базы данных (обычно /var/lib/ldap) при остановленном slapd.
- Тестируйте восстановление из бэкапов на отдельной тестовой машине.
- Ведите журнал изменений конфигурации cn=config (например, через git-репозиторий для экспортированных LDIF).
Чек-лист для ролей (администратор, разработчик, специалист по безопасности)
Администратор:
- Настроить FQDN и /etc/hosts
- Установить EPEL и пакеты OpenLDAP
- Запустить slapd и открыть порты
- Настроить olcRootPW и olcRootDN
- Создать базовую структуру OU
Разработчик/интегратор:
- Тестировать поиск и аутентификацию через ldapsearch/ldapwhoami
- Подготовить схемы и атрибуты для приложений
- Согласовать атрибуты и UID/GID с администратором
Специалист по безопасности:
- Настроить TLS/LDAPS и проверку сертификатов
- Настроить olcAccess и запрет анонимного доступа
- План бэкапов и регулярные проверки целостности
Глоссарий (одной строкой)
- slapd: основной LDAP-демон, реализующий сервер LDAP.
- LDIF: текстовый формат для описания записей LDAP и изменений.
- olcRootDN: DN учетной записи администратора в конфигурации cn=config.
- olcAccess: параметр управления доступом в cn=config для slapd.
Заключение
Вы завершили базовую установку и настройку OpenLDAP на AlmaLinux 9. Дальше рекомендуем настроить TLS для защиты трафика, автоматизировать бэкапы и продумать модель авторизации для ваших сервисов. Регулярно тестируйте восстановление и документируйте изменения.
Краткое резюме:
- Установили пакеты OpenLDAP из EPEL.
- Настроили FQDN, slapd, olcRootPW и базовый домен.
- Добавили схемы, структуру OU и пользователя через LDIF.
- Описаны шаги по безопасности, тестированию и эксплуатации.
Если нужно, могу подготовить пример конфигурации TLS, шаблоны LDIF для массового импорта или playbook для Ansible.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента