Installation d’openLDAP

Installation d’un openLDAP sur un RedHat/centos 7. Précédemment il suffisait d’installer openLDAP depuis les repository de redhat mais depuis la version 7 openLDAP est déprécié pour la solution interne de redhat (389DS/RedHatDS), il devient donc nécessaire d’installer openLDAP par les sources ce qui complique l’installation.

1) Installation d’openLDAP

Création d’un dossier :

# mkdir /root/openldap
#cd /root/openldap

Placer la source dedans.

Décompression :

gunzip -c openldap-2.4.46.tgz | tar xf –

Installation des librairies nécessaires à la compilation des sources :

yum install gcc libtool libtool-ltdl-devel tcp_wrappers-devel cyrus-sasl-devel openssl-devel

Configuration :

# mkdir /opt/ldap
# cd openldap-2.4.46
# ./configure –datadir=/opt/ldap –exec-prefix=/opt/ldap –prefix=/opt/ldap –enable-debug –enable-dynamic –enable-syslog –enable-proctitle –enable-ipv6 –enable-local –enable-slapd –enable-dynacl –enable-aci –enable-cleartext –enable-crypt –disable-lmpasswd –enable-spasswd –enable-modules –enable-rewrite –enable-rlookups –enable-slapi –disable-slp –enable-wrappers –enable-backends=mod –enable-bdb=no –enable-hdb=no –enable-mdb=yes –enable-monitor=yes –disable-ndb –enable-overlays=mod –disable-static –disable-perl –enable-shared –with-cyrus-sasl –without-fetch –with-threads –with-pic –with-gnu-ld –disable-sql –with-tls=openssl

Compilation :

# make depends
# make
# make install

2) Configuration d’openldap

Création de l’instance

Création du cn=config nécessaire à démarrer l’instance à vide :

# cd /opt/ldap/etc/openldap/

Hashage des mots de passe qui seront utilisés pour accéder à la configuration (cn=admin,cn=config) ainsi qu’aux données (cn=Manager,dc=test,dc=fr) et au monitoring (cn=admin,cn=monitor) :

# /opt/ldap/sbin/slappasswd
New password: mot de passe pour cn=admin,cn=config
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx

# /opt/ldap/sbin/slappasswd
New password: mot de passe pour cn=Manager,dc=test,dc=fr
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx
# /opt/ldap/sbin/slappasswd
New password: mot de passe pour cn=admin,cn=monitor
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx

Sauvegarder les hashs ainsi obtenu.

Génération de la configuration minimale de l’instance (attention des modifications sont nécessaires) :

# vi /root/config.ldif
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /opt/ldap/var/run/slapd.args
olcPidFile: /opt/ldap/var/run/slapd.pid
structuralObjectClass: olcGlobal

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /opt/ldap/libexec/openldap
olcModuleload: back_mdb

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

include: file:///opt/ldap/etc/openldap/schema/core.ldif
include: file:///opt/ldap/etc/openldap/schema/cosine.ldif
include: file:///opt/ldap/etc/openldap/schema/nis.ldif
include: file:///opt/ldap/etc/openldap/schema/inetorgperson.ldif
include: file:///opt/ldap/etc/openldap/schema/openldap.ldif

dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend
olcAccess: to * by * read
olcSizelimit: size.soft=10000 size.hard=1000000
olcTimelimit: time.soft=300 time.hard=3600

dn: olcDatabase=config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: config
olcRootDN: cn=admin,cn=config
olcRootPW: {SSHA}T2Gyv2yfT4miO2xRxHKWMhlzbWfYRnZv
olcMonitoring: FALSE
olcAccess: to * by * none

dn: olcDatabase=monitor,cn=config
objectClass: olcDatabaseConfig
olcDatabase: monitor
olcRootDN: cn=admin,cn=monitor
olcRootPW: {SSHA}T2Gyv2yfT4miO2xRxHKWMhlzbWfYRnZv
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE
olcAccess: to dn.subtree= »cn=monitor »
by dn.exact= »cn=Manager,cn=config » read
by dn.exact= »cn=Manager,dc=test,dc=fr » read
by * none

dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcMonitoring: TRUE
olcDbMaxSize: 42949672960
olcSuffix: dc=test,dc=fr
olcDbDirectory: /opt/ldap/var/ldap
olcRootDN: cn=Manager,dc=test,dc=fr
olcRootPW: {SSHA}T2Gyv2yfT4miO2xRxHKWMhlzbWfYRnZv
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn pres,eq,approx,sub
olcDbIndex: mail pres,eq,sub
olcDbIndex: objectClass pres,eq
olcDbIndex: loginShell pres,eq
olcAccess: to attrs=userPassword
by self write
by anonymous auth
by dn.base= »cn=Manager,dc=test,dc=fr » write
by * none
olcAccess: to attrs=shadowLastChange
by self write
by * read
olcAccess: to *
by dn.exact= »cn=Manager,dc=test,dc=fr » write
by * read

