¿No sabes por dónde empezar? Ayúdanos normalizando artículos.
¿Tienes experiencia? Crea alguno de estos artículos de actualidad.
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 17: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
[ocultar]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.