Está en la página 1de 8

Servicio de Directorio con LDAP [4]: OpenLDAP (I)

El DNS, DHCP y NTP son los servicios mnimos indispensables para que nuestro sencillo directorio
basado en OpenLDP nativo, !uncione adecuadamente en el Debian "#$ %Squee&e', o en el (buntu
)*#$+ LTS %Precise Pan,olin'#
-ed de e.emplo/
Lan/ )$#)$#)$#$0*+
Dominio/ ami,os#cu
Servidor/ mildap#ami,os#cu
Sistema Operativo Servidor/ Debian " 1Squee&e
Direcci2n 3P del servidor/ )$#)$#)$#)4
Cliente )/ debian5#ami,os#cu
Cliente */ rarin,#ami,os#cu
Cliente 6/ suse)6#ami,os#cu
Cliente +/ seven#ami,os#cu
En la Primera Parte veremos/
3nstalaci2n del OpenLDP 7slapd *#+#*685#69
Comprobaciones despu:s de la instalaci2n
3ndices a tener en cuenta
-e,las del Control de cceso a los datos
;eneraci2n de Certi!icados TLS en Squee&e
mientras que en la Se,unda Parte continuaremos con/
utenticaci2n local de usuarios
Poblar la base de datos
dministrar la base de datos mediante utilidades de consola
-esumen <asta aqu=
3nstalaci2n del OpenLDP 7slapd *#+#*685#69
El servidor OpenLDP se instala mediante el paquete slapd# Tambi:n debemos instalar el paquete
ldap8utils, el cual nos proporciona al,unas <erramientas del lado del cliente, as como utilidades
propias del OpenLDP#
/>? aptitude install slapd ldap8utils
Durante el proceso de instalaci2n, el debcon! nos pre,untar@ por la contraseAa del administrador o
usuario %admin%# Tambi:n se instalan una serie de dependenciasB se crea el usuario openldapB se crea la
con!i,uraci2n inicial del servidor, as como el directorio LDP#
En las versiones anteriores del OpenLDP, la con!i,uraci2n del demonio slapd se reali&aba totalmente
mediante el arc<ivo 0etc0ldap0slapd#con!# En la versi2n que estamos usando y posteriores, la
con!i,uraci2n se reali&a en el mismo slapd, y a tal prop2sito se le dedica un D3T %Directory
3n!ormation Tree' o Crbol de 3n!ormaci2n del Directorio, por separado#
El m:todo de con!i,uraci2n conocido como -TC %-eal Time Con!i,uration' Con!i,uraci2n en Tiempo
-eal, o como el D:todo cnEcon!i,, nos permite con!i,urar de !orma din@mica al slapd sin que sea
necesario reiniciar el servicio#
La base de datos de la con!i,uraci2n consiste en una colecci2n de arc<ivos de teFto en !ormato LD3G
%LDP Data 3nterc<an,e Gormat' Gormato LDP para el 3ntercambio de Datos, locali&ados en la
carpeta 0etc0ldap0slapd#d#
Para tener una idea de la or,ani&aci2n de la carpeta slapd#d, e.ecutemos/
/>? ls 8l- 0etc0ldap0slapd#d0
0etc0ldap0slapd#d0/
total H
drIFr8F888 6 openldap openldap +$J" !eb )" ))/$H cnEcon!i,
8rI8888888 ) openldap openldap +$5 !eb )" ))/$H cnEcon!i,#ldi!
0etc0ldap0slapd#d0cnEcon!i,/
total *H
8rI8888888 ) openldap openldap 6H6 !eb )" ))/$H cnEmoduleK$L#ldi!
drIFr8F888 * openldap openldap +$J" !eb )" ))/$H cnEsc<ema
8rI8888888 ) openldap openldap 6*4 !eb )" ))/$H cnEsc<ema#ldi!
8rI8888888 ) openldap openldap 6+6 !eb )" ))/$H olcMacNendEK$L<db#ldi!
8rI8888888 ) openldap openldap +5* !eb )" ))/$H olcDatabaseEK$Lcon!i,#ldi!
8rI8888888 ) openldap openldap 4H" !eb )" ))/$H olcDatabaseEK8)L!rontend#ldi!
8rI8888888 ) openldap openldap )$)* !eb )" ))/$H olcDatabaseEK)L<db#ldi!
0etc0ldap0slapd#d0cnEcon!i,0cnEsc<ema/
total +$
8rI8888888 ) openldap openldap )4+5+ !eb )" ))/$H cnEK$Lcore#ldi!
8rI8888888 ) openldap openldap ))6$H !eb )" ))/$H cnEK)Lcosine#ldi!
8rI8888888 ) openldap openldap "+6H !eb )" ))/$H cnEK*Lnis#ldi!
8rI8888888 ) openldap openldap *H$* !eb )" ))/$H cnEK6Linetor,person#ldi!
Si observamos un poco la salida anterior, vemos que el MacNend utili&ado en Squee&e es la base de
datos tipo <db, la cual es una variante de bdb %MerNeley Database', y que es totalmente .er@rquica y
soporta el renombrado de sub8@rboles# Para conocer m@s sobre los posibles MacNends que soporta
OpenLDP, visite <ttp/00es#IiNipedia#or,0IiNi0OpenLDP#
Tambi:n vemos que se utili&an tres bases de datos separadas, o sea, una dedicada a la con!i,uraci2n,
otra al Grontend, y la Oltima que es la base de datos <db en si#
Por otra parte, slapd se instala por de!ecto con los esquemas Core, Cosine, Nis e 3netor,person#
Comprobaciones despu:s de la instalaci2n
En una terminal e.ecutamos y leemos con calma las salidas# Comprobaremos, sobre todo con el
se,undo comando, la con!i,uraci2n deducida de listar la carpeta slapd#d#
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b cnEcon!i, S more
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b cnEcon!i, dn
dn/ cnEcon!i,
dn/ cnEmoduleK$L,cnEcon!i,
dn/ cnEsc<ema,cnEcon!i,
dn/ cnEK$Lcore,cnEsc<ema,cnEcon!i,
dn/ cnEK)Lcosine,cnEsc<ema,cnEcon!i,
dn/ cnEK*Lnis,cnEsc<ema,cnEcon!i,
dn/ cnEK6Linetor,person,cnEsc<ema,cnEcon!i,
dn/ olcMacNendEK$L<db,cnEcon!i,
dn/ olcDatabaseEK8)L!rontend,cnEcon!i,
dn/ olcDatabaseEK$Lcon!i,,cnEcon!i,
dn/ olcDatabaseEK)L<db,cnEcon!i,
EFplicaci2n de cada salida/
cnEcon!i,/ Par@metros ,lobales#
cnEmoduleK$L,cnEcon!i,/ D2dulo car,ado de !orma din@mica#
cnEsc<ema,cnEcon!i,/ Contiene el <ard8coded al nivel de los esquemas del sistema#
cnEK$Lcore,cnEsc<ema,cnEcon!i,/ El <ard8coded del esquema del nOcleo#
cnEK)Lcosine,cnEsc<ema,cnEcon!i,/ El esquema Cosine#
cnEK*Lnis,cnEsc<ema,cnEcon!i,/ El esquema Nis#
cnEK6Linetor,person,cnEsc<ema,cnEcon!i,/ El esquema 3netor,person#
olcMacNendEK$L<db,cnEcon!i,/ MacNend de almacenamiento de datos tipo <db#
olcDatabaseEK8)L!rontend,cnEcon!i,/ Grontend de la base de datos y par@metros por de!ecto para las
otras bases de datos#
olcDatabaseEK$Lcon!i,,cnEcon!i,/ Mase de datos de la con!i,uraci2n del slapd 7cnEcon!i,9#
olcDatabaseEK)L<db,cnEcon!i,/ Nuestra instancia de la base de datos 7dcEami,os,dcEcu9
/>? ldapsearc< 8F 8LLL 8H ldap/000 8b dcEeFample,dcEcom dn
dn/ dcEami,os,dcEcu
dn/ cnEadmin,dcEami,os,dcEcu
dcEami,os,dcEcu/ Mase del D3T Crbol de 3n!ormaci2n del Directory
cnEadmin,dcEami,os,dcEcu/ dministrador 7rootDN9 del D3T declarado durante la instalaci2n#
Nota/ El su!i.o base dcEami,os, dcEcu, lo tom2 el debcon! durante la instalaci2n a partir del GPDN del
servidor mildap#ami,os#cu#
3ndices a tener en cuenta
El indeFado de las entradas se reali&a para me.orar el rendimiento de las bOsquedas sobre el D3T, con
criterios de !iltrado# Los ndices que consideraremos son los mnimos recomendados acorde a los
atributos declarados en los esquemas por de!ecto#
Para modi!icar din@micamente los ndices en la base de datos, creamos un arc<ivo de teFto en !ormato
LD3G, y posteriormente lo a,re,amos a la base de datos# Creamos el arc<ivo olcDb3ndeF#ldi! y lo
de.amos con el si,uiente contenido/
/>? nano olcDb3ndeF#ldi!
dn/ olcDatabaseEK)L<db,cnEcon!i,
c<an,etype/ modi!y
add/ olcDb3ndeF
olcDb3ndeF/ uidNumber eq
8
add/ olcDb3ndeF
olcDb3ndeF/ ,idNumber eq
8
add/ olcDb3ndeF
olcDb3ndeF/ member(id eq,pres,sub
8
add/ olcDb3ndeF
olcDb3ndeF/ lo,inS<ell eq
8
add/ olcDb3ndeF
olcDb3ndeF/ uid pres,sub,eq
8
add/ olcDb3ndeF
olcDb3ndeF/ cn pres,sub,eq
8
add/ olcDb3ndeF
olcDb3ndeF/ sn pres,sub,eq
8
add/ olcDb3ndeF
olcDb3ndeF/ ,ivenName,ou pres,eq,sub
8
add/ olcDb3ndeF
olcDb3ndeF/ displayName pres,sub,eq
8
add/ olcDb3ndeF
olcDb3ndeF/ de!ault sub
8
add/ olcDb3ndeF
olcDb3ndeF/ mail eq,subinitial
8
add/ olcDb3ndeF
olcDb3ndeF/ dc eq
dicionamos los ndices a la base de datos y comprobamos la modi!icaci2n/
/>? ldapmodi!y 8Q ERTE-NL 8H ldapi/000 8! #0olcDb3ndeF#ldi!
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcDatabaseEK)L<db9U olcDb3ndeF
dn/ olcDatabaseEK)L<db,cnEcon!i,
olcDb3ndeF/ ob.ectClass eq
olcDb3ndeF/ uidNumber,,idNumber eq
olcDb3ndeF/ member(id eq,pres,sub
olcDb3ndeF/ lo,inS<ell eq
olcDb3ndeF/ uid pres,sub,eq
olcDb3ndeF/ cn pres,sub,eq
olcDb3ndeF/ sn pres,sub,eq
olcDb3ndeF/ ,ivenName,ou pres,eq,sub
olcDb3ndeF/ displayName pres,sub,eq
olcDb3ndeF/ de!ault sub
olcDb3ndeF/ mail eq,subinitial
olcDb3ndeF/ dc eq
-e,las del Control de cceso a los datos
Se denomina Control de cceso a las re,las que se establecen para que los usuarios puedan leer,
modi!icar, a,re,ar y borrar datos en la base de datos del Directorio, mientras que denominaremos
Listas de Control de cceso o %CL ccess Control List' a las directivas que con!i,uran a las re,las#
Para conocer cuales CLs se declararon por de!ecto durante el proceso de instalaci2n del slapd,
e.ecutamos/
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcDatabaseEK)L<db9U olcccess
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcDatabaseEK8)L!rontend9U olcccess
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcDatabaseEK$Lcon!i,9U olcccess
/>? ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcccessEV9U olcccess olcSu!!iF
Cada uno de los comandos anteriores nos mostrar@n las CLs que <asta a<ora tenemos declaradas en
nuestro Directorio# Espec!icamente, el Oltimo comando las muestra todas, mientras que los tres
primeros nos dan las re,las de control de acceso a los tres D3T involucrados en nuestro slapd#
Sobre el tema de las CLs y para no <acer un artculo muc<o m@s lar,o, recomendamos la lectura de
las p@,inas del manual man slapd#access#
Para ,aranti&ar el acceso de los usuarios y administradores a actuali&ar su entradas de lo,inS<ell y
;ecos, adicionaremos la si,uiente CL/
?? Creamos el arc<ivo olcccess#ldi! y lo de.amos con el si,uiente contenido
/>? nano olcccess#ldi!
dn/ olcDatabaseEK)L<db,cnEcon!i,
c<an,etype/ modi!y
add/ olcccess
olcccess/ K)Lto attrsElo,inS<ell,,ecos
by dnE1cnEadmin,dcEami,os,dcEcu1 Irite
by sel! Irite
by V read
?? dicionamos la CL
/>? ldapmodi!y 8Q ERTE-NL 8H ldapi/000 8! #0olcccess#ldi!
? Comprobamos los cambios
ldapsearc< 8P 8LLL 8Q ERTE-NL 8H ldapi/000 8b T
cnEcon!i, U7olcccessEV9U olcccess olcSu!!iF
;eneraci2n de Certi!icados TLS en Squee&e
Para tener una autenticaci2n se,ura con el servidor OpenLDP, debemos <acerla mediante una sesi2n
encriptada la cual podemos lo,rarla mediante el uso del TLS %Transport Layer Security' o Capa de
Transporte Se,ura#
El servidor OpenLDP y sus clientes son capaces de utili&ar el !rameIorN TLS para proveer la
protecci2n re!erente a la inte,ridad y la con!idencialidad, as como dar el soporte para una
autenticaci2n LDP se,ura mediante el mecanismo SSL %Simple ut<entication and Security Layer%
EFterno#
Los servidores OpenLDP modernos per!ieren el uso de V0StartTLS0V o 3niciar una Capa Se,ura de
Transporte al protocolo 0LDPS/000, el cual est@ obsoleto# Cualquier duda, visite VStart TLS v# ldaps/00V
en <ttp/00III#openldap#or,0!aq0data0cac<e0"$4#<tml
Masta con de.ar como se instala por de!ecto el arc<ivo 0etc0de!ault0slapd con la declaraci2n
SLPDWSE-X3CESE'ldap/000 ldapi/000', con el ob.etivo de emplear un canal encriptado entre el cliente
y el servidor, y las propias aplicaciones auFiliares para administrar el OpenLDP que se instalen
localmente#
El m:todo aqu descrito, basado en los paquetes ,nutls8bin y ssl8cert es v@lido para el Debian "
%Squee&e' y tambi:n para el (buntu Server )*#$+# Para el Debian 5 %Y<ee&y' se emplea otro m:todo
basado en OpenSSL#
La ,eneraci2n de los certi!icados en Squee&e se reali&a de la si,uiente !orma/
)#8 3nstalamos los paquetes necesarios
/>? aptitude install ,nutls8bin ssl8cert
*#8 Creamos la Clave Primaria para la utoridad del Certi!icado
/>? s< 8c 1certtool 88,enerate8privNey Z 0etc0ssl0private0caNey#pem1
6#8 Creamos una plantilla para de!inir el C 7Certi!icate ut<ority9
/>? nano 0etc0ssl0ca#in!o
cn E mi,os Cubanos
ca
certWsi,nin,WNey
+#8 Creamos el Certi!icado C Sel! Si,ned o uto8Girmado para los clientes
/>? certtool 88,enerate8sel!8si,ned T
88load8privNey 0etc0ssl0private0caNey#pem T
88template 0etc0ssl0ca#in!o T
88out!ile 0etc0ssl0certs0cacert#pem
4#8 ;eneramos una Clave Privada para el Servidor
/>? certtool 88,enerate8privNey T
88bits )$*+ T
88out!ile 0etc0ssl0private0mildap8Ney#pem
Nota/ Sustituya 1mildap1 en el nombre del arc<ivo anterior por el de su
propio servidor# Nombrar el Certi!icado y la Clave, tanto para el servidor
como para el servicio que la utili&a, nos ayuda a mantener las cosas claras#
"#8 Creamos el arc<ivo 0etc0ssl0mildap#in!o con el si,uiente contenido/
/>? nano 0etc0ssl0mildap#in!o
or,ani&ation E mi,os Cubanos
cn E mildap#ami,os#cu
tlsWIIIWserver
encryptionWNey
si,nin,WNey
eFpirationWdays E 6"4$
Nota/ En el contenido anterior declaramos que el certi!icado es v@lido
para un perodo de tiempo de )$ aAos# El par@metro debemos a.ustarlo a
nuestras conveniencias#
5#8 Creamos el Certi!icado del Servidor
/>? certtool 88,enerate8certi!icate T
88load8privNey 0etc0ssl0private0mildap8Ney#pem T
88load8ca8certi!icate 0etc0ssl0certs0cacert#pem T
88load8ca8privNey 0etc0ssl0private0caNey#pem T
88template 0etc0ssl0mildap#in!o T
88out!ile 0etc0ssl0certs0mildap8cert#pem
Hasta aqu tenemos ,enerados los arc<ivos necesarios#S2lo nos resta adicionar al Directorio la
ubicaci2n del Certi!icado uto Girmado cacert#pemB la del Certi!icado del Servidor mildap8cert#pemB y
la de la Clave Privada del Servidor mildap8Ney#pem# Tambi:n debemos a.ustar los permisos y el
propietario de los arc<ivos ,enerados#
/>? nano 0etc0ssl0certin!o#ldi!
dn/ cnEcon!i,
add/ olcTLSCCerti!icateGile
olcTLSCCerti!icateGile/ 0etc0ssl0certs0cacert#pem
8
add/ olcTLSCerti!icateGile
olcTLSCerti!icateGile/ 0etc0ssl0certs0mildap8cert#pem
8
add/ olcTLSCerti!icate[eyGile
olcTLSCerti!icate[eyGile/ 0etc0ssl0private0mildap8Ney#pem
H#8 dicionamos
/>? ldapmodi!y 8Q ERTE-NL 8H ldapi/000 8! 0etc0ssl0certin!o#ldi!
J#8 .ustamos propietario y permisos
/>? adduser openldap ssl8cert
/>? c<,rp ssl8cert 0etc0ssl0private0mildap8Ney#pem
/>? c<mod ,\r 0etc0ssl0private0mildap8Ney#pem
/>? c<mod o8r 0etc0ssl0private0mildap8Ney#pem
El certi!icado cacert#pem es el que debemos copiar en cada cliente# Para que en el propio servidor se
utilice :ste certi!icado, debemos declararlo en el arc<ivo 0etc0ldap0ldap#con!# Para ello, modi!icamos el
arc<ivo y lo de.amos con el si,uiente contenido/
/>? nano 0etc0ldap0ldap#con!
MSE dcEami,os,dcEcu
(-3 ldap/00mildap#ami,os#cu
TLSWCCE-T 0etc0ssl0certs0cacert#pem
Ginalmente y tambi:n como comprobaci2n, reiniciamos el servicio slapd y revisamos la salida del
syslo, del servidor, para conocer si el servicio se reinici2 adecuadamente utili&ando el certi!icado
reci:n declarado#
/>? service slapd restart
/>? tail 0var0lo,0syslo,

También podría gustarte