Как установить и настроить сервер OpenLDAP в CentOS 8

Как установить и настроить сервер OpenLDAP в CentOS 8

 

В этом руководстве рассказывается, как установить OpenLDAP на CentOS 8. LDAP — это облегченный протокол аутентификации домена. Это означает, что вы можете использовать LDAP в качестве центральной системы аутентификации как для пользователей, так и для таких систем, как Postfix. Его можно сравнить с Microsoft Active Directory. OpenLDAP — это система LDAP с открытым исходным кодом, работающая в системах Linux.

Установите OpenLDAP на CentOS 8

В этом руководстве мы создадим последнюю версию исходного кода OpenLDAP вместо использования доступной версии, предоставляемой PowerTools.

Выполните следующие действия, чтобы настроить сервер OpenLDAP на CentOS 8.

Система обновлений

Запустите обновления системы и обновите пакеты.

sudo dnf update
sudo dnf upgrade -y

Установите необходимые программные пакеты

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

sudo dnf install wget vim cyrus-sasl-devel libtool-ltdl-devel openssl-devel libdb-devel make libtool autoconf  tar gcc perl perl-devel 

Создать системную учетную запись LDAP

Нам нужно создать непривилегированного системного пользователя для OpenLDAP..

sudo useradd -r -M -d /var/lib/openldap -u 55 -s /usr/sbin/nologin ldap

Скачать исходный файл OpenLDAP

На момент написания этого руководства последней версией OpenLDAP была 2.4.57.

Объявите версию своей оболочке:

VER=2.4.57

Загрузите последнюю версию с этой страницы .

wget https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-$VER.tgz

Распакуйте загруженный файл:

tar xzf openldap-$VER.tgz

Установить OpenLDAP

Переместите извлеченные файлы в / opt /, затем скомпилируйте исходные файлы.

sudo mv openldap-$VER /opt
cd /opt/openldap-$VER

Скомпилируйте исходные файлы:

sudo ./configure --prefix=/usr --sysconfdir=/etc --disable-static \
--enable-debug --with-tls=openssl --with-cyrus-sasl --enable-dynamic \
--enable-crypt --enable-spasswd --enable-slapd --enable-modules \
--enable-rlookups --enable-backends=mod --disable-ndb --disable-sql \
--disable-shell --disable-bdb --disable-hdb --enable-overlays=mod

После успешной компиляции вы должны увидеть вывод, который гласит: “Please run “make depend” to build dependencies”

Запустите make зависимый, чтобы построить зависимости OpenLDAP.

sudo make depend

Компилировать:

sudo make

Установить OpenLDAP:

sudo make install

При успешной установке файлы конфигурации создаются по адресу /etc/openldap. После установки доступны следующие файлы:

certs  ldap.conf  ldap.conf.default  schema  slapd.conf  slapd.conf.default  slapd.ldif  slapd.ldif.default

Настройка OpenLDAP

Приступим к настройке OpenLDAP.

Во-первых, нам нужно создать каталоги базы данных OpenLDAP.

mkdir /var/lib/openldap /etc/openldap/slapd.d

Установите правильные разрешения для каталогов OpenLDAP:

sudo chown -R ldap:ldap /var/lib/openldap
sudo chown root:ldap /etc/openldap/slapd.conf
sudo chmod 640 /etc/openldap/slapd.conf

Создать схему OpenLDAP SUDO

Проверьте, поддерживает ли ваша версия sudo LDAP.

sudo -V |  grep -i "ldap"

Вы должны увидеть следующие строки в выводе, если ваша система поддерживает LDAP.

ldap.conf path: /etc/sudo-ldap.conf
ldap.secret path: /etc/ldap.secret

Подтвердите, доступна ли схема sudo LDAP в вашей системе.

rpm -ql sudo |  grep -i schema.openldap

Пример вывода

/usr/share/doc/sudo/schema.OpenLDAP

Скопируйте схему в каталог схемы ldap.

sudo cp /usr/share/doc/sudo/schema.OpenLDAP  /etc/openldap/schema/sudo.schema

Создайте файл ldif схемы sudo.

sudo su -

Выполните ниже, чтобы добавить строки в файл:

cat << 'EOL' > /etc/openldap/schema/sudo.ldif
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may  run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) )
EOL

Настроить базу данных SLAPD

Обновите содержимое файла /etc/openldap/slapd.ldif

sudo mv /etc/openldap/slapd.ldif /etc/openldap/slapd.ldif.bak
sudo vi /etc/openldap/slapd.ldif

Пастер ниже данных:

dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/lib/openldap/slapd.args
olcPidFile: /var/lib/openldap/slapd.pid

dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/libexec/openldap
olcModuleload: back_mdb.la

include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/ppolicy.ldif
include: file:///etc/openldap/schema/sudo.ldif

dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend
olcAccess: to dn.base="cn=Subschema" by * read
olcAccess: to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by * none

dn: olcDatabase=config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: config
olcRootDN: cn=config
olcAccess: to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by * none

Выполните пробный запуск, чтобы проверить конфигурацию.

sudo slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif -u

Выполните команду для записи изменений

sudo slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif

Приведенная выше команда создает конфигурации базы данных slapd и помещает их в /etc/openldap/slapd.d.

$ ls /etc/openldap/slapd.d
'cn=config'  'cn=config.ldif'

Установите права собственности на каталог slapd:

sudo chown -R ldap:ldap /etc/openldap/slapd.d

Создать службу OpenLDAP

Создайте сервис systemd:

$ sudo vim /etc/systemd/system/slapd.service

[Unit]
Description=OpenLDAP Server Daemon
After=syslog.target network-online.target
Documentation=man:slapd
Documentation=man:slapd-mdb

