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 una respuesta

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.