samba como pdc-openldap





 SECCIÓN 1. 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                   suclave                     Contraseña para la cuenta del admin del ldap
Confirme la contraseña                 suclave

Cuando se terminen de instalar los paquetes tenemos que reconfigurar a slapd para que nos pida más 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                                          jccec                Es el nombre que yo le puse a mi
                                                                                                            dominio de prueba

Nombre de organización                                   jccec                   Aquí puede ir un nombre más
                                                                                                        amigable y descriptivo

Contraseña del admin                                     suclave                Otra vez volver a digitar la clave
                                                                                                      del usuario admin de LDAP

Confirme la contraseña del admin                 suclave                Otra vez confirmar la clave del
                                                                                                         usuario admin de LDAP

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                         sí                          Es para respaldar la base de datos
                                                                                                           actual de LDAP. (prevención)
Permitir LDAP v2                                                sí


Ahora, para probar que el servicio de slapd está arriba y funcionando utilizamos el comando:

# ldapsearch -x -b “dc=jccec”

NOTA: Si por ejemplo su dominio se llama sudominio.com entonces el comando debe ser:
# ldapsearch -x -b “dc=sudominio,dc=com”
Si por ejemplo su dominio se llama sudominio.co.cr entonces el comando debe ser:
# ldapsearch -x -b “dc=sudominio,dc=co,dc=cr”

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.

SECCIÓN 2. 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 mi caso lo usé con Iceweasel que es la versión de firefox que viene con Debian Etch).
NOTA: también existe otro administrador gráfico de LDAP llamado luma que viene entre los paquetes de Debian Etch, pero personalmente prefiero a phpldapadmin y he visto que es el más aceptado.

2.1 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                                       CU                              Digitar cualquier valor de 2 caracteres
Estado o provincia                                    PR                               Digitar cualquier valor (yo puse PR por
                                                                                                                                Pinar)
Localidad                                                  pri

Nombre de la organización                  jovenclub
Nombre de la unidad organizativa      jovenclub
                                             
Nombre del host                                  servidor.jccec               Mi servidor se llama (servidor) y mi
                                                                                                   dominio (jccec), tambien se puede
                                                                                                   poner (localhost) y funciona bien

Correo electrónico                               su correo                      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 dirección:

https://localhost
Si no nos devuelve ningún error entonces ya tenemos arriba a nuestro servidor web seguro.

2.2 Instalación de smbldap-tools y phpldapadmin

Seguidamente vamos a instalar un paquete llamado smbldap-tools que contiene varias herramientas para Sambay 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 lasiguiente dirección:

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

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:

La página que aloja los fuentes de mkntpwd es:


A continuación enumero los 7 archivos de mkntpwd con el fin de que usted corrobore si bajó los correctos:

getopt.c
getopt.h
Makefile
md4.c
mkntpwd.c
mkntpwd.h
smbdes.c

bien ahora
Necesitará tener instalados los paquetes: make, gcc and libc-dev,

entonces nos ubicamos en nel lugar donde se encuentra el paquete descargado (por consola)
y ejecutamos

tar -zxf mkntpwd.tar.gz (descompilamos el paquete)
cd mkntpwd (nos ubicamos en el directorio ya descompilado)
make para crear el archivo mkntpwd

debe sali algo como esto

gcc -O2 -DMPU8086 -c -o getopt.o getopt.c
gcc -O2 -DMPU8086 -c -o md4.o md4.c
md4.c: In function ‘mdfour’:
md4.c:144: warning: incompatible implicit declaration of built-in function ‘memcpy’
gcc -O2 -DMPU8086 -c -o mkntpwd.o mkntpwd.c
mkntpwd.c: In function ‘main’:
mkntpwd.c:37: warning: return type of ‘main’ is not ‘int’
gcc -O2 -DMPU8086 -c -o smbdes.o smbdes.c
gcc -O2 -DMPU8086 -o mkntpwd getopt.o md4.o mkntpwd.o smbdes.o


luego copiamos el archivo mkntpwd hacia /usr/local/bin

cp mkntpwd /usr/local/bin

Para probar si la utilidad mkntpwd quedó bien instalada simplemente ejecutamos el comando:

# mkntpwd

y por lo menos debe salir el mensaje de ayuda de mkntpwd. (algo asi)

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

Si se nos muestra que el comando es incorrecto significa que tenemos que revisar los pasos anteriores para ver cuál hicimos mal.

SECCIÓN 3. 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                            jccec                            Se usa el mismo que se usó para LDAP
Usar passwords encriptados                 sí                                  Puede que NO se le pregunte este dato

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

Por ahora vamos a dejar así a Samba. Más adelante en otra sección lo vamos a configurar como se debe.

SECCIÓN 4. 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 para ubicarnos en el directorio

gunzip samba.schema.gz

cp samba.schema /etc/ldap/schema

luego:

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)

access to 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

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
debe sresponder:

Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.

hasta aqui todo marcha bien.

SECCIÓN 5. 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 dirección siguiente:

https://localhost/phpldapadmin

Para conectarnos digitamos los siguientes datos:

Para conectarnos digitamos los siguientes datos:

Usuario cn=admin,dc=jccec    (aqui puse dc=jccec, porque mi dominio es jccec)
Contraseña                        la contraseña de admin que digitó cuando se configuró el LDAP

luego al entrar

Procederemos a declarar los contenedores principales. En mi caso particular yo declaré 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=jccec y le damos click a la opción “Create New Entry Here”

(para crear un hijo de dc=home), luego seleccionamos “Organisational Unit” (ou),
hacemos clic en proceed

nos aparece una ventana que dice
Create Object
Server: My LDAP Server using template: ou
New Organisational Unit

Container DN: dc=jccec
Organisational Unit: user

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).
y despues la opcion ( Create Object )

Una vez creada la ou=users, procedemos de la misma forma para crear a ou=machines y a ou=groups.
Más adelante crearemos las demás entidades que conformarán nuestro árbol. Por ahora dejémoslo así.

Vamos a configurar a SAMBA para que sea un controlador de dominio principal, para que soporte los scripts de inicio y perfiles móviles (roaming profiles) y para que autentique a los usuarios utilizando LDAP. Además vamos a permitir que el script smbldap-useradd (provisto por smbldap-tools) nos automatice la adición de cuentas de máquina al árbol LDAP cuando éstas se unan al dominio por primera vez.

Antes de tocar el archivo de configuración, primero creamos las carpetas /home/samba/netlogon (para alojar el(los) script(s) de inicio) o lo podemos hacer en /var/lib/samba)
y /home/samba/profiles (para alojar los perfiles móviles de los usuarios). Asignamos
todos los permisos (777) a dicha carpeta profiles, para que cualquiera ya sea de sambaadmins o sambausers
pueda grabar su perfil móvil en el servidor.

yo por mi parte los coloco en /var/lib/samba que es el directorio por defecto

El contenido final y completo del archivo /etc/samba/smb.conf con todo el soporte citado con anterioridad se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:

las lineas estan en mi fichero smb.conf

luego:

Una vez que ya tenemos listo a /etc/samba/smb.conf podemos ejecutar el comando testparm para asegurarnos que la configuración Samba no tenga ningún error:

# testparm

Antes de reiniciar el servicio Samba, le proveemos a Samba la contraseña de root(admin) para LDAP:
smbpasswd -w suclave
/etc/init.d/samba restart

Ahora podemos irnos al phpldapadmin y refrescar su información para corroborar que tenemos una entrada más que se llama:

sambaDomainName=JCCEC. (en mi caso, porque mi dominio es jccec)

