Conexión segura al servidor LDAP usando TLS

Hasta ahora hemos configurado el servidor OpenLDAP para intercambiar información sin tener en cuanta la seguridad de las conexiónes, pero si lo vamos a utilizar para intercambiar datos sensibles como lo es la gestión de cuentas del sistema, es muy recomendable que los datos viajen cifrados del servidor al cliente. Vamos a utilizar TLS ya que es la evolución de SSL y la opción recomendada.

Instalar paquetes para TLS y certificados

Generaremos nuestros propios certificados, por lo que necesitamos los siguientes paquetes:
apt-get install gnutls-bin ssl-cert

Crear certificados y claves

sh -c “certtool –generate-privkey > /etc/ssl/private/cakey.pem”

Creamos la plantilla con la información necesaria

nano /etc/ssl/ca.info

cn=curseame
ca
cert_signing_key

Creamos el certificado auto firmado
certtool –generate-self-signed –load-privkey /etc/ssl/private/cakey.pem –template /etc/ssl/ca.info –outfile /etc/ssl/certs/cacert.pem

Ahora la clave privada del servidor
certtool –generate-privkey –bits 1024 –outfile /etc/ssl/private/debian_slapd_key.pem

Por último, la plantilla y el certificado del servidor
nano /etc/ssl/meso.info

organization = curseame
cn = curseame
tls_www_server
encryption_key
signing_key
expiration_days = 10000

Hemos puesto una cantida de días muy alta para la expiración. Se puede cambiar si es necesario.

Ahora creamos el certificado:
certtool –generate-certificate –load-privkey /etc/ssl/private/debian_slapd_key.pem –load-ca-certificate /etc/ssl/certs/cacert.pem –load-ca-privkey /etc/ssl/private/cakey.pem –template /etc/ssl/debian.info –outfile /etc/ssl/certs/debian_slapd_cert.pem

Configurar el servidor

Vamos a crear un fichero .ldif con la información que tiene que insertarse en el servidor para que utilice los certificados que acabamos de crear
nano tls_conf.ldif

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem

add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/debian_slapd_cert.pem

add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/debian_slapd_key.pem

Se la pasamos al servidor con el comando:
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls_conf.ldif

Ahora tenemos que decirle que utilice esta conexión, vamos al fichero /etc/default/slapd y buscamos esta linea
SLAPD_SERVICES=”ldap:/// ldapi:///”

Si queremos añadirle el acceso seguro la dejarmos así:
SLAPD_SERVICES=”ldap:/// ldapi:/// ldaps:///”

Y si SOLO queremos que se pueda acceder de forma segura, quitamos las otras dos opciones:
SLAPD_SERVICES=”ldaps:///”

Ahora establecemos los permisos adecuados para la clave privada del servidor:

usermod -aG ssl-cert openldap
chgrp sll-cert /etc/ssl/private/debian_slapd_key.pem
chmod g+r /etc/ssl/private/debian_slapd_key.pem
chmod o-r /etc/ssl/private/debian_slapd_key.pem

Y finalmente, reiniciamos el servicio:
service slapd restart

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.