null

Настройка OpenLDAP в RedHat 6 со статической конфигурацией

Установка и настройка сервера

Для начала установим пакет OpenLDAP-сервера:
# yum install openldap-servers

Демон OpenLDAP называется slapd. Сконфигурируем его. Но сначала надо внести некоторые изменения в конфигурацию rsyslog и iptables:

В /etc/rsyslog.conf нужно добавить строчку:
local4.*                                /var/log/ldap

А в /etc/sysconfig/iptables такую:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT

После чего перезагрузить сервисы:
# /sbin/service rsyslog restart
# /sbin/service iptables restart


Начиная с RedHat 6 OpenLDAP использует т.н. dynamic config: вся конфигурация хранится в формате LDIF в директории /etc/openldap/slapd.d Удалим эту директорию, т.к. мы будем использовать текстовый конфигурационный файл:
# rm -r /etc/openldap/slapd.d

Создадим конфигурационный файл /etc/openldap/slapd.conf:
include   /etc/openldap/schema/core.schema
include   /etc/openldap/schema/cosine.schema
include   /etc/openldap/schema/inetorgperson.schema

include   /etc/openldap/schema/nis.schema

pidfile   /var/run/openldap/slapd.pid


access to attrs=userPassword
    by self write by anonymous auth
    by dn.base="cn=root,dc=tdc" write
    by dn.exact="cn=proxyuser,ou=role,dc=tdc" read
    by * read
access to *
    by self write
    by dn.base="cn=root,dc=tdc" write
    by * read


database bdb
suffix "dc=tdc"
rootdn "cn=root,dc=tdc"
rootpw {SSHA}tWdDKXtLj+HQma3STSZ8kjZNIE5+WxHg
directory /var/lib/ldap
loglevel 128


Директивы include нужны для подключения схем каталогов LDAP - без них slapd не сможет даже прочитать строчку dc=tdc. Директива suffix определяет суффикс всех DN, обслуживаемых данным сервером, как правило это сетевой домен в форме dc=example,dc=com (в моем случае это tdc). rootdn - это имя сущности, представляющей администратора сервера, ее же пароль задается директивой rootpw. Создать пароль для директивы rootpw можно с помощью команды slappasswd. И наконец, database и directory задают бек-энд базы данных и расположения файлов с данными. В нашем случае это  /var/lib/ldap - домашняя директория пользователя LDAP.

Теперь можно запустить slapd:
# /sbin/service slapd start

Создаем пользователей и группы

Теперь можно создать пользователя и группу для него. Но сначала потребуется описать некоторые каталоги ldap: корневой объект dc и организационные элементы (organizationalUnit) people для пользователей и groups для групп. Кроме этого нам потребуется специальная роль proxyuser для того, чтобы ее могли использовать клиенты pam_ldap. В данном примере мы создадим пользователя ogsadm и группу ogsusers. Опишем их записи в формате LDIF и сохраним в файле /tmp/ogsadm.ldap:

dn: dc=tdc
dc: tdc
description: Root LDAP entry for tdc
objectClass: dcObject
objectClass: organizationalUnit
ou: rootobject

dn: ou=people,dc=tdc
ou: people
description: All people in organisation
objectClass: organizationalUnit

dn: ou=groups,dc=tdc
ou: groups
description: All groups in organisation
objectClass: organizationalUnit

dn: cn=ogsusers,ou=groups,dc=tdc
cn: ogsusers
objectClass: top
objectClass: posixGroup
gidNumber: 300

# User account
dn: uid=ogsadm,ou=people,dc=tdc
cn: ogsadm
givenName: ogsadm
sn: OGS Administrator
uid: ogsadm
uidNumber: 300
gidNumber: 300
homeDirectory: /grid/ogsadm
mail: ogsadm@mt-mercury.tdc
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
userPassword: {CRYPT}*


dn: ou=role,dc=tdc
objectclass: organizationalUnit
ou: role

dn: cn=proxyuser,ou=role,dc=tdc
cn: proxyuser
objectclass: top
objectclass: person
objectclass: posixAccount
objectclass: shadowAccount
uid: proxyuser
uidNumber: 64001
gidNumber: 55
homeDirectory: /home/proxyuser
loginShell: /sbin/nologin
userPassword:
sn: proxyuser
description: Account for read-only access


После этого вызовем ldapadd чтобы добавить эти записи:
# ldapadd -D "cn=root,dc=tdc" -W -x -f /tmp/ogsadm.ldap

Если в процессе конфигурации возникла ошибка, то нужно использовать ldapmodify например так:
# ldapmodify -D "cn=root,dc=tdc" -W -x
Enter LDAP Password:
dn: uid=ogsadm,ou=people,dc=tdc
changetype: modify
replace: cn
cn: ogsadm
-
<CR>

modifying entry "uid=ogsadm,ou=people,dc=tdc"
^C

Также нужно установить пароль для  роли proxyuser:
# ldappasswd -D "cn=root,dc=tdc" -W -s proxypassword -x cn=proxyuser,ou=role,dc=tdc

Настройка клиентов

Установим openldap-клиент:
# yum install openldap-clients nss-pam-ldapd

В RedHat конфигурацию LDAP можно выполнить через графическую утилиту system-config-authentication или посредством команды authconfig. Во втором случае команда будет выглядеть следующим образом:
# authconfig --enableldap --enableldapauth --ldapserver=ldap://mt-mercury.tdc \
                        --ldapbasedn="dc=tdc" --update


Здесь ldapbasedn - путь до организационного элемента, хранящего пользовательские записи, а ldapserver - URL до ldap-сервера. Задать binddn и bindpw для pam_ldap нужно отдельно. Достаточно просто дописать следующие строчки в конфиг /etc/pam_ldap.conf:
binddn cn=proxyuser,ou=role,dc=tdc
bindpw proxypassword



После этого проверим, появился ли у нас пользователь ogsadm:
# getent passwd ogsadm
ogsadm:x:300:300:ogsadm:/grid/ogsadm:/bin/bash

Также можно попробовать залогиниться через ssh. Овсянка готова!

В моем случае uid пользователя был 300, тогда как RHEL считает, что пользовательские UID'ы начинаются с 500, что видно в файлах /etc/pam.d/system-auth и /etc/pam.d/password-auth

К списку статей

 

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

Основная сфера моей деятельности связана с поддержкой Solaris и оборудования Sun/Oracle, хотя в последнее время к ним прибавились технологии виртуализации (линейка Citrix Xen) и всякое разное от IBM - от xSeries до Power. Учусь на кафедре Вычислительной Техники НИУ ИТМО.

See you...out there!

http://www.facebook.com/profile.php?id=100001947776045
https://twitter.com/AnnoyingBugs