Nivel del Documento

Porcentaje del documento

Medio

90%

Archivos adjuntos

setupssl.sh | checkCert.sh | gen-cert.sh

Enlaces relacionados

Introducción a Fedora Directory Server | ZimbraSchema

Escritores

WilmerJaramillo

SSL para Fedora Directory Server

Fedora Directory Server soporta distintos mecanismo de cifrado a la hora de usar el protocolo LDAP en entornos inseguros, algunos de ellos son TLS, SASL y SSL. El contenido de está guía nos va a permitir activar rápidamente SSL para su uso inmediato debido a que todo el proceso se ha automatizado, si desea conocer los detalles de su implementación por el servidor LDAP le recomiendo que visite la página principal del proyecto: Howto:SSL (Ingles).

El soporte SSL en el directorio es un requerimiento que nos permite además la sincronización de datos entre un servidor FDS y MS Active Directory y los distintos métodos de replicación entre servidores FDS, para el MS Active Directory, es requisito obligatorio por diseño tener SSL. Ahora bien, se han creado diversas herramientas en la página del proyecto, una de ellas es setupssl.sh la cuál ha sido levemente modificada, uno de los cambios por ejemplo ha sido el soporte para utilizar un usuario distinto al que crea FDS por defecto para manejar el directorio, también conocido como Directory Manager.

Configurando el Servidor

Como mínimo debe tener Fedora Directory Server Core y acceder al directorio de certificados, en una instalación común éste directorio se encuentra en /opt/fedora-ds/alias ejecute desde allí:

$ ./setupssl.sh
No CA certificate found - will create new one
No Server Cert found - will create new one
No Admin Server Cert found - will create new one
Creating password file for security token
Creating noise file
Creating initial key and cert db
Creating encryption key for CA

Generating key.  This may take a few moments...
Creating self-signed CA certificate
Generating key.  This may take a few moments...
Exporting the CA certificate to cacert.asc
[...]

Generating key.  This may take a few moments...
Creating the admin server certificate
Generating key.  This may take a few moments...
Exporting the admin server certificate pk12 file
Exporting the admin server certificate pk12 file
pk12util-bin: PKCS12 EXPORT SUCCESSFUL
Creating real key and cert db for directory server
Creating pin file for directory server
Creating key and cert db for admin server admin-serv-<instance>-
Importing the admin server key and cert (created above)
pk12util-bin: PKCS12 IMPORT SUCCESSFUL
Importing the CA certificate from cacert.asc
Creating the admin server password file
Enabling the use of a password file in admin server
At the prompt, please enter the username and password for the Configuration Administrator.
administrator ID [Directory Manager]: 

Justo en el mensaje administrator ID [Directory Manager]: va colocar el usuario administrador del directorio, si no ha cambiado el usuario asignado por defecto en la instalación del directorio el shell script utilizara Directory Manager, luego ingrese la contraseña y se cargará los datos necesarios para tener el soporte SSL listo en Fedora Directory Server Core y disponible para su activación en Fedora Directory Server Administrator sí queremos utilizar conexiones webs seguras mediante https y administración del directorio seguro mediante Fedora Directory Console.

Finalmente debe reiniciar su servidor FDS y estará listo para usar SSL en el puerto 636 para todas las comunicaciones servidor-servidor y la autenticación cliente-servidor.

(!) Verificación

Puede también usar el shell script checkCert.sh para verificar el estado de los certificados generados y conectarse usando openssl.

Desactivar puerto inseguro

Podría desactivar las comunicaciones inseguras a través del puerto 389 y dejar activo únicamente el puerto 636, primero debe detener FDS Core:

$ /opt/fedora-ds/slapd-<instancia>/stop-slapd

Luego debe editar el archivo de configuración dse.ldif y modificar nsslapd-port: 389 por nsslapd-port: 0, o ejecutar el siguiente comando:

$ perl -pi -e 's,nsslapd-port: 389,nsslapd-port: 0,g' \
/opt/fedora-ds/slapd-<instancia>/config/dse.ldif

Luego debe iniciar nuevamente FDS Core y estará listo:

$ /opt/fedora-ds/slapd-<instancia>/start-slapd
Starting fedora-ds-core: [04/Nov/2007:23:40:43 -0400] - Information: Non-Secure Port Disabled, server only contactable via secure port

{i} Nota:

Tenga en cuenta que es recomendable primero completar la configuración de los clientes y luego la verificación de las comunicaciones antes de desactivar el puerto 389, continue con las secciones más abajo de éste documento y cuando compruebe que sus clientes se autentican por el puerto 636 y todo esté listo entonces podrá aplicar la información de está sección.

Configurando los clientes

Finalmente debe informar a los sistemas clientes cuál será el nuevo método para 'hablar' con el servidor, se debe crear el directorio para los certificados:

# mkdir -p /etc/openldap/cacerts/

