Подключение Ubuntu 20.04 к OpenLDAP через libnss-ldapd и libpam-ldapd
Введение
В этой инструкции описано, как подключить Ubuntu 20.04 в качестве клиента к серверу OpenLDAP с использованием пакетов libnss-ldapd и libpam-ldapd. Это один из самых простых и распространённых способов быстро настроить централизованную аутентификацию на множестве машин.
Определение: OpenLDAP — это реализация протокола LDAP для хранения и поиска информации о пользователях и группах. NSS — подсистема совпадения имён и данных пользователей в системе. PAM — подсистема модулей аутентификации.
Кому подходит эта инструкция
- Системным администраторам, которые настраивают централизованную аутентификацию.
- Инженерам по внедрению, которым нужно быстро подключить клиентские хосты к уже существующему OpenLDAP.
Необходимые условия
- Рабочий сервер с установленным и настроенным OpenLDAP (см. руководство по установке OpenLDAP).
- Клиент с Ubuntu 20.04.
- Неразрешённый пользователь с правами sudo.
Быстрая проверка доступных пользователей OpenLDAP
Перед началом проверьте, какие пользователи доступны на сервере OpenLDAP. В примерах используется домен ldap.mydomain.io и ветка ou=people.
sudo ldapsearch -x -b "ou=people,dc=mydomain,dc=io"На сервере в примере есть пользователь alice.

Настройка hostname и FQDN на клиенте
Установите FQDN на клиенте и добавьте в /etc/hosts запись для сервера OpenLDAP и клиента.
Задайте имя хоста:
sudo hostnamectl set-hostname ubuntu2004.mydomain.ioОтредактируйте /etc/hosts:
sudo nano /etc/hostsПример содержимого файла (замените IP-адреса и FQDN на свои):
192.168.10.50 ldap.mydomain.io ldap
192.168.10.90 ubuntu2004.mydomain.io ubuntu2004Сохраните файл и проверьте связь с сервером:
ping -c3 ldap.mydomain.ioЕсли получаете ответы — имена разрешаются корректно и сеть доступна.

Установка libnss-ldapd и libpam-ldapd
После настройки сети установите клиентские пакеты, которые обеспечат поиск учётных записей через LDAP и аутентификацию через PAM.
Пример команды установки на Ubuntu 20.04:
sudo apt update
sudo apt install libnss-ldapd libpam-ldapd ldap-utilsВо время установки пакет предложит ввести адрес LDAP-сервера и базовый DN для поиска. Введите ваш OpenLDAP-сервер (например, ldap.mydomain.io) и оставьте поиск базы (search base) по умолчанию, если конфигурация сервера типична.
При появлении списка служб отметьте passwd, group и shadow — это включит LDAP-поиск для пользователей, групп и теневых паролей.

Настройка TLS (если сервер использует SSL/TLS)
Если сервер OpenLDAP настроен на использование шифрования (LDAPS или StartTLS), на клиенте необходимо разрешить TLS в конфигурации nslcd.
Отредактируйте файл /etc/nslcd.conf:
sudo nano /etc/nslcd.confДобавьте или измените параметры:
ssl start_tls
tls_reqcert allowПримечание: значение tls_reqcert может быть allow, demand или never. Для продуктивных сред рекомендуется demand и корректно установленный доверенный CA. Значение allow удобно для тестовой среды, но снижает проверку сертификата.
Сохраните изменения и перезапустите службу nslcd при необходимости:
sudo systemctl restart nslcdНастройка PAM для создания домашней директории
Чтобы каждый пользователь LDAP получал домашнюю директорию при первом входе, активируйте соответствующий профиль PAM.
Запустите интерактивную утилиту:
sudo pam-auth-updateВыберите профиль Create a home directory on login и подтвердите. Это автоматически добавит pam_mkhomedir в цепочку PAM для сессий.

После этого перезагрузите машину, чтобы все изменения применились:
sudo rebootТестирование аутентификации
После перезагрузки войдите под LDAP-пользователем, например alice. Домашняя директория должна быть создана автоматически.

Вы также можете проверить вход по SSH с другого хоста:
ssh [email protected]Если аутентификация проходит — настройка выполнена успешно.

