Friday, July 09, 2004

Funcionando

Por fin parece que esto está funcionando, los errores de la vez pasada fueron debido a que no generé bien los entries para el directorio ldap, ahora los generé bien y pude ver los datos a través del directory administrator, el problema parece ser que no está bien "sincronizado" este programa con la base que genera migration tools, otro error fue que no configuré bien pam ni nss, bueno, aqui los pasos detallados del lo que hice:

1) después de bajar los paquetes que mencioné en el post anterior, configuré ldap para que me genere el directorio por default, en mi /etc/ldap/slapd.conf tengo:

suffix "dc=portia,dc=danguer,dc=com"

access to attribute=userPassword
by dn="cn=admin,dc=portia,dc=danguer,dc=com" write
by anonymous auth
by self write
by * none

access to *
by dn="cn=admin,dc=portia,dc=danguer,dc=com" write
by * read

Aunque al inicio tuve un problema porque me generó la bd con datos de nodomain o algo similar, lo que hice fue borrar la bd (/var/lib/ldap) y reconfigurarla con los datos del "dominio".

Ahora si slapcat me regresa la bd mínima:

dn: dc=portia,dc=danguer,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: portia.danguer.com
dc: portia
structuralObjectClass: organization
entryUUID: 1f592eb4-6684-1028-8da4-b6799de0b87a
creatorsName: cn=anonymous
modifiersName: cn=anonymous
createTimestamp: 20040710061419Z
modifyTimestamp: 20040710061419Z
entryCSN: 2004071006:14:19Z#0x0001#0#0000

dn: cn=admin,dc=portia,dc=danguer,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: ******
structuralObjectClass: organizationalRole
entryUUID: 1f8b08bc-6684-1028-8da5-b6799de0b87a
creatorsName: cn=anonymous
modifiersName: cn=anonymous
createTimestamp: 20040710061419Z
modifyTimestamp: 20040710061419Z
entryCSN: 2004071006:14:19Z#0x0002#0#0000


NSS


Siguiente paso, ya que bajé los módulos de NSS y PAM para ldap, hay que configurarlos, mi archivo de /etc/libnss-ldap.conf está así:

host 127.0.0.1
base dc=portia,dc=danguer,dc=com
rootbinddn cn=admin,dc=portia,dc=danguer,dc=com


Un error que me marcaba de Authentication service cannot retrieve authentication info (podía entrar como root a cualquier cuenta, pero simplemente no podía verificar los passwords), fue debido a que omití mi rootbinddn.

Ahora falta decirle a nss que utilice ldap, en mi archivo /etc/nsswitch.conf

passwd: ldap compat
group: ldap compat
shadow: ldap compat


por supuesto faltan los de hosts y demás, pero por el momento sólo utilizo los de autentificación.

PAM


Ahora a configurar PAM, mi archivo /etc/pam_ldap.conf es muy similar al de nss:

host 127.0.0.1
base dc=portia,dc=danguer,dc=com
rootbinddn cn=admin,dc=portia,dc=danguer,dc=com


Mi archivo /etc/pam.d/common-password está asi:

password required pam_unix.so nullok obscure min=4 max=8 md5
password sufficient pam_ldap.so


con esto queda claro que si llega la autentificación por ldap, que se de por bien servido =).

Migración


Ahora viene lo interesante, "migrar" nuestros datos a ldap, esto se logra con migration tools, una vez descargado, se instala sobre: /usr/share/migrationtools, basta con editar el archivo:
migrate_common.ph para darle nuestras opciones, he aqui las mias:

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "portia.danguer.com";

# Default base
$DEFAULT_BASE = "dc=portia,dc=danguer,dc=com";


Ahora hay que generar los archivos ldif (para insertarlos a nuestra bd de ldap):

perl migrate_base.pl > base.ldif
perl migrate_passwd.pl /etc/passwd > passwd.ldif
perl migrate_group.pl /etc/group > group.ldif


Cabe destacar que el base me generó dos dn, uno que ya existía (dc=portia,dc=danguer,dc=com) y otro que no puede
escribirse(dc=danguer,dc=com), borrándo estos dos nos permite
insertar sin problemas los datos, para insertar con el comando:

ldapadd -D "cn=admin,dc=portia,dc=danguer,dc=com" -x -W -f base.ldif
ldapadd -D "cn=admin,dc=portia,dc=danguer,dc=com" -x -W -f group.ldif
ldapadd -D "cn=admin,dc=portia,dc=danguer,dc=com" -x -W -f passwd.ldif


Después de dar estos comandos, nuestra bd estará lista, para probar se puede meter un caracter extra a un usuario de nuestro sistema:

danguer:x:1000:1000:Daniel Guerrero,,,:/home/danguer:/bin/bash

convertirlo a:

xdanguer:x:1000:1000:Daniel Guerrero,,,:/home/danguer:/bin/bash


e intentar loggearnos por ssh, su, login, al sistema, y si nos da acceso con nuestra cuenta "vieja" podemos saltar de alegria =). También podemos iniciar el servidor slapd en modo debug:

slapd -d 255


Así veremos que cuando intentamos ingresar, el sistema busca primero accesar por medio de ldap, si no lo intentará por archivo (por eso es importante la precedencia en el pam).

0 Comments:

Post a Comment

<< Home