Création des dossiers nécessaires :

# mkdir /opt/ldap/var/lib/
# mkdir /opt/ldap/var/run/openldap/
# mkdir /opt/ldap/etc/openldap slapd.d

Import de la configuration dans l’instance :

/opt/ldap/sbin/slapadd -v -F /opt/ldap/etc/openldap/slapd.d/ -n 0 -l /root/config.ldif

Démarrage de l’instance :

/opt/ldap/libexec/slapd -F /etc/openldap/slapd.d -h ldap://adresseIPduLDAP:389

Création du service :

vi /etc/systemd/system/slapd.service

[Unit]
Description=OpenLDAP Server Daemon
After=syslog.target network-online.target
Documentation=man:slapd
Documentation=man:slapd-config
Documentation=man:slapd-hdb
Documentation=man:slapd-mdb
Documentation=file:///usr/share/doc/openldap-servers/guide.html

[Service]
Type=forking
PIDFile=/opt/ldap/var/run/slapd.pid
Environment= »SLAPD_URLS=ldapi:/// ldap://FQDNDUSERVEUR:389/ » « SLAPD_OPTIONS= »
EnvironmentFile=/etc/sysconfig/slapd
ExecStartPre=/usr/libexec/openldap/check-config.sh
ExecStart=/opt/ldap/libexec/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

[Install]
WantedBy=multi-user.target

Création du sysconfig :

# vi /etc/sysconfig/slapd

# OpenLDAP server configuration
# see ‘man slapd’ for additional information
# Where the server will run (-h option)
# – ldap://adresseIPduLDAP:389/ is required for on-the-fly configuration using client tools
# (use SASL with EXTERNAL mechanism for authentication)
# – default: ldap://nom du serveur:389/ ldap:///
# – example: ldap://adresseIPduLDAP:389/ ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:///
SLAPD_URLS= »ldap://FQDNDUSERVEUR:389/ »
# Any custom options
#SLAPD_OPTIONS= » »

# Keytab location for GSSAPI Kerberos authentication
#KRB5_KTNAME= »FILE:/opt/ldap/etc/openldap/ldap.keytab »

Création du script de vérification de la configuration :

# vi /usr/libexec/openldap/check-config.sh

#!/bin/sh
# Author: Jan Vcelak jvcelak@redhat.com

. /usr/libexec/openldap/functions

function check_config_syntax()
{
retcode=0
tmp_slaptest=`mktemp –tmpdir=/opt/ldap/var/run`
run_as_ldap « /opt/ldap/sbin/slaptest $SLAPD_GLOBAL_OPTIONS -u » &>$tmp_slaptest
if [ $? -ne 0 ]; then
error « Checking configuration file failed: »
cat $tmp_slaptest >&2
retcode=1
fi
rm $tmp_slaptest
return $retcode
}

function check_certs_perms()
{
retcode=0
for cert in `certificates`; do
run_as_ldap « /usr/bin/test -e \ »$cert\ » »
if [ $? -ne 0 ]; then
error « TLS certificate/key/DB ‘%s’ was not found. » « $cert »
retcoder=1
continue
fi
run_as_ldap « /usr/bin/test -r \ »$cert\ » »
if [ $? -ne 0 ]; then
error « TLS certificate/key/DB ‘%s’ is not readable. » « $cert »
retcode=1
fi
done
return $retcode
}

function check_db_perms()
{
retcode=0
for dbdir in `databases`; do
[ -d « $dbdir » ] || continue
for dbfile in `find ${dbdir} -maxdepth 1 -name « *.dbb » -or -name « *.gdbm » -or -name « *.bdb » -or -name « __db.* » -or -name « log.* » -or -name « alock »`; do
run_as_ldap « /usr/bin/test -r \ »$dbfile\ » -a -w \ »$dbfile\ » »
if [ $? -ne 0 ]; then
error « Read/write permissions for DB file ‘%s’ are required. » « $dbfile »
retcode=1
fi
done
done
return $retcode
}

function check_everything()
{
retcode=0
check_config_syntax || retcode=1
# TODO: need support for Mozilla NSS, disabling temporarily
#check_certs_perms || retcode=1
check_db_perms || retcode=1
return $retcode
}