Краткое руководство быстрого развёртывания
- Установите FQDN на клиенте.
- Добавьте записи в /etc/hosts.
- Установите libnss-ldapd, libpam-ldapd, ldap-utils.
- Введите адрес LDAP-сервера при установке.
- Включите lookup для passwd, group, shadow.
- Включите TLS в /etc/nslcd.conf при необходимости.
- Активируйте Create a home directory on login.
- Перезагрузите клиент.
Пошаговый чеклист для оператора
- Проверить доступность LDAP-сервера (ping, nc/telnet на порт 389/636).
- Установить пакеты: libnss-ldapd, libpam-ldapd, ldap-utils.
- Убедиться, что в /etc/nsswitch.conf присутствуют записи ldap для passwd/group.
- Проверить /etc/nslcd.conf — host, base, ssl/tls.
- Активировать pam_mkhomedir через pam-auth-update.
- Перезагрузить систему и выполнить вход под LDAP-пользователем.
- Проверить логи: /var/log/auth.log и системный журнал для nslcd.
Критерии приёмки
- Пользователь LDAP виден в системе: getent passwd alice возвращает запись пользователя.
- Пользователь может выполнить вход локально и по SSH.
- Домашняя директория создаётся при первом входе.
- nslcd работает: sudo systemctl status nslcd — активен.
Примеры команд проверки:
getent passwd alice
id alice
sudo systemctl status nslcd
tail -n 200 /var/log/auth.logУстранение неполадок
Проблема: getent не возвращает LDAP-пользователя.
Действия:- Проверить /etc/nsswitch.conf — должна быть запись passwd: compat systemd ldap (или аналог).
- Проверить /etc/nslcd.conf — host и base.
- Проверить сетевую доступность LDAP-порта: nc -vz ldap.mydomain.io 389.
Проблема: ошибки сертификата при StartTLS.
Действия:- Проверьте tls_reqcert в /etc/nslcd.conf.
- Убедитесь, что корневой CA добавлен в системное хранилище (например, /usr/local/share/ca-certificates и sudo update-ca-certificates).
Проблема: PAM не создаёт домашнюю директорию.
Действия:- Убедитесь, что pam_mkhomedir подключён: grep pam_mkhomedir /etc/pam.d/* .
- Запустите sudo pam-auth-update и повторно активируйте профиль.
Проблема: nslcd не запускается.
Действия:- Посмотреть логи systemd: sudo journalctl -u nslcd -b.
- Проверить синтаксис /etc/nslcd.conf.
Советы по безопасности
- В продуктивной среде используйте TLS с проверкой сертификата (tls_reqcert demand).
- Разместите CA в системном хранилище сертификатов и указывайте путь в nslcd, если требуется.
- Ограничьте доступ к LDAP-серверу по iptables/ufw для клиентских сетей.
- Не используйте tls_reqcert allow в продуктиве — это снижает проверку цепочки доверия.
Роли и обязанности
- Системный администратор: настраивает пакетную установку, налаживает TLS и проверяет журналы.
- Администратор LDAP: проверяет базу DN, учётные записи пользователей и права.
- Helpdesk/оператор: проверяет вход пользователей и сообщает о проблемах.
Примеры команд и сниппеты
Проверка записи пользователя в LDAP и локальном представлении:
ldapsearch -x -b "ou=people,dc=mydomain,dc=io" uid=alice
getent passwd aliceПерезапуск службы nslcd:
sudo systemctl restart nslcd
sudo systemctl status nslcdПросмотр логов аутентификации:
tail -f /var/log/auth.log
sudo journalctl -u nslcd -fMermaid: Быстрое дерево решений при ошибках подключения
flowchart TD
A[Проблема: нет авторизации] --> B{Можно ли пинговать сервер?}
B -- Да --> C{Открыт ли порт LDAP '389/636'?}
B -- Нет --> D[Проверьте DNS/hosts и сеть]
C -- Да --> E[Проверить /etc/nslcd.conf и логи nslcd]
C -- Нет --> F[Откройте порт в фаерволе и проверьте маршруты]
E --> G[Проверить TLS/сертификаты]
G --> H[Исправить CA и tls_reqcert]Глоссарий
- LDAP — Lightweight Directory Access Protocol, протокол каталогов.
- NSS — Name Service Switch, система разрешения имён в Unix.
- PAM — Pluggable Authentication Modules, модульная система аутентификации.
- nslcd — демон, который обеспечивает LDAP-подключение для NSS/PAM.
Итоги
Вы подключили Ubuntu 20.04 к серверу OpenLDAP. После установки и настройки libnss-ldapd и libpam-ldapd клиенты могут разрешать учётные записи через LDAP и аутентифицировать пользователей. Для безопасной эксплуатации используйте TLS с проверкой сертификатов и контролируйте доступ на сетевом уровне.
Важное: в рабочих средах всегда проверяйте сертификаты и используйте строгие политики выдачи и обновления CA.
Ключевые команды для быстрого запуска:
sudo hostnamectl set-hostname ubuntu2004.mydomain.io
sudo nano /etc/hosts
sudo apt update
sudo apt install libnss-ldapd libpam-ldapd ldap-utils
sudo nano /etc/nslcd.conf
sudo pam-auth-update
sudo rebootПохожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента