12
Como configurar un Dominio Samba con openLDAP en CentOS 5 Dominio Samba con OpenLDAP (Parte 1: Configuracion General) PARA CENTOS 5 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

C. Servidores Linux - Taller 5 Openldap Samba PDC

Embed Size (px)

Citation preview

Page 1: C. Servidores Linux - Taller 5 Openldap Samba PDC

Como configurar un Dominio Samba con openLDAP en CentOS 5

Dominio Samba con OpenLDAP (Parte 1: Configuracion General)PARA CENTOS 5

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

Page 2: C. Servidores Linux - Taller 5 Openldap Samba PDC

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 fichero /etc/openldap/slapd.conf y agregar una linea más para que openLDAP soporte el esquema de samba. El fichero quedaría como lo siguiente:

# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schemainclude /etc/openldap/schema/samba.schema

Añadimos al final del fichero /etc/openldap/slapd.conf :

database bdb suffix "dc=su-red-local,dc=com"rootdn "cn=Administrador,dc=su-red-local,dc=com"# Este password obtenido previamente al digitar slappasswdrootpw {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX directory /var/lib/ldap/autenticar # Indices to maintain for this database#index objectClass eq,pres#index ou,cn,mail,surname,givenname eq,pres,sub#index uidNumber,gidNumber,loginShell eq,pres#index uid,memberUid eq,pres,sub#index nisMapName,nisMapEntry eq,pres,subindex objectClass eqindex cn pres,sub,eqindex sn pres,sub,eqindex uid pres,sub,eqindex displayName pres,sub,eqindex uidNumber eqindex gidNumber eqindex memberUID eqindex sambaSID eq

Page 3: C. Servidores Linux - Taller 5 Openldap Samba PDC

index sambaPrimaryGroupSID eqindex sambaDomainName eqindex default sub

Tenemos que configurar los parametros globales como cliente(NSS), el mismo servidor localhost en /etc/ldap.conf :

host 127.0.0.1base dc=su-red-local,dc=com

Tambien tenemos que configurar el cliente LDAP en /etc/openldap/ldap.conf :HOST 127.0.0.1BASE dc=su-red-local,dc=com

Iniciamos el servicio LDAP y configuramos que arranque por defecto:

service ldap start chkconfig ldap on

Configuramos la autenticación de Linux con authconfig-tui :

Page 4: C. Servidores Linux - Taller 5 Openldap Samba PDC

2. SAMBA e INTEGRACION LDAP

Ahora configuremos Samba en /etc/samba/smb.conf # Samba PDC openLDAP para CentOS 5 # x Jaime M. Tan Nozawa # Nombre del dominio : podria ser nombre de la empresa. workgroup = DOMAIN server string = Samba Server netbios name = LINUX # ----- Parametros LDAP ----- # Quien va a ser el usuario administrador del dominio admin users = Administrator @"Domain Admins" passdb backend = ldapsam:ldap://localhost #?Sufijo ldap para todas las entradas siguientes ldap suffix = dc=su-red-local,dc=com # OU de usuarios netbios ldap user suffix = ou=People # OU de Grupos netbios ldap group suffix = ou=Group # Cuentas maquinas netbios ldap machine suffix = ou=Computers # La cuenta administrador openLDAP ldap admin dn = cn=Administrador,dc=su-red-local,dc=com # Sincronizacion de cuentas LDAP, NT y LM ldap passwd sync = yes # Agregado de cuentas maquina automáticamente

Page 5: C. Servidores Linux - Taller 5 Openldap Samba PDC

add machine script = /usr/sbin/smbldap-useradd -w %u # Aqui dejo comentado por si es necesario o a tu criterio usarlo #ldap ssl = start tls #add user script = /usr/sbin/smbldap-useradd -m "%u" #ldap delete dn = Yes #delete user script = /usr/sbin/smbldap-userdel "%u" #add group script = /usr/sbin/smbldap-groupadd -p "%g" #delete group script = /usr/sbin/smbldap-groupdel "%g" #add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" #delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" #set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" #ldap replication sleep = 1000 # Tiempo de replicacion entre servidores # ----- FIN DE PARAMETROS LDAP # Asegurarse de tener los siguiente parametros activado de la siguiete forma: security = user encrypt passwords = yes os level = 65 domain master = yes preferred master = yes domain logons = yes # ... demas opciones.

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.tdb

Testeamos y reiniciamos samba:testparmservice smb restart

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.rpmrpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Ahora ya podemos comprobar en /etc/yum.repos.d/rpmforge.repo :

Page 6: C. Servidores Linux - Taller 5 Openldap Samba PDC

[rpmforge]name = Red Hat Enterprise $releasever - RPMforge.net - dag#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dagmirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforgeenabled = 0protect = 0gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-daggpgcheck = 1

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.rfDependency 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.1Complete!

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 openLDAPslaveDN="cn=Administrador,dc=su-red-local,dc=com"slavePw="password"masterDN="cn=Administrador,dc=su-red-local,dc=com"masterPw="password"

