LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — это сетевой протокол для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протоколаDAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.
Всякая запись в каталоге LDAP состоит из одного или нескольких атрибутов и обладает уникальным именем (DN — англ. Distinguished Name). Уникальное имя может выглядеть, например, следующим образом: «cn=Иван Петров, ou=Сотрудники, dc=example, dc=com». Уникальное имя состоит из одного или нескольких относительных уникальных имен (RDN — англ. Relative Distinguished Name), разделённых запятой. Относительное уникальное имя имеет вид ИмяАтрибута=значение. На одном уровне каталога не может существовать двух записей с одинаковыми относительными уникальными именами. В силу такой структуры уникального имени записи в каталоге LDAP можно легко представить в виде дерева.
Запись может состоять только из тех атрибутов, которые определены в описании класса записи (object class), которые, в свою очередь, объединены в схемы (schema). В схеме определено, одни атрибуты являются для данного класса обязательными, а другие — необязательными. Также схема определяет тип и правила сравнения атрибутов. Каждый атрибут записи может хранить несколько значений.
Из свободно распространяемых открытых реализаций наиболее известен сервер OpenLDAP, из проприетарных — поддержка протокола имеется в Active Directory — службе каталогов от компании Microsoft, предназначенной для централизации управления сетями Windows.
Active Directory — LDAP-совместимая реализация интеллектуальной службы каталогов корпорации Microsoft для операционных систем семейства Windows NT.
OpenLDAP Software — открытая реализация LDAP, разработанная проектом OpenLDAP Project.
В данной работе использовался сервер OpenLDAP.
Установка операционной системы Ubuntu не представляет сложностей и напоминает установку Windows.
Выбор часового пояса:
Ввод личных данных.
Нажимаем «Далее» и видим все текущие настройки установки. Нажимаем «Установить».
После установки перезагружаем компьютер.
Чтобы LDAP сервер заработал, мы должны установить несколько пакетов
# apt-get install slapd ldap-utils migrationtools
Необходимо ввести пароль администратора.
И затем переконфигурировать сервер
#dpkg-reconfigure slapd
задав следующие параметры:
#пропустить настройку сервера LDAP? ... Нет
#Доменное имя DNS: ... debuntu.local
#Название организации: ... Всечтоугодно & Со
#Пароль для admin: 123
#Подтвердите пароль: 123
#Выбор формата базы ldap BDB
#Удалять базу данных при вычистке slapd? ... Нет
#Переместить старую базу данных? ... Да
#Включить протокол LDAPv2? ... Нет
Теперь вы можете проверить, есть ли доступ к ldap-серверу:
$ ldapsearch -x -b dc=debuntu,dc=local
Если выдается ошибка скорее всего сервер не был запущен. Чтобы запустить нужно ввести команду:
# /etc/init.d/slapd start
Заполнение базы:
Используя 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
Cкрипт не создает 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 будет брать данные для добавления
Теперь сервер готов для идентификации пользователей. Идем дальше и настроим наших клиентов.
Каждый клиент нуждается в установке нескольких пакетов. Установим следующие пакеты:
#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: 123
#Создать учетную запись администратора для локальной базы: Да
#База данных требует учетное имя: Нет
#Учетная запись LDAP для root
#Пароль учетной записи LDAP для root: 123
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 сервера.
1. http://ubuntu.ru
2. http://ru.wikipedia.org
3. http://sudouser.com