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

Добавление Ubuntu 20.04 клиента к OpenLDAP через libnss-ldapd и libpam-ldapd

6 min read Linux Обновлено 06 Nov 2025
Ubuntu 20.04: клиент OpenLDAP через libnss/libpam
Ubuntu 20.04: клиент OpenLDAP через libnss/libpam

Что вы узнаете

  • Как подготовить клиент 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.

Проверка списка пользователей OpenLDAP, пример вывода с пользователем 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-сервер по имени.

Настройка FQDN и файла /etc/hosts, проверка связи с 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.

Окно выбора служб LDAP (passwd, group, shadow)

Если вы использовали шифрование 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.

Включение профиля PAM для автосоздания домашнего каталога

Затем примените изменения перезагрузкой:

sudo reboot

Тестирование аутентификации через OpenLDAP

После перезагрузки попытайтесь войти локально на клиенте под LDAP-пользователем (например, alice). Домашний каталог должен быть создан автоматически.

Вход в систему под пользователем alice из OpenLDAP

Также можно подключиться по SSH с другого хоста:

ssh [email protected]

Пример входа по SSH под пользователем OpenLDAP

Если вход успешен и домашний каталог существует, интеграция прошла успешно.

Отладка и распространённые ошибки

Если аутентификация не работает, проверьте следующие элементы по шагам:

  1. Проверка сетевого соединения
    • ping ldap.mydomain.io
    • telnet ldap.mydomain.io 389 (или 636 для LDAPS)
  2. Тест LDAP-запроса
    • sudo ldapsearch -x -H ldap://ldap.mydomain.io -b ‘ou=people,dc=mydomain,dc=io’
  3. Логи
    • Просмотрите /var/log/auth.log и /var/log/syslog на клиенте для сообщений PAM и nslcd
    • Проверяйте логи OpenLDAP на сервере
  4. Проверка службы nslcd
    • sudo systemctl status nslcd
    • Запуск в режиме отладки: sudo nslcd -d
  5. 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.

Пошаговый контрольный список администратора

  1. На сервере: проверить, что OpenLDAP слушает на нужных портах и что записи пользователей правильные.
  2. На клиенте: задать FQDN и /etc/hosts.
  3. Установить пакеты: libnss-ldapd, libpam-ldapd, ldap-utils.
  4. Ввести домен LDAP при установке и включить passwd, group, shadow.
  5. При необходимости: включить TLS и добавить tls_cacertfile в /etc/nslcd.conf.
  6. Запустить pam-auth-update и включить автосоздание домашнего каталога.
  7. Перезагрузить и проверить входы локально и по SSH.
  8. Проверить логи и сервис nslcd при ошибках.

Мини-руководство (SOP) для быстрой интеграции клиента

  1. Обновить систему: sudo apt update && sudo apt upgrade
  2. Задать hostname: sudo hostnamectl set-hostname
  3. Добавить записи в /etc/hosts
  4. Установить пакеты: sudo apt install libnss-ldapd libpam-ldapd ldap-utils
  5. Проверить ldapsearch
  6. Настроить /etc/nslcd.conf для TLS при необходимости
  7. Выполнить sudo pam-auth-update и включить профиль создания домашнего каталога
  8. Перезагрузить и проверить вход

Критерии приёмки

  • Учетная запись 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
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus: механизм и защита Android‑трояна
Кибербезопасность

Herodotus: механизм и защита Android‑трояна

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти