- 5. Настройка аутентификации пользователей через OpenLDAP на клиенте
- Интеграция Linux и Active Directory
- Общие настройки OpenLDAP
- Основные файлы конфигурации
- /etc/openldap/slapd.conf
- /etc/openldap/ldap.conf
- /etc/nslcd.conf
- Создание баз slapd
- Целостность баз slapd
- Запись логов
- Отладка slapd
- Мониторинг нагрузки
- Пример использования ldapsearch
- Nslcd
- Namespaces
- Page actions
- Contents
- Introduction
- Configuring the nslcd Service
- Authenticating nslcd to AD Using a User Name and Password
- Authenticating nslcd to AD Using Kerberos
- Testing the User and Group Retrieval
- Troubleshooting
- Arthur de Jong
- nslcd.conf(5) manual page
- Description
- Options
- Runtime options
- General connection options
- SASL authentication options
- Kerberos authentication options
- Search/mapping options
- Timing/reconnect options
5. Настройка аутентификации пользователей через OpenLDAP на клиенте
Где работаем: ldap-client
Перейдём к настройке клиентской рабочей станции. Для начала установим необходимые пакеты:
При установке нам будут предложены некоторые настройки . Далее мы всё равно внесём в конфигурацию изменения, но это нужно сделать, чтобы все пакеты нормально установились:
- URI сервера LDAP: ldap://ldap-srv.example.com ;
- База поиска сервера LDAP: dc=example,dc=com ;
- Имена настраиваемых служб: group , netgroup , passwd , shadow .
Прежде чем делать запросы к LDAP-серверу, проверим параметры клиента в /etc/ldap/ldap.conf:
Конечно, для того, чтобы всё заработало, сертификат нашего Certificate Authority (rootca.crt) и CRL-файл (rootca.crl) должны быть на месте.
Проверим работоспособность простым запросом. Результат опустим (Вы должны увидеть всё DIT):
Поправим конфигурацию нашей локальной службы имён LDAP в файле /etc/nslcd.conf. Измените значение директивы bindpw на пароль записи cn=nssproxy,ou=users,dc=example,dc=com , который мы задавали ранее:
Краткое описание использованных директив:
- С помощью директивы base мы сообщаем демону nslcd, где в DIT искать ту или иную информацию;
- bind_timelimit ограничивает время на установление соединения с сервером пятью секундами;
- timelimit устанавливает максимальное время ожидания ответа от сервера в 10 секунд;
- idle_timelimit заставит nslcd разорвать соединение с сервером, если в течении минуты в соединении не было никакой активности;
- ssl заставляет клиента использовать TLS при подключении к серверу;
- tls_reqcert и tls_cacertfile подобны директивам TLS_REQCERT и TLS_CACERT в конфигурации /etc/ldap/ldap.conf (необходимость проверки сертификата сервера и путь к корневому сертификату для выполнения проверки);
- nss_initgroups_ignoreusers описывает пользователей системы, поиск которых не нужно производить в DIT (чтобы мы могли работать с машиной при проблемах с доступом к серверу каталогов). В значение этой директивы следует внести имена всех общесистемных пользователей.
Поменяем права доступа к nslcd.conf, потому что теперь в нём хранится информация для аутентификации:
Проверим содержимое /etc/nsswitch.conf:
Убедимся в том, что демон nslcd запускается при старте системы и перезапустим его:
Убедимся, что в системе ldap-client НЕТ учётной записи с именем nssproxy. Следующая команда должна выполняться без результата:
Убедимся так же, что кэширующий демон службы имён загружается при старте системы и перезапустим его:
Сделаем пару запросов к LDAP-серверу, используя настроенную нами систему:
Для того, чтобы проверить доступность информации о пароле потребуется выполнить getent от имени пользователя root:
Не беспокойтесь, хэш пароля мы видеть не должны.
Отлично, всё работает! Вышеприведённые результаты команд означают, что система ldap-client может осуществлять поиск по данным пользователей и групп в нашем каталоге OpenLDAP.
Создадим домашний каталог нашего тестового пользователя и установим для него права доступа:
Запустим в отдельном терминале вывод журнала аутентификации:
В другом терминале выполним:
Мы должны получить приглашение командной строки пользователя test.user.
Теперь попробуем зайти на машину ldap-client по сети с использованием ssh под учётной записью test.user.
Демон ssh в конфигурации по-умолчанию должен работать с поддержкой PAM (и, соответственно, поддерживать аутентификацию через LDAP). Но на всякий случай приведём рабочую конфигурацию /etc/ssh/sshd_config:
Часть файла до пустой строки — конфигурация по-умолчанию. Далее — добавленное нами. Обратите внимание на строку с директивой AllowGroups . С помощью неё мы ограничиваем список групп пользователей, которые могут быть аутентифицированы через ssh. За информацией по остальным директивам обратитесь к документации.
Проверим работу с использованием какой-нибудь третьей машины. Например, выполним на нашем DNS-сервере (dns-srv):
Вывод последней команды сокращён. Если появляется приглашение командной строки, значит всё в порядке!
Где работаем: ldap-srv
Давайте заглянем в /var/log/slapd.log на нашем сервере. Мы можем обнаружить там следующие строки:
С помощью следующей команды мы можем убедиться, что в нашем каталоге пока нет никаких индексов:
Это значит, что в нашей базе данных надо создать индексы для атрибутов из журнала /var/log/slapd.log. Поэтому создадим ещё один LDIF-файл 5-posixAccount.indexes.ldif и запишем в него:
Зачем мелочиться? Укажем по-больше индексируемых атрибутов. И загрузим конфигурацию в наш каталог:
Проверим результат изменений:
Отлично! Теперь в журнале /var/log/slapd.log не должно быть ошибок.
OpenLDAP и Ubuntu на практике > Настройка аутентификации пользователей через OpenLDAP на клиенте
Источник
Интеграция Linux и Active Directory
Существует несколько путей для интеграции Linux компьютеров в домен. Часть из них построена на использовании специализированной программ winbind из пакета Samba , а часть использует автономные PAM и NSS модули для непосредственного взаимодействия с сервером домена.
Общие настройки OpenLDAP
Пути к файлам, использованные на этой странице, относятся к дистрибутивам Linux CentOS 6/7.
Основные файлы конфигурации
/etc/openldap/slapd.conf
Конфигурация LDAP-сервера slapd . Содержимое файла для запуска slapd в режиме прокси описано в статье»OpenLDAP в режиме прокси для Active Directory».
/etc/openldap/ldap.conf
Базовая конфигурация клиентов из пакета OpenLDAP ( ldapsearch , ldapwhoami , slapd в режиме прокси). Параметры из этого файла могут быть перезаписаны в командной строке. Этот файл не влияет на демон nslcd — у того свои настройки LDAP в /etc/nslcd.conf .
/etc/nslcd.conf
Конфигурация демона nslcd , который обеспечивает доступ к LDAP кэширующему серверу имен nscd . Конфигурационный файл описан в разделе «Имена пользователей и групп из LDAP (nslcd)».
Создание баз slapd
Используется два основных каталога для хранения баз /etc/openldap/slapd.d и /var/lib/ldap . Первый каталог используется для хранения конфигурации в виде базы database config . Второй — для хранения локальной базы записей LDAP или (в режиме прокси) для хранения кэша модулем pcache . В каталоге /var/lib/ldap для корректного создания базы должен находиться файл DB_CONFIG .
Конфигурация slapd может храниться в двух форматах: в файле /etc/openldap/slapd.conf и в каталоге /etc/openldap/slapd.d . Конфигурация из каталога имеет больший приоритет, поэтому при изменениях файла /etc/openldap/slapd.conf надо удалить базу /etc/openldap/slapd.d и сгенерировать ее заново:
slaptest проверяет синтаксис slapd.conf , строит базу config в /etc/openldap/slapd.d и пытается создать bdb/hdb базы (если они описаны в slapd.conf ) в /var/lib/ldap . Опция -d -1 — обеспечивает выдачу отладочной информации, что бывает полезно для поиска ошибок в файле конфигурации.
Иногда при генерации баз в /var/lib/ldap slaptest выдает ошибку:
В этом случае имеет смысл один раз запустить slapd от root’а (с опцией отладки, чтобы он не ушел в фоновый режим), а потом поменять владельца сгенерированых файлов.
Целостность баз slapd
Для обеспечения целостности баз соответствующая библиотека ведёт логи транзакций, которые позволяют восстановить базу в случае сбоя на диске или аварийного отключения питания. Логи транзакций накапливаются в каталоге /var/lib/ldap/ с именами вида log.0000000001 , log.0000000002 и т.д. Для кеширующего прокси целостность баз не имеет значения, поэтому сохранение логов транзакций можно отключить, добавив в файл /var/lib/ldap/DB_CONFIG строку set_flags DB_LOG_AUTOREMOVE
Запись логов
Для записи логовов slapd в конфигурационный файл syslog/rsyslog необходимо добавить правило
Отладка slapd
Для отладки slapd запускается с опцией -d N , где N — число, каждый бит которого включает определенный тип отладочной печати. При запуске с опцией отладки slapd не уходит в фоновый режим и выдает отладочную печать на stderr . slapd -d -1 включает вывод всей доступной отладочной печати. Запуск slapd с опцией -d \? выдает список допустимых значений отладочных режимов и мнемонические обозначения для них. В зависимости от подключенных модулей-оверлеев, список отладочных режимов может меняться. В частности, модуль pcache добавляет свой отладочный флаг. При запуске slapd -d pcache выдается предупреждение, что используется неверный флаг отладки, но работает как надо.
Если есть желание отлаживать slapd , запущенный в фоновом режиме, то вместо опции -d следует использовать -s — запись в syslog .
Список битов, используемых с опциями -d и -s
Мониторинг нагрузки
В slapd.conf включаем монитор и разрешаем доступ локальному root’у
Пример использования ldapsearch
Для отладки можно формировать запросы к LDAP-серверу командой ldapsearch . Например:
Источник
Nslcd
Namespaces
Page actions
Contents
Introduction
The nslcd service enables you to configure your local system to load users and groups from an LDAP directory, such as Active Directory (AD).
To enable the nslcd service to load user and group information, you have to set the Unix attributes for users and groups in AD. For details, see Maintaining Unix Attributes in AD using ADUC.
Samba does not provide support for the nslcd service, other than what is on this page. |
Configuring the nslcd Service
Authenticating nslcd to AD Using a User Name and Password
To enable the nslcd service to authenticate to Active Directory (AD) using a user name and password:
- Create a new user in AD. For example: nslcd-ad
Set the following options in the account’s settings:
- Password never expires
- User cannot change password
- Add the following parameter to the [global] section of your smb.conf file:
- Restart Samba.
- Edit the /etc/nslcd.conf file and set the following settings:
For details about the parameter, see the nslcd.conf (5) man page.
- To enable LDAP databases for the name service switch (NSS), add the ldap option to the following lines in the /etc/nsswitch.conf file:
- Start the nslcd service.
Authenticating nslcd to AD Using Kerberos
To enable the nslcd service to authenticate to Active Directory (AD) using Kerberos:
- Create a new user in AD. For example: nslcd-ad
Set the following options in the account’s settings:
- Password never expires
- User cannot change password, note: this can only be set from Windows
- Extract the Kerberos keytab for the nslcd-ad account to the /etc/krb5.nslcd.keytab file, run:
- Make sure that the Kerberos ticket is automatically renewed before it expires. For example, to auto-renew Kerberos tickets using the k5start utility:
For details about the parameters, see the k5start (5) man page. Make sure that the utility used for renewal is automatically started at boot time.
- Add the following parameter to the [global] section of your smb.conf file:
- Restart Samba.
- Edit the /etc/nslcd.conf file and set the following settings:
For details about the parameter, see the nslcd.conf (5) man page.
- To enable LDAP databases for the name service switch (NSS), add the ldap option to the following lines in the /etc/nsswitch.conf file:
Edit the /etc/default/nslcd file and set the following settings:
- Start the nslcd service.
Testing the User and Group Retrieval
To list users and groups having Unix attributes in Active Directory (AD) set:
- To list a users account, enter:
- To list a group, enter:
Troubleshooting
If the getent command fails to load users and groups from Active Directory (AD):
- Stop the nslcd service.
- Start the nslcd service in debug mode:
The service will start in the foreground and the output is displayed on the screen.
- On a second terminal, run the failed getent command again and watch the nslcd debug output.
Источник
Arthur de Jong
Open Source / Free Software developer
Use an LDAP server for identity and authentication management on unix systems.
nslcd.conf(5) manual page
nslcd.conf — configuration file for LDAP nameservice daemon
Description
The file nslcd.conf contains the configuration information for running nslcd (see nslcd (8) ). The file contains options, one on each line, defining the way NSS lookups and PAM actions are mapped to LDAP lookups.
Options
Runtime options
This specifies the user id with which the daemon should be run. This can be a numerical id or a symbolic value. If no uid is specified no attempt to change the user will be made. Note that you should use values that don’t need LDAP to resolve.
This specifies the group id with which the daemon should be run. This can be a numerical id or a symbolic value. If no gid is specified no attempt to change the group will be made. Note that you should use values that don’t need LDAP to resolve.
log SCHEME [ LEVEL ]
This option controls the way logging is done. The SCHEME argument may either be none , syslog or an absolute file name. The LEVEL argument is optional and specifies the log level. The log level may be one of: crit , error , warning , notice , info or debug . The default log level is info . All messages with the specified loglevel or higher are logged. This option can be supplied multiple times. If this option is omitted syslog info is assumed.
General connection options
When using the ldapi scheme, %2f should be used to escape slashes (e.g. ldapi://%2fvar%2frun%2fslapd%2fldapi/), although most of the time this should not be needed.
This option may be specified multiple times and/or with more URIs on the line, separated by space. Normally, only the first server will be used with the following servers as fall-back (see bind_timelimit below).
Specifies the distinguished name with which to bind to the directory server for lookups. The default is to bind anonymously.
Specifies the credentials with which to bind. This option is only applicable when used with binddn above. If you set this option you should consider changing the permissions of the nslcd.conf file to only grant access to the root user.
Specifies the distinguished name to use when the root user tries to modify a user’s password using the PAM module.
Note that currently this DN needs to exist as a real entry in the LDAP directory.
Specifies the credentials with which to bind if the root user tries to change a user’s password. This option is only applicable when used with rootpwmoddn above. If this option is not specified the PAM module prompts the user for this password. If you set this option you should consider changing the permissions of the nslcd.conf file to only grant access to the root user.
SASL authentication options
Specifies the authentication identity to be used when performing SASL authentication.
Specifies the authorization identity to be used when performing SASL authentication. Must be specified in one of the formats: dn: or u: .
Kerberos authentication options
Set the name for the GSS-API Kerberos credentials cache.
Search/mapping options
A global search base may be specified or a MAP-specific one. If no MAP-specific search bases are defined the global ones are used.
scope [ MAP ] sub[ tree ]|one[ level ]|base|children
Specifies the search scope (subtree, onelevel, base or children). The default scope is subtree; base scope is almost never useful for name service lookups; children scope is not supported on all servers.
Specifies the policy for dereferencing aliases. The default policy is to never dereference aliases.
Specifies whether automatic referral chasing should be enabled. The default behaviour is to chase referrals.
filter MAP FILTER
map MAP ATTRIBUTE NEWATTRIBUTE
This option allows for custom attributes to be looked up instead of the default RFC 2307 attributes. The MAP may be one of the supported maps below. The ATTRIBUTE is the one as used in RFC 2307 (e.g. userPassword , ipProtocolNumber , macAddress , etc.). The NEWATTRIBUTE may be any attribute as it is available in the directory.
If the NEWATTRIBUTE is presented in quotes («) it is treated as an expression which will be evaluated to build up the actual value used. See the section on attribute mapping expressions below for more details.
Only some attributes for group, passwd and shadow entries may be mapped with an expression (because other attributes may be used in search filters). For group entries only the userPassword attribute may be mapped with an expression. For passwd entries the following attributes may be mapped with an expression: userPassword , gidNumber , gecos , homeDirectory and loginShell . For shadow entries the following attributes may be mapped with an expression: userPassword , shadowLastChange , shadowMin , shadowMax , shadowWarning , shadowInactive , shadowExpire and shadowFlag .
The uidNumber and gidNumber attributes in the passwd and group maps may be mapped to the objectSid followed by the domain SID to derive numeric user and group ids from the SID (e.g. objectSid:S-1-5-21-3623811015-3361044348-30300820 ).
By default all userPassword attributes are mapped to the unmatchable password («*») to avoid accidentally leaking password information.
Timing/reconnect options
Specifies the time limit (in seconds) to use when connecting to the directory server. This is distinct from the time limit specified in timelimit and affects the set-up of the connection only. Note that not all LDAP client libraries have support for setting the connection time out. The default bind_timelimit is 10 seconds.
Specifies the period of inactivity (in seconds) after which the connection to the LDAP server will be closed. The default is not to time out connections.
Источник