Configure ldap on linux

MNorin.com

Блог про Linux, Bash и другие информационные технологии

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

LDAP расшифровывается как Lightweight Directory Access Protocol, облегченный протокол доступа к каталогам. Это достаточно простой протокол, который позволяет производить операции аутентификации, поиска данных, сравнения, добавления, изменения и удаления записей. Сами каталоги используются для хранения структурированной информации. К сожалению, настройка LDAP для неподготовленного человека может быть сложна без предварительной подготовки. Поэтому давайте разберемся, что это такое и как это работает.

Установка OpenLDAP

Для всех современных дистрибутивов в официальных репозиториях есть уже готовые пакеты, поэтому установка обычно сводится к установке соответствующих пакетов:

apt-get install slapd ldap-utils

По зависимостям будет установлено еще несколько пакетов. При установке будет запрошен пароль пользователя admin. Задавайте любой, мы все равно будем после установки задавать собственную конфигурацию.

Если вам нужна самая свежая версия OpenLDAP, то исходные коды можно скачать на официальном сайте.

Схемы LDAP

По умолчанию OpenLDAP включает уже готовые схемы. Схемы — это структуры, определяющие объекты, используемые в системе каталогов. Схемы включают в себя классы объектов, у каждого класса есть определенный набор атрибутов. Каждая запись может относиться к одному или нескольким классам и, соответственно, иметь те наборы атрибутов, которые включены в соответствующие классы. В терминологии LDAP классы так и называются — ObjectClass. Вот несколько классов объектов, которые можно использовать:

top
organization
organizationalUnit
person
inetOrgPerson

При создании объекта вы указываете, к каким классам он относится и, исходя из этого, можно задавать соответствующие атрибуты. Примеры чуть ниже. Файлы схем хранятся в директории /etc/ldap/slapd.d/cn=config/cn=schema. В них хранятся описания классов объектов и атрибутов. Для просмотра объектов, которые используются в данный момент, используется команда

Она выводит содержимое базы данных объектов.

# slapcat dn: dc=nodomain objectClass: top objectClass: dcObject objectClass: organization o: nodomain dc: nodomain structuralObjectClass: organization entryUUID: 353459a6-590e-1034-99e4-6b77cb057f89 creatorsName: cn=admin,dc=nodomain createTimestamp: 20150307120702Z entryCSN: 20150307120702.099143Z#000000#000#000000 modifiersName: cn=admin,dc=nodomain modifyTimestamp: 20150307120702Z dn: cn=admin,dc=nodomain objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9L3k1MTBJalk2WFRJMVBVY0t1NzVBSXBGVzFhSm9YTHM= structuralObjectClass: organizationalRole entryUUID: 3542135c-590e-1034-99e5-6b77cb057f89 creatorsName: cn=admin,dc=nodomain createTimestamp: 20150307120702Z entryCSN: 20150307120702.189090Z#000000#000#000000 modifiersName: cn=admin,dc=nodomain modifyTimestamp: 20150307120702Z

Редактировать файлы схемы не рекомендуется. Хотя в интернете достаточно много статей по настройке LDAP, где рекомендуют отредактировать ldif-файлы схемы, это делать не нужно, более того, в самих файлах указан комментарий о том, что файлы нельзя редактировать вручную и необходимо для редактирования использовать команду ldapmodify. К сожалению, информации об использовании этой команды гораздо меньше, чем о ручном редактировании файлов .ldif, хотя ее использование в чем-то даже проще, чем редактирование файлов напрямую.

Читайте также:  Better fonts on linux

Настройка OpenLDAP

После установки пакетов надо переконфигурировать сервер, задать свои данные. Первое, что мы сделаем — создадим свой домен «mydomain.com». Для этого выполним команду

slapd01

slapd02

Введем данные для нашего домена. У нас это будет «mydomain.com». Нажимаем OK.

slapd03

Вводим название организации «mydomain». Нажимаем OK.

slapd04

Вводим пароль администратора LDAP-сервера. Пароль желательно вводить сложный, это как-никак пароль администратора. Нажимаем ОК.

slapd05

Повторяем пароль, нажимаем OK

slapd06

Выбираем «HDB» для типа сервера, нажимаем ОК.

slapd07

На вопрос удалять ли базу данных при вычистке slapd отвечаем утвердительно

slapd08

На вопрос о перемещении старой базы данных также отвечаем утвердительно

slapd09

На предложение включить старый протокол LDAPv2 отвечаем No/Нет

На этом первоначальная настройка завершена. Если сервис не стартовал, запускаем его вручную командой

Проверим, есть ли данные в базе:

# slapcat dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectClass: organization o: mydomain dc: mydomain structuralObjectClass: organization entryUUID: 1ee47d10-5a0e-1034-91ab-1d2fe74d4d59 creatorsName: cn=admin,dc=mydomain,dc=com createTimestamp: 20150308183855Z entryCSN: 20150308183855.828659Z#000000#000#000000 modifiersName: cn=admin,dc=mydomain,dc=com modifyTimestamp: 20150308183855Z dn: cn=admin,dc=mydomain,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9ckhnNjlMNkt3MDFJVmNFUDNGTWdQZXlHcVF4Y0NPOG4= structuralObjectClass: organizationalRole entryUUID: 1ef22a64-5a0e-1034-91ac-1d2fe74d4d59 creatorsName: cn=admin,dc=mydomain,dc=com createTimestamp: 20150308183855Z entryCSN: 20150308183855.918294Z#000000#000#000000 modifiersName: cn=admin,dc=mydomain,dc=com modifyTimestamp: 20150308183855Z

