LDAP — это облегченный протокол доступа к каталогам. LDAP — это глобальная служба каталогов, стандартный протокол, основанный на модели клиент-сервер и работающий на уровне выше стека TCP / IP. LDAP предоставляет средство для подключения, доступа, изменения и поиска в интернет-каталоге.
Серверы LDAP содержат информацию, которая организована в форме дерева каталогов. Клиенты просят сервер предоставить информацию или выполнить некоторую операцию с определенной информацией. Сервер отвечает клиенту, предоставляя требуемую информацию, если таковая имеется, или направляет клиента на другой сервер для действия с требуемой информацией. Затем клиент получает желаемую информацию с другого сервера.
Древовидная структура каталога поддерживается одинаковой на всех участвующих серверах. Это важная особенность службы каталогов LDAP. Следовательно, независимо от того, на какой сервер ссылается клиент, клиент всегда получает необходимую информацию без ошибок. Здесь мы используем LDAP для аутентификации IBM DB2 в качестве замены аутентификации операционной системы.
Существует два типа LDAP:
- прозрачный
- Вставной
Давайте посмотрим, как настроить прозрачный LDAP.
Настройка прозрачного LDAP
Чтобы начать с настройки прозрачного LDAP, вам необходимо настроить сервер LDAP.
Конфигурация сервера LDAP
Создайте файл SLAPD.conf, который содержит всю информацию о пользователях и объектах группы в LDAP. Когда вы устанавливаете сервер LDAP, по умолчанию он настроен с базовым деревом каталогов LDAP на вашем компьютере.
В приведенной ниже таблице указана конфигурация файла после модификации.
Текст, выделенный желтым цветом, означает следующее:
DBA user-id = «db2my1», group = «db1my1adm», password = «db2my1» Admin user-id = «my1adm», group = «dbmy1ctl».
# base dn: example.com dn: dc=example,dc=com dc: example o: example objectClass: organization objectClass: dcObject # pc box db dn: dc=db697,dc=example,dc=com dc: db697 o: db697 objectClass: organization objectClass: dcObject # # Group: dbadm # dn: cn=dbmy1adm,dc=db697,dc=example,dc=com cn: dbmy1adm objectClass: top objectClass: posixGroup gidNumber: 400 objectClass: groupOfNames member: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com memberUid: db2my1 # # User: db2 # dn: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com cn: db2my1 sn: db2my1 uid: db2my1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 400 gidNumber: 400 loginShell: /bin/csh homeDirectory: /db2/db2my1 # # Group: db ctl # dn: cn=dbmy1ctl,dc=db697,dc=example,dc=com cn: dbmy1ctl objectClass: top objectClass: posixGroup gidNumber: 404 objectClass: groupOfNames member: uid=my1adm,cn=dbmy1adm,dc=db697,dc=example,dc=com memberUid: my1adm # # User: adm # dn: uid=my1adm,cn=dbmy1ctl,dc=db697,dc=example,dc=com cn: my1adm sn: my1adm uid: my1adm objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 404 gidNumber: 404 loginShell: /bin/csh homeDirectory: /home/my1adm
Сохраните указанный выше файл с именем «/var/lib/slapd.conf», затем выполните этот файл, выполнив следующую команду, чтобы добавить эти значения на сервер LDAP. Это команда Linux; не команда db2.
ldapadd r- -D ‘cn=Manager,dc=example,dc=com” –W –f /var/lib/slapd.conf
После регистрации пользователей DB2 и группы DB2 на сервере LDAP войдите в систему для конкретного пользователя, где вы установили экземпляр и базу данных. Вам необходимо настроить клиент LDAP для подтверждения клиенту, где находится ваш сервер, будь то удаленный или локальный.
Конфигурация клиента LDAP
Конфигурация клиента LDAP сохраняется в файле ‘ldap.conf’. Для параметров конфигурации доступны два файла: один общий, а другой — конкретный. Вы должны найти первый в /etc/ldap.conf, а последний находится в /etc/openldap/ldap.conf.
Следующие данные доступны в общем файле конфигурации клиента LDAP
# File: /etc/ldap.conf # The file contains lots of more entries and many of them # are comments. You show only the interesting values for now host localhost base dc=example,dc=com ldap_version 3 pam_password crypt pam_filter objectclass=posixAccount nss_map_attribute uniqueMember member nss_base_passwd dc=example,dc=com nss_base_shadow dc=example,dc=com nss_base_group dc=example,dc=com
Вам необходимо изменить расположение информации о сервере и домене в соответствии с конфигурацией DB2. Если мы используем сервер в той же системе, то упомяните его как «localhost» в «host» и «base», вы можете настроить, что упомянуто в файле «SLAPD.conf» для сервера LDAP.
Сменная модель аутентификации (PAM) — это API для сервисов аутентификации. Это общий интерфейс для аутентификации LDAP с зашифрованным паролем и специальным объектом LDAP типа posixAccount. Все объекты LDAP этого типа представляют собой абстракцию учетной записи с атрибутами переносимого интерфейса операционной системы (POSIX).
Службы сетевой безопасности (NSS) — это набор библиотек для поддержки кроссплатформенной разработки клиентских и серверных приложений с включенной безопасностью. Это включает в себя библиотеки, такие как SSL, TLS, PKCS S / MIME и другие стандарты безопасности.
Вам нужно указать базовое DN для этого интерфейса и два дополнительных атрибута сопоставления. Файл конфигурации клиента OpenLDAP содержит следующие записи:
host localhost base dc=example,dc=com
До этого вы просто определяете хост подачи LDAP и базовый DN.
Проверка среды OpenLDAP
После того, как вы настроили сервер LDAP и клиент LDAP, проверьте оба соединения.
Шаг 1 : Проверьте, работает ли ваш локальный сервер LDAP. Используя команду ниже:
ps -ef | grep -i ldap
Эта команда должна перечислить демон LDAP, который представляет ваш сервер LDAP:
/usr/lib/openldap/slapd -h ldap:/// -u ldap -g ldap -o slp=on
Это означает, что ваш сервер LDAP работает и ожидает запроса от клиентов. Если для предыдущих команд такого процесса не существует, вы можете запустить сервер LDAP с помощью команды ‘rcldap’.
rcldap start
Когда сервер запускается, вы можете отслеживать это в файле ‘/ var / log / messages /, выполнив следующую команду.
tail –f /var/log/messages
Тестирование соединения с сервером LDAP с помощью ldapsearch
Команда ldapsearch открывает соединение с сервером LDAP, связывается с ним и выполняет поисковый запрос, который можно указать, используя специальные параметры ‘-x’, подключаются к вашему серверу LDAP с помощью простого механизма аутентификации, используя параметр –x вместо более сложный механизм, такой как простая аутентификация и уровень безопасности (SASL)
ldapsearch –x
Сервер LDAP должен ответить приведенным ниже ответом, содержащим все ваши записи LDAP в формате обмена данными LDAP (LDIF).
# extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (objectclass=*) # requesting: ALL # example.com dn: dc=example, dc=com dc: example o: example objectClass: organization objectClass: dcObject # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Конфигурирование DB2
После работы с сервером и клиентом LDAP вам необходимо сконфигурировать нашу базу данных DB2 для использования с LDAP. Давайте обсудим, как вы можете установить и настроить базу данных для использования нашей среды LDAP для процесса аутентификации пользователя DB2.
Конфигурирование подключаемых модулей взаимодействия DB2 и LDAP
IBM предоставляет бесплатный пакет с плагинами LDAP для DB2. Пакет DB2 включает три подключаемых модуля защиты DB2 для каждого из следующих компонентов:
- аутентификация на стороне сервера
- аутентификация на стороне клиента
- поиск группы
В зависимости от ваших требований вы можете использовать любой из трех плагинов или все из них. Этот плагин не поддерживает среды, в которых одни пользователи определены в LDAP, а другие — в операционных системах. Если вы решите использовать подключаемые модули LDAP, вам необходимо определить всех пользователей, связанных с базой данных на сервере LDAP. Тот же принцип применим к групповому плагину.
Вы должны решить, какие плагины являются обязательными для нашей системы. Подключаемые модули аутентификации клиента, используемые в сценариях, в которых идентификатор пользователя и проверка пароля, указанные в операторе CONNECT или ATTACH, происходят в клиентской системе. Поэтому параметры конфигурации менеджера баз данных SRVCON_AUTH или AUTHENTICATION должны быть установлены в значение CLIENT. Аутентификация клиента трудна для обеспечения безопасности и обычно не рекомендуется. Обычно рекомендуется подключаемый модуль сервера, поскольку он выполняет проверку идентификаторов пользователей и паролей на стороне сервера, если клиент выполняет инструкцию CONNECT или ATTACH, и это безопасный способ. Плагин сервера также предоставляет способ сопоставления идентификаторов пользователей LDAP с идентификаторами авторизации DB2.
Теперь вы можете начать установку и настройку подключаемых модулей защиты DB2, вам нужно подумать о необходимом дереве информации о каталогах для DB2. DB2 использует косвенную авторизацию, что означает, что пользователь принадлежит к группе, и этой группе предоставлено меньше полномочий. Вам нужно определить всех пользователей DB2 и группы DB2 в каталоге LDAP.
Образ
Файл LDIF openldap.ldif должен содержать следующий код:
# # LDAP root object # example.com # dn: dc=example, dc=com dc: example o: example objectClass: organization objectClass: dcObject # # db2 groups # dn: cn=dasadm1,dc=example,dc=com cn: dasadm1 objectClass: top objectClass: posixGroup gidNumber: 300 objectClass: groupOfNames member: uid=dasusr1,cn=dasadm1,dc=example,dc=com memberUid: dasusr1 dn: cn=db2grp1,dc=example,dc=com cn: db2grp1 objectClass: top objectClass: posixGroup gidNumber: 301 objectClass: groupOfNames member: uid=db2inst2,cn=db2grp1,dc=example,dc=com memberUid: db2inst2 dn: cn=db2fgrp1,dc=example,dc=com cn: db2fgrp1 objectClass: top objectClass: posixGroup gidNumber: 302 objectClass: groupOfNames member: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com memberUid: db2fenc1 # # db2 users # dn: uid=dasusr1, cn=dasadm1, dc=example,dc=com cn: dasusr1 sn: dasusr1 uid: dasusr1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 300 gidNumber: 300 loginShell: /bin/bash homeDirectory: /home/dasusr1 dn: uid=db2inst2,cn=db2grp1,dc=example,dc=com cn: db2inst2 sn: db2inst2 uid: db2inst2 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 301 gidNumber: 301 loginShell: /bin/bash homeDirectory: /home/db2inst2 dn: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com cn: db2fenc1 sn: db2fenc1 uid: db2fenc1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 303 gidNumber: 303 loginShell: /bin/bash homeDirectory: /home/db2fenc1
Создайте файл с именем ‘db2.ldif’ и вставьте в него приведенный выше пример. Используя этот файл, добавьте определенные структуры в каталог LDAP.
Чтобы добавить пользователей DB2 и группы DB2 в каталог LDAP, вам необходимо привязать пользователя как «rootdn» к серверу LDAP, чтобы получить точные привилегии.
Выполните следующие синтаксисы, чтобы заполнить информационный каталог LDAP всеми нашими объектами, определенными в файле LDIF ‘db2.ldif’
ldapadd –x –D “cn=Manager, dc=example,dc=com” –W –f <path>/db2.ldif
Выполните результат поиска с большим параметром
ldapsearch –x |more
Подготовка файловой системы для использования DB2
Создание экземпляра для нашего пользователя LDAP db2inst2. Для этого пользователя требуется домашний каталог с двумя пустыми файлами внутри домашнего каталога. Перед созданием нового экземпляра необходимо создать пользователя, который будет владельцем экземпляра.
После создания пользователя экземпляра вам нужно будет создать файлы «.profile» и «.login» в домашнем каталоге пользователя, которые будут изменены DB2. Чтобы создать этот файл в каталоге, выполните следующую команду:
mkdir /home/db2inst2 mkdir /home/db2inst2/.login mkdir /home/db2inst2/.profile
Вы зарегистрировали всех пользователей и группы, связанные с DB2, в каталоге LDAP, теперь вы можете создать экземпляр с именем ‘db2inst2’ с идентификатором владельца экземпляра ‘db2inst2’ и использовать идентификатор изолированного пользователя ‘db2fenc1’, который необходим для запуска пользователя определенные функции (UDF) или хранимые процедуры.
/opt/ibm/db2/V10.1/instance/db2icrt –u db2fenc1 db2inst2 DBI1070I Program db2icrt completed successfully.
Теперь проверьте домашний каталог экземпляра. Вы можете увидеть новый подкаталог с именем ‘sqllib’ и файлы .profile и .login, настроенные для использования DB2.
Настройка общедоступных модулей аутентификации для поддержки LDAP в DB2
Скопируйте необходимые плагины LDAP в соответствующий каталог DB2:
cp // /v10/IBMLDAPauthserver.so /home/db2inst2/sqllib/security /plugin/server/. cp / / /v10/IBMLDAPgroups.so /home/db2inst2/sqllib/security /plugin/group/.
После того, как плагины скопированы в указанный каталог, вы настроили вход в систему для владельца экземпляра DB2 и изменили конфигурацию менеджера баз данных, чтобы использовать эти плагины.
Su – db2inst2 db2inst2> db2 update dbm cfg using svrcon_pw_plugin IBMLDAPauthserver db2inst2> db2 update dbm cfg using group_plugin IBMLDAPgroups db2inst2> db2 update dbm cfg using authentication SERVER_ENCRYPT db2inst2> db2stop db2inst2> db2start
Эта модификация вступает в силу после запуска экземпляра DB2. После перезапуска экземпляра вам необходимо установить и настроить основной файл конфигурации DB2 LDAP с именем «IBMLDAPSecurity.ini», чтобы подключаемые модули DB2 работали с текущей конфигурацией LDAP.
Файл IBMLDAPSecurity.ini содержит
;----------------------------------------------------------- ; SERVER RELATED VALUES ;----------------------------------------------------------- ; Name of your LDAP server(s). ; This is a space separated list of LDAP server addresses, ; with an optional port number for each one: ; host1[:port] [host2:[port2] ... ] ; The default port number is 389, or 636 if SSL is enabled. LDAP_HOST = my.ldap.server ;----------------------------------------------------------- ; USER RELATED VALUES ;----------------------------------------------------------- rs ; LDAP object class used for use USER_OBJECTCLASS = posixAccount ; LDAP user attribute that represents the "userid" ; This attribute is combined with the USER_OBJECTCLASS and ; USER_BASEDN (if specified) to construct an LDAP search ; filter when a user issues a DB2 CONNECT statement with an ; unqualified userid. For example, using the default values ; in this configuration file, (db2 connect to MYDB user bob ; using bobpass) results in the following search filter: OrgPerson)(uid=bob) ; &(objectClass=inet USERID_ATTRIBUTE = uid representing the DB2 authorization ID ; LDAP user attribute, AUTHID_ATTRIBUTE = uid ;----------------------------------------------------------- ; GROUP RELATED VALUES ;----------------------------------------------------------- ps ; LDAP object class used for grou GROUP_OBJECTCLASS = groupOfNames at represents the name of the group ; LDAP group attribute th GROUPNAME_ATTRIBUTE = cn ; Determines the method used to find the group memberships ; for a user. Possible values are: ; SEARCH_BY_DN - Search for groups that list the user as ; a member. Membership is indicated by the ; group attribute defined as ; GROUP_LOOKUP_ATTRIBUTE. ; USER_ATTRIBUTE - A user's groups are listed as attributes ; of the user object itself. Search for the ; user attribute defined as TRIBUTE to get the groups. ; GROUP_LOOKUP_AT GROUP_LOOKUP_METHOD = SEARCH_BY_DN ; GROUP_LOOKUP_ATTRIBUTE ; Name of the attribute used to determine group membership, ; as described above. llGroups ; GROUP_LOOKUP_ATTRIBUTE = ibm-a GROUP_LOOKUP_ATTRIBUTE = member
Теперь найдите файл IBMLDAPSecurity.ini в каталоге текущего экземпляра. Скопируйте вышеуказанный пример содержимого в тот же.
Cp //db2_ldap_pkg/IBMLDAPSecurity.ini /home/db2inst2/sqllib/cfg/
Теперь вам нужно перезапустить ваш экземпляр DB2, используя два синтаксиса, приведенные ниже:
db2inst2> db2stop Db2inst2> db2start
На этом этапе, если вы попробуете команду ‘db2start’, вы получите сообщение об ошибке безопасности. Потому что конфигурация безопасности DB2 еще не настроена правильно для вашей среды LDAP.
Настройка обеих конфигураций
Держите под рукой имя LDAP_HOST, которое настраивается в файле slapd.conf.
Теперь отредактируйте файл IMBLDAPSecurity.ini и введите имя LDAP_HOST. Имя LDAP_HOST в обоих указанных файлах должно быть одинаковым.
Содержимое файла показано ниже:
;----------------------------------------------------------- ; SERVER RELATED VALUES ;----------------------------------------------------------- LDAP_HOST = localhost ;----------------------------------------------------------- ; USER RELATED VALUES ---------------------------- ;------------------------------- USER_OBJECTCLASS = posixAccount USER_BASEDN = dc=example,dc=com USERID_ATTRIBUTE = uid AUTHID_ATTRIBUTE = uid ;----------------------------------------------------------- ; GROUP RELATED VALUES ;----------------------------------------------------------- GROUP_OBJECTCLASS = groupOfNames GROUP_BASEDN = dc=example,dc=com GROUPNAME_ATTRIBUTE = cn GROUP_LOOKUP_METHOD = SEARCH_BY_DN GROUP_LOOKUP_ATTRIBUTE = member
После изменения этих значений LDAP немедленно вступает в силу, и ваша среда DB2 с LDAP работает отлично.
Вы можете выйти и снова войти в систему для пользователя ‘db2inst2’.
Теперь ваш экземпляр работает с каталогом LDAP.