Облегченный протокол доступа к каталогам (короче говоря, 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.
Если у вас есть вопросы или мысли, которыми вы можете поделиться, не стесняйтесь обращаться к нам через форму комментариев ниже.