16 votos

Configurar OpenLDAP con TLS=requiere

Hoy en día, OpenLDAP, debe ser configurado con ldapmodify cn=config, como se describe aquí. Pero no puedo encontrar la forma de configurar para que sólo acepte el tráfico TLS. Me acaba de confirmar que nuestro servidor acepta sin encriptar el tráfico (con ldapsearch y tcpdump).

Normalmente, sólo quiero cerrar el puerto no SSL con IP tables, pero usando el puerto SSL está en desuso, al parecer, por lo que no tengo esa opción.

Así que, con la configuración de SSL comandos, como este:

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

Hay un parámetro para forzar TLS?

Edit: he probado el olcTLSCipherSuite, pero no funciona. La salida de depuración:

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 (casi fijo): yo era capaz de solucionarlo por la carga:

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

Pero luego de comandos como

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

No funciona... Y cambiando de a:

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

me da "ldap_bind: credenciales no válidas (49)". Al parecer, aunque este binddn se especifica como rootdn, no los puedo usar para alterar cn=config. Puede que ser cambiado?

16voto

Halfgaar Puntos 2866

Me parecía haber conseguido:

Hice esto:

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

Y que parece tener el efecto deseado. Todavía puedo ejecutar comandos como:

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

Pero tratando de enlazar con "ldapsearch -xLLL -b ..." sin SSL dice: "TLS confidencialidad requerido"

3voto

codethulhu Puntos 1678

Esto se logra con la TLSCipherSuite opción. Un ejemplo se encuentra documentado en LDAP capítulo de seguridad de la OpenLDAP Zytrax libro. Con él usted puede decir OpenLDAP los conjuntos de cifrado que el servidor aceptará. Por ejemplo, usted puede decir que usted no quiere que un NULL suite de cifrado (es decir: no de sesión cifrada).

Sin embargo, tenga cuidado de que OpenLDAP puede ser enlazado con OpenSSL o GnuTLS bibliotecas. Aquellos de uso diferente cifrado listas para describir su soporte de cifrado. El sistema de cifrado OpenSSL lista, que puede obtenerse con un comando como openssl ciphers -v y el GnuTLS lista con gnutls-cli -l.

La forma más sencilla de deshabilitar la conexión sin cifrado sería:

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

De manera más específica restricción de uso de GnuTLS sintaxis:

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

Un ejemplo más completo podría ser (utilizando OpenSSL sintaxis):

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

Hay un OpenLDAP lista de correo de discusión que vale la pena leer acerca de una pregunta similar.

También vale la pena señalar que el OpenLDAP herramientas de línea de comandos, como ldapsearch, automáticamente el cambio a uso de TLS cuando se conecta a un servidor de prohibir las conexiones sin cifrar. Eso significa que usted no necesita agregar -Z a los argumentos de la lista.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: