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.
Contenidos
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