viernes, 30 de noviembre de 2012

OpenLDAP server + phpldapadmin

 Bueno vamos a configurar un servidor de protocolo ligero de acceso a directorios OpenLDAP, la configuración de este servidor será para la autentificación de usuarios  en cualquier equipo que este en nuestra red facilitando la administración de usuarios y el fácil desplazamiento de los mismo a cualquier equipo sin la necesidad de tener una cuenta previamente configurada en cada equipo de la red.
OPENLDAP Servidor
  • Crear el certificado autofirmado CA, este certificado sirve para que el servidor y el cliente ldap puedan comunicarse entre sí, para determinar que puede confiar un cliente en nuestro servidor.

cd /etc/pki/tls/misc
./CA  –newca
Llenarlo con los datos usados por usted en su organización, como se ve en la imagen.
  • yum install openldap* migrationtools nss-pam-ldapd

  • nano /etc/openldap/ldap.conf
  • Aumentamos las líneas que se ven en nuestra imagen, nótese que el URI tiene una dirección de loopback, para la instalación del servidor vamos a usar esta ip, una vez concluido la cambiaremos por la ip de nuestro equipo en la red
  • eliminar los archivos dentro de la carpeta slapd.d, con el objetivo de crear los nuestros luego de una manera limpia.
rm -rf /etc/openldap/slapd.d/*
  • Copiamos los archivos de configuración a la carpeta de nuestro servidor.
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
  • Copiamos el archivo de configuración de la base de datos de OpenLDAP en las librerías del sistema.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  • Generamos un password para el administrador de nuestro servidor LDAP, en el terminal escribir.
slappasswd
Escribimos una clave y nos devolverá una clave encriptada que la usaremos en la configuración del servidor.
Ejemplo:
{SSHA}VunsxK6jm4ezu01KJyBKR259oJVHimvp
·         Editamos el archivo slapd.conf con nuestra clave y agregamos los permisos necesarios para que los usuarios puedan cambiar sus claves.
Modificamos las líneas
·         suffix “dc=uce,dc=com,dc=ec”, la cantidad de parámetros dc domain component (componente de dominio) se usan según el tipo de dominio que tenemos en nuestra organización; en nuestro caso el dominio es uce.com.ec.
·         rootdn  “cn=Manager,dc=uce,dc=com,dc=ec” donde la directiva cn es el identificador mnemotécnico common name (nombre común); Aquí usted puede colocar cualquier nombre, pero recuérdelo porque es el nombre con el cual haremos la administración de los permisos.


Y aumentamos los permisos para nuestros  usuarios en cuanto a la modificación de claves y tipo de login que pueden usar.
  • Creamos un archivo root.ldif para agregarlo en nuestra base de datos.

nano /root/root.ldif
y lo configuramos como se ve en la imagen, recuerde cambiar todos los parámetros con los de su dominio.



  • Agregamos este archivo root.ldif a nuestra base de datos

slapadd -l /root/root.ldif

en caso de falla usar el parámetro –c para que sobrescriba en la base de datos.

slapadd –c -l /root/root.ldif

La terminal retornara un mensaje:

Bdb_db_open: DB_CONFIG for suffix “dc=uce,dc=com.dc=ec” has changed.
_##################### 100.00% eta none elapsed                               none fast!
Closing DB…

Verificar siempre que el porcentaje sea del 100%
  •  Hacer una prueba de los archivos de configuración, esta prueba generara los archivos cn=config y otros en nuestro archivo slapd.d

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

retornara: config file testing succeeded.
  •  Cambiamos de propietario a los directorios y chequeamos el estado del servicio slapd: 

chown -R ldap:ldap /var/lib/ldap
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd status
  • Cambiamos la configuración para que nuestro servidor para que se inicie con nuestro sistema operativo e iniciamos el servicio slapd (nuestro servicio slapd debe estar detenido).

chkconfig  slapd on
service slapd start
  • eliminar los archivos dentro de la carpeta slapd.d, para generarlos nuevamente con una prueba con los nuevos cambios realizados al servidor.

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  • Como los archivos han sido generados nuevamente debemos cambiar el propietario de los mismo en la carpeta slapd.d y reiniciamos el servicio slapd.

chown -R ldap:ldap /etc/openldap/slapd.d
service slapd restart
  • Hasta este momento nuestro servidor posee una sola entrada, pero queremos agregar todas las entradas base del sistema operativo como son los grupos, usuarios, servicios, etc.
  • Editamos el archivo /usr/share/migrationtools/migrate_common.ph 
  • Modificamos el “Default_mail_domain” y el “Default base” como se observa en la imagen.



  • migramos el archivo base
nos ubicamos en la carpeta: cd /usr/share/migrationtools
./migrate_base.pl > /etc/openldap/base.ldif
  •  agregamos la base.ldif en la DB, con el parámetro –c para sobrescribir si este archivo existiere.

ldapadd -x -W -c -D "cn=Manager,dc=uce,dc=com,dc=ec" -f /etc/openldap/base.ldif

La consola retornara mensajes: New entry added.
  • Si deseamos agregar a los usuarios del sistema usamos:
grep huesped /etc/passwd > /etc/openldap/passwd.huesped

./migrate_passwd.pl /etc/openldap/passwd.huesped /etc/openldap/huesped.ldif
ldapadd -x -D "cn=Manager,dc=uce,dc=com,dc=ec" -W -f /etc/openldap/huesped.ldif
  • probamos lo que agregamos

ldapsearch -x -b "dc=uce,dc=com,dc=ec" "objectclass=*"
  • Ahora generamos los certificados usados en los clientes OpenLDAP

rm /etc/pki/tls/certs/slapd.pem
make /etc/pki/tls/certs/slapd.pem
  •  Cambiamos los permisos de acceso al archivo slapd.pem y cambiamos de propietario al mismo.

chmod 650 slapd.pem

chown :ldap slapd.pem

  • Generamos un link de nuestro certificado para que sea usado por el cliente OpenLDAP

ln -s /etc/pki/tls/certs/slapd.pem /etc/openldap/cacerts/slapd.pem
  • Editamos el archivo:

nano /etc/sysconfig /ldap.conf
Buscamos la línea SLAPD_LDAPS=no
Y la cambiamos por SLAPD_LDAPS=yes
  • Editamos el archivo /etc/openldap/slapd.conf

y agregamos las líneas de los certificados TLS que se observan al final de la imagen.
  • Editamos el archivo /etc/openldap/ldap.conf y agregamos las líneas del certificado como se observa en la imagen
Note que se cambia el URI como mencione antes por la ip del servidor, se coloca la carpeta donde están los certificados para el uso del mismo y se indica que no se verifique el certificado nunca (never) ya que es autofirmado.
  • eliminar los archivos dentro de la carpeta slapd.d, para generarlos nuevamente con una prueba con los nuevos cambios realizados al servidor.

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  • Como los archivos han sido generados nuevamente debemos cambiar el propietario de los mismo en la carpeta slapd.d y reiniciamos el servicio slapd.

chown -R ldap:ldap /etc/openldap/slapd.d
service slapd restart
  • Ahora verificamos que datos tenemos en nuestro servidor

ldapsearch -x -ZZ -h localhost
ldapsearch -x -H ldaps://localhost

Obtendremos algo parecido a la imagen, en caso de presentar errores verifique la configuración y que el servicio slapd este iniciado, si el error ocurre durante la prueba ldaps se debe verificar que los certificados fueron creados y tienen los permisos necesarios.



  • Para acceder como usuario debemos configurar la herramienta:

 authconfig-tui


  • Damos permisos para crear los directorios de cada usuario en el primer login.

authconfig –enablemkhomedir --update


Phpldapadmin

·         Descargamos el rpm del repositorio epel, para nuestra distribución de CentOS 6
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
·         Una vez instalado el repositorio epel, descargamos el administrador de LDAP phpldapadmin
yum install phpldapadmin

Editamos el archivo de configuración de phpldap
vim /etc/phpldapadmin/config.php

Des comentamos la línea 397, y comentamos la línea 398 para permitir el acceso como administrador del sistema con nuestro rootdn descrito en el literal 8, guardamos e iniciamos el servicio httpd.
service httpd start
·         Abrimos nuestro navegador web y escribir:

http://127.0.0.1/phpldapadmin

·         Clic en conectar, y nos identificamos con el rootdn que está en el literal 8.
·         Clic en grupos


·         Clic en crear un objeto nuevo, y seleccionamos el grupo posix


·         Damos un nombre al grupo y creamos el objeto 
·         Una vez realizado esto podemos crear usuarios, clic en usuarios y crear un nuevo objeto
·         Clic en Genérico cuenta de usuario
·         Llenamos los campos como se ven en la imagen
Nota: observe que la consola de Login está como /bin/sh, esto nos permitirá conectarnos por telnet o ssh en consola, pero no podremos acceder de manera grafica al pc, para eso debemos modificar la consola login por /bin/bash después de creado nuestro usuario.
·         Clic en el usuario creado, modificar el loginShell y agregar el parámetro shadowAccount.
con estos datos podemos conectarnos a nuestro servidor ldap con el nuevo usuario creado desde cualquier pc.

Próximamente configuración de los clientes Ldap.