if [ `id -u` -ne 0 ]; then
error « You have to be root to run this script. »
exit 4
fi

load_sysconfig

if [ -n « $SLAPD_CONFIG_DIR » ]; then
if [ ! -d « $SLAPD_CONFIG_DIR » ]; then
error « Configuration directory ‘%s’ does not exist. » « $SLAPD_CONFIG_DIR »
else
check_everything
exit $?
fi
fi

if [ -n « $SLAPD_CONFIG_FILE » ]; then
if [ ! -f « $SLAPD_CONFIG_FILE » ]; then
error « Configuration file ‘%s’ does not exist. » « $SLAPD_CONFIG_FILE »
else
error « Warning: Usage of a configuration file is obsolete! »
check_everything
exit $?
fi
fi

exit 1

Création d’un second script nécessaire à la vérification des services :

# vi /usr/libexec/openldap/functions

# Author: Jan Vcelak jvcelak@redhat.com

SLAPD_USER=
SLAPD_CONFIG_FILE=
SLAPD_CONFIG_DIR=
SLAPD_CONFIG_CUSTOM=
SLAPD_GLOBAL_OPTIONS=
SLAPD_SYSCONFIG_FILE=

function default_config()
{
SLAPD_USER=ldap
SLAPD_CONFIG_FILE=
SLAPD_CONFIG_DIR=/opt/ldap/etc/openldap/slapd.d
SLAPD_CONFIG_CUSTOM=
SLAPD_GLOBAL_OPTIONS=
SLAPD_SYSCONFIG_FILE=/etc/sysconfig/slapd
}

function parse_config_options()
{
user=
config_file=
config_dir=
while getopts :u:f:F: opt; do
case « $opt » in
u)
user= »$OPTARG »
;;
f)
config_file= »$OPTARG »
;;
F)
config_dir= »$OPTARG »
;;
esac
done

if [ -n « $user » ]; then
SLAPD_USER= »$user »
fi

if [ -n « $config_dir » ]; then
SLAPD_CONFIG_DIR= »$config_dir »
SLAPD_CONFIG_FILE=
SLAPD_CONFIG_CUSTOM=1
SLAPD_GLOBAL_OPTIONS= »-F ‘$config_dir' »
elif [ -n « $config_file » ]; then
SLAPD_CONFIG_DIR=
SLAPD_CONFIG_FILE= »$config_file »
SLAPD_CONFIG_CUSTOM=1
SLAPD_GLOBAL_OPTIONS= »-f ‘$config_file' »
fi
}

function uses_new_config()
{
[ -n « $SLAPD_CONFIG_DIR » ]
return $?
}

function run_as_ldap()
{
/sbin/runuser –shell /bin/sh –session-command « $1 » « $SLAPD_USER »
return $?
}

function ldif_unbreak()
{
sed ‘:a;N;s/\n //;ta;P;D’
}

function ldif_value()
{
sed ‘s/^[^:]*: //’
}

function databases_new()
{
slapcat $SLAPD_GLOBAL_OPTIONS -c \
-H ‘ldap:///cn=config???(|(objectClass=olcBdbConfig)(objectClass=olcHdbConfig))’ 2>/dev/null | \
ldif_unbreak | \
grep ‘^olcDbDirectory: ‘ | \
ldif_value
}

function databases_old()
{
awk ‘begin { database= » » }
$1 == « database » { database=$2 }
$1 == « directory » { if (database == « bdb » || database == « hdb ») print $2}’ \
« $SLAPD_CONFIG_FILE »
}

function certificates_new()
{
slapcat $SLAPD_GLOBAL_OPTIONS -c -H ‘ldap:///cn=config???(cn=config)’ 2>/dev/null | \
ldif_unbreak | \
grep ‘^olcTLS\(CACertificateFile\|CACertificatePath\|CertificateFile\|CertificateKeyFile\): ‘ | \
ldif_value
}

function certificates_old()
{
awk ‘$1 ~ « ^TLS(CACertificate(File|Path)|CertificateFile|CertificateKeyFile)$ » { print $2 } ‘ \
« $SLAPD_CONFIG_FILE »
}

function certificates()
{
uses_new_config && certificates_new || certificates_old
}

function databases()
{
uses_new_config && databases_new || databases_old
}


function error()
{
format= »$1\n »; shift
printf « $format » $@ >&2
}

function load_sysconfig()
{
[ -r « $SLAPD_SYSCONFIG_FILE » ] || return

. « $SLAPD_SYSCONFIG_FILE »
[ -n « $SLAPD_OPTIONS » ] && parse_config_options $SLAPD_OPTIONS
}

