Как установить LDAP сервер и его клиентов

Сервер LDAP (Lightweight Directory Access Protocol) позволяет централизовать управление пользователями, группами, доменами, аутентификацией, хранением инфомации.

Используя LDAP в локальной сети, вы можете позволить своим пользователям подключаться и проходить аутентификацию на любом компьютере, входящем в вашу локальную сеть.

Это руководство разделено на 2 части. В первой части я опишу как установить, сконфигурировать LDAP сервер, добавить нескольких пользователей и групп, во второй - мы настроим Linux-клиента для аутентификации через LDAP, если пользователь не существует на локальном компьютере.

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

доменом debuntu.local. Сервер работает под Debian 4 (тестируемый, но почти стабильный) и клиентская машина - под Ubuntu Fiesty 7.04

1. LDAP сервер

1.1 Установка

Чтобы наш LDAP сервер заработал, мы должны установить несколько пакетов

# apt-get install slapd ldap-utils migrationtools

Ответьте на все заданные при их установке вопросы и затем переконфигурируйте slapd, чтобы заставить dpkg задать нам вопросов немного больше.

#dpkg-reconfigure slapd

#пропустить настройку сервера LDAP? ... Нет

Omit OpenLDAP server configuration? ... No

#Доменное имя DNS: ... debuntu.local

DNS domain name: ... debuntu.local

#Название организации: ... Всечтоугодно & Со

Name of your organization: ... Whatever & Co

#Пароль для admin: XXXXXX

Admin Password: XXXXX

#Подтвердите пароль: XXXXX

Confirm Password: XXXXX

#Настраивается пакет slapd (информация о формате базы ldap)

OK

#Выбор формата базы ldap

BDB

#Удалять базу данных при вычистке slapd? ... Нет

Do you want your database to be removed when slapd is purged? ... No

#Переместить старую базу данных? ... Да

Move old database? ... Yes

#Включить протокол LDAPv2? ... Нет

Allow LDAPv2 Protocol? ... No

Ну, теперь мы установили домен, а заодно и административную учетную запись "admin"

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

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

Если вы получили сообщение об ошибке, похожее на:

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

Чаще всего это означает, что ваш сервер не запущен. Введите команду:

# /etc/init.d/slapd start

чтобы запустить его.

Хорошо, теперь пришло время добавить наших пользователей и группы в базу LDAP.

1.2. Заполнение базы

Используя migrationtools мы получаем возможность быстро импортировать всех существующих пользователей и групп с локальной системы в LDAP.

#cd /usr/share/migrationtools/

Нам необходимо отредактировать дефолтовый конфигурационный файл 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

К сожалению, скрипт не создает ldap-узлы 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

Теперь у нас есть списки наших пользователей и групп, сконвертированные в LDAP формат ldif. Импортируем их в нашу 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 будет запрошен пароль администратора LDAP

-D используется для идентификации администратора

-f указывает файл, где ldapadd будет брать данные для добавления

Теперь наш сервер готов для идентификации наших пользователей. Идем дальше и настроим наших клиентов.

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

Каждый клиент нуждается в установке нескольких пакетов. Так что залогинимся на одном из наших клиентов и установим следующие пакеты:

#apt-get install libnss-ldap libpam-ldap nscd

#Универсальный Идентификатор Ресурса сервера LDAP:

ldapi:///debuntu.local

#Универсальное имя базы поиска

dc=debuntu,dc=local

#Использовать версию LDAP

3

#Учетная запись LDAP для root

cn=admin,dc=debuntu,dc=local

#Пароль учетной записи LDAP для root:

XXXX

#Создать учетную запись администратора для локальной базы: Да

Make local root database admin: yes

#База данных требует учетное имя: Нет

Database require logging in: No

#Учетная запись LDAP для root

LDAP account for root: cn=admin,dc=debuntu,dc=local

#Пароль учетной записи LDAP для root:

Root login password: XXXX

libnss-ldap позволит нам использовать ldap как сервер имен, lippam-ldap позволит pam аутентифицировать пользователей через LDAP и, наконец, nscd - это lookup-демон паролей, групп и хостов, который кеширует результаты, чтобы не запрашивать повторно 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, так чтобы система имела возможность переключаться с локальной аутентификации на аутентификацию ldap.

# vim /etc/nsswitch.conf

passwd: files ldap

group: files ldap

shadow: files ldap

С этими настройками при логине юзер сначала пытается залогиниться как локальный пользователь. Если совпадений имен не найдено, тогда запускается аутентификация с ldap сервера.

Теперь у вас есть возможность подключиться на любую клиентскую машину, используя логин и пароль любого пользователя, указанного в LDAP.

Эта статья не является полным руководством по использованию LDAP, но у

вас появилась возможность хотя бы с чего-нибудь начать :)

Обновлено: 12.03.2015