[Service]
Type=forking
PIDFile=/var/lib/openldap/slapd.pid
Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"
Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"
ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

[Install]
WantedBy=multi-user.target

Перезапустить демон:

sudo systemctl daemon-reload

Запустить сервис slapd:

sudo systemctl enable --now slapd

Проверить состояние:

$ systemctl status slapd

Настройка корневого DN OpenLDAP по умолчанию

Создайте базу данных MDB с корневым DN и списками ACL.

Сгенерируйте пароль root:

$ sudo slappasswd

Скопируйте сгенерированный хэш-пароль в текстовый редактор. Это будет необходимо в rootdn.ldifфайле при olcRootPWвходе.

vim rootdn.ldif

Добавьте содержимое ниже, заменив его dc=ldapmaster,dc=infoit,dc=com,dc=ua информацией о вашем домене.

dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcDbMaxSize: 42949672960
olcDbDirectory: /var/lib/openldap
olcSuffix: dc=ldapmaster,dc=infoit,dc=com,dc=ua
olcRootDN: cn=admin,dc=ldapmaster,dc=infoit,dc=com,dc=ua
olcRootPW: {SSHA}0phayAb6bQA9rONibLb97O5B89KPeNlW
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn pres,eq,approx,sub
olcDbIndex: mail pres,eq,sub
olcDbIndex: objectClass pres,eq
olcDbIndex: loginShell pres,eq
olcDbIndex: sudoUser,sudoHost pres,eq
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by dn.subtree="ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua" read
  by * none
olcAccess: to dn.subtree="ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by * none
olcAccess: to dn.subtree="dc=ldapmaster,dc=infoit,dc=com,dc=ua" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read 
  by * none

Обновите базу данных slapd

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

Определите структуру вашей организации

Создайте basedn.ldifфайл, чтобы определить структуру вашей организации.

vim basedn.ldif

С информацией, аналогичной приведенной ниже — обновите в соответствии с вашим доменом.

dn: dc=ldapmaster,dc=infoit,dc=com,dc=ua
objectClass: dcObject
objectClass: organization
objectClass: top
o: infoit
dc: ldapmaster

dn: ou=groups,dc=ldapmaster,dc=infoit,dc=com,dc=ua
objectClass: organizationalUnit
objectClass: top
ou: groups

dn: ou=people,dc=ldapmaster,dc=infoit,dc=com,dc=ua
objectClass: organizationalUnit
objectClass: top
ou: people

Обновление базы данных:

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

Настроить SSL / TLS

Вы можете защитить связь клиент-сервер между OpenLDAP и клиентскими системами, включив TLS / SSL.

Для этого вы можете использовать самоподписанный сертификат или Let’s Encrypt. В этом руководстве мы будем использовать самоподписанный сертификат.

$ sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/pki/tls/ldapserver.key \
  -out /etc/pki/tls/ldapserver.crt

Установите правильное владение.

sudo chown ldap:ldap /etc/pki/tls/{ldapserver.crt,ldapserver.key}

Создайте файл конфигурации SSL:

$ sudo vi add-tls.ldif

С информацией ниже:

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt

Обновить базу данных slapd

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

Обновите расположение CA для OpenLDAP.

$ sudo vim /etc/openldap/ldap.conf

...
#TLS_CACERT     /etc/pki/tls/cert.pem
TLS_CACERT     /etc/pki/tls/ldapserver.crt

Создать пользователей OpenLDAP

Определите своих пользователей в файле users.ldif следующим образом:

$ sudo vim users.ldif

Вот пример данных:

dn: uid=vshamallah,ou=people,dc=ldapmaster,dc=infoit,dc=com,dc=ua
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: vshamallah
cn: Vic
sn: Shamallah
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/vshamallah
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=vshamallah,ou=groups,dc=ldapmaster,dc=infoit,dc=com,dc=ua
objectClass: posixGroup
cn: vshamallah
gidNumber: 10000
memberUid: vshamallah

Обновите базу данных LDAP, чтобы добавить нового пользователя:

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

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

sudo ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=vshamallah,ou=people,dc=ldapmaster,dc=infoit,dc=com,dc=ua"

Создать пользователя привязки LDAP

Создайте OpenLDAP Bind DN и привяжите пользователя. Это пользователь, который будет использоваться для выполнения открытий LDAP, таких как разрешение идентификаторов пользователей и групп.

Создайте пароль BindDN.

$ sudo slappasswd
New password: 
Re-enter new password: 
{SSHA}9Sx4MzBieiojFsXLgXDVnJavwt4vql4p

Получите хешированный пароль и сохраните его где-нибудь.

Создайте файл bindDNuser.ldif и добавьте содержимое ниже, не забудьте заменить хешированный пароль и информацию о домене своими данными.

vim bindDNuser.ldif

Вот мои конфигурации:

dn: ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua objectClass: organizationalUnit
objectClass: top
ou: system

dn: cn=readonly,ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}9Sx4MzBieiojFsXLgXDVnJavwt4vql4p
description: Bind DN user for LDAP Operations

Обновите базу данных ldap:

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

Разрешить OpenLDAP через брандмауэр

Разрешить OpenLDAP через брандмауэр, чтобы разрешить соединения.

sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reload

На этом этапе OpenLDAP настроен и готов к использованию. Вам необходимо настроить клиентов OpenLDAP в своих системах, чтобы они могли подключаться к серверу OpenLDAP.

Следуйте приведенному ниже руководству, чтобы настроить клиентов OpenLDAP:

Настроить клиент LDAP в Ubuntu

Author: forgero

1 thought on “Как установить и настроить сервер OpenLDAP в CentOS 8

Comments are closed.