BLOGGER TEMPLATES AND TWITTER BACKGROUNDS »

martes, 2 de septiembre de 2008

MANUAL DE CONFIGURACION E INTEGRACIN DE OPENLDAP CON SAMBA, APACHE, PHPLDAPADMIN.



Bueno, este manual servira como referencia para aquellas personas interesadas en instalar OpenLdap sobre Debian.


Vesion de Debian: Debian Etch 4.0.


Software a usar:

Slapd (2.2.23-8).

Samba (3.0.14ª-3).

Phpldapadmin (0.9.5-3).

Libnss-ldap (238-1).

Libpam-ldap (178-1).

Nscd (2.3.2.ds1-22).

Al instalarla deberemos configurar la lista de repositorios de Debian con el fin de obtener las dependencias necesarias para la consecuente ejecución de OpenLdap.


Por lo tanto lo hare paso a paso para aquellos que son rockies en ambientes Linux.


  1. Editando la lista de repositorios de Debian Etch 4.0:

    1. #Nano/pico /etc/apt/sources.list

    2. /*Y al final de la lista, teclearemos:

      1. Deb http://http.us.debian.org/debian etch main contrib non-free

    3. /*Daremos Ctrl + O (para guarder).

    4. /*Daremos Ctrl. + X (para salir).

  2. Ahora, si pertencemos a una LAN deberemos verificar si poseemos la salida a Internet a traves del servicio Proxy, deberemos teclear:

    1. #!export

    2. /*Y nos debera salir algo asi:

      1. http_proxy://172.20.49.51:80”

    3. /*Si no nos sale algo como esto deberemos exportarlo para nuestra maquina, asi:

      1. #Export http_proxy=http://172.20.49.51:80.

  3. Ahora actualizaremos nuestra lista de repositorios para que se puedan obtener los paquetes a usar en la configuración, asi:

    1. #apt-get update.

  4. Para que la configuración de OpenLdap no nos presente problemas mas adelante deberemos instalar unas dependencias necesarias para compilación e instalacion de los otros paquetes.

    1. #apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto.


  1. Ahora instalaremos los paquetes correspondientes al servidor de OpenLdap y sus utilidades.

    1. #apt-get install slapd ldap-utils.

    2. /*Ahora nos debera pedir una serie de datos, para completer la configuracion asica de OpenLdap, tales como:

      1. Contraseña del Administrador de OpenLdap: sena2008 /*es mi contraseña de ejemplo*/.

      2. Verificar la contraseña : sena2008.

    3. Ahora para que quede un poco mas completa la configuración de OpenLdap, deberemos reconfigurar el paquete-servicio, mediante:

      1. #dpkg-reconfigure slapd.

      2. /* Y nos debera pregunta ahora:

        1. Desea omitir la configuracion de ldap : no

        2. Introduzca el nombre de dominio DNS : wodan.net

        3. Instrodusca el nombre de su organizacion : wodan.net

        4. Contraseña del administrador : sena2008

        5. Verificar contraseña : sena2008.

        6. Motor de base de datos a utilizar : BDB./* Es el tipo de la base de datos Berkeley a manejar*/.

        7. Desea que se borre la base de datos cuando purge el paquete slapd :NO

        8. Desea mover la base de datos antigua : SI

        9. Permitir el protocolo LDAPV2 : si

      3. Ahora verificamos la instalacion de slapd, asi:

        1. # ldapsearch -x -b “dc=wodan,dc=net”

        2. /*Y nos debera aparecer los siguinte:

          1. # extended LDIF

          2. #

          3. # LDAPv3

          4. # base <“dc=wodan,dc=net”> with scope subtree

          5. # filter: (objectclass=*)

          6. # requesting: ALL

          7. #

          8. # search result

          9. search: 2

          10. result: 34 Invalid DN syntax

          11. text: invalid DN

          12. # numResponses: 1

  2. Instalando phpldapadmin.

    1. Phpldapadmin requiere un servidor web para funcionar. Si es nueva instalacion necesitaremos instalar Apache. Se usara Apache-ssl ya que no queremos que nuestra clave de administrador sea enviada por la red en texto plano. Por lo cual, teclearemos:

      1. #apt-get install apache-ssl. /* Y deberemos responder lo siguiente:

        1. Habilitar SuExec: no

        2. Pais: CO

        3. Estado : AN

        4. Localidad : ME

        5. Nombre de la Organización : wodan.net

        6. Nombre de la Unidad Organizativa: Users

        7. Nombre de Equipo : serverldap.wodan.net

        8. Email de contacto : admin@wodan.net

      2. /* Luego instalaremos phpldapadmin que provee una interfaz web para administrar información en LDAP:

        1. #apt-get install phpldapadmin.

        2. /* responda las preguntas asi:

          1. Tipo de autenticación: session

          2. Configurar webserver : apache-ssl.

          3. Reiniciar: si

        3. INSTALACION DE SMBLDAP-TOOLS

        4. #apt-get install smbldap-tools

        5. Phpldapadmin requiere una utilidad llamada mkntpwd para crear los hashes de las claves Samba. Esto solía estar incluído en smbldap-tools pero no parece estar en Debian.

        6. Instalacion de Mkntpwd:

          1. $ cd /opt/

          2. $ wget http://www.silcom.com.pe/soft/mkntpwd.tar.gz

          3. $ tar -zxf mkntpwd.tar.gz

          4. $ cd mkntpwd

          5. $ make

          6. $ cp mkntpwd /usr/local/bin


        1. Ahora verificamos si realmente esta instalado el paquete, asi: mkntpwd. /* Ynos debera salir:


Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]

mkntpwd password

mkntpwd -f [-] [filename]

-L lanmgrpasswd LanManager cleartextpwd <= 14 chars

-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)

with both options present the encrypted LanManager-Pwd is

printed first, followed by a ‘:’ and the encrypted NT-Pwd.

The second usage behaves like mkntpwd -L pwd -N pwd

The third usage reads the password from STDIN or a File. Printoutis the same as second.

anton@genua.de


  1. INSTALACION DE SAMBA


#apt-get install samba samba-doc. /* Yresponderemos a lo siguiente:

Nombre del dominio o grupo de trabajo : wodan.net

Usar Encriptación de Contraseña: Si

Modificar smb.conf para que use la configuración WINS proveniente de DHCP : no

Como ejecutar Samba: demonios.

    1. Configurando y cargando LDAP, slapd necesita el esquema Samba para trabajar. Haremos lo siguiente:

      1. $ cd /usr/share/doc/samba-doc/examples/LDAP

      2. $ gunzip samba.schema.gz

      3. $ cp samba.schema /etc/ldap/schema

      4. /* Ahora agregamos el esquema de Samba al servicio slapd:

        1. nano/pico /etc/ldap/slapd.conf.

        2. /* despues de los otros incluyes, teclear:

          1. include /etc/ldap/schema/samba.schema

      5. Y reinicie slapd:

        1. $ /etc/init.d/slapd restart

      6. CREACION DE CARPETAS PARA SAMBA

        1. #mkdir /home/samba/

        2. #mkdir /home/samba/netlogon

        3. #mkdir /home/samba/profiles

  1. Necesitamos crear unidades organizativas en LDAP para nuestros usuarios, grupos y maquinas.

    1. Ingresar a phpldapadmin, en nuestro navegador, digitamos:

      1. /* https://serverldap.wodan.net/phpldapadmin/

      2. /* https://localhost/phpldapadmin/

      3. Ingrese con la clave del usuario administrador.

        1. Login DN : cn=admin,dc=wodan,dc=net

        2. Passwod : sena2008.

      4. Expandir la raíz del arbol, y hacer clic en “Create New Entry Here”

      5. Seleccionar “Organizational Unit” (ou):

      6. Nombrar la ou como "users” (para manejar las cuentas de los usuarios).

      7. “machines” (para manejar las cuentas de máquinas).

      8. “groups” (para manejar las cuentas de grupos).

  2. CONFIGURACIÓN DE SAMBA

    1. Es el momento de congfigurar Samba. Haremos una copia del archivo original de samba, asi:

      1. cp /etc/samba/smb.conf /etc/samba/smb.conf.bkp

    2. Ahora removeremos el archivo para dejarlo en blanco, asi:

      1. rm /etc/samba/smb.conf

    3. Y lo crearemos nuevamente:

      1. Touch /etc/samba/smb.conf

    4. Y pasaremos a editarlo:

      1. Nano/pico /etc/samba/smb.conf.

      2. /* y debera quedarnos de esta forma:

        1. Archivo_ejemplo_samba.

      3. si se copia el archivo directamente hay que darle permisos de lectura al grupo y a others, asi:

        1. #chmod u-x smb.conf

        2. #chmod g+r smb.conf

        3. #chmod o+r smb.conf

      4. Ejecute “testparm” para cerciorarse que la configuración de Samba no contiene errores.

        1. #testparm

        2. Indique a Samba la contraseña del administrador LDAP, y nos mostara:


Load smb config files from /etc/samba/smb.conf

Processing section “[netlogon]“

Processing section “[homes]“

Processing section “[profiles]“

Loaded services file OK.

Server role: ROLE_DOMAIN_PDC

Press enter to see a dump of your service definitions

/* si nos responde de esta forma entonces todo esta correcto hasta ahora.

      1. Le damos la contraseña de ldap a samba.

        1. #smbpasswd -w sena2008.

      2. Reiniciar Samba:

        1. $/etc/init.d/samba restart

      3. Si observa el phpldapadmin debería ver que una entrada “sambaDomainName=wodan.net”, ha sido creada.

        1. Copie el valor sambaSID (ej. S-1-5-21-2265827217-4098242790-2717616009), se necesitara en la siguiente sección.


  1. CREACIÓN DE GRUPOS DE DOMINIO

    1. Dentro de Phpldapadmin en Contenedor “groups”, elegir “Create New Samba3 Group Mapping” y crear los siguientes grupos:

Group

Windows_Name

GID

Samba_SID

Sambaadmins

Domain

Admins

20000 512

Sambausers

Domain

Users

20001 513

Sambaguests

Domain

Guests

20002 514

Sambamachines

Domain

Computers

20003 515



  1. INTEGRACIÓN DE LA AUTENTIFICACION Y LDAP

    1. INSTALACIÓN NSS LDAP

      1. #apt-get install libnss-ldap
        #dpkg-reconfigure libnss-ldap

Servidor LDAP : 127.0.0.1
Nombre distintivo (DN) : dc=wodan,dc=net
Vercion de LDAP a utilizar : 3
Hace falta un usuario para acceder a la base de datos ldap : No
Dar privilegios especiales de ldap para root : SI
Desea hacer que la configuracion solo pueda leer o escribir el propietario : SI
Cuenta ldap para root : cn=admin,dc=wodan,dc=net
contraseña ldap para root : sena2008

  1. Edite el archivo /etc/nsswitch.conf, asi:

    1. #pico /etc/nsswitch.conf

    2. /* Debe quedar editado de esta forma:

      1. passwd:         compat ldap
			  group:          compat ldap 			  shadow:         compat ldap 	/* Esto buscará primero en la base de datos local (/etc/passwd), 		luego LDAP. Ud. podría hacerlo a la inversa aunque los 			resultados podrían variar.      13.Para confirmar que los grupos han sido correctamente configurados     	use la utilidad getent de la siguiente forma:     		    $ getent group 		/* Debe mostrar: 			sambaadmins:*:20000:

sambausers:*:20001:
sambaguests:*:20002:
sambamachines:*:20003: NOTA : SI NO MUESTRA ESTO ALGO ESTA MAL 14. Instalacion de PAM LDAP # apt-get install libpam-ldap
# dpkg-reconfigure libpam-ldap

Servidor ldap : 127.0.0.1
Nombre distintivo : dc=wodan,dc=net
Vercion de ldap : 3
Make local root Database admin : si
Hace falta un usuario para la base de datos LDAP : no
Ldap account for root : cn=admin,dc=wodan,dc=net
contraseña para la cuenta ldap de root : sena2008
Local crypt to use when changing passwords : md5



NOTA: Samba requiere un usuario Administrador (con un uidNumber de 0) para agregar las máquinas Windows al dominio. No recomiendo tener un usuario root en LDAP ya que puede ser capaz de abrir una sesión en las estaciones de trabajo Linux, para evitar eso agregamos un filtro en /etc/pam_ldap.conf. Si esto no le importa (o quiere tener una única cuenta root en todas las máquinas) ignore este paso.

Agregar la siguiente linea a “/etc/pam-ldap.conf”:

#pico /etc/pam-ldap.conf:

pam_filter !(uidNumber=0)

/* Esto impedirá que un usuario con uidNumber 0 pueda ingresar usando LDAP.



/* Es necesario editar los siguientes archivos para configurar PAM para LDAP:

#pico /etc/pam.d/common-account

# comente la siguiente linea

		#account        required        pam_unix.so 		# y agregue estas dos 		account         sufficient      pam_ldap.so 		account         required        pam_unix.so try_first_pass 



#pico /etc/pam.d/common-auth:

# comente la siguiente linea

		#auth   required        pam_unix.so nullok_secure 		# y agregue estas dos 		auth    sufficient      pam_ldap.so 		auth    required        pam_unix.so nullok_secure 					use_first_pass  	#pico /etc/pam.d/common-password: 		# comente la siguiente linea 		#password   required   pam_unix.so nullok obscure min=4 max=8 			md5 		# y agregue estas dos 		password   sufficient pam_ldap.so 		password   required   pam_unix.so nullok obscure min=4 max=8 			md5 use_first_pass  	#pico /etc/pam.d/common-session 		# para que cuando se registre un usuario en ldap se cree el  		# directorio home respectivo agregar como primera linea 		session    required    pam_mkhomedir.so skel=/etc/skel/ 				umask=0022  	       Ahora reiniciaremos el servicio Samba: 		$ /etc/init.d/ssh restart 		$ /etc/init.d/samba restart  	15. Finalmente instalar el Demonio de caché del servicio de      		 nombres: 		$apt-get install nscd   	16. AGREGAR USUARIOS   		Ahora finalmente podemos agregar algunos usuarios. Necesitará un Administrador (uid=0) y varios usuarios. Creelos bajo “ou=users” de la siguiente manera: USUARIO_1

First_Name

Administrador

Last_Name

Global

Common_Name

Administrador

UID_Number

0

Samba_SID

512

Password

Sena2008

Verify_Password

Sena2008

Home_Directory

/home/administrador

USUARIO_2

First_Name

richar

Last_Name

User

Common_Name

richar

User_ID

richar

UID_Number

10000

Samba_SID

512

Password

Sena.2008

Verify_Password

Sena.2008

Home_Directory

/home/richar

USUARIO_3

First_Name

Daniel

Last_Name

User

Common_Name

Daniel

User_ID

10001

Samba_SID

513

Password

Sena_2008

Verify_Password

Sena_2008

GID_Number

Sambausers

Primary_Group_ID

Sambausers

Home_Directory

/home/daniel



En este punto podemos utilizar getent para verificar que nss está trabajando correctamente en el sistema Linux.

$ getent passwd

		administrador:*:0:20000:administrador:/home/administrador:

richar:*:10000:20000:richar:/home/richar:
daniel:*:10001:20001:daniel:/home/daniel:



Finalmente necesitamos agregar los directorios iniciales para nuestros usuarios:

# mkdir /home/richar
# cp /etc/skel/.* /home/richar/
# chown -R juan /home/richar
# chgrp -R sambaadmins /home/richar



# mkdir /home/daniel

# cp /etc/skel/.* /home/daniel/
# chown -R juan /home/daniel
# chgrp -R sambaadmins /home/daniel

PRUEBAS

Primero intente ingresar (a la consola o via ssh) con el usuario LDAP.

Luego trate de conectarse al servidor Samba. Si tiene problemas examine los registros en /var/log/samba (/var/log/samba/log.nombredemaquina sería un buen lugar para empezar).