default_config

Ajout de l’utilisateur ldap :

useradd ldap

Mettre l’utilisateur LDAP comme propriétaire des fichiers de configuration et de données :

# chown -hR ldap: /opt/ldap/etc/openldap/slapd.d
# chown -hR ldap: /opt/ldap/var/ldap/
# chown -hR ldap: /opt/ldap/var/run/

Modification des droits de lecture :

chmod 755 /usr/libexec/openldap/check-config.sh

Eteindre openldap :

# ps -ef | grep slapd
# kill -9 *ldapPID*

Démarrage du service et mise au démarrage

# systemctl restart slapd
# systemctl enable slapd

Logs

Rajouter dans /etc/rsyslog.conf :

# vi /etc/rsyslog.conf
….
# Log openldap
local4.* -/opt/ldap/var/log/slapd.log

Création des fichiers de logs :

# mkdir /opt/ldap/var/log/
# chown ldap: /opt/ldap/var/log/
# touch /opt/ldap/var/log/slapd.log

Configuration de la rotation :

# vi /etc/logrotate.d/openldap

# OpenLDAP
/opt/ldap/var/log/slapd.log {
missingok
notifempty
compress
weekly
rotate 10
size=100M
sharedscripts
postrotate
# OpenLDAP logs via syslog, restart syslog if running
/usr/bin/systemctl restart rsyslog
endscript
}

Certificats

Rajouter les certificats dans cn=config à travers un import:

# vi /root/certificate.ldif

dn: cn=config
changetype: modify
replace : olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/ldapserver-cacerts.pem

dn: cn=config
changetype: modify
replace : olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldapserver-cert.pem

dn: cn=config
changetype: modify
replace : olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldapserver-key.pem

dn: cn=config
changetype: modify
replace : olcTLSCipherSuite
olcTLSCipherSuite: HIGH:MEDIUM:+SSLv2

dn: cn=config
changetype: modify
replace : olcTLSVerifyClient
olcTLSVerifyClient: never

Intégration dans la configuration :

ldapmodify -h FQDNDUSERVEUR -p 389 -D “cn=manager,cn=config” -w motdepasse -f /root/certificate.ldif

Suffixe

Création du suffixe :

# vi /root/suffixe.ldif

dn: dc=test,dc=fr
objectClass: organization
objectClass: dcObject
objectClass: top
dc: test
o: Paris
Ajout du suffixe :
# /opt/ldap/bin/ldapadd -x -h IPDUSERVEUR -p 389 -f /root/suffixe.ldif -D « cn=Manager,dc=test,dc=fr » -W

Ajout du compte administrateur des données et de réplication :

# vi /root/manager.ldif

# Organizational Role for Directory Manager
dn: cn=Manager,dc=test,dc=fr
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: cn=replicator,dc=test,dc=fr
userPassword: mot de passe du compte de replication
cn: replicator
objectclass: top
objectclass: person
sn: Replicator Account

Ajout dans les données :

/opt/ldap/bin/ldapadd -x -h IPDUSERVEUR -p 389 -f /root/manager.ldif -D « cn=Manager,dc=test,dc=fr » -W

Ajout des ACI :

# vi /root/aci.ldif

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact= »cn=replicator,dc=test,dc=fr » time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

add: olcAccess
olcAccess: to attrs=userPassword by self write by dn.exact= »cn=replicator,dc=test,dc=fr » read by anonymous auth by * none

add: olcAccess
olcAccess: to * by dn.exact= »cn=replicator,dc=test,dc=fr » read by users read by * none

Import dans le LDAP :

# /opt/ldap/bin/ldapmodify -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f « /root/aci.ldif »
modifying entry « olcDatabase={2}mdb,cn=config »

Réplication

Ajout dans cn=module,cn=config de olcModulePath :

# vi /root/module.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov.la

Et import :

/opt/ldap/bin/ldapmodify -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f « /root/module.ldif »

Ajout du plugin syncprov.la :

# vi /root/syncoverlay.ldif
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Import dans le LDAP :

/opt/ldap/bin/ldapadd -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f « /root/syncoverlay.ldif »

Création du fichier contenant les index à générer :

# vi /root/syncindex.ldif
dn:olcDatabase={2}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN,entryUUID eq

Import dans le LDAP :

/opt/ldap/bin/ldapmodify -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f « /root/syncindex.ldif »

Ajout des id :

# vi /root/syncid.ldif
dn: cn=config
changetype: modify
add: olcServerId
olcServerId: 1 ldap://FQDNDUSERVEUR:389/

