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

Установка OpenLDAP на AlmaLinux 9

• 7 min read • DevOps • Обновлено 19 Nov 2025
Установка OpenLDAP на AlmaLinux 9
Установка 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

Настройка FQDN на AlmaLinux

ALT: Скриншот команды hostnamectl и вывода ping, показывающий настройку FQDN

Установка OpenLDAP Server

Пакеты OpenLDAP доступны в репозитории EPEL. Сначала добавим EPEL, затем установим openldap-servers и openldap-clients.

Добавление EPEL:

sudo dnf install epel-release -y

Установка репозитория EPEL

Установка OpenLDAP:

sudo dnf install openldap-servers openldap-clients

При запросе подтвердите ‘y’. Если потребуется добавить GPG-ключ EPEL, подтвердите тоже.

Установка пакетов OpenLDAP

Запустите и включите сервис slapd:

sudo systemctl start slapd
sudo systemctl enable slapd

Проверка статуса:

sudo systemctl status slapd

Если всё запущено, вы увидите active (running).

Статус сервиса slapd

Откройте сервисы LDAP и LDAPS в firewalld:

sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reload

Проверьте правила firewalld:

sudo firewall-cmd --list-all

Вы должны увидеть ldap и ldaps в списке сервисов.

Правила firewalld с LDAP и LDAPS

ALT: Вывод firewall-cmd с активированными сервисами ldap и ldaps

Базовая конфигурация OpenLDAP

После установки настроим администратора и импортируем базовые схемы.

  1. Сгенерируйте хэш пароля:
slappasswd

Введите пароль, повторите и сохраните полученный хэш.

  1. Создайте файл 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

  1. Импортируйте базовые схемы:
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.

Импорт схем OpenLDAP

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 при добавлении нового пользователя и группы

Пользователь alma в каталоге

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

Группа 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:

  1. Получите сертификат и ключ (CA-signed или самоподписанный для теста).
  2. Скопируйте cert и key в /etc/openldap/certs/ и задайте права доступа.
  3. Измените конфигурацию slapd (cn=config) чтобы указать olcTLSCertificateFile и olcTLSCertificateKeyFile.
  4. Перезапустите slapd и проверьте доступ по LDAPS (порт 636).

Важно: подробная конфигурация TLS выходит за рамки этой инструкции, но её настройка обязательна для публичных сервисов.

Руководство по проектированию LDAP (мини-методология)

Перед развертыванием подумайте о:

  1. Иерархии dc и организационных единиц (OU). Простая практика: dc=example,dc=com → ou=People, ou=Groups, ou=Services.
  2. Схемах: планируйте какие атрибуты и objectClass вам понадобятся (inetOrgPerson, posixAccount и т.д.).
  3. UID/GID: назначение uidNumber и gidNumber, чтобы избежать конфликтов с системными UID.
  4. Реконсилиация с существующими системами (AD, SSO). Решите, будет ли LDAP единственным источником правды.
  5. План репликации и резервного копирования.

Эти шаги помогают избежать ошибок в будущем и упростить интеграцию.

Проверка работоспособности: тест-кейсы

  • Тест 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.

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