martes, 16 de septiembre de 2008

CONFIGURACIÓN E INSTALACIÓN DE SAMBA COMO PDC Y AUTENTICACION LDAP EN DEBIAN.

Algunas notas introductorias:


La distribución utilizada para estas pruebas fue la Debian Etch 4.0. Probablemente se pueda
Adaptar sin mucho problema a otras distribuciones de Linux.


Las ubicaciones de los archivos tratados en este documento pueden variar dependiendo de las distribuciones y versión que tenga.


El procedimiento del montaje descrito en esta guía se hizo con base en una necesidad específica.

De acuerdo con una necesidad particular, puede que necesite llevar a cabo pasos adicionales/diferentes que los citados en este documento. Tome en cuenta que yo no soy experto en LDAP.

Esta guía se ha elaborado tomando como base diversa documentación obtenida en Internet en conjunto con partes personalizadas a mi gusto.

Todos los comandos ejecutados desde la consola deben llevarse a cabo como súper usuario root.

Al final de esta guía tendremos montado un controlador principal de dominio en Samba + perfiles móviles + scripts de inicio y se utilizará la autenticación y organización de usuarios y grupos por medio de openLDAP.


Mucha suerte con este montaje.


Huguinho
Administrador de Redes


Instalación del servidor LDAP

Instalar el paquete de openLDAP y algunas utilidades con el comando:

#apt-get install slapd ldap-utils

Mientras se instala el paquete slapd se le pedirá la siguiente información:

Dato solicitado Dato a introducir Notas adicionales
Contraseña del admin Su clave Contraseña que le asignará a la cuenta admin de LDAP
Confirme la contraseña del admin Su clave

Ahora reconfiguraremos el slapd para que nos pida mas información:

# dpkg-reconfigure slapd

Dato solicitado Dato a introducir Notas adicionales
Omitir la configuración de OpenLDAP No Es para confirmar que desea reconfigurar a OpenLDAP
Nombre de dominio dc=midominio,dc=com Es el nombre que yo le puse a mi dominio de prueba
Nombre de organización dc=midominio,dc=com Aquí puede ir un nombre más amigable y descriptivo
Contraseña del admin Su clave Otra vez volver a digitar la clave del usuario admin de LDAP
Confirme la contraseña del admin Su clave
Motor de base de datos a utilizar BDB Formato Berkeley de Base de Datos
Borrar la base de datos al purgar slapd No Es para conservar la base de datos de LDAP cuando se purgue
Mover la base de datos antigua Si Es para respaldar la base de datos actual de LDAP. (prevención)
Permitir LDAP v2 Si

Ahora, para probar que el servicio de slapd está arriba y funcionando utilizamos el comando:
# ldapsearch -x -b “dc=midominio,dc=com”

Y debe mostrarse una información. Si saliera un mensaje como esto: “ldap_bind: Can't contact LDAP server (-1)”

entonces algo está pasando con el servicio de LDAP.
Si tenemos problemas con el slapd, entonces podemos ejecutarlo en modo debug para ver sus mensajes en
tiempo real:

# slapd -d 256

Si al ejecutar este comando no se despliega ningún error, entonces puede abrir otra consola y pruebe ejecutar allí
nuevamente el comando ldapsearch para observar qué mensajes se emiten y cuál puede ser el error.

Instalación de phpldapadmin

Instalar un administrador gráfico para LDAP nos va ayudar mucho a visualizar nuestro árbol organizativo en LDAP además de que nos permite llevar a cabo funciones muy útiles de una manera muy rápida.

El phpldapadmin es un administrador hecho en PHP que corre encima de un servidor web (por ejemplo: Apache SSL o Apache2) y accesible utilizando cualquier navegador de internet (en este caso lo usaré con Iceweasel que es la versión de firefox que viene con Debian Etch).

#apt-get install gcc
#apt-get install build-essential

Instalación de apache-ssl

Antes de instalar a phpldapadmin vamos a instalar el servidor web Apache-SSL para correr siempre a phpldapadmin desde allí vía páginas seguras.

# apt-get install apache-ssl

Mientras se instala el paquete apache-ssl se le pedirá la siguiente información:

Dato solicitado Dato a introducir Notas adicionales
Nombre del país CO (En este caso Colombia) Digitar cualquier valor de 2 caracteres
Estado o provincia AN (En este caso Antioquía) Digitar cualquier valor (yo puse AN por Antioquía)
Localidad Medellín
Nombre de la organización
Nombre de la unidad organizativa
Nombre del host Servidor.midominio.com La computadora se llama servidor y el nombre de dominio es Nombre del host servidor.midominio.com. Yo también probé digitando solamente el valor localhost y funcionó bien.
Correo Electrónico También puede digitar root@localhost


Para probar si el Apache-SSL está arriba y funcionando, abrimos nuestro navegador de internet y nos vamos a la
siguiente URL:

https://localhost

Si no nos devuelve ningún error entonces ya tenemos arriba a nuestro servidor web seguro

Instalación de smbldap-tools y phpldapadmin.

Seguidamente vamos a instalar un paquete llamado smbldap-tools que contiene varias herramientas para Samba y LDAP muy útiles para nuestros intereses:

