Поиск по сайту:

Как установить сервер OpenLDAP для централизованной аутентификации


Облегченный протокол доступа к каталогу (сокращенно LDAP) — это упрощенный, широко используемый набор протоколов промышленного стандарта для доступа к службам каталогов. Служба каталогов — это общая информационная инфраструктура для доступа, управления, организации и обновления повседневных элементов и сетевых ресурсов, таких как пользователи, группы, устройства, адреса электронной почты, номера телефонов, тома и многие другие объекты.

Информационная модель LDAP основана на записях. Запись в каталоге LDAP представляет собой отдельный блок или информацию и уникально идентифицируется так называемым отличительным именем (DN). Каждый атрибут записи имеет тип и одно или несколько значений.

Атрибут — это часть информации, связанная с записью. Типы обычно представляют собой мнемонические строки, например «cn» для общего имени или «mail» для адреса электронной почты. Каждому атрибуту присваивается одно или несколько значений, состоящих из списка, разделенного пробелами.

Ниже показано, как информация организована в каталоге LDAP.

В этой статье мы покажем, как установить и настроить сервер OpenLDAP для централизованной аутентификации в Ubuntu 16.04/18.04 и CentOS 7.

Шаг 1. Установка LDAP-сервера

1. Сначала начните с установки OpenLDAP, реализации LDAP с открытым исходным кодом и некоторых традиционных утилит управления LDAP, используя следующие команды.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

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

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

2. В CentOS 7 выполните следующие команды, чтобы запустить демон сервера openldap, включите его автоматический запуск во время загрузки и проверьте, он запущен и работает (в Ubuntu сервис должен запускаться автоматически под systemd, вы можете просто проверить его статус):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. Затем разрешите запросы к демону сервера LDAP через брандмауэр, как показано.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

Шаг 2. Настройка LDAP-сервера

Примечание. Не рекомендуется редактировать конфигурацию LDAP вручную. Необходимо добавить конфигурации в файл и использовать команду ldapadd или ldapmodify, чтобы загрузить их в каталог LDAP, как показано ниже.

4. Теперь создайте пользователя-администратора OpenLDAP и назначьте ему пароль. В приведенной ниже команде для данного пароля создается хешированное значение, обратите на него внимание, вы будете использовать его в файле конфигурации LDAP.

slappasswd

5. Затем создайте файл LDIF (ldaprootpasswd.ldif), который будет использоваться для добавления записи в каталог LDAP.

sudo vim ldaprootpasswd.ldif

Добавьте в него следующее содержимое:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

объяснение пар атрибут-значение выше:

  • olcDatabase: указывает конкретное имя экземпляра базы данных и обычно находится внутри /etc/openldap/slapd.d/cn=config.
  • cn=config: указывает глобальные параметры конфигурации.
  • ПАРОЛЬ: хешированная строка, полученная при создании пользователя с правами администратора.

6. Затем добавьте соответствующую запись LDAP, указав URI, ссылающийся на сервер ldap и файл выше.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Шаг 3. Настройка базы данных LDAP

7. Теперь скопируйте пример файла конфигурации базы данных для slapd в каталог /var/lib/ldap и установите правильные разрешения для этого файла. .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. Затем импортируйте несколько базовых схем LDAP из каталога /etc/openldap/schema следующим образом.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Теперь добавьте свой домен в базу данных LDAP и создайте файл с именем ldapdomain.ldif для своего домена.

sudo vim ldapdomain.ldif 

Добавьте в него следующий контент (замените пример своим доменом и ПАРОЛЬ на полученное ранее хеш-значение):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

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

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. На этом этапе нам нужно добавить несколько записей в наш каталог LDAP. Создайте еще один файл с именем baseldapdomain.ldif со следующим содержимым.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Сохраните файл, а затем добавьте записи в каталог LDAP.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. Следующим шагом будет создание пользователя LDAP для example, tecmint и установка пароля для этого пользователя следующим образом.

sudo useradd tecmint
sudo passwd tecmint

13. Затем создайте определения группы LDAP в файле ldapgroup.ldif со следующим содержимым.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

В приведенной выше конфигурации gidNumber — это GID в /etc/group для tecmint и добавьте его в OpenLDAP. каталог.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Затем создайте еще один файл LDIF с именем ldapuser.ldif и добавьте определения для пользователя tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

затем загрузите конфигурацию в каталог LDAP.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

После того, как вы настроили центральный сервер для аутентификации, последняя часть — разрешить клиенту аутентифицироваться с использованием LDAP, как описано в этом руководстве:

  1. Как настроить клиент LDAP для подключения внешней аутентификации

Для получения дополнительной информации см. соответствующую документацию в каталоге документов программного обеспечения OpenLDAP, а пользователи Ubuntu могут обратиться к руководству по серверу OpenLDAP.

Краткое содержание

OpenLDAP — это реализация LDAP с открытым исходным кодом в Linux. В этой статье мы показали, как установить и настроить сервер OpenLDAP для централизованной аутентификации в Ubuntu 16.04/18.04 и CentOS 7. Если у вас есть вопросы или мысли, которыми вы хотите поделиться, не стесняйтесь обращаться к нам через форму комментариев ниже.