Добавление Ubuntu 20.04 клиента к OpenLDAP через libnss-ldapd и libpam-ldapd
Что вы узнаете
- Как подготовить клиент Ubuntu 20.04 для аутентификации пользователей из OpenLDAP
- Какие пакеты установить и какие параметры задать при установке
- Как включить TLS и отладить проблемы при подключении
Требования
- Сервер с установленным и настроенным OpenLDAP. См. руководство по установке OpenLDAP.
- Клиент на Ubuntu 20.04.
- Локальный пользователь с правами sudo.
Проверка пользователей OpenLDAP
Перед началом убедитесь, что на OpenLDAP-сервере есть учетные записи пользователей. В примере домен сервера — ldap.mydomain.io.
Выполните команду ldapsearch на клиенте или на сервере, чтобы просмотреть список пользователей в ветке ou=people:
sudo ldapsearch -x -b 'ou=people,dc=mydomain,dc=io'На скриншоте показан пример, где в LDAP есть пользователь alice.

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

Установка libnss-ldapd и libpam-ldapd
На Ubuntu современные пакеты для интеграции с LDAP называются libnss-ldapd и libpam-ldapd. Пакет ldap-utils содержит утилиты вроде ldapsearch.
Обновите индексы пакетов и установите компоненты:
sudo apt update && sudo apt install libnss-ldapd libpam-ldapd ldap-utilsВо время установки вам будут заданы вопросы через интерфейс debconf:
- Укажите доменное имя LDAP-сервера, например ldap.mydomain.io. Нажмите OK и Enter.
- Оставьте LDAP search base по умолчанию, если система детектирует правильный base.
- Выберите службы для LDAP-поиска: passwd, group, shadow. Подтвердите OK.

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

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

