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

Серия RHCSA: настройка аутентификации на основе LDAP в RHEL 7 — часть 14


Мы начнем эту статью с описания некоторых основ LDAP (что это такое, где он используется и почему) и покажем, как настроить сервер LDAP и настроить клиент для аутентификации на нем с помощью Системы Red Hat Enterprise Linux 7.

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

По той же причине вы заметите, что я решил для краткости опустить несколько ссылок на справочные страницы инструментов LDAP, но соответствующие пояснения находятся на расстоянии вытянутой руки (man ldapadd, для пример).

Тем не менее, давайте начнем.

Наша среда тестирования

Наша тестовая среда состоит из двух блоков RHEL 7:


Server: 192.168.0.18. FQDN: rhel7.mydomain.com
Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

Если вы хотите, вы можете использовать компьютер, установленный в Части 12: Автоматизация установки RHEL 7, используя Kickstart в качестве клиента.

Что такое ЛДАП?

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

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

На следующей диаграмме представлена упрощенная схема LDAP, которая описана ниже более подробно:

Подробное объяснение приведенной выше диаграммы.

  1. Запись в каталоге LDAP представляет собой отдельный блок или информацию и однозначно идентифицируется так называемым отличительным именем.
  2. Атрибут – это часть информации, связанная с записью (например, адреса, доступные контактные номера телефонов и адреса электронной почты).
  3. Каждому атрибуту присваивается одно или несколько значений, состоящих из списка, разделенного пробелами. Значение, уникальное для каждой записи, называется относительным отличительным именем.

При этом давайте приступим к установке сервера и клиента.

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

В RHEL 7 LDAP реализован с помощью OpenLDAP. Для установки сервера и клиента используйте следующие команды соответственно:


yum update && yum install openldap openldap-clients openldap-servers
yum update && yum install openldap openldap-clients nss-pam-ldapd

После завершения установки мы рассмотрим некоторые вещи. Следующие шаги следует выполнять только на сервере, если не указано иное:

1. Убедитесь, что SELinux не мешает, постоянно включив следующие логические значения как на сервере, так и на клиенте:


setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Где allow_ypbind требуется для аутентификации на основе LDAP, а authlogin_nsswitch_use_ldap может потребоваться некоторым приложениям.

2. Включите и запустите службу:


systemctl enable slapd.service
systemctl start slapd.service

Имейте в виду, что вы также можете отключить, перезапустить или остановить службу с помощью systemctl:


systemctl disable slapd.service
systemctl restart slapd.service
systemctl stop slapd.service

3. Поскольку служба slapd работает от имени пользователя ldap (что можно проверить с помощью ps -e -o pid,uname,comm | grep slapd >), такой пользователь должен владеть каталогом /var/lib/ldap, чтобы сервер мог изменять записи, созданные с помощью административных инструментов, которые можно запускать только от имени пользователя root (подробнее об этом см. минута).

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


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

4. Настройте администратора OpenLDAP и назначьте пароль:


slappasswd

как показано на следующем изображении:

и создайте файл LDIF (ldaprootpasswd.ldif) со следующим содержимым:


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

где :

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

Ссылаясь на теоретическую основу, представленную ранее, файл ldaprootpasswd.ldif добавит запись в каталог LDAP. В этой записи каждая строка представляет пару атрибут: значение (где dn, ChangeType, Add и olcRootPW — это атрибуты, а строки справа от каждого двоеточия — соответствующие им значения).

Возможно, вы захотите иметь это в виду, когда мы продолжим, и обратите внимание, что мы используем одни и те же общие имена (cn=) на протяжении всей остальной части этой статьи, где каждый шаг зависит от предыдущего. .

5. Теперь добавьте соответствующую запись LDAP, указав URI, относящийся к серверу ldap, где разрешены только поля протокол/хост/порт.


ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

Вывод должен быть похож на:

и импортируйте некоторые базовые определения LDAP из каталога /etc/openldap/schema:


for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. Разрешите LDAP использовать ваш домен в своей базе данных.

Создайте еще один файл LDIF, который мы назовем ldapdomain.ldif, со следующим содержимым, заменив свой домен (в компоненте домена dc=) и пароль, если это необходимо:


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=mydomain,dc=com" read by * none

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=mydomain,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=mydomain,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=mydomain,dc=com" write by * read

Затем загрузите его следующим образом:


ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Теперь пришло время добавить несколько записей в наш каталог LDAP. Атрибуты и значения разделяются двоеточием (:) в следующем файле, который мы назовем baseldapdomain.ldif:


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

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

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

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

Добавьте записи в каталог LDAP:


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. Создайте пользователя LDAP с именем ldapuser (adduser ldapuser), затем создайте определения для группы LDAP в ldapgroup.ldif.


adduser ldapuser
vi ldapgroup.ldif

Добавьте следующий контент.


dn: cn=Manager,ou=Group,dc=mydomain,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1004

где gidNumber — это GID в /etc/group для ldapuser) и загрузите его:


ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif

9. Добавьте файл LDIF с определениями пользователя ldapuser (ldapuser.ldif):


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

и загрузим его:


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

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


ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. Разрешите обмен данными через брандмауэр:


firewall-cmd --add-service=ldap

11. И последнее, но не менее важное: включите аутентификацию клиента с помощью LDAP.

Чтобы помочь нам на этом последнем этапе, мы будем использовать утилиту authconfig (интерфейс для настройки ресурсов аутентификации системы).

С помощью следующей команды создается домашний каталог для запрошенного пользователя, если он не существует после успешной аутентификации на сервере LDAP:


authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

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

В этой статье мы объяснили, как настроить базовую аутентификацию на сервере LDAP. Для дальнейшей настройки настройки, описанной в настоящем руководстве, обратитесь к главе 13 «Конфигурация LDAP» в руководстве системного администратора RHEL 7, уделив особое внимание настройкам безопасности с использованием TLS.

Не стесняйтесь оставлять любые вопросы, которые могут у вас возникнуть, используя форму комментариев ниже.