Nivel del Documento |
Porcentaje del documento |
Medio |
90% |
Archivos adjuntos |
|
Enlaces relacionados |
|
Escritores |
SSL para Fedora Directory Server
Contents
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.
|
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
|
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-----
|
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