Можно сразу проверить, правильно ли работает сервер OpenLDAP. Это можно сделать следующей командой:

ldapsearch -D "cn=admin,dc=mydomain,dc=com" -W

После ввода команды будет запрошен пароль. Если вы не хотите вводить пароль в интерактивном режиме, вы можете использовать параметр -w:

ldapsearch -D "cn=admin,dc=mydomain,dc=com" -w ваш-пароль

Результат команды поиска будет выглядеть следующим образом:

# ldapsearch -D "cn=admin,dc=mydomain,dc=com" -W -b "dc=mydomain,dc=com" Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # mydomain.com dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectClass: organization o: mydomain dc: mydomain # admin, mydomain.com dn: cn=admin,dc=mydomain,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9ckhnNjlMNkt3MDFJVmNFUDNGTWdQZXlHcVF4Y0NPOG4= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2

Параметр «-b» определяет поисковую базу, то есть тот узел дерева объектов, с которого будет начинаться поиск.

Читайте также:  Infowatch personal monitor linux

Можно продолжать настройку

Создадим группу пользователей с названием «users» при помощи команды ldapmodify

# ldapmodify -D "cn=admin,dc=mydomain,dc=com" -W Enter LDAP Password: dn: ou=users,dc=mydomain,dc=com changetype: add objectClass: top objectClass: organizationalUnit ou: users description: Domain Users

Всё, начиная с «dn: » вводим руками точно так, как написано выше. После ввода строки описания («description: Domain Users») нажимаем Enter два раза. Если всё введено без ошибок, вы должны увидеть такое сообщение:

adding new entry "ou=Users,dc=mydomain,dc=com"

Нажимаем Ctrl+C для выхода

Теперь надо проверить, внесены ли данные:

# ldapsearch -D "cn=admin,dc=mydomain,dc=com" -W -b "dc=mydomain,dc=com" Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # mydomain.com dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectClass: organization o: mydomain dc: mydomain # admin, mydomain.com dn: cn=admin,dc=mydomain,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9T1ZtbWxpTGI2aGNXd1ltQ0RiMjlXOGhFR2FSaGo2Ujc= # users, mydomain.com dn: ou=users,dc=mydomain,dc=com objectClass: top objectClass: organizationalUnit ou: users description: Domain Users # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3

Всё верно, и теперь можно внести первого пользователя. Сначала сгенерируем хэш пароля для пользователя.

# slappasswd New password: Re-enter new password: OdfUh9z71wKbHxb2dQodbaqEvlqHmhwa

Этот хэш нам понадобится при создании пользователя

Снова запускаем ldapmodify и создаем пользователя. По окончании ввода значений полей дважды нажимаем Enter

# ldapmodify -D "cn=admin,dc=mydomain,dc=com" -W Enter LDAP Password: dn: cn=John Doe,ou=users,dc=mydomain,dc=com changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: John Doe ou: users uid: jdoe givenName: John sn: Doe userPassword: OdfUh9z71wKbHxb2dQodbaqEvlqHmhwa adding new entry "cn=John Doe,ou=Users,dc=mydomain,dc=com"

После ввода нажимаем Ctrl+C и выходим

Проверяем, есть ли запись с uid=jdoe:

# ldapsearch -D "cn=admin,dc=mydomain,dc=com" -b "dc=mydomain,dc=com" -W "(uid=jdoe)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: (uid=jdoe) # requesting: ALL # # John Doe, users, mydomain.com dn: cn=John Doe,ou=users,dc=mydomain,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: John Doe ou: users uid: jdoe givenName: John sn: Doe userPassword:: e1NTSEF9T2RmVWg5ejcxd0tiSHhiMmRRb2RiYXFFdmxxSG1od2E= # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1

Запись есть, отлично. Теперь надо проверить аутентификацию:

# ldapsearch -D "cn=John Doe,ou=users,dc=mydomain,dc=com" -b "dc=mydomain,dc=com" -W "(uid=jdoe)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: (uid=jdoe) # requesting: ALL # # John Doe, users, mydomain.com dn: cn=John Doe,ou=Users,dc=mydomain,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: John Doe ou: users uid: jdoe givenName: John sn: Doe userPassword:: e1NTSEF9T2RmVWg5ejcxd0tiSHhiMmRRb2RiYXFFdmxxSG1od2E= # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1

После ввода правильного пароля получаем запрошенную информацию

Читайте также:  Linux start script on login

Обратите внимание на то, что даже если для записи указан uid, представляющий собой логин пользователя, вы не сможете использовать его для логина. Причина этого в том, что само поле не является первичным ключом записи. Если вы хотите использовать именно jdoe, то вам придется создать запись

dn: uid=jdoe,ou=users,dc=mydomain,dc=com

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

Похожие посты:

Источник

Оцените статью
Adblock
detector