Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.
Como configurar un Dominio Samba con openLDAP en CentOS 5
Dominio Samba con OpenLDAP (Parte 1:
Configuracion
General)
PARA CENTOS 5
Autor:
Jaime M.
Tan Nozawa Correo electrónico: jtnozawa@gmail.com Procedencia del autor: Lima-Perú
© 2007 Jaime M.Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos. |
Introducción.
LDAP (Lightweight Directory Access Protocol) es un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP puede considerarse una base de datos (aunque su sistema de almacenamiento puede ser diferente) al que pueden realizarse consultas.URL: http://es.wikipedia.org/wiki/LDAP
SMB (acrónimo de Server
Message Block) Protocolo de red que
permite compartir archivos e impresoras
(entre otras cosas) entre nodos de una red. Es utilizado principalmente
en ordenadores con Microsoft Windows.
SMB fue originalmente inventado por IBM,
pero la versión más común hoy en
día es la modificada ampliamente por Microsoft.
Microsoft renombró SMB a Common Internet File
System (CIFS) en 1998 y añadió
más características, que incluyen soporte para enlaces simbólicos,
enlaces duros (hard
links) y mayores tamaños de archivo.
URL:
http://es.wikipedia.org/wiki/SMB
OpenLDAP es una
implementación libre y open source del protoloco Lightweight
Directory Access Protocol (LDAP) desarrollado por elOpenLDAP
Project. Está liberada bajo su propia
licencia OpenLDAP Public License. LDAP es un
protoloco independiente de la plataforma. Muchas
distribuciones Linux
incluyen el software OpenLDAP para su soporte.
SAMBA
es un conjunto de programas, originalmente creados por Andrew Tridgell
y actualmente mantenidos por The SAMBA Team,
bajo la Licencia Publica General GNU,
y que implementan en sistemas basados sobre UNIX® el protocolo SMB.
Sirve como reemplazo total para Windows® NT, Warp®,
NFS® o servidores Netware®.
Equipamiento lógico requerido.
• | openldap-2.3.27 |
• | openldap-clients-2.3.27 |
• | openldap-servers-2.3. |
• | authconfig-5.3.12 |
• | samba-common |
• | samba-client |
• | samba-3.0. |
• | smbldap-tools-0.9.1-1 |
Instalación a través de yum.
yum -y install openldap openldap-clients openldap-servers authconfig authconfig-gtk samba samba-client samba-common |
Procedimientos:
Para comenzar a utilizar este tutorial se asume pudo implementar satisfactoriamente el tutorial: un openLDAP como servidor de autenticación y el tutorial : Cómo configurar SAMBA de Joel Barrios. Algunas pequeñas fracciones y configuración de este documento fueron extraidas de los manuales previamente mencionados para brindar una mejor comprensión e hilo del tutorial.
Éste manual es una versión actualizada de una previa para CentOS 4, difieren en algunos detalles obvios por la actualización de los paquetes. También haremos uso de paquetes de un repositorio que contenga el smbldap-tools en nuestro caso el DAG. (Mientras esperamos el AL Desktop)
1. OPENLDAP Y AUTENTICACIÓN
Vamos a copiar el archivo de esquema de samba al directorio de esquemas de openLDAP:
cp /usr/share/doc/samba-*/LDAP/samba.schema /etc/openldap/schema/ |
Luego de esto editaremos el archivo /etc/openldap/slapd.conf y agregar una linea más para que openLDAP soporte el esquema de samba. El archivo quedaría como lo siguiente:
# # See slapd.conf(5) for details on configuration options. |
Añadimos al final del archivo /etc/openldap/slapd.conf :
database bdb |
Tenemos que configurar los parametros globales como cliente(NSS), el mismo servidor localhost en /etc/ldap.conf :
host 127.0.0.1 |
Tambien tenemos que configurar el cliente LDAP en /etc/openldap/ldap.conf :
HOST 127.0.0.1 |
Iniciamos el servicio LDAP y configuramos que arranque por defecto:
service ldap start |
Configuramos la autenticación de Linux con authconfig-tui :
2. SAMBA e INTEGRACION LDAP
Ahora configuremos Samba en /etc/samba/smb.conf
# Samba PDC openLDAP para CentOS 5 |
Ahora necesitamos hacer saber a samba cual es el password del usuario Administrador de openLDAP para que pueda conectarse al directorio (Esto se hacía en CentOS 4, me parece ahora no es necesario) :
smbpasswd -w password
|
Nos aparecererá el siguiente mensaje y confirmará que samba ya pueda autenticarse en openLDAP:
Setting stored password for "cn=Administrador,dc=su-red-local,dc=com" in secrets.tdbTesteamos y reiniciamos samba:
testparm |
3. Smbldap-tools y repositorios extras.
Hasta este punto será necesario usar el openldap-tools, por alguna razón el que viene junto con samba no me funcionó así que opté por usar el del repositorio DAG.
NOTA: Despues de haber instalado el perl-LDAP del repositorio base (de mis pruebas del tutorial de CentOS 4), me dio conflicto con el perl-ldap de DAG, así que recomendaría desinstalarlo previamente.
En nuestro caso instalamos el RPM de http://dag.wieers.com/ :
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm |
Ahora ya podemos comprobar en /etc/yum.repos.d/rpmforge.repo :
[rpmforge] |
Yo dejo desabilitado el repositorio por defecto (enabled=0).
Ahora ya es posible instalar el smbldap-tools :
yum install smbldap-tools --enablerepo=rpmforge |
Con el siguiente resultado final de dependencias, pongo en negritas las del "repositorio extra":
Installed: smbldap-tools.noarch 0:0.9.1-1.2.el5.rf
Dependency Installed: perl-Compress-Zlib.i386 0:1.42-1.fc6 perl-Convert-ASN1.noarch 0:0.20-1.1 perl-Crypt-SmbHash.noarch 0:0.12-1.2.el5.rf perl-Digest-SHA1.i386 0:2.11-1.2.1 perl-HTML-Parser.i386 0:3.55-1.fc6 perl-HTML-Tagset.noarch 0:3.10-2.1.1 perl-IO-Socket-SSL.noarch 0:1.01-1.fc6 perl-Net-SSLeay.i386 0:1.30-4.fc6 perl-URI.noarch 0:1.35-3 perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1 perl-XML-SAX.noarch 0:0.14-5 perl-ldap.noarch 0:0.33-1.el5.rf perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!
Ahora averigüemos el SID de nuestro servidor Samba:
net getlocalsid |
Nos mostrará un mensaje similar al siguiente y debemos de anotarlo o copiarlo:
SID for domain LINUX is: S-1-5-21-XXXXXXXXXX-XXXXXXXXXX
Procedemos a configurar el acceso smbldap-tools a la BD de openLDAP en /etc/smbldap-tools/smbldap_bind.conf :
# password es el password sin cifrar del Administrador openLDAP |
Y la configuración principal en /etc/smbldap-tools/smbldap.conf :
# Aquí el SID que copiamos |
Ahora debemos crear la estructura de dominio en openldap con el comando y digitar el password de Administrator que es el administrador del dominio:
smbldap-populate -a Administrator |
Con un resultado similar al siguiente:
Populating LDAP directory for domain DOMAIN (S-1-5-21-XXXXXXXXXXX-XXXXXXXXXXx-XXXXXXXXXx) (using builtin directory structure) adding new entry: dc=su-red-local,dc=com adding new entry: ou=People,dc=su-red-local,dc=com adding new entry: ou=Group,dc=su-red-local,dc=com adding new entry: ou=Computers,dc=su-red-local,dc=com adding new entry: ou=Idmap,dc=su-red-local,dc=com adding new entry: uid=Administrator,ou=People,dc=su-red-local,dc=com adding new entry: uid=nobody,ou=People,dc=su-red-local,dc=com adding new entry: cn=Domain Admins,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Domain Users,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Domain Guests,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Domain Computers,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Administrators,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Account Operators,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Print Operators,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Backup Operators,ou=Group,dc=su-red-local,dc=com adding new entry: cn=Replicators,ou=Group,dc=su-red-local,dc=com adding new entry: sambaDomainName=DOMAIN,dc=su-red-local,dc=com Please provide a password for the domain Administrator: Changing password for Administrator New password : Retype new password :
En este caso no quiero que se llame root por defecto, por ello le cambié con el parámetro -a Administrator.
Ahora veremos la asociación de los builtin groups del dominio SAMBA con los grupos openLDAP creados:
net groupmap list |
Con un resultado similar al siguiente:
Domain Admins (S-1-5-21-XXXXXXXXXX-XXXXXXXX-512) -> Domain Admins
Domain Users (S-1-5-21-XXXXXXXXXX-XXXXXXXX-513) -> Domain Users
Domain Guests (S-1-5-21-XXXXXXXXXX-XXXXXXXX-514) -> Domain Guests
Domain Computers (S-1-5-21-XXXXXXXXXX-XXXXXXXX-515) -> Domain Computers
Administrators (S-1-5-32-544) -> Administrators
Account Operators (S-1-5-32-548) -> Account Operators
Print Operators (S-1-5-32-550) -> Print Operators
Backup Operators (S-1-5-32-551) -> Backup Operators
Replicators (S-1-5-32-552) -> Replicators
Ahora podemos crear una cuenta de usuario Windows ( -a), se le crear su carpeta personal ( -m), especificando que no tenga una ruta Profile (opción -F) y le asignamos un password:
smbldap-useradd -a -m -F "" usuariowin |
Mas detalle del comando smbldap-useradd en el siguiente anexo: Anexo 1: smbldap-useradd
Reiniciamos samba y openLdap:
service ldap restart
|
Uniendo máquinas al dominio del Controlador Primario de Dominio.
En este proceso no es necesario crear cuentas máquinas debido a que agregamos en el archivo /etc/samba/smb.conf el script correspondiente salvo posiblemente en plataformas antiguas.Windows 95/98/ME y Windows XP Home
Ya que los sistemas con Windows 95/98/ME y Windows XP Home no incluyen una implementación completa como miembros de dominio, no se requieren cuentas de confianza. El procedimiento para unirse al dominio es el siguiente:
• | Acceder hacia Menú de inicio ? Configuraciones ? Panel de control ? Red |
• | Seleccione la pestaña de Configuración |
• | Seleccione «Cliente de redes Microsoft» |
• | Haga clic en el botón de propiedades |
• | Seleccione Acceder a dominio de Windows NT y especifique el dominio correspondiente. |
• | Clic en todos los botones de «Aceptar» y reinicie el sistema |
• | Acceda con un usuario que haya sido creado con smbldap-useradd en el directorio LDAP o una cuenta de usuario que pertenezca a la OU=Domain Admins |
Windows NT
• | Acceder hacia Menú de inicio ? Configuraciones ? Panel de control ? Red. |
• | Seleccionar la pestaña de «Identificación». |
• | Clic en el botón de «Cambiar». |
• | Ingrese el nombre del dominio y el nombre del sistema. Seleccione «Crear una cuenta de máquina en el Dominio». |
• | Clic en «Aceptar» |
• | Espere algunos segundos. |
• | Deberá mostrarse un mensaje emergente de confirmación que dice «Bienvenido a MI-DOMINIO» |
• | Reinicie el sistema |
• | Acceda con un usuario que haya sido creado con smbldap-useradd en el directorio LDAP o una cuenta de usuario que pertenezca a la OU=Domain Admins |
Windows 2000/2003 y Windows XP Profesional
• | Clic derecho en el icono de «Mi PC». |
• | Seleccionar «Propiedades» |
• | Haga clic en la pestaña de «Identificación de red» o «Nombre del sistema». |
• | Clic en el botón de «Propiedades». |
• | Clic en el botón «Miembro de dominio» |
• | Ingrese el nombre del dominio y el nombre de la máquina y haga clic en el botón de «Aceptar» |
• | Aparecerá un diálogo que preguntará por una cuenta y clave de acceso con privilegios de administración en el servidor. Especifique el usuario : Administrator y la clave de acceso que se le asignó. |
• | Espere algunos segundos. |
• | Deberá mostrarse un mensaje emergente de confirmación que dice «Bienvenido a MI-DOMINIO» |
• | Reinicie el sistema |
• | Acceda con un usuario que haya sido creado con smbldap-useradd en el directorio LDAP o una cuenta de usuario que pertenezca a la OU=Domain Admins |
Comprobaciones:
Para culminar con este turorial procede a autenticarte en una máquina Windows con la cuenta usuario usuariowin creado en los pasos previos. Una vez dentro de tu cuenta presiona CTRL+ALT+DEL y cambia la contraseña.Si todo fue bien pudiste cambiar la contraseña LDAP y por lo tanto tambien la de acceso local (si posee shell: /bin/bash ) , abrimos una terminal cualquiera e intentemos autenticarnos con la cuenta usuariowin, deberíamos poder ingresar con la nueva contraseña.
Intenta ahora cambiar tu contraseña con smbldap-passwd como root.
Desarrollado desde Lima-Peru por :
Jaime M. Tan Nozawa.
Cuaquier consulta a mi correo
NOTAS
DE ULTIMA HORA:
(13/02/2008)
En al versión CentOS 5.1, en los paquetes del DAG hay un bug donde sale error al ponerle password a un usuario :
Use of uninitialized value in string at /usr/sbin/smbldap-passwd line 277, <STDIN> line 2.
Failed to modify UNIX password: shadowMax: value #0
invalid per syntax at /usr/sbin/smbldap-passwd line 285, <STDIN> line 2.
Mientras esperamos la corrección de los paquetes del DAG por ahora , la forma más fácil, es descomentar (sin # ) la línea de caducidad de passwords en smbldap.conf :
defaultMaxPasswordAge="45"
(18/06/2007)
He observado en los lugares que he instalado que demora mucha al arrancar el CentOS Linux. Se queda en servicio "bus del sistema" mucho tiempo, despues de buscar mucho en los foros de Internet, lo solucioné haciendo de esta forma:
En: /etc/ldap.conf
buscar la linea que diga:
bind_policy hard
y cambiar por:
bind_policy soft
La directiva bind_policy sirve para indicar que la conexión debe intentarla una vez y en caso de fracasar, no volver a intentarlo, algo necesario para que no tarde demasiado cada equipo cuando arranque y, antes de tener conexión a red, intentar acceder al servicio LDAP.
Anexo
1: smbldap-useradd
/usr/sbin/smbldap-useradd [-awmugdsckABCDEFGHMNPST?] username
-o add the user in the organizational
unit
(relative to the user suffix)
-a is a Windows User
(otherwise, Posix stuff only)
-w is a Windows Workstation
(otherwise, Posix stuff only)
-i is a trust account (Windows
Workstation)
-u uid
-g gid
-G supplementary
comma-separated groups
-n do not create a group
-d home
-s shell
-c gecos
-m creates home directory and
copies /etc/skel
-k skeleton dir (with -m)
-t time. Wait 'time' seconds
before exiting (when adding Windows Workstation)
-P ends by invoking
smbldap-passwd
-A can change password ? 0 if
no, 1 if yes
-B must change password ? 0 if
no, 1 if yes
-C sambaHomePath (SMB home
share, like 'PDC-SRVhomes')
-D sambaHomeDrive (letter
associated with home share, like 'H:')
-E sambaLogonScript (DOS
script to execute on login)
-F sambaProfilePath (profile
directory, like 'PDC-SRVprofilesfoo')
-H sambaAcctFlags (samba
account control bits like '[NDHTUMWSLKI]')
-N canonical name
-S surname
-M local mailAddress (comma
seperated)
-T mailToAddress (forward
address) (comma seperated)
-? show this help message