Y la configuración principal en /etc/smbldap-tools/smbldap.conf :# Aquí el SID que copiamosSID="S-1-5-21-XXXXXXXXXXX-XXXXXXXXXX-XXXXXXX"# El nombre del DOMINIO SAMBA workgroup = DOMAINsambaDomain="DOMAIN"slaveLDAP="127.0.0.1"slavePort="389"masterLDAP="127.0.0.1"masterPort="389"# Para usar TLS con LDAP# (También usará el puerto 389)

Page 7: C. Servidores Linux - Taller 5 Openldap Samba PDC

# ldapTLS="1"# Pongo a optional porque no quiero que sea obligatorio la conexion# verify="optional"#cafile="/etc/smbldap-tools/ca.pem"#clientcert="/etc/smbldap-tools/smbldap-tools.pem"#clientkey="/etc/smbldap-tools/smbldap-tools.key"# Sufijo por defecto a todas las entradas posterioressuffix="dc=su-red-local,dc=com"# Usuarios del dominiousersdn="ou=People,${suffix}"# Cuentas Computadoras del dominiocomputersdn="ou=Computers,${suffix}"# Cuentas Grupogroupsdn="ou=Group,${suffix}"# Si somos un Samba Domain Member Serveridmapdn="ou=Idmap,${suffix}"# Importante: el nextUID para calcular el codigo siguiente usuario o gruposambaUnixIdPooldn="sambaDomainName=DOMAIN,${suffix}"scope="sub"hash_encrypt="SSHA"crypt_salt_format="%s"userLoginShell="/bin/bash"userHome="/home/%U"userHomeDirectoryMode="700"userGecos="System User"defaultUserGid="513"defaultComputerGid="515"skeletonDir="/etc/skel"# Lo comento para que no caduce la contraseña cada 45 días, amenos que quieras lo contrario# -- Agregado recientemente 13-2-2008 -- : Esta línea no debe comentarse por ahora en 5.1 por bug en RPMS del DAGdefaultMaxPasswordAge="45"## LINUX es el nombre NETBIOS DEL SERVER netbios name = LINUXuserSmbHome="\LINUX\%U"# PerfilesuserProfile="\LINUX\profiles\%U"# Letra de la unidad para su carpeta personaluserHomeDrive="Z:"# Comento porque no usar un bat de arranque para mi caso#userScript="logon.bat"# Para el atributo de dominio para el correo por defecto#mailDomain="su-red-local.com"with_smbpasswd="0"smbpasswd="/usr/bin/smbpasswd"with_slappasswd="0"slappasswd="/usr/sbin/slappasswd"

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=comadding new entry: ou=People,dc=su-red-local,dc=comadding new entry: ou=Group,dc=su-red-local,dc=comadding new entry: ou=Computers,dc=su-red-local,dc=com

Page 8: C. Servidores Linux - Taller 5 Openldap Samba PDC

adding new entry: ou=Idmap,dc=su-red-local,dc=comadding new entry: uid=Administrator,ou=People,dc=su-red-local,dc=comadding new entry: uid=nobody,ou=People,dc=su-red-local,dc=comadding new entry: cn=Domain Admins,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Domain Users,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Domain Guests,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Domain Computers,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Administrators,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Account Operators,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Print Operators,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Backup Operators,ou=Group,dc=su-red-local,dc=comadding new entry: cn=Replicators,ou=Group,dc=su-red-local,dc=comadding new entry: sambaDomainName=DOMAIN,dc=su-red-local,dc=comPlease provide a password for the domain Administrator:Changing password for AdministratorNew 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 AdminsDomain Users (S-1-5-21-XXXXXXXXXX-XXXXXXXX-513) -> Domain UsersDomain Guests (S-1-5-21-XXXXXXXXXX-XXXXXXXX-514) -> Domain GuestsDomain Computers (S-1-5-21-XXXXXXXXXX-XXXXXXXX-515) -> Domain ComputersAdministrators (S-1-5-32-544) -> AdministratorsAccount Operators (S-1-5-32-548) -> Account OperatorsPrint Operators (S-1-5-32-550) -> Print OperatorsBackup Operators (S-1-5-32-551) -> Backup OperatorsReplicators (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 smbldap-passwd usuariowin

Mas detalle del comando smbldap-useradd en el siguiente anexo: Anexo 1: smbldap-useradd Reiniciamos samba y openLdap:

service ldap restartservice smb restart

Page 9: C. Servidores Linux - Taller 5 Openldap Samba PDC

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 HomeYa 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»

Page 10: C. Servidores Linux - Taller 5 Openldap Samba PDC

• 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"

Page 11: C. Servidores Linux - Taller 5 Openldap Samba PDC

(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

Page 12: C. Servidores Linux - Taller 5 Openldap Samba PDC

-M local mailAddress (comma seperated) -T mailToAddress (forward address) (comma seperated) -? show this help message