De nos jours, OpenLDAP doit être configuré avec ldapmodify cn = config, comme décrit ici . Mais je ne trouve nulle part comment le configurer pour accepter uniquement le trafic TLS. Je viens de confirmer que notre serveur accepte le trafic non crypté (avec ldapsearch et tcpdump).
Normalement, je fermerais simplement le port non SSL avec des tables IP, mais l'utilisation du port SSL est obsolète, donc je n'ai pas cette option.
Donc, avec les commandes de configuration SSL, comme ceci:
dn: cn=config
changetype:modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/bla.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/bla.crt
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ca.pem
Existe-t-il un paramètre pour forcer TLS?
Edit: J'ai essayé l'olcTLSCipherSuite, mais cela ne fonctionne pas. Sortie de débogage:
TLS: could not set cipher list TLSv1+RSA:!NULL.
main: TLS init def ctx failed: -1
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.
Edit2 (presque fixe): j'ai pu le réparer en chargeant:
# cat force-ssl.tx
dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
Mais des commandes comme
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif
Ne travaillez plus ... Et changez-le en:
ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt
me donne "ldap_bind: Identifiants invalides (49)". Apparemment, même si ce binddn est spécifié en tant que rootdn, je ne peux pas l'utiliser pour le modifier cn=config
. Cela peut-il être changé?
TLS confidentiality required
message.Ceci est réalisé avec l' option TLSCipherSuite . Un exemple est documenté au chapitre sur la sécurité LDAP du livre OpenLDAP Zytrax . Avec lui, vous pouvez indiquer à OpenLDAP les suites de chiffrement que votre serveur acceptera. Par exemple, vous pouvez dire que vous ne voulez pas de
NULL
suite de chiffrement (c'est-à-dire: session non chiffrée).Attention cependant, OpenLDAP peut être lié aux bibliothèques OpenSSL ou GnuTLS. Ceux-ci utilisent différentes listes de chiffrement pour décrire leur prise en charge du chiffrement. La liste de chiffrement OpenSSL peut être obtenue avec une commande comme
openssl ciphers -v
et la liste GnuTLS avecgnutls-cli -l
.Le moyen le plus simple de désactiver la connexion sans chiffrement serait alors:
Une restriction plus spécifique utilisant la syntaxe GnuTLS :
Un exemple plus complet pourrait être (en utilisant la syntaxe OpenSSL ):
Il y a une discussion sur la liste de diffusion OpenLDAP à lire sur une question similaire .
Il convient également de noter que les outils cli OpenLDAP, comme
ldapsearch
, passent automatiquement à l'utilisation de TLS lors de la connexion à un serveur interdisant les connexions non chiffrées. Cela signifie que vous n'avez pas besoin d'ajouter-Z
à la liste des arguments.la source
ALL:!NULL