Si damos click en la entrada sambaDomainName podremos observar sus propiedades en la ventana de la derecha. Aprovechemos este momento para copiar en algún lugar el valor sambaSID (por ejemplo, el mío es: (S-1-5-21-451058037-3092806587-1514217385) ya que lo ocuparemos más adelante.

SECCIÓN 7. Mapeos de grupos con Samba

Primero definiré brevemente algunos términos a usar en esta sección:

RID: abreviatura de Relative IDentifier. Es un identificador por medio del cual un grupo corriente se convierte en un grupo especial con ciertas características especiales en nuestro dominio.

GID: abreviatura de Group IDentifier. Es el identificador único de un grupo.
A partir de Samba-3 tenemos la disponibilidad de crear mapeos o asociaciones entre los grupos de Windows y los grupos de UNIX. Esto es algo necesario debido a que existen grupos especiales propios de los dominios Windows que tienen características y privilegios específicos (Domain Admins, Domain Controllers, Builtin Print Operators,etc.) y vamos a querer que existan en nuestro dominio Samba ya que nos van a ser muy útiles.

En esencia lo que se hace para mapear un grupo en Samba, es asignarle el RID específico a dicho grupo para queadquiera las características específicas y especiales del grupo Windows correspondiente.
La siguiente tabla muestra los grupos Windows y sus correspondientes RIDs, así como su tipo y si es esencial en el directorio LDAP o no: (los RIDs no son declarados por mí, son valores ya establecidos)

Nombre del Grupo Windows                        RID              Tipo               Esencial
Domain Administrator                                 500            Usuario               No
Domain Guest                                              501            Usuario              No
Domain KRBTGT                                          502            Usuario               No
Domain Admins                                           512            Grupo                 Yes
Domain Users                                              513            Grupo                 Yes
Domain Guests                                            514            Grupo                 Yes
Domain Computers                                     515            Grupo                  No
Domain Controllers                                     516            Grupo                  No
Domain Certificate Admins                        517            Grupo                   No
Domain Schema Admins                            518            Grupo                   No
Domain Enterprise Admins                        519             Grupo                   No
Domain Policy Admins                               520             Grupo                  No
Builtin Admins                                             544             Alias                   No
Builtin users                                                545             Alias                    No
Builtin Guests                                             546              Alias                    No
Builtin Power Users                                    547              Alias                    No
Builtin Account Operators                          548              Alias                     No
Builtin System Operators                           549              Alias                   No
Builtin Print Operators                               550               Alias                   No
Builtin Backup Operators                           551               Alias                   No
Builtin Replicator                                        552              Alias                    No
Builtin RAS Servers                                     553              Alias                     No

Como pudimos ver, son muchos los grupos Windows que se pueden mapear en Samba. Sin embargo, para mi necesidad específica únicamente mapearé a los siguientes 4 grupos:

Nombre Windows                 Nombre UNIX                                      Notas adicionales

Domain Admins                   sambaadmins                 Este grupo de usuarios tendrán privilegios de
                                                                                    administrador localmente en sus computadoras.
                                                                                   Es decir, podrán instalar programas si corren
                                                                                        alguna aplicación que necesite modificar
                                                                                         algo en las carpetas de sistema no
                                                                                         tendrán problema, etc.

Domain Users                        sambausers            Usuarios limitados localmente en sus computadoras.

Domain Guests                      sambaguests                 Quiero tener este grupo pero no pienso usarlo
                                                                                     por el momento

Domain Computers             sambamachines              Aquí se alojarán las cuentas de máquinas
                                                                                      del dominio


Para agregar nuestros grupos mapeados Samba, nos vamos al phpldapadmin y dentro de nuestra ou=groups
hacemos clic en ella y escogemos la opcion (Samba3 Group Mapping)

(nuestra “Organizational Unit” llamada groups) vamos a crear nuestros 4 “Samba 3 Group Mappings”.

Container DN: ou=groups,dc=jccec
Group: sambaadmins
Windows Name: Domain Admins

NOTA: por gusto personal los GIDs de mis grupos los comencé a partir de 20000.

GID Number: 20000
Samba SID: S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 512
Samba Group Type: Domain Admins

despues agregamos los user que van a estar en cada grupo
y luego crear objeto

y asi sucesivamente creamos los grupos sambausers, sambaguests (recuerden que el rid, va cambiando)

SECCIÓN 8. Configuración de la autenticación UNIX

Ahora vamos a configurar a nuestro sistema para que vea a los usuarios LDAP como usuarios “normales” de UNIX.

8.1 Instalación de libnss-ldap

Primero vamos a instalar el paquete libnss-ldap:
# apt-get install libnss-ldap

Mientras se instala el paquete libnss-ldap se le pedirá alguna información. Sin embargo, al finalizar la instalación de este paquete, tendremos que reconfigurarlo para que nos pida más información. 
Recordemos que para reconfigurarlo debemos ejecutar el siguiente comando:
# dpkg-reconfigure libnss-ldap
La siguiente tabla muestra la información que se nos puede pedir (ya sea en la instalación o en la
reconfiguración) y lo que debemos digitar:

Dato solicitado                                                                 Dato a introducir              Notas adicionales

Servidor de LDAP                                                                  127.0.0.1
Nombre distintivo (DN)                                                        dc=jccec
Versión de LDAP                                                                          3
Se requiere usuario para la base de datos LDAP                       no
Privilegios especiales de LDAP para root                                   sí
Configuración leíble y escribible sólo para el propietario           sí
Cuenta LDAP para root                                                            cn=admin,dc=jccec
Contraseña para la cuenta LDAP de root                                suclave                             La misma del
                                                                                                                                         admin de LDAP

Ahora vamos a editar el archivo de configuración /etc/nsswitch.conf.
Buscamos las siguientes 3 líneas:

passwd: compat
group: compat
shadow: compat

y las reemplazamos para que queden así:

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

el fichero quedaria asi:
----------------------------------------------------------------------
El contenido final y completo de este archivo se muestra a continuación:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

-----------------------------------------------------------------------

En este momento podemos usar la utilidad getent para confirmar que se muestren los grupos mapeados que
creamos con anterioridad:
# getent group

y el resultado puede contener lo siguiente:(al final )
...
sambaadmins:*:20000:
sambausers:*:20001:
sambaguests:*:20002:
sambamachines:x:20003:

----

8.2 Instalación de libpam-ldap

Seguidamente vamos a instalar el paquete libpam-ldap:
# apt-get install libpam-ldap

Mientras se instala el paquete libpam-ldap se le pedirá alguna información. Sin embargo, al finalizar la instalación de este paquete, tendremos que reconfigurarlo para que nos pida más información. Recordemos que para reconfigurarlo debemos ejecutar el siguiente comando:
# dpkg-reconfigure libpam-ldap

La siguiente tabla muestra la información que se nos puede pedir (ya sea en la instalación o en la
reconfiguración) y lo que debemos digitar:

Dato solicitado                                                     Dato a introducir                    Notas adicionales

Servidor de LDAP                                                     127.0.0.1
Nombre distintivo (DN)                                            dc=home
Versión de LDAP                                                          3
Make local root Database admin                                sí                             La pregunta venía en Inglés
Se requiere usuario para la base de datos LDAP       no
LDAP account for root                                           cn=admin,dc=home      La pregunta venía en Inglés
Contraseña para la cuenta LDAP de root               suclave                        La misma del admin de LDAP
Local crypt to use when changing passwords        md5


Como se pudo observar, algunos datos solicitados fueron los mismos que pidió el paquete libnss-ldap.
Ahora vamos a editar los archivos de correspondientes para configurar PAM para LDAP:
Primero vamos con el archivo /etc/pam.d/common-account. Buscamos la siguiente línea:

account required pam_unix.so

la comentamos y agregamos estas dos líneas:

account sufficient pam_ldap.so
account required pam_unix.so try_first_pass

--------------------------------------------------------------------
Así, el contenido final y completo del archivo /etc/pam.d/common-account se muestra a continuación:
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
#account required pam_unix.so
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass
----------------------------------------------------------------------------------

En el archivo /etc/pam.d/common-auth buscamos la siguiente línea:

auth required pam_unix.so nullok_secure

la comentamos y agregamos estas dos líneas:

auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

-----------------------------------------------

En el archivo /etc/pam.d/common-password buscamos la siguiente línea:

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

la comentamos y agregamos estas dos líneas:

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

------------------------------------------------

Ahora, debido a que nuestro servidor LDAP va a ser consultado de una manera muy constante, es una buena práctica configurar un servicio de caché para algunos datos de usuario. Mientras los datos que residan en la caché sean lo suficientemente recientes, se utilizarán estos en vez de preguntar al servidor LDAP otra vez.
El servicio de cacheo de nombres (nscd) o “name service caching daemon” cumple exactamente esta tarea.

Instalamos el paquete nscd con el siguiente comando:

# apt-get install nscd

Este sería un muy buen momento para reiniciar el servicio Samba:
# /etc/init.d/samba restart

SECCIÓN 9. Agregando usuarios a nuestro directorio LDAP

ir nuevamente a https://localhost/phpldapadmin/

Aquí, vamos a agregar algunos usuarios (“Samba 3 Accounts”). Lo primero que vamos a hacer es agregar a LDAP el usuario que va a ser el administrador (como el root) del dominio y será el único con permisos para unir las máquinas al dominio. Para darle esa característica de administrador/root del dominio su identificador deberá ser 0 (uid=0). El nombre de usuario que escogí fue admin para que fuera el mismo nombre de la cuenta root de LDAP. De paso voy a hacerlo miembro del grupo sambaadmins (“Domain Admins”). Recordar que debemos agregar a los usuarios en la ou=users de nuestro directorio LDAP.

Create Object
Server: My LDAP Server using template: sambaSamAccount
New Samba3 Account


Container DN:         sambaDomainName=JCCEC,dc=jccec
First name:            Admin
Last name:             Admin
Common Name:    admin
User ID:                 admin
UID Number:         0
Samba SID:            S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 0
password:              (la repites y el te la pone en las 2 ultimas)
Login shell:            (vacio)
GID Number:         sambaadmins


lo otro es automatico

Por último vamos a agregar otro usuario de prueba (spiderman) que sea miembro de sambausers (limitado localmente). Observe que ahora sí es posible escoger la opción /bin/false en el atributo loginShell.
Una vez que hemos creado los usuarios, no olvidar crear las correspondientes carpetas home de cada uno en la ruta /home/users/ además de asignarle los permisos correspondientes del usuario y grupo al que pertenece. Si desea, puede copiar en cada una de esas carpetas los archivos ocultos ubicados en /etc/skel para que todos los usuarios tengan las mismas configuraciones iniciales para cosas como PATH, procesos de teclado y variables de entorno (esto lo hago simplemente por orden a pesar de que yo escogí que ningún usuario “corriente” va a poder loggearse físicamente al servidor). Por ejemplo, para crear la carpeta para el usuario admin y asignarle los permisos de su usuario y el grupo al que pertenece ejecutamos:

# mkdir /home/users/admin
# cp /etc/skel/.* /home/users/admin/
# chown -R admin /home/users/admin
# chgrp -R sambaadmins /home/users/admin

En este momento, podemos usar el comando getent para verificar que el nss esté trabajando correctamente en
Linux:
# getent passwd

y el resultado puede contener lo siguiente:
...
admin:*:0:20000:admin:/home/users/admin:
spiderman:*:10001:20001:spiderman:/home/users/spiderman:/bin/false
...

Como se puede ver, admin pertenece al grupo sambaadmins (“Domain Admins”) cuyo GID es el
20000, mientras que el usuario spiderman pertenece al grupo sambausers (“Domain Users”) cuyo GID es el
20001.

SECCIÓN 10. Uniendo máquinas a nuestro dominio Samba

Para que una máquina pueda unirse a un dominio se le solicitará el usuario y contraseña del usuario con uid=0
(en nuestro caso: admin), además es necesario crear la “cuenta de máquina” correspondiente en el directorio LDAP; si no se crea la cuenta de máquina, entonces el dominio rechaza la conexión. Ahora bien, para crear las cuentas de máquina existen dos formas de hacerlo: la forma manual y la automática.

NOTA: nuestro archivo de configuración Samba está hecho para que las cuentas de máquina sean agregadas de manera automática.

aqui les va



10.1 Configuracion del samba




Configuración de SAMBA

Vamos a configurar a SAMBA para que sea un controlador de dominio principal, para que soporte los scripts de inicio y perfiles móviles (roaming profiles) y para que autentique a los usuarios utilizando LDAP. Además vamos a permitir que el script smbldap-useradd (provisto por smbldap-tools) nos automatice la adición de cuentas de máquina al árbol LDAP cuando éstas se unan al dominio por primera vez.

Antes de tocar el archivo de configuración, primero creamos las carpetas /var/lib/samba/netlogon


mkdir /var/lib/samba/netlogon

(para alojar el(los) script(s) de inicio) y /var/lib/samba/profiles

mkdir /var/lib/samba/profiles

(para alojar los perfiles móviles de los usuarios).Asignamos todos los permisos (777) a dicha carpeta profiles, para que cualquiera ya sea de sambaadmins o sambausers pueda grabar su perfil móvil en el servidor.

El contenido final y completo del archivo /etc/samba/smb.conf con todo el soporte citado con anterioridad se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:

#-------------inicio del fichero-------------#
[global]
### Configuracion basica del servidor ###

workgroup = jccec
netbios name = servidor
server string = Samba PDC Version %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192

### Configuracion para que la maquina sea el PDC master ###
os level = 65
preferred master = yes
local master = yes
domain master = yes
domain logons = yes

### Configuracion de seguridad y conexion ###
security = user
guest ok = no
encrypt passwords = yes
null passwords = no
hosts allow = 127.0.0.1 192.168.0.0/255.255.255.0
wins support = yes
name resolve order = wins lmhosts host bcast
dns proxy = no
time server = yes

### Otras configuraciones varias para SAMBA ###
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hide unreadable = yes
hide dot files = yes
panic action = /usr/share/samba/panic-action %d
unix charset = ISO8859-1

### Parametros para el soporte de LDAP ###
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=home
ldap machine suffix = ou=machines
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=home
ldap delete dn = no
enable privileges = yes
; Para permitir a los usuarios cambiar su clave desde Windows
ldap password sync = yes

### Perfiles moviles de usuario, carpeta home y script de inicio ###
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = %U.bat OR netlogon.bat

### Script para automatizar la adicion de cuentas de maquinas ###
### al arbol LDAP cuando estas se unan por primera vez al dominio ###
add machine script = /usr/sbin/smbldap-useradd -w "%u"
### Impresion ###
load printers = yes
printcap name = /etc/printcap
printing = cups
printcap name = cups
; Si quiero que el grupo sambaadmins pueda administrar las impresoras
; printer admin = @sambaadmins

### Recursos SAMBA ###
# Ruta en donde se alojaran el(los) script(s) de inicio

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = no
writable = no
browseable = no
share modes = no

# Carpeta en donde se guardan los perfiles moviles de los usuarios

[profiles]
comment = Perfiles de Usuarios
path = /var/lib/samba/profiles
writeable = yes
browseable = no
guest ok = no
create mask = 0600
directory mask = 0700
csc policy = disable

# Impresoras
[printers]
comment = Impresoras
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

# Los clientes Windows buscan este recurso como fuente de drivers

[print$]
comment = Drivers de Impresoras
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

# carpetas home de los usuarios

[homes]
path = /home/users/%U
comment = Carpetas HOME
browseable = no
writeable = yes
valid users = %S
read only = no
guest ok = no
inherit permissions = yes
# Este es un recurso que solo debe ser accesible

# para un grupo POSIX especial llamado sysfox
[sysfox]
comment = Directorio de Sistemas en Fox
path = /home/posix/sysfox
writeable = yes
delete readonly = yes
valid users = @sysfox
write list = @sysfox
force group = sysfox
browseable = yes
create mask = 0770
directory mask = 0770

# Este recurso es por si quiero compartir la unidad de CD
;[cdrom]
; comment = Samba server CD
; writable = no
; locking = no
; path = /media/cdrom0
; public = yes
; Lo siguiente es para auto-montar el CD cada vez que es accesado y desmontarlo
; cuando se termina la conexión al servidor.
; Para que esto trabaje, el archivo /etc/fstab debe contener una
; entrada así: /dev/hdc0 /media/cdrom iso9660 defaults,noauto,ro,user 00
;
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom

#-------------final del fichero----------#


Una vez que ya tenemos listo a /etc/samba/smb.conf podemos ejecutar el comando testparm para asegurarnos
que la configuración Samba no tenga ningún error:

# testparm
Antes de reiniciar el servicio Samba, le proveemos a Samba la contraseña de root(admin) para LDAP:
# smbpasswd -w suclave
# /etc/init.d/samba restart

Ahora bien para crear las cuentas de maquinas existen 2 formas, la manual y la automatica

10.2 Método manual para agregar cuentas de máquina a LDAP

Usando el phpldapadmin creamos una entrada tipo “Samba 3 Machine” bajo ou=machines y perteneciente al grupo sambamachines. A continuación muestro una imagen con el proceso:

NOTA: por gusto personal los UIDs de las máquinas los comencé a partir de 30000.

Create Object
Server: My LDAP Server using template: sambaMachine
New Samba3 Machine

Container DN: ou=machines,dc=jccec
Machine Name: instructores$
UID Number: 30000
Samba SID : S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 30000
GID Number: sambamachines

Recuerde que tendrá que hacer esto para cada máquina que se quiera unir al dominio.





No hay comentarios:

Publicar un comentario