Как установить сервер 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: указывает глобальные параметры конфигурации.
  • PASSWORD: это хэшированная строка, полученная при создании админиского кароля

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 

Добавьте в него следующее содержимое (замените пример своим доменом и PASSWORD на хеш-значение, полученное ранее):

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, например, 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

Заключение

OpenLDAP — это реализация LDAP с открытым исходным кодом в Linux.

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

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

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40