systemadmin.es > Seguridad > Instalar el servidor OpenLDAP en CentOS 6

Instalar el servidor OpenLDAP en CentOS 6

Mediante OpenLDAP podemos tener una gestión centralizada de usuarios. Resulta particularmente interesante cuando tenemos puntos de montaje NFS entre varios equipos que deben ser accedidos por los mismos usuarios. Vamos a ver como instalar el servidor OpenLDAP en CentOS 6

Primero instalamos los paquetes openldap-servers y openldap-clients:

yum install openldap-servers -y
yum install openldap-clients -y

Esta versión dispone de una estructura de directorios para su configuración en lugar del típico slapd.conf:

# find /etc/openldap/ -type d
/etc/openldap/
/etc/openldap/certs
/etc/openldap/schema
/etc/openldap/slapd.d
/etc/openldap/slapd.d/cn=config
/etc/openldap/slapd.d/cn=config/cn=schema

Si borrásemos el directorio slapd.d podríamos usar el fichero de configuración de otras versiones.

Primero deberemos cambiar el root por defecto por el que queramos:

# grep "dc=my-domain,dc=com" * -R
cn=config/olcDatabase={1}monitor.ldif: l,cn=auth" read  by dn.base="cn=manager,dc=my-domain,dc=com" read  by * none
cn=config/olcDatabase={2}bdb.ldif:olcSuffix: dc=my-domain,dc=com

Por ejemplo:

sed 's@dc=my-domain,dc=com@dc=systemadmin,dc=ldap@g' -i /etc/openldap/slapd.d/cn\=config/*ldif

A continuación copiamos la plantilla DB_CONFIG a /var/lib/ldap:

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Generamos los certificados:

# openssl req -new -x509 -nodes -out /etc/openldap/certs/slapdcert.pem -keyout /etc/openldap/certs/slapdkey.pem -days 100000
Generating a 2048 bit RSA private key
..+++
.........+++
writing new private key to '/etc/openldap/certs/slapdkey.pem'
(...)
Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:Barcelona
Locality Name (eg, city) [Default City]:Barcelona
Organization Name (eg, company) [Default Company Ltd]:systemadmin.es
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ldap.systemadmin.es
Email Address []:

Cambiamos permisos para que el daemon pueda leer los ficheros:

chgrp ldap /etc/openldap/certs/slapd*pem
chown ldap. /etc/openldap/certs/ -R

Y habilitamos LDAPS:

sed 's/\(SLAPD_LDAPS=\).*/\1yes/g'

Deberemos generar una contraseña con slappasswd:

# slappasswd -s ejemplopaguol
{SSHA}AwHp9sJFXk/xn27a1ipBo2JQm0fQ6/cM

A cada ejecución veremos que genera un hash diferente, ya que se trata de una contraseña “salted“.

Deberemos añadir la contraseña en el fichero /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif con las rutas de los certificados:

cat <<EOF > /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif 
olcRootPW: $(slappasswd -s ejemplopaguol)
olcTLSCertificateFile: /etc/openldap/certs/slapdcert.pem
olcTLSCertificateKeyFile: /etc/openldap/certs/slapdkey.pem
EOF

Mediante slaptest podemos verificar la configuración del servidor:

# slaptest -u
config file testing succeeded

Aún con el slapd apagado, deberemos restaurar un ldif que ya tengamos o cargar los objetos iniciales de usuarios y grupos:

dn: dc=systemadmin,dc=ldap
objectClass: dcObject
objectClass: organization
o: GI Lamp Cluster
dc: gi-lamp
structuralObjectClass: organization

dn: cn=Manager,dc=systemadmin,dc=ldap
objectClass: organizationalRole
cn: Manager
structuralObjectClass: organizationalRole

dn: ou=usuarios,dc=systemadmin,dc=ldap
ou: usuarios
objectClass: organizationalUnit
objectClass: top
structuralObjectClass: organizationalUnit

dn: ou=grupos,dc=systemadmin,dc=ldap
ou: grupos
objectClass: organizationalUnit
objectClass: top
structuralObjectClass: organizationalUnit

Cargamos estos datos con slapdadd:

# slapadd -l cargainicial.ldif 
The first database does not allow slapadd; using the first available one (2)
_#################### 100.00% eta   none elapsed            none fast!         
Closing DB...

Los ficheros que se generan tendrán los permisos del usuario con el que hemos ejecutado slapadd, por lo que deberemos cambiarlos:

chown ldap. /var/lib/ldap/ -R

Finalmente, añadimos al arranque el daemon y arrancamos:

chkconfig --level 3 slapd on
/etc/init.d/slapd start

Veremos el proceso levantado:

# ps -fea | grep [s]lap
ldap      2627     1  0 Oct04 ?        00:00:04 /usr/sbin/slapd -h  ldap:/// ldaps:/// ldapi:/// -u ldap

Y deberemos ver los puertos 389 y 636 en LISTEN:

# netstat -tpln | grep slap
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      2627/slapd          
tcp        0      0 0.0.0.0:636                 0.0.0.0:*                   LISTEN      2627/slapd

Podemos verificar que funciona haciendo una query LDAP con ldapsearch:

# ldapsearch  -x -b "dc=systemadmin,dc=ldap"
(...)
# search result
search: 2
result: 0 Success

# numResponses: 154
# numEntries: 153

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>