Diferencia entre revisiones de «Introducción al protocolo ldap»
(Página creada con '{{Ficha Software |nombre=LDAP |familia= |imagen=Ldaplogo.jpg |tamaño= |descripción=Protocolo Ligero de Acceso a Directorios es un protocolo a nivel de aplicación que permi...') (Etiqueta: nuestro-nuestra) |
m (Texto reemplazado: «<div align="justify">» por «») |
||
| (No se muestran 2 ediciones intermedias de otro usuario) | |||
| Línea 26: | Línea 26: | ||
|web= | |web= | ||
}} | }} | ||
| − | + | ||
'''LDAP'''(Lightweight Directory Access Protocol, protocolo ligero de acceso a directorios), es un [[protocolo]] del nivel de aplicación de la arquitectura [[TCP/IP]] que permite el acceso a un servicio de directorio ordenado y distribuido para buscar información en un entorno de [[red]].LDAP puede utilizarse de muchas maneras: para autenticación, directorios compartidos (para los [[clientes de correo]]), [[libreta de direcciones]], etc. | '''LDAP'''(Lightweight Directory Access Protocol, protocolo ligero de acceso a directorios), es un [[protocolo]] del nivel de aplicación de la arquitectura [[TCP/IP]] que permite el acceso a un servicio de directorio ordenado y distribuido para buscar información en un entorno de [[red]].LDAP puede utilizarse de muchas maneras: para autenticación, directorios compartidos (para los [[clientes de correo]]), [[libreta de direcciones]], etc. | ||
==Estrucutura del directorio== | ==Estrucutura del directorio== | ||
| Línea 32: | Línea 32: | ||
El protocolo accede a directorios LDAP, que siguen la edición de [[1993]] del modelo X.500: | El protocolo accede a directorios LDAP, que siguen la edición de [[1993]] del modelo X.500: | ||
| − | + | * Un directorio es un [[árbol]] de entradas de directorio. | |
| − | + | * Una entrada consta de un [[conjunto]] de atributos. | |
| − | + | * Un atributo tiene un nombre (un tipo de atributo o descripción de atributo) y uno o más [[valores]]. Los atributos son definidos en un [[esquema]]. | |
| − | + | * Cada entrada tiene un identificador único: su Nombre distinguido Distinguished Name, DN). | |
Para importar y exportar información entre servidores ldap o para describir una serie de cambios que serán aplicados al directorio, el formato utilizado se llama LDIF (LDAP Data Interchange Format). LDIF almacena la información en jerarquías orientadas a objetos que luego serán transformadas al formato interno de la [[base de datos]]. | Para importar y exportar información entre servidores ldap o para describir una serie de cambios que serán aplicados al directorio, el formato utilizado se llama LDIF (LDAP Data Interchange Format). LDIF almacena la información en jerarquías orientadas a objetos que luego serán transformadas al formato interno de la [[base de datos]]. | ||
| Línea 44: | Línea 44: | ||
Un archivo LDIF tiene un formato similar a: | Un archivo LDIF tiene un formato similar a: | ||
| − | dn: dc=jovenclub, dc=cu | + | dn: dc=jovenclub, dc=cu |
| − | + | objectclass: top | |
| − | objectclass: top | + | objectclass: |
| − | + | organizationalUnit | |
| − | objectclass: | + | dn: ou=groups, dc=jovenclub, dc=cu |
| − | + | objectclass: top | |
| − | organizationalUnit | + | objectclass: |
| − | + | organizationalUnit | |
| − | dn: ou=groups, dc=jovenclub, dc=cu | + | ou: groups |
| − | + | dn: ou=people, dc=jovenclub, dc=cu | |
| − | objectclass: top | + | objectclass: top |
| − | + | objectclass: | |
| − | objectclass: | + | organizationalUnit |
| − | + | ou: people | |
| − | organizationalUnit | + | dn: cn = Pepe Perez, ou=people, |
| − | + | dc=jovenclub, dc=cu | |
| − | ou: groups | + | cn: Pepe Perez |
| − | + | sn: Perez | |
| − | dn: ou=people, dc=jovenclub, dc=cu | + | objectclass: top |
| − | + | objectclass: person | |
| − | objectclass: top | + | objectclass: posixAccount |
| − | + | objectclass: shadowAccount | |
| − | objectclass: | + | uid: pepe |
| − | + | userpassword: | |
| − | organizationalUnit | + | {crypt}p1pss2ii(0pgbs*do&@ = )eksd |
| − | + | uidnumber:104 | |
| − | ou: people | + | gidnumber:100 |
| − | + | loginShell:/bin/bash | |
| − | dn: cn = Pepe Perez, ou=people, | + | homeDirectory: /home/pepe |
| − | |||
| − | dc=jovenclub, dc=cu | ||
| − | |||
| − | cn: Pepe Perez | ||
| − | |||
| − | sn: Perez | ||
| − | |||
| − | objectclass: top | ||
| − | |||
| − | objectclass: person | ||
| − | |||
| − | objectclass: posixAccount | ||
| − | |||
| − | objectclass: shadowAccount | ||
| − | |||
| − | uid: pepe | ||
| − | |||
| − | userpassword: | ||
| − | |||
| − | {crypt}p1pss2ii(0pgbs*do&@ = )eksd | ||
| − | |||
| − | uidnumber:104 | ||
| − | |||
| − | gidnumber:100 | ||
| − | |||
| − | loginShell:/bin/bash | ||
| − | |||
| − | homeDirectory: /home/pepe | ||
==Creación y mantenimiento de las BD== | ==Creación y mantenimiento de las BD== | ||
| Línea 108: | Línea 80: | ||
El segundo se debe trabajar fuera de línea, es el adecuado para grandes BD y se utiliza el comando slapadd incluido con slapd. | El segundo se debe trabajar fuera de línea, es el adecuado para grandes BD y se utiliza el comando slapadd incluido con slapd. | ||
| − | + | * Verificar que contiene los siguientes atributos en slapd.conf: | |
- suffix (top del directorio, por ejemplo, suffix “dc=jovenclub,dc=cu”) | - suffix (top del directorio, por ejemplo, suffix “dc=jovenclub,dc=cu”) | ||
-directory /var/lib/ldap/autenticar (directorio donde se crearán los índices y que pueda escribir slapd) | -directory /var/lib/ldap/autenticar (directorio donde se crearán los índices y que pueda escribir slapd) | ||
| Línea 114: | Línea 86: | ||
===Primer caso:=== | ===Primer caso:=== | ||
Una vez definido el slapd.conf, se debe ejecutar el comando: | Una vez definido el slapd.conf, se debe ejecutar el comando: | ||
| − | + | # ldapadd -x -D "cn=admin,dc=mimundo,dc=com" -f | |
| − | + | ejemplo.ldif -W | |
| − | ejemplo.ldif -W | ||
Los argumentos utilizados pueden ser: | Los argumentos utilizados pueden ser: | ||
| − | -x: autenticación simple | + | -x: autenticación simple |
| − | + | -W: solicitar clave de acceso | |
| − | -W: solicitar clave de acceso | + | -D binddn: nombre distinguido (dn) a utilizar |
| − | + | -h anfitrión: servidor Ldap a acceder | |
| − | -D binddn: nombre distinguido (dn) a utilizar | + | -f fichero : fichero a utilizar |
| − | + | -w passwd:contraseña del administrador del servidor | |
| − | -h anfitrión: servidor Ldap a acceder | ||
| − | |||
| − | -f fichero : fichero a utilizar | ||
| − | |||
| − | -w passwd:contraseña del administrador del servidor | ||
===Segundo caso:=== | ===Segundo caso:=== | ||
Una vez definido el slapd.conf, se debe ejecutar el comando: | Una vez definido el slapd.conf, se debe ejecutar el comando: | ||
| − | + | ||
| + | # slapadd -v -l ejemplo.ldif -f /etc/ldap/slapd.conf | ||
| + | |||
Los argumentos utilizados pueden ser: | Los argumentos utilizados pueden ser: | ||
• -l: archivo en formato LDFI. | • -l: archivo en formato LDFI. | ||
| Línea 144: | Línea 112: | ||
Instale los paquetes necesarios como su. | Instale los paquetes necesarios como su. | ||
| − | + | # apt-get install slapd | |
Durante la instalación te piden: la configuración del dominio y de las contraseñas del fichero slapd.conf. | Durante la instalación te piden: la configuración del dominio y de las contraseñas del fichero slapd.conf. | ||
| − | + | # slappasswd -h {CRYPT} | |
Copie y respalde el criptograma resultante. Añadir a etc/ldap/slapd.conf: | Copie y respalde el criptograma resultante. Añadir a etc/ldap/slapd.conf: | ||
| − | password-hash {CRYPT} | + | password-hash {CRYPT} |
| − | + | rootpw {CRYPT}CnTL4BZA65eXU #La clave que se generó anteriormente | |
| − | rootpw {CRYPT}CnTL4BZA65eXU #La clave que se generó anteriormente | + | rootdn "cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" |
| − | |||
| − | rootdn "cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" | ||
===Creación de directorios=== | ===Creación de directorios=== | ||
| Línea 162: | Línea 128: | ||
Con fines de organización se creará un directorio específico para este directorio y se configurará con permisos de acceso exclusivamente al usuario y grupo openldap. | Con fines de organización se creará un directorio específico para este directorio y se configurará con permisos de acceso exclusivamente al usuario y grupo openldap. | ||
| − | + | # cd /var/lib/ldap | |
| − | + | # mkdir autenticar replog | |
| − | + | # chown -R openldap:openldap autenticar replog | |
| − | + | # chmod -R 700 autenticar replog | |
Crear un archivo init.ldif donde nombre 3 unidades organizativas: users, groups y computers. | Crear un archivo init.ldif donde nombre 3 unidades organizativas: users, groups y computers. | ||
| − | + | # mcedit /etc/ldap/init.ldif | |
| − | dn: dc=tele,dc=grm,dc=jovenclub,dc=cu | + | dn: dc=tele,dc=grm,dc=jovenclub,dc=cu |
| − | + | objectClass: top | |
| − | objectClass: top | + | objectClass: dcObject |
| − | + | objectClass: organization | |
| − | objectClass: dcObject | + | o: GRM |
| − | + | dc: tele | |
| − | objectClass: organization | + | dn: |
| − | + | cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu | |
| − | o: GRM | + | objectClass: simpleSecurityObject |
| − | + | objectClass: organizationalRole | |
| − | dc: tele | + | cn: admin |
| − | |||
| − | dn: | ||
| − | |||
| − | cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu | ||
| − | |||
| − | objectClass: simpleSecurityObject | ||
| − | |||
| − | objectClass: organizationalRole | ||
| − | |||
| − | cn: admin | ||
Descripción: administrador de LDAP | Descripción: administrador de LDAP | ||
| − | userPassword: {CRYPT}CnTL4BZA65eXU | + | userPassword: {CRYPT}CnTL4BZA65eXU |
| − | + | #introduzca el resultado de generar | |
| − | + | slappasswd. | |
| − | + | dn: ou=users,dc=tele,dc=grm,dc=jovenclub,dc=cu | |
| − | slappasswd. | + | objectClass: organizationalUnit |
| − | + | ou: users | |
| − | dn: ou=users,dc=tele,dc=grm,dc=jovenclub,dc=cu | + | dn: ou=groups,dc=tele,dc=grm,dc=jovenclub,dc=cu |
| − | + | objectClass: organizationalUnit | |
| − | objectClass: organizationalUnit | + | ou: groups |
| − | + | dn:ou=computers,dc=tele,dc=grm,dc=jovenclub,dc=cu | |
| − | ou: users | + | objectClass: organizationalUnit |
| − | + | ou: computers | |
| − | dn: ou=groups,dc=tele,dc=grm,dc=jovenclub,dc=cu | ||
| − | |||
| − | objectClass: organizationalUnit | ||
| − | |||
| − | ou: groups | ||
| − | |||
| − | dn:ou=computers,dc=tele,dc=grm,dc=jovenclub,dc=cu | ||
| − | |||
| − | objectClass: organizationalUnit | ||
| − | |||
| − | ou: computers | ||
-Para inicializar la base de datos | -Para inicializar la base de datos | ||
| − | + | # /etc/init.d/slapd stop | |
-Crear un nuevo directorio donde se almacenará la configuración de la base de datos ldap. Este directorio /var/lib/ldap/autenticar ya lo habíamos creado anteriormente. | -Crear un nuevo directorio donde se almacenará la configuración de la base de datos ldap. Este directorio /var/lib/ldap/autenticar ya lo habíamos creado anteriormente. | ||
| − | + | # mkdir /var/lib/ldap/autenticar | |
-Accede al directorio donde se guardó el archivo creado anteriormente init.ldif | -Accede al directorio donde se guardó el archivo creado anteriormente init.ldif | ||
| − | + | # cd /etc/ldap | |
-Luego añade los valores de ldif a la base de datos de ldap que se encuentra en /var/lib/ldap/autenticar.(Ver man slapadd) | -Luego añade los valores de ldif a la base de datos de ldap que se encuentra en /var/lib/ldap/autenticar.(Ver man slapadd) | ||
| − | + | # slapadd -v -l init.ldif -f /etc/ldap/slapd.conf | |
-Después cambia el dueño y el grupo del directorio creado anteriormente | -Después cambia el dueño y el grupo del directorio creado anteriormente | ||
| − | + | # chown -R openldap:openldap /var/lib/ldap/autenticar/* | |
Para la actualización de la configuración de openldap | Para la actualización de la configuración de openldap | ||
-Creo un directorio | -Creo un directorio | ||
| − | + | # cd /etc/ldap | |
| − | + | #mkdir slapd.d | |
| − | |||
Ejecuto el siguiente comando cuyo resultado se muestra a continuación. | Ejecuto el siguiente comando cuyo resultado se muestra a continuación. | ||
| − | + | # slaptest -f slapd.conf -F slapd.d config file testing succeeded | |
Le cambio el dueño y el grupo al directorio creado | Le cambio el dueño y el grupo al directorio creado | ||
| − | + | # chown -R openldap: openldap slapd.d | |
Para hacer una búsqueda y confirmar la configuración | Para hacer una búsqueda y confirmar la configuración | ||
-Iniciar nuestro servidor | -Iniciar nuestro servidor | ||
| − | root@debian5:~# /etc/init.d/slapd start | + | root@debian5:~# /etc/init.d/slapd start |
-Ahora revisaremos que el servidor slapd haya abierto el [[socket]] [[TCP/IP]], en específico veremos que nos abra el [[puerto]] TCP/389. | -Ahora revisaremos que el servidor slapd haya abierto el [[socket]] [[TCP/IP]], en específico veremos que nos abra el [[puerto]] TCP/389. | ||
| − | root@debian5:~# netstat -pltn | grep slapd | + | root@debian5:~# netstat -pltn | grep slapd |
| − | + | tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 4436/slapd | |
| − | tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 4436/slapd | + | tcp6 0 0 :::389 :::* LISTEN 4436/slapd |
| − | |||
| − | tcp6 0 0 :::389 :::* LISTEN 4436/slapd | ||
-Ahora haremos una consulta al servidor LDAP para ver si responde con lo más básico y ver que está funcionando. | -Ahora haremos una consulta al servidor LDAP para ver si responde con lo más básico y ver que está funcionando. | ||
| − | root@debian5:~# ldapsearch -x -b “” -s base “(objectclass=*)” | + | root@debian5:~# ldapsearch -x -b “” -s base “(objectclass=*)” |
| − | + | namingContexts | |
| − | namingContexts | + | root@debian5:~# ldapsearch -x -D |
| − | + | cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" b | |
| − | root@debian5:~# ldapsearch -x -D | + | "dc=tele,dc=grm,dc=jovenclub,dc=cu" -W |
| − | |||
| − | cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" b | ||
| − | |||
| − | "dc=tele,dc=grm,dc=jovenclub,dc=cu" -W | ||
===Crear una etiqueta nueva=== | ===Crear una etiqueta nueva=== | ||
| Línea 284: | Línea 222: | ||
-Lo primero que se debe crear en el LDAP es la Organización, según los datos que se suministran. Crear con un editor un archivo llamado AddOrg.ldif y suministrar los siguientes datos: | -Lo primero que se debe crear en el LDAP es la Organización, según los datos que se suministran. Crear con un editor un archivo llamado AddOrg.ldif y suministrar los siguientes datos: | ||
| − | dn: dc=midominio,dc=cu | + | dn: dc=midominio,dc=cu |
| − | + | objectClass: dcObject | |
| − | objectClass: dcObject | + | objectClass: organization |
| − | + | o: GRM | |
| − | objectClass: organization | + | dc: midominio |
| + | |||
| + | -Para añadir la información a la base de datos de LDAP utilizamos el siguiente comando: | ||
| − | + | # slapadd -v -l AddOrg.ldif -f /etc/ldap/slapd.conf | |
| − | |||
| − | |||
| − | |||
| − | |||
-La organización es lo primero que se debe crear ya que a partir de la creación de esta es que se inicia la creación del árbol del directorio LDAP. | -La organización es lo primero que se debe crear ya que a partir de la creación de esta es que se inicia la creación del árbol del directorio LDAP. | ||
-Luego se debe crear un archivo llamado AddOU.ldif (crearemos una Unidad Organizacional) e ingresaremos los siguientes datos: | -Luego se debe crear un archivo llamado AddOU.ldif (crearemos una Unidad Organizacional) e ingresaremos los siguientes datos: | ||
| − | dn: ou=Coordinacion,dc=midominio,dc=cu | + | dn: ou=Coordinacion,dc=midominio,dc=cu |
| + | ou: Coordinacion | ||
| + | objectClass: organizationalUnit | ||
| + | description: Coordinacion de MiDominio | ||
| − | + | -Después de creado se debe ingresar la nueva etiqueta al directorio de la siguiente forma: | |
| − | + | # slapadd -v -l AddOU.ldif -f /etc/ldap/slapd.conf | |
| − | |||
| − | |||
| − | |||
| − | |||
Se debe crear un archivo que puede llamarse AddPerson.ldif con los siguientes datos, para añadir a un usuario a la base de datos: | Se debe crear un archivo que puede llamarse AddPerson.ldif con los siguientes datos, para añadir a un usuario a la base de datos: | ||
| − | dn: uid=jperez,ou=Coordinacion, | + | dn: uid=jperez,ou=Coordinacion, |
| − | + | dc=midominio,dc=com | |
| − | dc=midominio,dc=com | + | objectclass: top |
| − | + | objectclass: person | |
| − | objectclass: top | + | objectclass: organizationalPerson |
| − | + | objectclass: inetOrgPerson | |
| − | objectclass: person | + | cn: Jose Perez |
| − | + | sn: Perez | |
| − | objectclass: organizationalPerson | + | # slapadd -v -l AddPerson.ldif -f |
| − | + | /etc/ldap/slapd.conf | |
| − | objectclass: inetOrgPerson | + | givenname: Jose |
| − | + | uid: jperez | |
| − | cn: Jose Perez | + | ou: Coordinacion |
| − | + | description: Coordinador | |
| − | sn: Perez | + | MiDominio |
| − | + | telephonenumber: xxxxxxxx | |
| − | + | mail: jperez(arroba)midominio.cu | |
| − | + | streetAddress: Ave. [[Camilo Cienfuegos]] | |
| − | /etc/ldap/slapd.conf | + | userpassword: jose |
| − | |||
| − | givenname: Jose | ||
| − | |||
| − | uid: jperez | ||
| − | |||
| − | ou: Coordinacion | ||
| − | |||
| − | description: Coordinador | ||
| − | |||
| − | MiDominio | ||
| − | |||
| − | telephonenumber: xxxxxxxx | ||
| − | |||
| − | mail: jperez(arroba)midominio.cu | ||
| − | |||
| − | streetAddress: Ave. [[Camilo Cienfuegos]] | ||
| − | |||
| − | userpassword: jose | ||
==Ejemplo de mantenimiento de la BD de ldap== | ==Ejemplo de mantenimiento de la BD de ldap== | ||
| Línea 354: | Línea 271: | ||
-Para modificar un atributo de una etiqueta creada, se debe crear un archivo de extensión *.ldif como por ejemplo ModPerson.ldif con los siguientes datos: | -Para modificar un atributo de una etiqueta creada, se debe crear un archivo de extensión *.ldif como por ejemplo ModPerson.ldif con los siguientes datos: | ||
| − | |||
| − | changetype: modify | + | dn: cn=Jose Perez,dc=midominio,dc=cu |
| + | changetype: modify | ||
| + | add: telephonenumber | ||
| + | telephonenumber: xxxxxxx | ||
| − | + | -Luego se ejecuta el comando: | |
| − | |||
| − | |||
| − | + | # slapadd -v -l ModPerson.ldif -f /etc/ldap/slapd.conf | |
| − | |||
===Borrar una Etiqueta=== | ===Borrar una Etiqueta=== | ||
| Línea 369: | Línea 285: | ||
-Para borrar una etiqueta (para efectos del ejemplo borrar una persona), se debe crear un archivo *.ldif con las siguientes características: | -Para borrar una etiqueta (para efectos del ejemplo borrar una persona), se debe crear un archivo *.ldif con las siguientes características: | ||
| − | dn: cn=Jose Perez,dc=midominio,dc=cu | + | dn: cn=Jose Perez,dc=midominio,dc=cu |
| − | + | changetype: delete | |
| − | changetype: delete | ||
- Luego se ejecuta el siguiente comando: | - Luego se ejecuta el siguiente comando: | ||
| − | + | # slapadd -v -l AddPerson.ldif -f /etc/ldap/slapd.conf | |
Realizar búsquedas en el directorio y confirmar la configuración | Realizar búsquedas en el directorio y confirmar la configuración | ||
| Línea 381: | Línea 296: | ||
Búsquedas en la BD de LDAP: | Búsquedas en la BD de LDAP: | ||
| − | + | # ldapsearch -x -b "dc=midominio,dc=com" | |
| − | + | “objectClass=*” | |
| − | “objectClass=*” | + | # ldapsearch -x -D "cn=admin,dc=midominio,dc=cu" -b |
| − | + | "dc=midominio,dc=cu" -W | |
| − | |||
| − | |||
| − | "dc=midominio,dc=cu" -W | ||
===Respaldo de datos.=== | ===Respaldo de datos.=== | ||
| Línea 393: | Línea 305: | ||
-Debe detenerse el servicio de LDAP antes de proceder con el respaldo de datos. | -Debe detenerse el servicio de LDAP antes de proceder con el respaldo de datos. | ||
| − | + | # /etc/init.d/slapd stop | |
-A continuación, se utiliza la herramienta slapcat, utilizando el fichero de configuración /etc/ldap/slapd.conf. | -A continuación, se utiliza la herramienta slapcat, utilizando el fichero de configuración /etc/ldap/slapd.conf. | ||
| − | + | # slapcat -v -f /etc/ldap/slapd.conf -l respaldo-$(date +%Y %m%d).ldif | |
-Concluido el proceso de respaldo de datos, puede iniciarse de nuevo el servicio de ldap. | -Concluido el proceso de respaldo de datos, puede iniciarse de nuevo el servicio de ldap. | ||
| − | + | # /etc/init.d/slapd restart | |
===Restauración de datos.=== | ===Restauración de datos.=== | ||
| Línea 407: | Línea 319: | ||
-El procedimiento requiere detener el servicio. | -El procedimiento requiere detener el servicio. | ||
| − | + | # /etc/init.d/slapd stop | |
-Debe eliminarse los datos del directorio a restaurar. | -Debe eliminarse los datos del directorio a restaurar. | ||
| − | + | # rm -f /var/lib/ldap/autenticar/* | |
-A continuación, se utiliza la herramienta slapadd para cargar los datos desde un fichero *.ldif de respaldo. | -A continuación, se utiliza la herramienta slapadd para cargar los datos desde un fichero *.ldif de respaldo. | ||
| − | + | # slapadd -v -c -l respaldo-20100629.ldif -f /etc/ldap/slapd.conf | |
===Regenerar índices=== | ===Regenerar índices=== | ||
-Se debe ejecutar la herramienta slapindex, que se utiliza para regenerar los índices LDAP. | -Se debe ejecutar la herramienta slapindex, que se utiliza para regenerar los índices LDAP. | ||
| − | + | # slapindex | |
-Concluido el proceso de restauración de datos, puede iniciarse de nuevo el servicio de ldap. | -Concluido el proceso de restauración de datos, puede iniciarse de nuevo el servicio de ldap. | ||
| − | + | # /etc/init.d/slapd restart | |
==Administración del LDAP vía web== | ==Administración del LDAP vía web== | ||
| Línea 430: | Línea 342: | ||
Para administrar el servidor LDAP vía web, se puede utilizar phpldapadmin. | Para administrar el servidor LDAP vía web, se puede utilizar phpldapadmin. | ||
| − | -Instalar el PHP con soporte LDAP | + | -Instalar el PHP con soporte LDAP |
| − | + | ||
| − | + | # apt-get install php5-ldap | |
| − | + | # /etc/init.d/apache2 force-reload | |
| − | + | # apt-get install phpldapadmin | |
| − | |||
-Acceder al LDAP vía web con esta url: | -Acceder al LDAP vía web con esta url: | ||
| − | |||
| − | |||
| − | |||
| − | Password => El Password del usuario admin | + | http://localhost/phpldapadmin |
| + | login=> cn=admin,dc=example,dc=cu | ||
| + | Password => El Password del usuario admin | ||
-Queda listo para crear el directorio. | -Queda listo para crear el directorio. | ||
última versión al 16:41 14 ago 2019
LDAP(Lightweight Directory Access Protocol, protocolo ligero de acceso a directorios), es un protocolo del nivel de aplicación de la arquitectura TCP/IP que permite el acceso a un servicio de directorio ordenado y distribuido para buscar información en un entorno de red.LDAP puede utilizarse de muchas maneras: para autenticación, directorios compartidos (para los clientes de correo), libreta de direcciones, etc.
Sumario
Estrucutura del directorio
El protocolo accede a directorios LDAP, que siguen la edición de 1993 del modelo X.500:
- Un directorio es un árbol de entradas de directorio.
- Una entrada consta de un conjunto de atributos.
- Un atributo tiene un nombre (un tipo de atributo o descripción de atributo) y uno o más valores. Los atributos son definidos en un esquema.
- Cada entrada tiene un identificador único: su Nombre distinguido Distinguished Name, DN).
Para importar y exportar información entre servidores ldap o para describir una serie de cambios que serán aplicados al directorio, el formato utilizado se llama LDIF (LDAP Data Interchange Format). LDIF almacena la información en jerarquías orientadas a objetos que luego serán transformadas al formato interno de la base de datos.
Un archivo LDIF tiene un formato similar a:
dn: dc=jovenclub, dc=cu
objectclass: top
objectclass:
organizationalUnit
dn: ou=groups, dc=jovenclub, dc=cu
objectclass: top
objectclass:
organizationalUnit
ou: groups
dn: ou=people, dc=jovenclub, dc=cu
objectclass: top
objectclass:
organizationalUnit
ou: people
dn: cn = Pepe Perez, ou=people,
dc=jovenclub, dc=cu
cn: Pepe Perez
sn: Perez
objectclass: top
objectclass: person
objectclass: posixAccount
objectclass: shadowAccount
uid: pepe
userpassword:
{crypt}p1pss2ii(0pgbs*do&@ = )eksd
uidnumber:104
gidnumber:100
loginShell:/bin/bash
homeDirectory: /home/pepe
Creación y mantenimiento de las BD
Existen dos métodos para insertar datos en la base de datos de Ldap. El primero es fácil y adecuado para pequeñas cantidades de datos, es interactivo y se deben utilizar herramientas tales como ldapadd para insertar nuevas entradas.
El segundo se debe trabajar fuera de línea, es el adecuado para grandes BD y se utiliza el comando slapadd incluido con slapd.
- Verificar que contiene los siguientes atributos en slapd.conf:
- suffix (top del directorio, por ejemplo, suffix “dc=jovenclub,dc=cu”) -directory /var/lib/ldap/autenticar (directorio donde se crearán los índices y que pueda escribir slapd)
Primer caso:
Una vez definido el slapd.conf, se debe ejecutar el comando:
# ldapadd -x -D "cn=admin,dc=mimundo,dc=com" -f ejemplo.ldif -W
Los argumentos utilizados pueden ser:
-x: autenticación simple -W: solicitar clave de acceso -D binddn: nombre distinguido (dn) a utilizar -h anfitrión: servidor Ldap a acceder -f fichero : fichero a utilizar -w passwd:contraseña del administrador del servidor
Segundo caso:
Una vez definido el slapd.conf, se debe ejecutar el comando:
# slapadd -v -l ejemplo.ldif -f /etc/ldap/slapd.conf
Los argumentos utilizados pueden ser: • -l: archivo en formato LDFI. • -f: archivo de configuración del servidor, donde se indican cómo crear los índices. • -v: habilitar el modo verbose
Configuración del servidor
Instale los paquetes necesarios como su.
# apt-get install slapd
Durante la instalación te piden: la configuración del dominio y de las contraseñas del fichero slapd.conf.
# slappasswd -h {CRYPT}
Copie y respalde el criptograma resultante. Añadir a etc/ldap/slapd.conf:
password-hash {CRYPT}
rootpw {CRYPT}CnTL4BZA65eXU #La clave que se generó anteriormente
rootdn "cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu"
Creación de directorios
Con fines de organización se creará un directorio específico para este directorio y se configurará con permisos de acceso exclusivamente al usuario y grupo openldap.
# cd /var/lib/ldap # mkdir autenticar replog # chown -R openldap:openldap autenticar replog # chmod -R 700 autenticar replog
Crear un archivo init.ldif donde nombre 3 unidades organizativas: users, groups y computers.
# mcedit /etc/ldap/init.ldif dn: dc=tele,dc=grm,dc=jovenclub,dc=cu objectClass: top objectClass: dcObject objectClass: organization o: GRM dc: tele dn: cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin
Descripción: administrador de LDAP
userPassword: {CRYPT}CnTL4BZA65eXU
#introduzca el resultado de generar
slappasswd.
dn: ou=users,dc=tele,dc=grm,dc=jovenclub,dc=cu
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=tele,dc=grm,dc=jovenclub,dc=cu
objectClass: organizationalUnit
ou: groups
dn:ou=computers,dc=tele,dc=grm,dc=jovenclub,dc=cu
objectClass: organizationalUnit
ou: computers
-Para inicializar la base de datos
# /etc/init.d/slapd stop
-Crear un nuevo directorio donde se almacenará la configuración de la base de datos ldap. Este directorio /var/lib/ldap/autenticar ya lo habíamos creado anteriormente.
# mkdir /var/lib/ldap/autenticar
-Accede al directorio donde se guardó el archivo creado anteriormente init.ldif
# cd /etc/ldap
-Luego añade los valores de ldif a la base de datos de ldap que se encuentra en /var/lib/ldap/autenticar.(Ver man slapadd)
# slapadd -v -l init.ldif -f /etc/ldap/slapd.conf
-Después cambia el dueño y el grupo del directorio creado anteriormente
# chown -R openldap:openldap /var/lib/ldap/autenticar/*
Para la actualización de la configuración de openldap -Creo un directorio
# cd /etc/ldap #mkdir slapd.d
Ejecuto el siguiente comando cuyo resultado se muestra a continuación.
# slaptest -f slapd.conf -F slapd.d config file testing succeeded
Le cambio el dueño y el grupo al directorio creado
# chown -R openldap: openldap slapd.d
Para hacer una búsqueda y confirmar la configuración -Iniciar nuestro servidor
root@debian5:~# /etc/init.d/slapd start
-Ahora revisaremos que el servidor slapd haya abierto el socket TCP/IP, en específico veremos que nos abra el puerto TCP/389.
root@debian5:~# netstat -pltn | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 4436/slapd tcp6 0 0 :::389 :::* LISTEN 4436/slapd
-Ahora haremos una consulta al servidor LDAP para ver si responde con lo más básico y ver que está funcionando.
root@debian5:~# ldapsearch -x -b “” -s base “(objectclass=*)” namingContexts root@debian5:~# ldapsearch -x -D cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" b "dc=tele,dc=grm,dc=jovenclub,dc=cu" -W
Crear una etiqueta nueva
-Para poblar el directorio de Ldap se debe utilizar como recurso los archivos *.ldif.
-Lo primero que se debe crear en el LDAP es la Organización, según los datos que se suministran. Crear con un editor un archivo llamado AddOrg.ldif y suministrar los siguientes datos:
dn: dc=midominio,dc=cu objectClass: dcObject objectClass: organization o: GRM dc: midominio
-Para añadir la información a la base de datos de LDAP utilizamos el siguiente comando:
# slapadd -v -l AddOrg.ldif -f /etc/ldap/slapd.conf
-La organización es lo primero que se debe crear ya que a partir de la creación de esta es que se inicia la creación del árbol del directorio LDAP. -Luego se debe crear un archivo llamado AddOU.ldif (crearemos una Unidad Organizacional) e ingresaremos los siguientes datos:
dn: ou=Coordinacion,dc=midominio,dc=cu ou: Coordinacion objectClass: organizationalUnit description: Coordinacion de MiDominio
-Después de creado se debe ingresar la nueva etiqueta al directorio de la siguiente forma:
# slapadd -v -l AddOU.ldif -f /etc/ldap/slapd.conf
Se debe crear un archivo que puede llamarse AddPerson.ldif con los siguientes datos, para añadir a un usuario a la base de datos:
dn: uid=jperez,ou=Coordinacion, dc=midominio,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Jose Perez sn: Perez # slapadd -v -l AddPerson.ldif -f /etc/ldap/slapd.conf givenname: Jose uid: jperez ou: Coordinacion description: Coordinador MiDominio telephonenumber: xxxxxxxx mail: jperez(arroba)midominio.cu streetAddress: Ave. Camilo Cienfuegos userpassword: jose
Ejemplo de mantenimiento de la BD de ldap
Modificar una Etiqueta
-Para modificar un atributo de una etiqueta creada, se debe crear un archivo de extensión *.ldif como por ejemplo ModPerson.ldif con los siguientes datos:
dn: cn=Jose Perez,dc=midominio,dc=cu changetype: modify add: telephonenumber telephonenumber: xxxxxxx
-Luego se ejecuta el comando:
# slapadd -v -l ModPerson.ldif -f /etc/ldap/slapd.conf
Borrar una Etiqueta
-Para borrar una etiqueta (para efectos del ejemplo borrar una persona), se debe crear un archivo *.ldif con las siguientes características:
dn: cn=Jose Perez,dc=midominio,dc=cu changetype: delete
- Luego se ejecuta el siguiente comando:
# slapadd -v -l AddPerson.ldif -f /etc/ldap/slapd.conf
Realizar búsquedas en el directorio y confirmar la configuración
Búsquedas en la BD de LDAP:
# ldapsearch -x -b "dc=midominio,dc=com" “objectClass=*” # ldapsearch -x -D "cn=admin,dc=midominio,dc=cu" -b "dc=midominio,dc=cu" -W
Respaldo de datos.
-Debe detenerse el servicio de LDAP antes de proceder con el respaldo de datos.
# /etc/init.d/slapd stop
-A continuación, se utiliza la herramienta slapcat, utilizando el fichero de configuración /etc/ldap/slapd.conf.
# slapcat -v -f /etc/ldap/slapd.conf -l respaldo-$(date +%Y %m%d).ldif
-Concluido el proceso de respaldo de datos, puede iniciarse de nuevo el servicio de ldap.
# /etc/init.d/slapd restart
Restauración de datos.
-El procedimiento requiere detener el servicio.
# /etc/init.d/slapd stop
-Debe eliminarse los datos del directorio a restaurar.
# rm -f /var/lib/ldap/autenticar/*
-A continuación, se utiliza la herramienta slapadd para cargar los datos desde un fichero *.ldif de respaldo.
# slapadd -v -c -l respaldo-20100629.ldif -f /etc/ldap/slapd.conf
Regenerar índices
-Se debe ejecutar la herramienta slapindex, que se utiliza para regenerar los índices LDAP.
# slapindex
-Concluido el proceso de restauración de datos, puede iniciarse de nuevo el servicio de ldap.
# /etc/init.d/slapd restart
Administración del LDAP vía web
Para administrar el servidor LDAP vía web, se puede utilizar phpldapadmin.
-Instalar el PHP con soporte LDAP
# apt-get install php5-ldap # /etc/init.d/apache2 force-reload # apt-get install phpldapadmin
-Acceder al LDAP vía web con esta url:
http://localhost/phpldapadmin login=> cn=admin,dc=example,dc=cu Password => El Password del usuario admin
-Queda listo para crear el directorio.
Fuentes
- Administración Avanzada de GNU/Linux. Josep Jorba Esteve y Remo Suppi Boldrito.
- Implementación de Servidores con GNU/Linux. Joel Barrios Dueñas.
