Уровень сложности: средний Ума М. Чандолу, разработчик программного обеспечения, IBM Рави К. Коввила, разработчик программного обеспечения, IBM
29.01.2008 В данной статье рассмотрены вопросы, связанные с диагностикой и устранением проблем в IBM Directory Server. Эта статья может использоваться как краткий справочник по настройкам IBM Directory Server в операционной системе AIX(R).
Введение
Управление пользователями является важной частью распределенных вычислений сред. Оно обеспечивает однозначную идентификацию пользователя и проверку его прав доступа, необходимые для организации доступа к системе. Для обеспечения централизованного управления безопасностью многие пользователи используют IBM Directory Server. Для достижения оптимальной конфигурации IBM Directory Server с защитой "от дурака" и для его дальнейшего использования необходимо понимать основные концепции протокола Lightweight Directory Access Protocol (LDAP) и управление его конфигурацией.
Эта статья предоставляет обзор протокола LDAP и его архитектуры. В ней также рассмотрены основы настройки и управления LDAP под управлением AIX. Основное внимание в статье уделено различным типам проблем, возникающих при конфигурировании LDAP-сервера и клиента. Рекомендации, высказанные в разделе, посвященном поиску неисправностей, будут полезными для системных администраторов AIX, специалистов технической поддержки и разработчиков программного обеспечения для этой операционной системы.
Краткий обзор архитектуры LDAP
LDAP - это стандартный протокол для осуществления доступа к серверам каталогов. IBM Directory Server должен быть настроен так, чтобы поддерживать аутентификацию пользователей на LDAP способом, определенным в RFC 2307.
LDAP оптимизирован для чтения, просмотра и поиска в каталогах и специализированных базах данных, хранящих информацию о пользователях. Множество компьютерных сред были разработаны для того, чтобы сделать сетевые ресурсы доступными для пользователей, работающих где-угодно - на домашних компьютерах, компьютерах в публичных местах и т.д. IBM Directory Server может быть использован для достижения этих целей.
Рисунок 1 показывает схему LDAP.
Рисунок 1. Схема LDAP
LDAP является одновременно стандартным протоколом и специализированной базой данных для хранения информации о пользователях. Когда пользователи пытаются войти в систему, LDAP-клиент посылает запрос к LDAP-серверу для получения пользовательской информации из централизованной базы данных. DB2® - это база данных, используемая для хранения информации о группах и пользователях. База данных LDAP хранит и отыскивает по необходимости информацию, основываясь на иерархической структуре записей, каждая из которых имеет собственное имя, тип и атрибуты. Атрибуты (или свойства) определяют допустимые значения для каждой записи в базе данных. База данных LDAP может хранить и обрабатывать записи для множества пользователей.
Загрузочный модуль безопасности LDAP впервые появился в AIX 4.3. Этот загрузочный модуль обеспечивал аутентификацию пользователей и выполнял функции по централизованному управлению пользователями и группами при помощи IBM SecureWay® Directory. Учетная запись пользователя на LDAP-сервере может быть настроена так, чтобы пользователь мог загружаться в LDAP-клиенте на компьютерах, где он даже не зарегистрирован. Загрузочный модуль LDAP полностью интегрирован с операционной системой AIX.
Конфигурирование IBM Directory Server
IBM Directory Server под управлением ОС AIX может быть сконфигурирован при помощи следующих средств:
- инструментальное средство с интерфейсом командной строки
ldapcfg;
- аналог
ldapcfg с графическим интерфейсом - ldapxcfg;
- команда
mksecldap.
Необходимы следующие пакеты файлов для конфигурирования IBM Directory Server:
- пакеты файлов ldap.server
- DB2 - база данных, которая требуется для работы с IBM Directory Server
Предварительные условия
- Система должна работать в 64-битном режиме ядра. Для определения режима ядра используется команда
bootinfo -K.
- AIX требует 64-битное оборудование. Получить информацию об оборудовании можно с помощью команды
bootinfo -y
- Требуется минимум оперативной памяти 512MB (рекомендуется иметь не менее 1GB).
- IBM Directory Server требует по меньшей мере 80MB свободного пространства на диске, где будет создана база данных DB2.
- Если планируется установить InstallShield GUI, то нужно по крайней мере 100MB свободного пространства в каталоге /var и по меньшей мере свободных 400MB в каталоге /tmp.
AIX предоставляет команду mksecldap для настройки серверов IBM Directory и клиентов, которые будут работать с этими серверами:
Команда mksecldap выполняет следующие действия при осуществлении настройки нового сервера:
- Создает базу данных с именем ldapdb2.
- Создает дерево AIX DN (суффикс) для каждого пользователя или группы пользователей ОС AIX.
- Экспортирует пользователей и группы из базы данных локального хоста в базу данных LDAP.
- Устанавливает имя и пароль администратора LDAP-сервера.
- Предоставляет в качестве дополнительной возможности серверу использовать протокол Secure Sockets Layer (SSL).
- Устанавливает плагин /usr/ccs/lib/libsecldapaudit для аудита LDAP-сервера.
- Запускает LDAP-сервер после того, как все действия, описанные выше, выполнены.
- Добавляет запись LDAP-сервера в файл /etc/inittab для автоматического запуска после перезагрузки системы.
mksecldap -s -a cn=admin -p passwd -S rfc2307aix
|
Вся установочная информация хранится в файле /etc/ibmslapd.conf.
Конфигурация клиентской системы AIX для IBM Directory Server
Пакет файлов ldap.client содержит библиотеки клиента IBM Directory, заголовочные файлы и утилиты. С помощью команды mksecldap можно настроить клиент для операционной системы AIX для совместного использования с IBM Directory Server, как показано далее:
mksecldap -c -h <LDAP Server name> -a cn=admin -p adminpwd -S rfc2307aix
|
У системного администратора должен быть логин и пароль администратора IBM Directory для конфигурирования AIX-клиента (клиентской операционной системы). Как только AIX-клиент настроен, демон-процесс secldapclntd начинает выполняться. Cразу после того, как AIX-клиент будет настроен для работы с IBM Directory Server, нужно изменить параметр SYSTEM в файле /etc/security/user на LDAP OR compat или compat or LDAP для осуществления аутентификации пользователей в клиентской AIX.
Файл /usr/lib/security/methods.cfg содержит определение загрузочного модуля. Команда mksecldap добавляет следующий фрагмент кода для запуска в работу загрузочного модуля LDAP при настройке клиентской операционной системы.
LDAP:
program = /usr/lib/security/LDAP
program_64 = /usr/lib/security/LDAP64
|
Файл /etc/security/ldap/ldap.cfg, находящийся на клиентском компьютере, содержит конфигурационную информацию для клиентского демон-процесса secldapclntd. Этот конфигурационный файл содержит информацию о названии IBM Directory Server, binddn, и пароле. Файл автоматически обновляется командой mksecldap во время установки LDAP-клиента.
Параметр auth_type в файле /etc/security/ldap/ldap.cfg определяет, где нужно проводить аутентификацию пользователя. Если параметр auth_type равняется UNIX_AUTH, тогда пользователь проходит аутентификацию в клиентской операционной системе. Если значение параметра равняется ldap_auth, тогда пользователь проходит аутентификацию на IBM Directory Server.
Настройка IBM Directory Server для использования SSL
IBM Directory Server и клиент IBM Directory можно сконфигурировать с учетом использования SSL. Это позволяет избежать передачи данных в виде открытого текста через сеть. SSL шифрует информацию и затем посылает ее через сеть. IBM Directory Server при помощи SSL шифрует информацию о пароле пользователя и затем посылает ее через сеть.
Необходимы следующие пакеты файлов для осуществления шифрования на стороне клиента и сервера:
- ldap.max_crypto_server;
- ldap.max_crypto_client.
Для начальной установки сервера нужно выполнить следующую команду:
mksecldap -s -a cn=admin -p pwd -S rfc2307aix -k usr/ldap/etc/mykey.kdb -w keypwd
|
где mykey.kdb - база данных с ключами, а keypwd является паролем к ней.
Для серверов, которые уже настроены и работают, следует запустить команду:
mksecldap -s -a cn=admin -p pwd -S rfc2307aix -n NONE -k /usr/ldap/etc/mykey.kdb -w keypwd
|
Для начальной установки клиента нужно выполнить команду:
mksecldap -c -h <ldapserver name> -a cn=admin -p adminpwd -k /usr/ldap/key.kdb -w keypwd
|
Часто используемые команды на AIX LDAP-клиенте представлены в таблице 1 ниже.
Таблица 1. Часто используемые команды
| /usr/sbin/start-secldapclntd | Запускает secldapclntd; аналогичного результата можно добиться введя в командную строку secldapclntd
|
|---|
| /usr/sbin/stop-secldapclntd | Останавливает демон secldapclntd
|
|---|
| /usr/sbin/restart-secldapclntd | Останавливает выполняемый в данный момент демон secldapclntd и перезапускает его. Если secldapclntd не выполняется, действие этой команды аналогично действию start-secldapclntd
|
|---|
| /usr/sbin/ls-secldapclntd | Выводит статус демона secldapclntd, включая сервер, к которому было совершено обращение, номер порта и т.д. |
|---|
| /usr/sbin/flush-secldapclntd | Очищает кэш демона secldapclntd
|
|---|
| mkuser -R LDAP <username> | Создает пользователей от LDAP-клиента |
|---|
Возможные проблемы при использовании LDAP
Этот раздел описывает несколько типичных проблем, для каждой из которых приведено рекомендуемое решение.
Проблема: LDAP-сервер запускается только в режиме конфигурации...
LDAP-сервер запускается только в конфигурационном режиме, а его перезапуск или конфигурирование возвращают следующие ошибки: "Failed to initialize be_config. Error encountered. Server starting in configuration only mode".
Решение:
- Нужно проверить, что сервер запускается только в режиме конфигурации. Для этого используются следующее команды или анализируется файл /var/ldap/ibmslapd.log.
# ldapsearch -h teak01.upt -b "" -s base objectclass=* | grep config
ibm-slapdisconfigurationmode=TRUE
|
- Иногда лицензионный ключ DB2 зарегистрирован некорректно. Это одна из главных причин рассматриваемой нами сейчас проблемы. Для того чтобы зарегистрировать лицензионный ключ правильно и устранить проблему, нужно:
- Войти под администраторской учетной записью.
- Зарегистрировать лицензионный ключ базы данных DB2:
#/usr/opt/db2_08_01/adm /db2licm -a /usr/ldap/etc/ldap-custom-db2ese.lic
#/usr/opt/db2_08_01/adm /db2licm -a /usr/ldap/etc/db2wsue.lic
|
- Если шаги выше не решили проблему, следует восстановить настройки по умолчанию для LDAP-сервера и экспортировать
LDAP_DBG=1, прежде чем заново настраивать LDAP-сервер. Файлы /var/ldap/dbg.out, /var/ldap/dbg.log и /var/ldap/ibmslapd.log должны содержать необходимую диагностическую информацию для отладки этой проблемы в дальнейшем.
Проблема: невозможно войти в систему зарегистрированным в LDAP пользователем
Невозможно войти в систему зарегистрированным в LDAP пользователем после успешной настройки IBM Directory Server.
Решение:
Скорей всего, возникла одна из следующих ошибок, которые могут создать неправильное представление о существовании какого-либо конкретного пользователя в базе данных LDAP.
- При конфигурации LDAP-клиента использовалась команда
mksecldap -u <userlist> с разделенным запятыми списком имен пользователей или ALL для выбора всех пользователей на данном LDAP-клиенте. Это означает, что параметры регистрации пользователей передаются в LDAP.
mksecldap -c -h monster -a cn=admin -p adminpwd -u user1,user2
|
Флаг -u гарантирует что пользователи user1 и user2 могут работать на LDAP-клиенте, но этот флаг не добавляет никаких пользователей в базу данных LDAP-сервера. Вход в систему будет успешным для пользователей, если они были добавлены в базу данных LDAP-сервера при помощи команды mkuser -R LDAP <user name> или если они были добавлены при выполнении конфигурации сервера, как показано ниже:
mksecldap -s -a cn=admin -p adminpwd -S rfc2307aix
|
Все локальные пользователи будут добавлены в базу данных LDAP-сервера в этом случае. Поскольку user1 и user2 локальные пользователи, они будут автоматически добавлены в базу данных LDAP-сервера.
- Нужно убедиться, что LDAP-сервер запущен. Должны выполняться процессы
ibmdiradm и ibmslapd:
# ps -eaf |grep ibm
ldap 278760 1 0 Jan 14 - 0:08 /usr/ldap//bin/ibmdiradm -l
ldap 434392 1 2 Jan 14 - 339:44 ibmslapd -f/etc/ibmslapd.conf
|
- Нужно убедиться, что LDAP-клиент запущен. Должен выполняться процесс
secldapclntd:
# ps -eaf |grep -i secldap
root 393408 1 0 Jan 14 - 0:15 /usr/sbin/secldapclntd
root 725062 692358 0 03:20:38 pts/0 0:00 grep -i secldap
|
- Нужно проверить, существует ли нужный нам пользователь на сервере:
# lsuser -R LDAP usr_3112
usr_3112 id=3112 pgrp=gp_3112 groups=gp_3112,gp_3118,gp_3124 home=/tmp shell=/usr/bin/ksh
login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups=
tpath=nosak
ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=LDAP
SYSTEM=KRB5LDAP OR compat logintimes= loginretries=0 pwdwarntime=0
account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0
mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= fsize=-1
cpu=-1 data=262144 stack=65536 core=2097151 rss=65536 nofiles=2000 roles=
|
- Нужно проверить параметры регистрации пользователя и атрибут
SYSTEM. Они должны быть заданы на LDAP-клиенте.
lsuser -a registry SYSTEM username
|
- Нужно проверить, был ли добавлен следующий фрагмент кода в файл /usr/lib/security/methods.cfg:
# grep -p LDAP /usr/lib/security/methods.cfg
LDAP:
program = /usr/lib/security/LDAP
program_64 =/usr/lib/security/LDAP64
|
Проблема: нужно перенести всех пользователей AIX на LDAP-сервер
Что необходимо выполнить, чтобы всех пользователей AIX зарегистрировать на LDAP-сервере? Позволяет ли применение
mksecldap во время конфигурации LDAP-сервера перенести на него определенную группу пользователей AIX?
Решение:
Нет. По умолчанию команда mksecldap принуждает выполнять авторизацию на LDAP-сервере всех пользователей AIX.
Если не нужно, чтобы все пользователи AIX проходили LDAP-авторизацию, то следует использовать команду mksecldap с опцией -u NONE.
#mksecldap -s -a cn=admin -p adminpwd -s rfc2307aix -u NONE
|
Проблема: mkuser возвращает сообщение об ошибке
Команда mkuser может возвращать следующее сообщение об ошибке:
# mkuser -R LDAP test
3004-686 Group "staff" does not exist.
3004-703 Check "/usr/lib/security/mkuser.default" file.
|
Решение:
Если LDAP-клиент и NIS-клиент сконфигурированы на одном компьютере, тогда невозможно будет осуществить добавление новых пользователей к LDAP-клиенту. Потому в этом случае будет выдано сообщение об ошибке. Для исправления этой ошибки нужно установить APAR IY90556.
Проблема: как с помощью mksecldap выполнить LDAP-авторизацию определенной группы пользователей AIX?
Можно ли, пользуясь mksecldap во время конфигурации сервера, выполнять LDAP-авторизацию определенной группе пользователей AIX?
Решение:
Нет. mksecldap не позволяет выполнять LDAP-авторизацию определенной группе пользователей AIX. Однако существует выход - запустить команду mksecldap пока без указания пользователей, которые должны проходить LDAP-авторизацию, и создать требуемых пользователей командой mkuser -R LDAP позже.
Отметим, что флаг -u во время выполнения конфигурирования сервера поддерживает только аргумент NONE.
mksecldap -s -a cn=admin -p adminpwd -S rfc2307aix -u user1,user2
|
В этом случае все локальные пользователи будут проходить LDAP-авторизацию.
Проблема: проблемы, которые могут возникнуть с конфигурацией LDAP-клиента, если конфигурация сервера выполнялась с использованием опции -u NONE
Эта проблема возникает в трех случаях.
Решение
Проблема 1:
/usr/sbin/mksecldap -c -h batonrouge05.upt.austin.ibm.com -a cn=admin -p passw0rd
|
"Cannot find users from all base DN client setup failed."
При установке LDAP-клиента выполняется проверка командой ldapsearch чтобы узнать, добавлены ли уже какие-либо пользователи в LDAP-сервер. Конфигурация прекращается, если на LDAP-сервере не было обнаружено пользователей. По крайней мере один пользователь должен быть добавлен в LDAP-сервер чтобы исключить эту проблему.
Добавим пользователя к LDAP DIT (Directry Information Tree) при помощи команды ldapadd.
dn: ou=People,cn=admin
ou: People
objectClass: organizationalUnit
dn: uid=testuser,ou=People,cn=admin
uid: testuser
objectClass: aixauxaccount
objectClass: shadowaccount
objectClass: posixaccount
objectClass: account
objectClass: ibm-securityidentities
objectclass: top
cn: testuser
passwordchar: *
uidnumber: 203
gidnumber: 203
homedirectory: /home/testuser
loginshell: /usr/bin/ksh
isadministrator: false
|
Проблема 2:
mksecldap -c -h batonrouge05.upt.austin.ibm.com -a cn=admin -p passw0rd
|
"Cannot find the group base DN from the LDAP server. Client setup failed."
Отличительное имя группы пользователей должно быть отражено в LDAP DIT прежде, чем будет осуществлена конфигурация LDAP-клиента DN. Ошибка возникает из-за несуществующего отличительного имени группы DN. Необходимо добавить группу, чтобы решить эту проблему.
Следующий файл ldif должен быть добавлен в LDAP DIT при помощи команды ldapadd.
dn: ou=Groups,cn=admin
ou: Groups
objectClass: organizationalUnit
dn: cn=testgrp,ou=Groups,cn=admin
cn: testgrp
objectclass: aixauxgroup
objectclass: posixgroup
objectclass: top
gidnumber: 203
memberuid: testuser
isadministrator: false
|
Проблема 3:
Создание пользователя при помощи mkuser на сервере, сконфигурированном при помощи -u NONE и с правильно настроенным LDAP-клиентом.
# mkuser -R LDAP id=1000 pgrp=grp_2000 groups="grp_2006,grp_2012" usr_1000
Group "staff" does not exist.
Check "/usr/lib/security/mkuser.default" file.
|
Команда mkuser проверяет уже существующих пользователей и группы, даже если не собирается их использовать. Выполнение этой команды не удалось, так как группы, названной staff, не существует.
Все проблемы, рассмотренные в этом разделе, можно решить в один прием, если добавить следующий файл к ldif к LDAP.
dn: ou=Groups,cn=admin
ou: Groups
objectClass: organizationalUnit
dn: cn=staff,ou=Groups,cn=admin
cn: staff
objectclass: aixauxgroup
objectclass: posixgroup
objectclass: top
gidnumber: 203
memberuid: testuser
isadministrator: false
dn: ou=People,cn=admin
ou: People
objectClass: organizationalUnit
dn: uid=testuser,ou=People,cn=admin
uid: testuser
objectClass: aixauxaccount
objectClass: shadowaccount
objectClass: posixaccount
objectClass: account
objectClass: ibm-securityidentities
objectclass: top
cn: testuser
passwordchar: *
uidnumber: 203
gidnumber: 203
homedirectory: /home/testuser
loginshell: /usr/bin/ksh
isadministrator: false
|
Файл ldif можно добавить к LDAP-серверу как показано ниже:
#/usr/bin/ldapadd -D $ADMIN_DN -w $ADMIN_DN_PASSWD -f <ldif file>
|
Отличительное имя сконфигурированного LDAP-сервера должно быть использовано в ldif-файле. Иначе, файл ldif не будет корректно добавлен.
Ресурсы Научиться
Получить продукты и технологии
-
IBM trial software: ознакомительные версии программного обеспечения для разработчика, которые можно загрузить со страницы developerWorks.
Обсудить
Об авторах  | 
|  |
Ума М. Чандолу (Uma M. Chandolu) - разработчик AIX и специалист поддержки подсистемы безопасности AIX из IBM India Systems and Technology Lab. Он два года занимался практическими вопросами безопасности AIX. Ума специализируется на безопасности AIX и является экспертом по администрированию AIX и программированию ее подсистемы безопасности. С ним можно связаться по адресу электронной почты uchandol@in.ibm.com. |
 | 
|  |
Рави К. Коввила (Ravi K. Kovvila) - лидер группы тестировщиков программного обеспечения для AIX и UNIX в IBM India Systems and Technology Lab. Он сотрудничает с IBM уже семь лет. К его последним проектам относятся обеспечение тестирования AIX, ее тестирование, написание заказных интерфейсов, проектирование процедур тестирования, проверки и инициативы по улучшению технической живучести. Его специализация - обеспечение безопасности AIX (LDAP и Kerberos), NFS, NIS, и WebSphere®MQ. С ним можно связаться по следующему адресу электронной почты rkovvila@in.ibm.com. |
Выскажите мнение об этой странице
|