Dans notre article précédent, nous configurons le serveur OpenLDAP sur CentOS 7 / RHEL 7 pour une authentification centralisée. Dans la continuité de cela, nous allons maintenant configurer OpenLDAP avec SSL pour une communication sécurisée. Dans cette configuration, les communications des clients LDAP se font sur le port sécurisé 636 au lieu du port non sécurisé 389.
Suivez ce guide pour configurer OpenLDAP avec SSL.
Prérequis
1. Configuration OpenLDAP.
2. Créez une entrée d'hôte du serveur LDAP sur vos machines clientes dans /etc/hosts
pour la résolution de noms.
192.168.1.10 server.itzgeek.local server
OU
Si vous prévoyez d'utiliser le nom d'hôte au lieu de l'adresse IP, alors Configurez le serveur DNS sur CentOS 7/RHEL 7 pour avoir une résolution de nom d'hôte.
Créer un certificat LDAP
Si vous envisagez d'utiliser LDAP sur SSL, vous pouvez suivre l'une des méthodes ci-dessous pour l'implémenter.
1. Certificat auto-signé - Il s'agit d'un simple certificat auto-signé. Les clients LDAP doivent avoir tls_reqcert allow
dans /etc/nslcd.conf
à ne pas valider le certificat.
2. Certificat signé par une autorité de certification – Vos certificats signés par une autorité de certification interne ou une autorité de certification externe. Vous devez placer le certificat CA qui a signé votre certificat de serveur LDAP dans /etc/openldap/cacerts/
répertoire afin que les clients LDAP puissent valider les certificats.
Certificat auto-signé
Créons un certificat auto-signé pour notre serveur LDAP. La commande ci-dessous génère à la fois le certificat et la clé privée dans /etc/openldap/certs/
répertoire.
openssl req -new -x509 -nodes -out /etc/openldap/certs/itzgeekldap.crt -keyout /etc/openldap/certs/itzgeekldap.key -days 1460
Sortie :
Generating a 2048 bit RSA private key ...+++ .....................................+++ writing new private key to '/etc/openldap/certs/itzgeekldapkey.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: XX State or Province Name (full name) []: XX Locality Name (eg, city) [Default City]: XXXXXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:IT Infra Common Name (eg, your name or your server's hostname) []:server.itzgeek.local Email Address []:[email protected]
Définissez les autorisations du propriétaire et du groupe.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Vérifiez le certificat LDAP créé sous /etc/openldap/certs/
répertoire.
ll /etc/openldap/certs/itzgeek*
Sortie :
-rw-r--r--. 1 ldap ldap 1302 Apr 1 14:18 /etc/openldap/certs/itzgeekldap.crt -rw-r--r--. 1 ldap ldap 1704 Apr 1 14:18 /etc/openldap/certs/itzgeekldap.key
Créer certs.ldif
fichier pour configurer LDAP afin d'utiliser une communication sécurisée à l'aide d'un certificat auto-signé.
vi certs.ldif
Utilisez les informations ci-dessous.
dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/itzgeekldap.crt dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/itzgeekldap.key
Importez les configurations sur le serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Vérifiez la configuration
slaptest -u
Vous devriez recevoir le message suivant en cas de vérification réussie.
config file testing succeeded
Certificat personnalisé signé par une autorité de certification
Créez la clé racine à l'aide de la commande suivante.
cd /etc/openldap/certs/ openssl genrsa -out itzgeekrootCA.key 2048
Maintenant, créez le certificat racine auto-signé.
openssl req -x509 -new -nodes -key itzgeekrootCA.key -sha256 -days 1024 -out itzgeekrootCA.pem
Sortie :
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:XX State or Province Name (full name) []:XXX Locality Name (eg, city) [Default City]:XXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:XXX Common Name (eg, your name or your server's hostname) []:ITzGeek Root CA Email Address []:[email protected]
Créez une clé privée pour le serveur LDAP.
openssl genrsa -out itzgeekldap.key 2048
Une fois que vous avez la clé privée, créez une demande de signature de certificat.
openssl req -new -key itzgeekldap.key -out itzgeekldap.csr
Sortie :
Assurez-vous que le nom commun correspond au nom d'hôte ou à l'adresse IP de votre serveur LDAP.
Generating RSA private key, 2048 bit long modulus .........+++ .............................................................+++ e is 65537 (0x10001) [root@server certs]# openssl req -new -key itzgeekldap.key -out itzgeekldap.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:XX State or Province Name (full name) []:XX Locality Name (eg, city) [Default City]:XXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:server.itzgeek.local Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Maintenant, signez une demande de signature de certificat à l'aide de l'autorité de certification racine personnalisée.
openssl x509 -req -in itzgeekldap.csr -CA itzgeekrootCA.pem -CAkey itzgeekrootCA.key -CAcreateserial -out itzgeekldap.crt -days 1460 -sha256
Définissez les autorisations du propriétaire et du groupe.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Vérifiez le certificat LDAP créé sous /etc/openldap/certs/
répertoire.
ll /etc/openldap/certs/itzgeek*
Sortie :
-rw-r--r--. 1 ldap ldap 1285 Apr 1 16:54 /etc/openldap/certs/itzgeekldap.crt -rw-r--r--. 1 ldap ldap 1050 Apr 1 16:53 /etc/openldap/certs/itzgeekldap.csr -rw-r--r--. 1 ldap ldap 1675 Apr 1 16:51 /etc/openldap/certs/itzgeekldap.key -rw-r--r--. 1 ldap ldap 1679 Apr 1 16:49 /etc/openldap/certs/itzgeekrootCA.key -rw-r--r--. 1 ldap ldap 1399 Apr 1 16:49 /etc/openldap/certs/itzgeekrootCA.pem -rw-r--r--. 1 ldap ldap 17 Apr 1 16:54 /etc/openldap/certs/itzgeekrootCA.srl
Créer certs.ldif
fichier pour configurer LDAP afin d'utiliser une communication sécurisée à l'aide d'un certificat auto-signé.
vi certs.ldif
Utilisez les informations ci-dessous.
dn: cn=config changetype: modify replace: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/openldap/certs/itzgeekrootCA.pem dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/itzgeekldap.crt dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/itzgeekldap.key
Importez les configurations sur le serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Vérifiez la configuration
slaptest -u
Vous devriez recevoir le message suivant en cas de vérification réussie.
config file testing succeeded
Configurer OpenLDAP pour écouter via SSL
Modifiez le /etc/sysconfig/slapd
fichier et configurez OpenLDAP pour écouter via SSL.
vi /etc/sysconfig/slapd
Mettez à jour la ligne ci-dessous.
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
Redémarrez le service slapd.
systemctl restart slapd
Vérifiez le service LDAP. Le service LDAP devrait maintenant écouter également sur le port TCP 636.
netstat -antup | grep -i 636
Sortie :
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 11720/slapd tcp6 0 0 :::636 :::* LISTEN 11720/slapd
Pare-feu
Ajoutez le service LDAPS au pare-feu (TCP 686).
firewall-cmd --permanent --add-service=ldaps firewall-cmd --reload
Configuration du client OpenLDAP pour OpenLDAP sur SSL
Installez les packages client à l'aide de la commande yum.
yum install -y openldap-clients nss-pam-ldapd
Exécutez le authconfig
commande pour ajouter une machine cliente au serveur LDAP pour l'authentification unique. Remplacez "server.itzgeek.local " par l'adresse IP ou le nom d'hôte de votre serveur LDAP.
Si vous avez utilisé un certificat signé par une autorité de certification personnalisée ou une autorité de certification externe dans la configuration OpenLDAP, le nom d'hôte ou l'adresse IP doit correspondre au nom commun du certificat du serveur LDAP
authconfig --enableldap --enableldapauth --ldapserver=ldaps://server.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --disableldaptls --update
Vous devrez effectuer les étapes ci-dessous en fonction de la méthode que vous avez configurée OpenLDAP pour utiliser SSL.
Certificat auto-signé
Modifiez le nslcd.conf
fichier.
vi /etc/nslcd.conf
Ajoutez la ligne suivante dans le nslcd.conf
dossier. Le paramètre ci-dessous désactivera la validation du certificat effectuée par les clients car nous utilisons un certificat auto-signé.
tls_reqcert allow
Signé par une autorité de certification personnalisée ou signé par une autorité de certification externe
Copiez le itzgeekrootCA.pem
depuis le serveur LDAP ou placez le certificat intermédiaire ou l'autorité de certification fournie par l'autorité de certification externe dans /etc/openldap/cacerts
répertoire.
cd /etc/openldap/cacerts/ scp -pr 192.168.1.10:/etc/openldap/certs/itzgeekrootCA.pem /etc/openldap/cacerts
Créez le hachage c du certificat CA.
/etc/pki/tls/misc/c_hash /etc/openldap/cacerts/itzgeekrootCA.pem
Sortie :
997ee4fb.0 => /etc/openldap/cacerts/itzgeekrootCA.pem
Maintenant, créez un lien symbolique entre rootCA.pem et le numéro hexadécimal à 8 chiffres affiché.
ln -s /etc/openldap/cacerts/itzgeekrootCA.pem 997ee4fb.0
Redémarrez le service client LDAP.
systemctl restart nslcd
Vérifier la connexion LDAP
Utilisez la commande getent pour obtenir les entrées LDAP du serveur LDAP.
getent passwd raj
Sortie :
raj:x:9999:100:Raj [Admin (at) ITzGeek]:/home/raj:/bin/bash
Pour vérifier le LDAP, connectez-vous à l'aide de l'utilisateur LDAP "raj" sur la machine cliente.
Capture d'écran :
Référence
OpenFusion – Trucs et astuces OpenLDAP
CentOS – Forum
C'est tout.