Linux connect to ldap

How to Configure LDAP Client to Connect External Authentication

LDAP (short for Lightweight Directory Access Protocol) is an industry standard, widely used set of protocols for accessing directory services.

A directory service in simple terms is a centralized, network-based database optimized for read access. It stores and provides access to information that must either be shared between applications or is highly distributed.

Directory services play an important role in developing intranet and Internet applications by helping you share information about users, systems, networks, applications, and services throughout the network.

A typical use case for LDAP is to offer a centralized storage of usernames and passwords. This allows various applications (or services) to connect to the LDAP server to validate users.

After setting up a working LDAP server, you will need to install libraries on the client for connecting to it. In this article, we will show how to configure an LDAP client to connect to an external authentication source.

I hope you already having a working LDAP server environment, if not setup Up LDAP Server for LDAP-based Authentication.

How to Install and Configure LDAP Client in Ubuntu and CentOS

On the client systems, you will needs to install a few necessary packages to make authentication mechanism function correctly with an LDAP server.

Configure LDAP Client in Ubuntu 16.04 and 18.04

First start by installing the necessary packages by running the following command.

$ sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

During the installation, you will be prompted for details of your LDAP server (provide the values according to your environment). Note that the ldap-auth-config package which is auto-installed does the most of the configurations based on the inputs you enter.

Enter LDAP Server URI

Next, enter the name of the LDAP search base, you can use the components of their domain names for this purpose as shown in the screenshot.

Enter LDAP Search Base

Also choose the LDAP version to use and click Ok.

Select LDAP Version

Now configure the option to allow you to make password utilities that use pam to behave like you would be changing local passwords and click Yes to continue..

Make Local Root Database Admin

Next, disable login requirement to the LDAP database using the next option.

Disable Login to LDAP Database

Also define LDAP account for root and click Ok.

Define LDAP Account for Root

Next, enter the password to use when ldap-auth-config tries to login to the LDAP directory using the LDAP account for root.

Enter LDAP Root Password

The results of the dialog will be stored in the file /etc/ldap.conf. If you want to make any alterations, open and edit this file using your favorite command line editor.

Читайте также:  Скомпилированные модули ядра linux

Next, configure the LDAP profile for NSS by running.

$ sudo auth-client-config -t nss -p lac_ldap

Then configure the system to use LDAP for authentication by updating PAM configurations. From the menu, choose LDAP and any other authentication mechanisms you need. You should now be able to log in using LDAP-based credentials.

Configure PAM Authentication Mechanism

In case you want the home directory of the user to be created automatically, then you need to perform one more configuration in the common-session PAM file.

$ sudo vim /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel umask=077

Save the changes and close the file. Then restart the NCSD (Name Service Cache Daemon) service with the following command.

$ sudo systemctl restart nscd $ sudo systemctl enable nscd

Note: If you are using replication, LDAP clients will need to refer to multiple servers specified in /etc/ldap.conf. You can specify all the servers in this form:

uri ldap://ldap1.example.com ldap://ldap2.example.com

This implies that the request will time out and if the Provider (ldap1.example.com) becomes unresponsive, the Consumer (ldap2.example.com) will attempt to be reached to process it.

To check the LDAP entries for a particular user from the server, run the getent command, for example.

If the above command displays details of the specified user from the /etc/passwd file, your client machine is now configured to authenticate with the LDAP server, you should be able to log in using LDAP-based credentials.

Configure LDAP Client in CentOS 7

To install the necessary packages, run the following command. Note that in this section, if you are operating the system as a non-root administrative user, use the sudo command to run all commands.

# yum update && yum install openldap openldap-clients nss-pam-ldapd

Next, enable the client system to authenticate using LDAP. You can use the authconfig utility, which is an interface for configuring system authentication resources.

Run the following command and replace example.com with your domain and dc=example,dc=com with your LDAP domain controller.

# authconfig --enableldap --enableldapauth --ldapserver=ldap.example.com --ldapbasedn="dc=example,dc=com" --enablemkhomedir --update

In the above command, the —enablemkhomedir option creates a local user home directory at the first connection if none exists.

Next, test if the LDAP entries for a particular user from the server, for example user tecmint.

The above command should display details of the specified user from the /etc/passwd file, which implies that the client machine is now configured to authenticate with the LDAP server.

Important: If SELinux is enabled on your system, you need to add a rule to allow creating home directories automatically by mkhomedir.

For more information, consult the appropriate documentation from OpenLDAP Software document catalog.

Summary

LDAP, is a widely used protocol for querying and modifying a directory service. In this guide, we have shown how to configure an LDAP client to connect to an external authentication source, in Ubuntu and CentOS client machines. You can leave any questions or comments you may have using the feedback form below.

Читайте также:  Процессы использующие интернет linux

Источник

Настраиваем LDAP в ОС Linux

В этой статье мы продолжим разворачивать и настраивать LDAP под Linux. В первой части мы выполнили базовую установку slapd, развернули домен domain.com, и добавили записи в каталог.

Сейчас мы продолжим выполнять наши настройки в LDAP и поговорим об аутентификации. Наши предыдущие настройки завершились добавлением записей. Посмотрим нашу текущую конфигурацию slapd по протоколу LDAP (с указанием только DNs):

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn

