Hoy en día, OpenLDAP debe configurarse con ldapmodify cn = config, como se describe aquí . Pero en ninguna parte puedo encontrar cómo lo configura para aceptar solo el tráfico TLS. Acabo de confirmar que nuestro servidor acepta tráfico sin cifrar (con ldapsearch y tcpdump).
Normalmente, simplemente cerraría el puerto que no es SSL con tablas IP, pero aparentemente el uso del puerto SSL está en desuso, por lo que no tengo esa opción.
Entonces, con los comandos de configuración SSL, así:
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?
Editar: probé el olcTLSCipherSuite, pero no funciona. 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 arreglado): pude solucionarlo cargando:
# cat force-ssl.tx
dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
Pero luego comandos como
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif
No trabaje más ... Y cámbielo 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)". Aparentemente, aunque este enlace se especifica como rootdn, no puedo usarlo para alterarlo cn=config
. ¿Se puede cambiar eso?
TLS confidentiality required
mensaje.Esto se logra con la opción TLSCipherSuite . Un ejemplo está documentado en el capítulo de seguridad LDAP del libro OpenLDAP Zytrax . Con él puede decirle a OpenLDAP las suites de cifrado que su servidor aceptará. Por ejemplo, puede decir que no desea un
NULL
conjunto de cifrado (es decir, una sesión no cifrada).Sin embargo, tenga cuidado de que OpenLDAP puede vincularse con las bibliotecas OpenSSL o GnuTLS. Aquellos usan diferentes listas de cifrado para describir su soporte de cifrado. La lista de cifrado de OpenSSL se puede obtener con un comando como
openssl ciphers -v
y la lista GnuTLS congnutls-cli -l
.La forma más sencilla de deshabilitar la conexión sin cifrado sería:
Una restricción más específica usando la sintaxis GnuTLS :
Un ejemplo más completo podría ser (usando la sintaxis de OpenSSL ):
Hay una discusión en la lista de correo de OpenLDAP que vale la pena leer sobre una pregunta similar .
También vale la pena señalar que las herramientas cli de OpenLDAP, como
ldapsearch
, cambian automáticamente al uso de TLS cuando se conectan a un servidor que prohíbe las conexiones no cifradas. Eso significa que no necesita agregar-Z
a la lista de argumentos.fuente
ALL:!NULL