Содержание


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

Comments

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


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

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