web-dev-qa-db-fra.com

Configurer OpenLDAP avec TLS = requis

De nos jours, OpenLDap doit être configuré avec LDAPModify CN = config, comme décrit ici . Mais nulle part, je ne peux trouver comment vous le configurez à uniquement Acceptez 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, apparemment, donc je n'ai pas cette option.

Ainsi, 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

Y a-t-il un paramètre de forçage de TLS?

EDIT: J'ai essayé l'olctlciphersuite, 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 chargement:

# cat force-ssl.tx 
dn: cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

Mais alors ordonne comme

ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif

Ne travaillez plus ... et changeez-le à:

ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt

donne-moi "LDAP_Bind: Cidations non valides (49)". Apparemment, même si ce binddn est spécifié en tant que rootdn, je ne peux pas l'utiliser pour modifier cn=config. Cela peut-il être changé?

16
Halfgaar

Je semblais le chercher:

J'ai fait ça:

dn: olcDatabase={1}hdb,cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

Et cela semble avoir l'effet souhaité. Je peux toujours exécuter des commandes comme:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config

Mais essayer de se lier avec "ldapsearch -xLLL -b ... "Sans SSL dit:" Confidentialité TLS requise "

16
Halfgaar

Ceci est obtenu avec l'option TLCIPHERSuite . Un exemple est documenté à chapitre Security LDAP du livre OpenLDAP Zytrax . Avec cela, vous pouvez dire OpenLDAP les suites ciphères que votre serveur acceptera. Par exemple, vous pouvez dire que vous ne voulez pas une suite CIpher NULL (c.-à-d .: Session non cryptée).

Soyez prudent que OpenLDAP puisse être liée à OpenSSL ou à Gnutls Bibliothèques. Ceux-ci utilisent différentes listes de chiffrement pour décrire leur support de cryptage. La liste OpenSSL Cipher peut être obtenue avec une commande comme openssl ciphers -v et la liste des gnutls avec gnutls-cli -l.

Le moyen le plus simple de désactiver la connexion sans cryptage serait alors:

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: ALL:!NULL

Une restriction plus spécifique utilisant GNUTLS Syntaxe :

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: TLS_RSA_CAMELLIA_128_CBC_SHA1:TLS_RSA_CAMELLIA_256_CBC_SHA1:!NULL

Un exemple plus complet peut être (en utilisant OpenSSL Syntaxe ):

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: HIGH:+SSLv3:+TLSv1:MEDIUM:+SSLv2:@STRENGTH:+SHA:+MD5:!NULL

Il y a une discussion sur la liste de diffusion OpenLDAP à la lecture environ une question similaire .

Il convient également de noter que les outils CLI OpenLDAP, comme ldapsearch, passent automatiquement à l'aide de TLS lors de la connexion à un serveur interdisant les connexions non cryptées. Cela signifie que vous do pas besoin d'ajouter -Z à la liste des arguments.

3
Tonin