add: olcServerId
olcServerId: 2 ldap://FQDNDUSERVEUR:389/

Import dans le LDAP :

/opt/ldap/bin/ldapmodify -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f « /root/syncid.ldif »

Ajout de la réplication

Sur le 1 :

# vi /root/sync.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: rid=000 provider=ldap://FQDNDUSERVEUR:389/ binddn= »cn=replicator,dc=test,dc=fr » credentials=MOTDEPASSE attrs= »*,+ » bindmethod=simple searchbase= »dc=test,dc=fr » type=refreshAndPersist retry= »60 + »

add: olcMirrorMode
olcMirrorMode: true

Import sur le LDAP:

/opt/ldap/bin/ldapmodify -x -h IPDUSERVEUR -p 389 -D « cn=admin,cn=config » -W -f /root/sync.ldif

Sur le 2 :

# vi /root/sync.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modifyf
add: olcSyncrepl
olcSyncrepl: {0}rid=001 provider=ldaps://FQDNDUSERVEUR:636 binddn= »cn=replicator,dc=test,dc=fr » credentials=MOTDEPASSEDUCOMPTEDEREPLICATION attrs= »*,+ » bindmethod=simple tls_reqcert=allow searchbase= »dc=test,dc=fr » type=refreshAndPersist retry= »60 + »

add: olcMirrorMode
olcMirrorMode: true

Import sur le LDAP:

ldapmodify -x -h ldap://IPLDAP:389/ -p 389 -D « cn=Manager,cn=config » -w motdepasseducompteconfig -f « /root/sync.ldif

Personnalisation

Ajout du schéma spécifique :

# /opt/ldap/sbin/slapadd -n0 -F /opt/ldap/etc/openldap/slapd.d/

include: file:///opt/ldap/etc/openldap/schema/openam.ldif
include: file:///opt/ldap/etc/openldap/schema/utilisateur.ldif

Le slapadd a modifié les droits il est donc nécessaire de les remettre :

chown -hR ldap: /opt/ldap/etc/openldap/slapd.d

Lastbind

Compilation :

# cd /root/openldap/openldap-2.4.46/contrib/slapd-modules/lastbind
# make
# make install

Copie dans le dossier comprenant les librairies :

cp /usr/local/libexec/openldap/lastbind.* /opt/ldap/libexec/openldap/

Import dans le LDAP

/opt/ldap/bin/ldapmodify -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: lastbind.la

Configuration :

# /opt/ldap/bin/ldapadd -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: olcOverlay=lastbind,olcDatabase={2}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcLastBindConfig
olcOverlay: lastbind
olcLastBindPrecision: 0

Vlv

Import dans le LDAP :

/opt/ldap/bin/ldapmodify -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: sssvlv.la

Configuration :

# /opt/ldap/bin/ldapadd -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: olcOverlay={0}sssvlv,olcDatabase={2}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSssVlvConfig
olcOverlay: {0}sssvlv
olcSssVlvMax: 0
olcSssVlvMaxKeys: 5
olcSssVlvMaxPerConn: 5





Ajout d’index spécifique

Import dans le LDAP :

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber pres,eq

add: olcDbIndex
olcDbIndex: gidNumber pres,eq

add: olcDbIndex
olcDbIndex: ou pres,eq,sub

add: olcDbIndex
olcDbIndex: givenName pres,eq,sub

add: olcDbIndex
olcDbIndex: memberUid pres,eq,sub


dn: olcDatabase={2}mdb,cn=config
changetype: modify
delete: olcDbIndex
olcDbIndex: uid pres,eq

add: olcDbIndex
olcDbIndex: uid pres,eq,sub

ACL spécifique

Ajout des ACL spécifiques :

# /opt/ldap/bin/ldapmodify -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by group/groupOfNames/member.exact= »cn=admin,ou=groups,dc=test,dc=fr » write by self write by * read

Sha256

Compilation de la librairie

# /root/openldap/openldap-2.4.46/contrib/slapd-modules/passwd/sha2
# make
# make install
# cp /usr/local/libexec/openldap/pw-sha* /opt/ldap/libexec/openldap

Import dans le LDAP :

# /opt/ldap/bin/ldapmodify -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: pw-sha2.la

Configuration :

# /opt/ldap/bin/ldapmodify -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcPasswordHash
olcPasswordHash: {SHA256}

Autoriser la connexion en LDAPV2

Configuration :

# /opt/ldap/bin/ldapadd -H ldap://FQDNDUSERVEUR:389 -x -D « cn=admin,cn=config » -W
dn: cn=config
changetype: modify
add: olcAllows
olcAllows: bind_v2

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *