Instalación y configuración OpenLDAP

De CURE - Informática
Ir a la navegación Ir a la búsqueda


LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

Un directorio es un conjunto de objetos con atributos organizados en una manera lógica y jerárquica. El ejemplo más común es el directorio telefónico, que consiste en una serie de nombres (personas u organizaciones) que están ordenados alfabéticamente, con cada nombre teniendo una dirección y un número de teléfono adjuntos.

Un árbol de directorio LDAP a veces refleja varios límites políticos, geográficos u organizacionales, dependiendo del modelo elegido. Los despliegues actuales de LDAP tienden a usar nombres de Sistema de Nombres de Dominio (DNS por sus siglas en inglés) para estructurar los niveles más altos de la jerarquía. Conforme se desciende en el directorio pueden aparecer entradas que representan personas, unidades organizacionales, impresoras, documentos, grupos de personas o cualquier cosa que representa una entrada dada en el árbol (o múltiples entradas).

Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc). A manera de síntesis, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red.

Fuente: LDAP Wikipedia

OpenLDAP

Para instalar OpenLDAP serán necesarios los paquetes slapd y ldap-utils, para instalar:

  $ aptitude install slapd ldap-utils

Luego lanzamos los siguientes comandos para agregar los schemas básicos:

  $ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
  $ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
  $ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

creamos el archivo con la configuración para luego acceder a ldap

  $ mkdir ldapLaburo
  $ cd ldapLaburo
  $ vi datos_base_slapd.ldif

Editamos el archivo datos_base_slapd, un ejemplo es el siguiente:

root@paloma:~/ldapLaburo# cat datos_base_slapd.ldif 
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=ldap,dc=curerocha,dc=edu,dc=uy
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=ldap,dc=curerocha,dc=edu,dc=uy
olcRootPW: secreto
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=ldap,dc=curerocha,dc=edu,dc=uy" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=ldap,dc=curerocha,dc=edu,dc=uy" write by * read

Ejecutamos el siguiente comando:

$ ldapadd -Y EXTERNAL -H ldapi:/// -f datos_base_slapd.ldif

Creamos datos_frontend_slapd.ldif

$ vi datos_frontend_slapd.ldif

y le agregamos la siguiente información:

root@paloma:~/ldapLaburo# cat datos_frontend_slapd.ldif 
# Create top-level object in domain
dn: dc=ldap,dc=curerocha,dc=edu,dc=uy
objectClass: top
objectClass: dcObject
objectclass: organization
o: CURE Rocha
dc: ldap
description: Directorio LDAP del CURE 

# Admin user.
dn: cn=admin,dc=ldap,dc=curerocha,dc=edu,dc=uy
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secreto 

dn: ou=gente,dc=ldap,dc=curerocha,dc=edu,dc=uy
objectClass: organizationalUnit
ou: gente 

dn: ou=groupos,dc=ldap,dc=curerocha,dc=edu,dc=uy
objectClass: organizationalUnit
ou: groupos

dn: uid=victor,ou=gente,dc=ldap,dc=curerocha,dc=edu,dc=uy
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: victor
sn: Alem
givenName: Víctor
cn: Víctor Alem
displayName: Víctor Alem
uidNumber: 1000
gidNumber: 10000
userPassword: secreto1
gecos: Víctor Alem
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress: 
initials: VA

confirmamos que todo este correcto con:

$ ldapadd -x -D cn=admin,dc=curerocha,dc=edu,dc=uy -W -f datos_frontend_slapd.ldif


Si no da errores es que todo ha ido bien!

Convertir del viejo archivo de configuración slapd.conf al formato cn=config

Aquí explicaré con un ejemplo de como agregar los schemas de GOsa.

Para realizar esta tarea creamos el archivo slapd_convert.conf con el siguiente contenido:

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/openldap.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/misc.schema
include         /etc/ldap/schema/trust.schema

include         /etc/ldap/schema/samba3.schema
include         /etc/ldap/schema/gosystem.schema
include         /etc/ldap/schema/gofon.schema
include         /etc/ldap/schema/goto.schema
include         /etc/ldap/schema/goto-mime.schema
# Note: before 2.6.5 this file was named gosa+samba3.schema
include         /etc/ldap/schema/gosa-samba3.schema
include         /etc/ldap/schema/gofax.schema
include         /etc/ldap/schema/openssh.schema
include         /etc/ldap/schema/goserver.schema
include         /etc/ldap/schema/fai.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/rfc2739.schema
include         /etc/ldap/schema/kolab2.schema
include         /etc/ldap/schema/apple.schema
include         /etc/ldap/schema/nagios.schema
include         /etc/ldap/schema/phpgwaccount.schema
include         /etc/ldap/schema/pureftpd.schema
include         /etc/ldap/schema/phpscheduleit.schema
include         /etc/ldap/schema/pptp.schema
include         /etc/ldap/schema/openxchange.schema
include         /etc/ldap/schema/dhcp.schema

Luego ejecutamos el siguiente comando.

$ slaptest -f slapd_convert.conf -F /usr/local/etc/openldap/slapd.d

Luego le cambiamos los permisos a todos los archivos del directorio /etc/ldap/slapd.d/cn=config/cn=schema/ con el siguiente comando.

$ chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=schema/*

Esto sería lo necesario para que quede GOsa funcionando.


phpldapadmin

instalar:

$ apt-get install phpldapadmin

Hacemos un respaldo de la configuración por defecto y editamos el archivo config.php

$ cp /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.orig
$ vi /etc/phpldapadmin/config.php

En este archivo editar las siguientes lineas:

$ldapservers->SetValue($i,'server','name','My LDAP Server');  // The name to display
$ldapservers->SetValue($i,'server','host','127.0.0.1');  // Address of the LDAP server
$ldapservers->SetValue($i,'server','base',array('dc=ldap,dc=curerocha,dc=edu,dc=uy'));  // Base dn
$servers->setValue('login','bind_id','cn=admin,dc=ldap,dc=curerocha,dc=edu,dc=uy');


Entramos por web https://ip_servidor/phpldapadmin e ingresamos el password configurado en el ldap.

Fuente:

OpenLDAP Server