# apt-get install smbldap-tools

Ahora sí es momento para instalar el phpldapadmin:

# apt-get install phpldapadmin

Para probar que el phpldapadmin quedó bien instalado, abrimos el navegador de internet y nos vamos a la siguiente URL:

https://localhost/phpldapadmin

Y debe aparecer la página principal de phpldapadmin. Si ocurriera algún error yo recomiendo volver a instalar el phpldapadmin o sino bajar la última versión de la página oficial y montarla en la carpeta /var/www

Al instalar a phpldapadmin también se instalará el servidor apache2 automáticamente (pruebe entrar a http://localhost para que revise si tiene el servicio apache2 activo y corriendo).
Con respecto a este punto, mencionaré que como gusto personal, NO quiero que phpldapadmin esté hosteado vía apache2, solamente vía apache-ssl para garantizar la utilización del web-seguro en esta herramienta. Para llevar a cabo este objetivo, simplemente habrá que eliminar o mover a otro lugar este enlace simbólico:

/etc/apache2/conf.d/phpldapadmin y luego reiniciar el servicio apache2 con el comando:

# /etc/init.d/apache2 restart

Una vez instalado, phpldapadmin requiere de una utilidad llamada mkntpwd para crear los hashes de Samba.
Debido a que esta utilidad no ha sido incluida en el paquete smbldap-tools de Debian, habrá que descargar sus archivos fuente de Internet y compilarlos en nuestro sistema para que nos genere el ejecutable de mkntpwd:


#cd /opt/
#wget http://www.silcom.com.pe/soft/mkntpwd.tar.gz
#tar -zxvf mkntped.tar.gz
#cd mkntpwd
#make
#cp mkntpwd /usr/local/bin

Verificar

#mkntpwd

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. Printout is the same as second. anton@genua.de

Instalación de Samba.

Vamos a instalar samba y samba-doc con el siguiente comando:

# apt-get install samba samba-doc

Mientras se instala el paquete samba se le pedirá la siguiente información:

Dato solicitado Dato a introducir Notas adicionales
Nombre del dominio dc=midominio,dc=com Se usa el mismo que se usó para LDAP
Usar passwords encriptados Si Puede que NO se le pregunte este dato
Modificar smb.conf para que use la configuración WINS proveniente de DHCP No

Configuración de LDAP.

El servidor LDAP necesitará del esquema Samba para trabajar. Para eso vamos a obtener el archivo samba.schema provisto por samba-doc y lo vamos a alojar en la carpeta /etc/ldap/schema. Hacemos lo siguiente desde la consola:

# cd /usr/share/doc/samba-doc/examples/LDAP
# gunzip samba.schema.gz
# cp samba.schema /etc/ldap/schema

Ahora tenemos que editar el archivo de configuración de slapd /etc/ldap/slapd.conf y agregar la siguiente línea después del último “include” que aparezca en ese archivo para que LDAP use el esquema Samba:

include /etc/ldap/schema/samba.schema

Además buscaremos la siguiente línea:

access to attrs=userPassword

y la cambiamos por: (para que los atributos sambaLMPassword y sambaNTPassword NO sean accesibles a todos)

accessto attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword

El contenido final y completo del archivo /etc/ldap/slapd.conf se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:

# Allow LDAPv2 binds
allow bind_v2
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
9
loglevel 0
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
database bdb
suffix "dc=home"
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
lastmod on
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=home" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=home" write
by * read

Seguidamente debemos reiniciar a slapd para que estos cambios entren en vigencia:

# /etc/init.d/slapd restart

Introducción de los principales contenedores (“Organizational Units”) para el árbol LDAP
(estos pasos pueden variar dependiendo de su necesidad específica)

Para llevar a cabo este objetivo vamos a utilizar a phpldapadmin. Abrimos el navegador de internet y nos vamos a la URL siguiente:

https://localhost/phpldapadmin

Para conectarnos digitamos los siguientes datos:

Usuario cn=admin,dc=midominio,dc=com
Contraseña la contraseña de admin que digitó cuando se configuró el LDAP

Procederemos a declarar los contenedores principales. En este caso declararemos 3 “organizational units”:

groups (para manejar las cuentas de grupos)
machines (para manejar las cuentas de máquinas) y
users (para manejar las cuentas de los usuarios).

Usando el phpldapadmin expandimos el árbol de dc=midominio,dc=com y le damos click a la opción “Create New Entry Here” (para crear un hijo de dc=midominio,dc=com), luego seleccionamos “Organizational Unit” (ou), luego digitamos el nombre deseado (en este caso users, por ejemplo) y presionamos la tecla de tabulación para que se habilite el botón para proceder (hasta que no se presione la tecla de tabulación no se habilitará el botón para proceder).

3 comentarios:

Daniel Alberto dijo...

¿Y lo demás de la guía?

Saludos

Hugûinho dijo...

Qué más necesitas de la guia?

Unknown dijo...

Al colocar el login y la contraseña contraseña en phpldapadmin me sale este error: No se ha podido conectar con "127.0.0.1" en el puerto "389"