dn: cn=config # глобальные настройки dn: cn=module,cn=config # динамически загружаемый модуль dn: cn=schema,cn=config # жестко прописанная схема на уровне системы dn: cn=core,cn=schema,cn=config # жестко прописанная core схема dn: cn=cosine,cn=schema,cn=config # cosine схема dn: cn=nis,cn=schema,cn=config # NIS схема dn: cn=inetorgperson,cn=schema,cn=config # InetOrgPerson схема dn: olcDatabase=frontend,cn=config # база Frontend, настройки по умолчанию для других баз dn: olcDatabase=config,cn=config # база конфигурации slapd dn: olcDatabase=mdb,cn=config # база dc=domain dc=com Вот как выглядит пример вывода запроса для dc=domain, dc=com: $ ldapsearch -x -LLL -H ldap:/// -b dc=domain,dc=com dn dn: dc=domain,dc=com dn: cn=admin,dc=domain,dc=com

Некоторые пояснения к выведенному листингу:

dc=domain,dc=com: основной DIT cn=admin,dc=domain,dc=com: Administrator (rootDN) для этого DIT

Об аутентификации

При этом обратите внимание на два варианта использования механизмов аутентификации, которые мы использовали вместе с командой ldapsearch в примере выше:

Ключ -x указывает на использование обычной текстовой аутентификации. Поскольку DN привязки не был предоставлен (через -D), это стало анонимной привязкой. Без -x по умолчанию используется привязка Simple Authentication Security Layer (SASL).

Ключ -Y со значением EXTERNAL использует привязку SASL. Вместе с -H ldapi:/// здесь используется локальное соединение с сокетом Unix.

При использовании первого или второго ключа мы получим только те результаты, которые позволят нам увидеть списки контроля доступа к серверу (ACL), исходя из того, какими правами мы обладаем. Очень удобным инструментом для проверки подлинности является команда ldapwhoami, которую можно использовать следующим образом:

Также с помощью ключа –x можно пройти аутентификацию в LDAP:

$ ldapwhoami -x -D cn=admin,dc=domain,dc=com -W

При этом, когда вы используете simple bind (-x) и указываете DN привязки с -D в качестве DN аутентификации, сервер будет искать атрибут userPassword в записи и использовать его для проверки учетных данных. В данном конкретном случае, описанном выше, мы использовали запись корневого домена базы данных, т.е. фактического администратора, и это особый случай, пароль которого задается в конфигурации при установке пакета.

Индексы в LDAP

Для ускорения поиска по каталогу LDAP используются индексы. По сути, они работают по тому же принципу, что и индексы в базах данных, то есть используются для ускорения работы запросов на обновление и поиск. В LDAP индексы могут быть предоставлены для любого атрибута, но индексироваться должны только те, которые отображаются в результатах поиска. При этом, каталог LDAP индексировать несколько проще, чем базу данных, поскольку предполагаемое соотношение чтения/записи намного выше, обычно 9 к 1 или более по сравнению с 3 к 1 для СУБД, поэтому затраты на индексацию при вставках и обновлениях несколько меньше.

Читайте также:  Создать задание cron linux

Индексы лучше создавать перед первоначальной загрузкой каталога с помощью команды ldapadd, тогда при первоначальной загрузке соответствующие индексы будут созданы автоматически.

Но, если нам требуется внести изменения в настройки индексов после первоначальной загрузки, необходимо произвести переиндексирование (повторное создание индексов) каталога с помощью команды slapindex. При этом, естественно, необходимо предварительно остановить slapd.

Для добавления индексов используется команда ldapmodify, которая позволяет добавить index к вашему базе вашего каталога mdb,cn=config (для dc=domain,dc=com).

Создадим файл с именем uid_index.ldif и добавим в него следующее содержимое:

dn: olcDatabase=mdb,cn=config add: olcDbIndex olcDbIndex: mail eq,sub

После этого нам необходимо выполнить следующую команду:

$ sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f uid_index.ldif

modifying entry «olcDatabase=mdb,cn=config»

Убедиться в том, что изменения применились можно с помощью следующей команды:

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \

cn=config '(olcDatabase=mdb)' olcDbIndex dn: olcDatabase=mdb,cn=config olcDbIndex: objectClass eq olcDbIndex: cn,uid eq olcDbIndex: uidNumber,gidNumber eq olcDbIndex: member,memberUid eq olcDbIndex: mail eq,sub

Журналирование

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

Для записи логов slapd в журналы операционной системы, в конфигурационный файл syslog/rsyslog необходимо добавить правило:

А для настройки журналирования в самом slapd необходимо создать файл logging.ldif к примеру следующего содержания:

dn: cn=config changetype: modify replace: olcLogLevel olcLogLevel: stats

В последней строке у нас указан уровень журналирования. В slapd доступны следующие уровни:

1 (0x1 trace) отслеживание вызовов функций 2 (0x2 packets) отладка обработки пакетов 4 (0x4 args) усиленная отладка (аргументы функций) 8 (0x8 conns) управление соединениями 16 (0x10 BER) вывод посылки и приёма пакетов 32 (0x20 filter) обработка поисковых фильтров 64 (0x40 config) обработка конфигурационного файла 128 (0x80 ACL) обработка списков контроля доступа 256 (0x100 stats) статистика соединений/операций/результатов 512 (0x200 stats2) статистика посылки записей журнала 1024 (0x400 shell) вывод взаимодействия с механизмами манипуляции данными shell 2048 (0x800 parse) вывод отладочной информации разбора записей 16384 (0x4000 sync) вывод отладочной информации репликации LDAPSync 32768 (0x8000 none) только сообщения, выводимые независимо от заданного уровня журналирования

В примере мы используем уровень журналирования stats для сбора информации о соединениях и операциях.

Заключение

В этой статье мы рассмотрели моменты, связанные с аутентификацией, настройкой индексов в LDAP и настройкой журналирования в slapd.

Напоследок хочу порекомендовать вам бесплатный вебинар, в рамках которого поговорим про процессы в Linux. Мы разберем, что такое процесс и программа, а также познакомимся с системными вызовами для создания процесса.

Источник

Оцените статью
Adblock
detector