Настраиваем 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{0},cn=config # динамически загружаемый модуль  dn: cn=schema,cn=config # жестко прописанная схема на уровне системы  dn: cn={0}core,cn=schema,cn=config # жестко прописанная core схема   dn: cn={1}cosine,cn=schema,cn=config # cosine схема  dn: cn={2}nis,cn=schema,cn=config # NIS схема  dn: cn={3}inetorgperson,cn=schema,cn=config # InetOrgPerson схема  dn: olcDatabase={-1}frontend,cn=config # база Frontend, настройки по умолчанию для других баз  dn: olcDatabase={0}config,cn=config # база конфигурации slapd  dn: olcDatabase={1}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, которую можно использовать следующим образом:

$ ldapwhoami -x anonymous

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

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

Enter LDAP Password:

dn:cn=admin,dc=domain,dc=com

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

Индексы в LDAP

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

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

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

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

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

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

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

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

modifying entry "olcDatabase={1}mdb,cn=config"

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

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

cn=config '(olcDatabase={1}mdb)' olcDbIndex  dn: olcDatabase={1}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 необходимо добавить правило:

local4.* /var/log/ldap.log

А для настройки журналирования в самом 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. Мы разберем, что такое процесс и программа, а также познакомимся с системными вызовами для создания процесса.


ссылка на оригинал статьи https://habr.com/ru/companies/otus/articles/740368/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *