Как установить и настроить сервер 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 на CentOS 8 - INFOIT.COM.UA