Y en el archivo /etc/openldap/ldap.conf debera escribir sustituyendo ds1 por el nombre de sus servidor y vzla.gob.ve por su dominio:

URI     ldap://ds1.vzla.gob.ve
BASE dc=vzla,dc=gob,dc=ve
HOST `vzla.gob.ve`
TLS_CACERTDIR /etc/openldap/cacerts/
TLS_REQCERT allow

Finalmente debe instalar el certificado generado en el servidor a cada uno de los sistemas clientes, la forma más simple es descargando el certificado con el comando openssl desde los clientes:

$ openssl s_client -connect ds1.vzla.gob.ve:636 > fds_cacert.asc

Ahora debe editar el archivo fds_cacert.asc y dejarlo únicamente con la información del certificado:

-----BEGIN CERTIFICATE-----
MIIBwjCCASugAwIBAgICA+kwDQYJKoZIhvcNAQEEBQAwETEPMA0GA1UEAxMGQ0Fj
ZXJ0MB4XDTA3MTEwMjAwMTkwMFoXDTE3MTEwMjAwMTkwMFowPDEgMB4GA1UECxMX
RmVkb3JhIERpcmVjdG9yeSBTZXJ2ZXIxGDAWBgNVBAMTD2RzMS52emxhLmdvYi52
ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwqeOpO9FckLO55gCIq49yIpf
ikh4Ny1fcHJtFzPV0uMJgGkNEozqTMJ9D7Qtwfv2xmCVKF8AAKtTQBg3IlUMttA8
20lIA0lkrkD3dH36ix51N/NA53S2S7pyj8O3hsye6ZOTJ7KwY8LSLrpe41qKNLIC
sOvtcdcNRT/4OpIu+jUCAwEAATANBgkqhkiG9w0BAQQFAAOBgQAkaaJlp4V9aoCO
chigU9YZCQhr5VJOq6+QXh3FAvFZYmmbZfjwqovWDdPMXlmB8fledMuo0Q2Y6Pqu
cjiM5y+C43+ydvgHmo5Q5rViQnBbaXtWlAeI3IkIzcpzCCmL/cuJT1L65JBrs7eZ
33CAW2p2PLMVY8ORipIGaD0Wn98FXA==
-----END CERTIFICATE-----

(!) system-config-authentication

También es posible ubicar el certificado en un servidor web y posteriormente usar el comando system-config-authentication desde los clientes, system-config-authentication automáticamente descarga el certificado y le asigna un nombre de archivo formado por el hash de su contenido con la extensión ".0":

Verificación

Puertos: Por defecto FDS 'escucha' por el puerto 636 para las comunicaciones mediante SSL, puede ejecutar algún escaneador de puertos y determinar si está activo o no, también puede usar el siguiente comando:

$ lsof -i :636
COMMAND    PID      USER   FD   TYPE DEVICE SIZE NODE NAME
ns-slapd 24409 ds-fedora    6u  IPv4 295138       TCP *:636 (LISTEN)

Comunicación: Use el comando ldapsearch para 'conversar' con su directorio de forma segura:

# ldapsearch -x -ZZ '(uid=*)'

El comando ldapsearch va generar eventos en las bitácoras de nuestro servidor ubicadas en /opt/fedora-ds/slapd-<instancia>/logs/, debe estar atento a las entradas cuyas lineas contengan datos del tipo de cifrado tal como SSL 256-bit AES:

[04/Nov/2007:21:11:30 -0400] conn=31 fd=71 slot=71 connection from 130.1.10.180 to 130.1.10.179
[04/Nov/2007:21:11:30 -0400] conn=31 op=0 EXT oid="1.3.6.1.4.1.1466.20037" name="startTLS"
[04/Nov/2007:21:11:30 -0400] conn=31 op=0 RESULT err=0 tag=120 nentries=0 etime=0
[04/Nov/2007:21:11:31 -0400] conn=31 SSL 256-bit AES
[04/Nov/2007:21:11:31 -0400] conn=31 op=1 BIND dn="" method=128 version=3
[04/Nov/2007:21:11:31 -0400] conn=31 op=2 SRCH base="dc=vzla,dc=gob,dc=ve" scope=2 filter="(uid=*)" attrs=ALL
[04/Nov/2007:21:11:31 -0400] conn=31 op=2 RESULT err=0 tag=101 nentries=1 etime=0
[04/Nov/2007:21:11:31 -0400] conn=31 op=3 UNBIND

Red Hat Directory Server

Este mismo procedimiento también aplica a Red Hat Directory Server en su versión 1.0.1 SP1 hasta SP3 pero con el shell script gen-cert.sh en lugar de setupssl.sh.

Referencias:

http://www.redhat.com/docs/manuals/dir-server/ag/7.1/ssl.html

http://directory.fedoraproject.org/wiki/Howto:SSL

Autenticación/FedoraDirectoryServer/SSL (last edited 2007-11-05 04:51:47 by WilmerJaramillo)