Настройка и использование LDAP-сервера в операционной системе AIX

В данной статье рассмотрены вопросы, связанные с диагностикой и устранением проблем в IBM Directory Server. Эта статья может использоваться как краткий справочник по настройкам IBM Directory Server в операционной системе AIX(R).

Ума М. Чандолу, разработчик программного обеспечения, IBM

фотография Ума ЧандолуУма М. Чандолу (Uma M. Chandolu) - разработчик AIX и специалист поддержки подсистемы безопасности AIX из IBM India Systems and Technology Lab. Он два года занимался практическими вопросами безопасности AIX. Ума специализируется на безопасности AIX и является экспертом по администрированию AIX и программированию ее подсистемы безопасности. С ним можно связаться по адресу электронной почты uchandol@in.ibm.com.



Рави К. Коввила, разработчик программного обеспечения, IBM

Фотография Рави КовиллыРави К. Коввила (Ravi K. Kovvila) - лидер группы тестировщиков программного обеспечения для AIX и UNIX в IBM India Systems and Technology Lab. Он сотрудничает с IBM уже семь лет. К его последним проектам относятся обеспечение тестирования AIX, ее тестирование, написание заказных интерфейсов, проектирование процедур тестирования, проверки и инициативы по улучшению технической живучести. Его специализация - обеспечение безопасности AIX (LDAP и Kerberos), NFS, NIS, и WebSphere®MQ. С ним можно связаться по следующему адресу электронной почты rkovvila@in.ibm.com.



29.01.2008

Введение

Управление пользователями является важной частью распределенных вычислений сред. Оно обеспечивает однозначную идентификацию пользователя и проверку его прав доступа, необходимые для организации доступа к системе. Для обеспечения централизованного управления безопасностью многие пользователи используют 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
Рисунок 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 выполняет следующие действия при осуществлении настройки нового сервера:

  1. Создает базу данных с именем ldapdb2.
  2. Создает дерево AIX DN (суффикс) для каждого пользователя или группы пользователей ОС AIX.
  3. Экспортирует пользователей и группы из базы данных локального хоста в базу данных LDAP.
  4. Устанавливает имя и пароль администратора LDAP-сервера.
  5. Предоставляет в качестве дополнительной возможности серверу использовать протокол Secure Sockets Layer (SSL).
  6. Устанавливает плагин /usr/ccs/lib/libsecldapaudit для аудита LDAP-сервера.
  7. Запускает LDAP-сервер после того, как все действия, описанные выше, выполнены.
  8. Добавляет запись 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".

Решение:


  1. Нужно проверить, что сервер запускается только в режиме конфигурации. Для этого используются следующее команды или анализируется файл /var/ldap/ibmslapd.log.
    # ldapsearch -h teak01.upt -b "" -s base objectclass=* | grep config
    ibm-slapdisconfigurationmode=TRUE
  2. Иногда лицензионный ключ DB2 зарегистрирован некорректно. Это одна из главных причин рассматриваемой нами сейчас проблемы. Для того чтобы зарегистрировать лицензионный ключ правильно и устранить проблему, нужно:
    1. Войти под администраторской учетной записью.
    2. Зарегистрировать лицензионный ключ базы данных 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
  3. Если шаги выше не решили проблему, следует восстановить настройки по умолчанию для LDAP-сервера и экспортировать LDAP_DBG=1, прежде чем заново настраивать LDAP-сервер. Файлы /var/ldap/dbg.out, /var/ldap/dbg.log и /var/ldap/ibmslapd.log должны содержать необходимую диагностическую информацию для отладки этой проблемы в дальнейшем.

Проблема: невозможно войти в систему зарегистрированным в LDAP пользователем

Невозможно войти в систему зарегистрированным в LDAP пользователем после успешной настройки IBM Directory Server.

Решение:
Скорей всего, возникла одна из следующих ошибок, которые могут создать неправильное представление о существовании какого-либо конкретного пользователя в базе данных LDAP.

  1. При конфигурации 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-сервера.

  2. Нужно убедиться, что 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

  3. Нужно убедиться, что 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

  4. Нужно проверить, существует ли нужный нам пользователь на сервере:

    # 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=

  5. Нужно проверить параметры регистрации пользователя и атрибут SYSTEM. Они должны быть заданы на LDAP-клиенте.

    lsuser -a registry SYSTEM username

  6. Нужно проверить, был ли добавлен следующий фрагмент кода в файл /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.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=284793
ArticleTitle=Настройка и использование LDAP-сервера в операционной системе AIX
publish-date=01292008