Также можно подключиться по SSH с другого хоста:
ssh [email protected]
Если вход успешен и домашний каталог существует, интеграция прошла успешно.
Отладка и распространённые ошибки
Если аутентификация не работает, проверьте следующие элементы по шагам:
- Проверка сетевого соединения
- ping ldap.mydomain.io
- telnet ldap.mydomain.io 389 (или 636 для LDAPS)
- Тест LDAP-запроса
- sudo ldapsearch -x -H ldap://ldap.mydomain.io -b ‘ou=people,dc=mydomain,dc=io’
- Логи
- Просмотрите /var/log/auth.log и /var/log/syslog на клиенте для сообщений PAM и nslcd
- Проверяйте логи OpenLDAP на сервере
- Проверка службы nslcd
- sudo systemctl status nslcd
- Запуск в режиме отладки: sudo nslcd -d
- TLS и сертификаты
- Если используется StartTLS, убедитесь, что клиент доверяет CA. Разместите CA в /etc/ssl/certs/ или укажите путь через ldap.conf
- В nslcd.conf можно указать tls_cacertfile /etc/ssl/certs/ca-certificates.crt
Важно: параметр tls_reqcert allow облегчает отладку, но в продакшне настройте строгую проверку и корректные сертификаты.
Альтернативные подходы
- sssd: вместо libnss-ldapd/libpam-ldapd можно использовать sssd. sssd обеспечивает кэширование учетных данных, автономный режим и более гибкую интеграцию.
- libnss-ldap: старый пакет; в новых системах предпочтительнее ldapd-варианты или sssd.
- Централизованное управление ключами: объединение LDAP с Kerberos для единого входа (SSO).
Краткое сравнение:
- libnss-ldapd + libpam-ldapd: простая настройка, хорошо для небольших сред.
- sssd: лучше для масштабируемых окружений и офлайн-ребута, предлагает кэширование.
- Kerberos + LDAP: сложнее, но обеспечивает единую авторизацию и более высокий уровень безопасности.
Рекомендации по безопасности
- Используйте TLS/LDAPS и не оставляйте tls_reqcert в положении allow для продакшна.
- Храните CA-файлы на клиенте в стандартной системе доверия (/etc/ssl/certs).
- Ограничьте доступ к OpenLDAP через сетевые фильтры (firewall) и VPN, если это возможно.
- Разделяйте права: минимизируйте использование привилегированных учетных записей LDAP.
Пошаговый контрольный список администратора
- На сервере: проверить, что OpenLDAP слушает на нужных портах и что записи пользователей правильные.
- На клиенте: задать FQDN и /etc/hosts.
- Установить пакеты: libnss-ldapd, libpam-ldapd, ldap-utils.
- Ввести домен LDAP при установке и включить passwd, group, shadow.
- При необходимости: включить TLS и добавить tls_cacertfile в /etc/nslcd.conf.
- Запустить pam-auth-update и включить автосоздание домашнего каталога.
- Перезагрузить и проверить входы локально и по SSH.
- Проверить логи и сервис nslcd при ошибках.
Мини-руководство (SOP) для быстрой интеграции клиента
- Обновить систему: sudo apt update && sudo apt upgrade
- Задать hostname: sudo hostnamectl set-hostname
- Добавить записи в /etc/hosts
- Установить пакеты: sudo apt install libnss-ldapd libpam-ldapd ldap-utils
- Проверить ldapsearch
- Настроить /etc/nslcd.conf для TLS при необходимости
- Выполнить sudo pam-auth-update и включить профиль создания домашнего каталога
- Перезагрузить и проверить вход
Критерии приёмки
- Учетная запись OpenLDAP отображается в выводе getent passwd
- Вход под LDAP-пользователем возможен локально и по SSH
- Домашний каталог пользователя создается автоматически при первом входе
- В логах нет критических ошибок связанных с nslcd или PAM
Полезные команды проверки
getent passwd alice
getent group
sudo ldapsearch -x -H ldap://ldap.mydomain.io -b 'ou=people,dc=mydomain,dc=io'
sudo systemctl status nslcd
sudo journalctl -u nslcd -b
tail -n 200 /var/log/auth.log Короткий словарь терминов
- OpenLDAP — сервер каталогов LDAP.
- NSS — Name Service Switch, подставляет разные источники для passwd/group.
- PAM — Pluggable Authentication Modules, система модулей аутентификации.
- nslcd — демон для обслуживания NSS/PAM через LDAP.
- sssd — System Security Services Daemon, альтернатива для интеграции с LDAP/Kerberos.
Когда этот способ не подходит
- Если вам нужно кэширование учетных данных для оффлайн-работы — рассмотрите sssd.
- Если требуется единая авторизация через Kerberos — рассмотрите интеграцию LDAP+Kerberos.
- Для больших инфраструктур с высокой нагрузкой libnss-ldapd может быть менее устойчивым по сравнению с sssd.
Решение по выбору: простая схема
flowchart TD
A[Нужна простая LDAP-аутентификация?] -->|Да| B{Нужны кэш и оффлайн доступ?}
B -->|Да| C[Использовать sssd]
B -->|Нет| D[Использовать libnss-ldapd + libpam-ldapd]
A -->|Нет| E[Нужен Kerberos или SSO]
E --> F[Развернуть Kerberos + LDAP]Локальные особенности и примечания для российских сред
- Никаких специфичных настроек локали для Ubuntu 20.04, но убедитесь, что имена в LDAP хранятся в корректной кодировке UTF-8.
- Для корпоративных CA: разместите корневой сертификат на клиенте и в nslcd.conf укажите tls_cacertfile.
Заключение
Вы успешно подключили Ubuntu 20.04 к OpenLDAP с помощью libnss-ldapd и libpam-ldapd. Такой подход упрощает централизованное управление пользователями и доступом на множествах машин. Для производственных сред обязательно настройте TLS с проверкой сертификатов и рассмотрите sssd при необходимости кэширования.
Краткое резюме:
- Настроили FQDN и /etc/hosts
- Установили libnss-ldapd и libpam-ldapd
- Включили TLS и профиль PAM для автосоздания домашнего каталога
- Проверили входы локально и по SSH
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить