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

LDAP (Lightweight Directory Access Protocol) - протокол, позволяющий централизовано управлять авторизацией пользователей, объединять пользователей в группы, управлять их учетными записями и персональными данными.
Используя LDAP вы можете позволить пользователю работать со своим аккаунтом и персональными данными из любой точки вашей локальной сети.

В этом руководстве предполагается, что LDAP-сервер имеет адрес 192.168.1.4, все машины в сети могут резолвить имя ldap, как адрес 192.168.1.4, LDAP-сервер управляет доменом debuntu.local

Сервер запущен на Debian 4 (stable с небольшими добавлениями из testing), клиент - Ubuntu 7.04 Feisty Fawn

Установка сервера
Перед настройкой LDAP-сервера необходимо установить несколько пакетов:

# apt-get install slapd ldap-utils migrationtools

Ответьте на вопросы, а затем запустите dpkg для настройки демона slapd. dpkg задаст вам еще несколько вопросов по желаемой конфигурации:

# dpkg-reconfigure slapd

Omit OpenLDAP server configuration? … No
DNS domain name: … debuntu.local
Name of your organization: … Whatever & Co
Admin Password: XXXXX
Confirm Password: XXXXX
OK
BDB
Do you want your database to be removed when slapd is purged? … No
Move old database? … Yes
Allow LDAPv2 Protocol? … No

Мы создали домен и администратора домена - пользователя admin

Теперь можно проверить доступ к ldap-серверу, написав:

$ ldapsearch -x -b dc=debuntu,dc=local

Если вы получаете ошибку, типа:

ldap_bind: Can’t contact LDAP server (-1)

то, скорее всего, просто не запущен LDAP-сервер. Запустите его командой

# /etc/init.d/slapd start

Если все в порядке, то можно переходить к добавлению групп и пользователей в базу данных LDAP.

Заполнение БД
Используя migrationtools вы можете импортировать всех ваших локальных пользователей в LDAP:

#cd /usr/share/migrationtools/

Теперь необходимо поправить следующие значения в дефолтном конфиге migrate_common.ph

$DEFAULT_MAIL_DOMAIN = “debuntu.local”;
$DEFAULT_BASE = “dc=debuntu,dc=local”;

Затем осуществляем экспорт:

# ./migrate_group.pl /etc/group ~/group.ldif
# ./migrate_passwd.pl /etc/passwd ~/passwd.ldif

К сожалению, скрипт не создаст узлы Group и People, поэтому необходимо сделать это вручную. Для этого создайте файл
~/people_group.ldif со следующим содержанием:

dn: ou=People, dc=debuntu, dc=local
ou: People
objectclass: organizationalUnit

dn: ou=Group, dc=debuntu, dc=local
ou: Group
objectclass: organizationalUnit

Теперь у вас есть файлы с описанием ваших пользователей и групп в формате ldif (формат БД LDAP). Импортируйте их в базу данных LDAP:

# cd
# ldapadd -x -W -D “cn=admin,dc=debuntu,dc=local” -f ~/people_group.ldif
# ldapadd -x -W -D “cn=admin,dc=debuntu,dc=local” -f ~/group.ldif
# ldapadd -x -W -D “cn=admin,dc=debuntu,dc=local” -f ~/passwd.ldif

где:

  • -x - не использовать sasl
  • -W - затребовать пароль
  • -D - действие от имени администратора
  • -f - файл, из которого ldapadd будет брать инофрмацию для импорта

Сервер готов к работе, можно перейти к настройке клиентов.

Настройка клиентов
У каждого клиента, использующего ваш сервер LDAP, должны быть установлены следующие пакеты:

#apt-get install libnss-ldap libpam-ldap nscd
LDAP Account for root: cn=admin,dc=debuntu,dc=local
Password: XXXX
Make local root database admin: yes
Database require logging in: No
Root login account: cn=admin,dc=debuntu,dc=local
Root login password: XXXX

libnss-ldap позволит использовать ldap как службу имен. libpam-ldap позволит использовать pam для авторизации пользователей через ldap, и наконец nscd это демон поиска паролей, групп и хостов, который кэширует результаты своей работы. Так что LDAP не приходится постоянно делать эту работу.

После установки отредактируйте следующие файлы:

#vi /etc/libnss-ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local

#vi /etc/libnss-ldap.secret
XXXXX

#vi /etc/pam_ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local

#vi /etc/pam_ldap.secret
XXXXX

Затем отредактируйте файлы конфигурации pam:

#vi /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
#if you want user homedir to be created on first login
#session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent

#vi /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

#vi /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5

#vi /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
session optional pam_foreground.so

Все, теперь осталось отредактировать nsswitch.conf для переключения авторизации с вашей локальной системы на сервер LDAP:

# vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap

С такими настройками система сначала будет пытаться авторизовать клиента локально. Если попытка не удастся, то система перейдет к авторизации через LDAP.

Это руководство не претендует на полноту, но азы настройки LDAP отсюда вполне можно почерпнуть :)

Оригинал: http://www.debuntu.org/ldap-server-and-linux-ldap-clients


 

Comments: 1

  1. serj April 6th, 2008 at 3:46 pm

    я не советовал бы так делать. дораздо ближе к идеалу: http://www.debian-administration.org/articles/585 , хотя там тоже есть некоторое количество огрехов и неточностей.

Add a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>