You are on page 1of 77

2010

Universidad de El Salvador, Facultad


Multidisciplinaria de Occdente

Alumnos:
Héctor Oswaldo Marroquín Argueta
Ricardo Enrique Martínez Monterrosa
Yassir Miguel Alfredo Tejada Gutierrez

Catedrático:
Juan Carlos Peña

[ MANUAL DE SISTEMA DE
CONTROL DE DOMINIO ]
Implementación de un sistema de control de dominio, con autenticacíon LDAP
Contenido
Introducción ........................................................................................................................................ 1
Datos Generales de Configuración ...................................................................................................... 1
Requerimientos de Software .............................................................................................................. 2
Instalación y configuración de servidor DNS....................................................................................... 3
Instalación y configuración del servidor LDAP .................................................................................... 5
Configuración inicial del servicio slapd ........................................................................................... 7
Agregando los esquemas (schemas) necesarios ............................................................................. 8
Configurando las Listas de Control de Acceso (ACLs) ................................................................... 10
Configurando los índices de atributos más usados ....................................................................... 11
Revisión de permisos en archivos y directorios de Configuración ................................................ 11
Ejecutando una revisión sintáctica del archivo de configuración slapd.conf ............................... 12
Iniciando el servidor slapd y haciendo pruebas preliminares ....................................................... 13
Configuración del Cliente LDAP..................................................................................................... 14
Configuración de Samba y las herramientas smbldap-tools ............................................................. 15
Instalación y configuración del servidor Samba............................................................................ 15
Instalando el servidor y cliente Samba ......................................................................................... 15
Configuraciones de Samba para Controlador de Dominio............................................................ 16
Parámetros Globales del servidor Samba ..................................................................................... 16
El recurso compartido especial [homes] ....................................................................................... 19
El recurso compartido especial [netlogon] ................................................................................... 19
El recurso compartido especial [profiles]...................................................................................... 20
Especificando la contraseña del ldap admin dn ............................................................................ 22
Instalación y Configuración de las smbldap-tools ......................................................................... 23
Llenando el Directorio LDAP con smbldap-populate .................................................................... 27
Configuración de la resolución de Identidades con NSS_LDAP ........................................................ 29
Configuración de la Autenticación con PAM_LDAP .......................................................................... 33
Introducción a los Módulos de Autenticación PAM ...................................................................... 33
Respaldando la configuración de PAM ......................................................................................... 34
Configurando los módulos de autenticación de PAM ................................................................... 34
Instalando el modulo Cracklib de PAM ..................................................................................... 35
Configurando Archivo de configuración libpam-ldap.conf ........................................................... 35
Migración de usuarios y grupos Unix/Posix al directorio LDAP ........................................................ 36
Migración de Usuarios (/etc/passwd y /etc/shadow) ................................................................... 36
Migración de Grupos (/etc/group) ................................................................................................ 38
Integrando Clientes Windows al Dominio Samba ............................................................................. 39
Requerimientos del Sistema ......................................................................................................... 39
Configuración de los parámetros de red en el equipo Windows.................................................. 39
Información necesaria para configurar los parámetros de red ................................................ 39
Configurando correctamente los parámetros de red ............................................................... 40
Verificación de los Parámetros de Red ..................................................................................... 43
Configuración del nombre de equipo Windows ........................................................................... 43
Uniendo el equipo Windows al Dominio Samba........................................................................... 45
Como Iniciar Sesión el Dominio Samba ......................................................................................... 54
Integración de clientes Linux al dominio........................................................................................... 56
Autenticación De Usuarios Y Grupos De Dominio Samba En Clientes Linux ................................ 57
Configurando un Controlador de Dominio de Respaldo (BDC) ......................................................... 60
Servidor de archivos OpenFiler ......................................................................................................... 62
Instalación del servidor OpenFiler ................................................................................................ 62
Configuración de servidor de archivos OpenFiler ......................................................................... 63
Integrando servidor de archivos OpenFiler con los controladores de dominio................................ 71
Introducción

El presente proyecto muestra las configuraciones necesarias para montar un control de


dominio con tolerancia a fallos, es decir, un servidor de control de dominio con un servidor
secundario que respalde su funcionamiento.

Éste, permitirá el logueo de clientes desde sistemas Windows y Linux al mismo, usando la
autenticación de usuarios propia de dichos sistemas, con la variante que los usuarios no
estarán en las computadoras que posean los mismos, sino que se encontrarán dentro una base
de datos montada en un servidor LDAP, contra el cual deberán autenticarse.

Además, los clientes que dispongan de los servicios del dominio, tendrán sus archivos y
configuraciones en un servidor de red de área de almacenamiento (Servidor SAN por sus
siglas en inglés), de manera que dichos archivos y configuraciones estarán disponibles para
ellos en cualquier computadora que se encuentre “pegada” al dominio y siempre y cuando se
logueen con su usuario.

La idea de esto, es crear una red donde los recursos de cada usuario estén disponibles solo
para él en cualquier parte donde haya una computadora que pueda unirse al dominio creado
para el proyecto, con lo que se logra una mayor disponibilidad de la información para los
usuarios en cualquier parte del área física de acción de la red, a la vez que se mantiene
centralizada la información de los mismos.

Datos Generales de Configuración

Un poco de información general que usaremos en muchas de las configuraciones de este


tutorial:

 Se configurará el Nombre de Dominio Samba/NT: CEVIRTUAL


 Nombre NetBIOS del servidor Samba: cevirtual
 La Dirección IP del servidor de control de dominio principal de cevirtual es:
192.168.0.2
 El servidor samba, dns y el servidor ldap están en la misma máquina, la 192.168.0.2
 La Dirección IP del servidor de control de dominio de cevirtual es: 192.168.0.2
 La Dirección IP del servidor de control de dominio de respaldo de cevirtual puede ser
cualquiera en el rango 192.168.0.0/24 mientras no se repita con ningún otro servidor
o cliente.
 La Dirección IP del servidor OpenFiler es: 192.168.0.4
 Los clientes del control de dominio para éstas configuraciones están dentro del rango
192.168.0.0/24, pero no significa que solo en dicho rango se puedan colocar, ya que
puede trabajar con otras redes (esto se detallará mas adelante)

1
Requerimientos de Software

La implementación de lo que se describe en este documento será en base a la distribución de


Linux Debian Squeeze, además, usaremos el siguiente software con su respectiva versión:

OpenLDAP – Slapd 2.4.21-1


OpenLDAP es una implementación libre de los protocolos LDAP.

Samba 2:3.4.8
Samba es la implementación libre de los protocolos SMB/CIFS el cual funcionará como
servidor Controlador de Dominio usando como base de información un directorio LDAP,
además servirá como servidor de impresoras y archivos.

smbldap-tools 0.9.5-1
Herramientas para administrar cuentas Unix/Posix y Samba almacenadas en un servidor
OpenLDAP

libnss-ldap 1.3.04-4
NSS son las bibliotecas de resolución de entidades, servirán para resolver nombres de
usuarios a UID y viceversa, así como nombres de grupos a GID y viceversa usando como
fuente de información el directorio LDAP.

libpam-ldap 1.1.1-3
PAM son los módulos de autenticación/autorización para otorgar permisos de acceso a
diferentes servicios locales usando como fuente de información el servidor LDAP.

klamav 0.46-3
Antivirus para sistemas UNIX utilizado para la protección de los archivos del dominio.

libpam-cracklib 1.1.1-3
Librería que incluye un modelo para comprobar la seguridad de los passwords usados en el
dominio por los usuarios para que no sean demasiado débiles.

ssh 1:5.5

Asistente de conexión remota utilizado para realizar las pruebas en el dominio,


principalmente para las conexiones

Openfiler NSA 2.6.26.8-1

Servidor de archivos basado en CentOS que utiliza la tecnología SAN (Storage Area Network)

bind9 1:9.7.0.dfsg.P1-1

Servidor DNS usado para resolver el dominio a la red utilizada en el proyecto

2
Instalación y configuración de servidor DNS

Como primer paso y para iniciar con la implementación del proyecto, configuraremos un
servidor DNS que permita el acceso a un dominio que será el que controlaremos para
proveer los servicios desados a los clientes. Utilizaremos el servidor “Bind”, el cual es un
servidor DNS para sistemas Linux.

Para instalarlo, escribiremos como root el siguiente comando (las líneas de comandos que
empiecen con “#” deben ser ejecutadas autenticados como usuarios “root” del sistema):

#apt-get install bind9

Luego de ello, configuraremos los archivos de zona necesarios para definir las
configuraciones del dominio que deseamos que nuestro servidor DNS resuelva. Crearemos
una carpeta en /var bajo el nombre de “bind” donde guardaremos los archivos de zona para
nuestro dominio. Para crear nuestra carpeta escribimos en consola el siguiente comando:

#mkdir -vp --mode 0700 /var/bind

Luego, en dicha carpeta crearemos los archivos de zona con la siguiente información:

Archivo db.cevirtual

$TTL 604800
@ IN SOA cevirtual. admin.cevirtual. (
1 ; Serial
1200 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.cevirtual.
@ IN A 192.168.0.2
ns IN A 192.168.0.2

Archivo db.0.168.192

$TTL 604800
@ IN SOA cevirtual. admin.cevirtual. (
1 ; Serial
1200 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.cevirtual.
2 IN PTR ns.cevirtual.

3
Ahora, configuraremos el servidor bind para que agregue estas zonas y provea el servicio
dns para nuestro dominio “cevirtual”

Agregamos las siguientes líneas al archivo “/etc/bind/named.conf.local”

zone "cevirtual" {
type master;
file "/var/bind/db.cevirtual";
};

zone "0.168.192.in-addr.arpa" {
type master;
file "/var/bind/db.0.168.192";
};

Con esto, solo reiniciamos nuestro servidor bind con el comando:

#/etc/init.d/bind9 restart

Y ya nuestro servidor bind debería proveer el servicio de dns para dicho dominio.

Para agregar a nuestro servidor DNS a las máquinas que usaran nuestro dominio, solo debe
agregarse la siguiente línea al archivo /etc/resolv.conf:

nameserver 192.168.0.2

No se entrará en detalles de funcionamiento del servidor DNS. Si desea mas información,


visite la página oficial de bind9 donde encontrará en detalle manuales sobre le
funcionamiento y las configuraciones del mismo: http://www.bind9.net/manuals

4
Instalación y configuración del servidor LDAP

Para empezar, instalaremos y configuraremos el servidor LDAP junto con las herramientas
de administración y cliente. Para ello ejecutaremos el siguiente comando:

# apt-get install slapd ldap-utils

Cuando se instala el paquete slapd al final nos lanzará un asistente de configuración del
servicio slapd, nos pedirá que ingresemos la contraseña para el usuario administrador de
LDAP.

Aunque después vamos a reconfigurar el servidor slapd, ingresaremos una contraseña para
el usuario administrador del servidor LDAP:

Administrator passwd: admin

Confirm passwd: admin

El asistente post instalación automáticamente nos configurará un directorio usando el Base


DN en base al nombre de dominio que tenga configurado nuestro servidor.

Se recomienda reconfigurar el paquete slapd para una configuración más personalizada,


para reconfigurar el paquete slapd usamos el comando:

# dpkg-reconfigure slapd

Al reconfigurar el paquete slapd se lanzará el mismo asistente que vimos atrás, pero en este
caso será reconfigurado desde cero.

La primer pantalla nos pregunta si queremos omitir la configuración inicial del servidor
slapd, contestaremos: NO

Después, nos pregunta el nombre de dominio con el que queremos configurar nuestro árbol
de directorio, este nombre de dominio será configurado con la base de nuestro directorio
(Base DN).

Si ingresamos el nombre de dominio cevirtual entonces en formato Domain Component


(DC por sus siglas en Inglés) nos pondrá nuestra base así: dc=cevirtual.

A continuación nos pregunta el nombre de la organización para la que configuraremos el


directorio LDAP. Ingresaremos: ues (o la organización que ustedes deseen).

Después de configurar el nombre de dominio y la organización nos pide ingresar una


contraseña para el usuario Administrador del directorio LDAP, en este caso el

5
Distinguished Name (DN por sus siglas en Inglés) de la cuenta será:
cn=admin,dc=cevirtual, usaremos la contraseña: admin

Ahora confirmaremos la contraseña para el Administrador del servidor LDAP, usaremos la


misma que se ingreso arriba: admin

En este paso seleccionaremos el tipo de base de datos (data store) en el que almacenaremos
la información de nuestro directorio, utilizaremos el tipo HDB por ser un tipo de base mas
nuevo y que proporciona mejores prestaciones que BDB.

En el siguiente paso nos pregunta si deseamos eliminar la base de datos del directorio
cuando purguemos el paquete slapd, contestaremos: No

Importante

No seleccione la opción Yes ya que si por error desinstalamos el paquete slapd no


perderemos la base de datos del directorio /var/lib/ldap y podremos recuperar
nuestra instalación usando dichos archivos.

Si por alguna razón ya existía una base de datos de una instalación anterior el asistente nos
pregunta si deseamos mover la base de datos vieja a un directorio de respaldo
(/var/backups/), elegimos la opción Yes.

Y por ultimo nos pregunta si deseamos permitir conexiones al servidor LDAP usando la
versión obsoleta del protocolo LDAP 2, por defecto esta desactivado, se recomienda no
activarlo ya que las todas aplicaciones que usaremos usan la versión 3 del protocolo LDAP,
así que contestaremos: No

Con esto terminamos la configuración del asistente.

6
Configuración inicial del servicio slapd

Cuando instalamos el paquete slapd se creó un grupo y un usuario de nombre openldap,


con los privilegios de este usuario y grupo será con los que se ejecutará el demonio slapd,
así mismo, los archivos y directorios que utilicemos en nuestra instalación deberán de
pertenecer a este usuario y grupo.

Verificaremos que se creó un grupo de nombre openldap:

# grep ldap /etc/group


openldap:x:108:

Como vemos, nos creo el grupo openldap y tiene el GID: 108

Ahora confirmaremos que el usuario openldap fue creado:

# grep ldap /etc/passwd


openldap:x:105:108:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false

Como vemos nos creo el usaurio openldap, con el ID de Usuario (UID): 105, su grupo
primario es el grupo de ID 108 (openldap), su directorio $HOME es /var/lib/ldap, y esta
cuenta no tiene un shell válido: /bin/false.

También verificaremos que los permisos del directorio /var/lib/ldap sean los correctos y
nos aseguraremos que el usuario openldap tenga permiso de lectura, escritura y acceso al
directorio:

# ls -ld /var/lib/ldap
drwx------ 2 openldap openldap 4096 2010-06-24 16:20 /var/lib/ldap

Verificaremos que el demonio slapd sea ejecutado con el usaurio y grupo openldap, esto
está definido en el archivo /etc/default/slapd, y por defecto está así:

# nano /etc/default/slapd

Este es el contenido del archivo (sin los comentarios):

SLAPD_USER="openldap"

SLAPD_GROUP="openldap"

SLAPD_PIDFILE=

Antes de modificar el archivo principal de configuración del demonio slapd, detendremos


el servicio:

# /etc/init.d/slapd stop
Stopping OpenLDAP: slapd.

7
Agregando los esquemas (schemas) necesarios

Los esquemas de LDAP (schemas) definen el tipo de objetos (objectClass) que podemos
manejar en nuestro árbol de directorio, además definen el tipo de atributos que podemos
usar así como las reglas de sintaxis para cada uno de estos atributos.

Los esquemas que vienen por defecto en la configuración de slapd son los necesarios para
poder almacenar información de cuentas Unix/POSIX, almacenar información para crear
por ejemplo un tipo de Directorio Amarillo, o una agenda de contactos. Estos esquemas
predeterminados no nos permiten almacenar atributos para cuentas de usuario y dominios
Samba/Windows, sin embargo, OpenLDAP permite la carga de esquemas externos para
almacenar diferente tipo de información, el esquema LDAP Samba permite almacenar la
siguiente información:

 El Nombre de Dominio Samba: sambaDomainName


 El SID del Dominio Samba: SambaSID
 Ruta al directorio del perfil del usaurio Samba: sambaProfilePath
 Letra de unidad de red asignada al HOME del usuario Samba: sambaHomeDrive
 La contraseña NT (MD4 hash) del usuario Samba: sambaNTPassword
 La contraseña LanManager del usuario Samba: sambaLMPassword
 La ruta del script de inicio de sesión (Logon Script) del usuario Samba:
sambaLogonScript
 La Ruta al directorio HOME del usuario Samba: sambaHomePath
 El ID del grupo primario al que pertenece el usuario Samba:
sambaPrimaryGroupID

El esquema samba define más atributos, pero los principales son estos que se mencionaron
arriba, para conocer los demás atributos ver el archivo:

/etc/ldap/schemas/samba.schema.

Los esquemas están definidos en archivos dentro del directorio /etc/ldap/schema/, el


esquema para samba no viene incluido dentro de la instalación de slapd, así que tendremos
que instalar el paquete samba-doc, el cual contiene el archivo samba.schema:

# apt-get install samba-doc

El archivo del esquema de samba se encuentra en el archivo /usr/share/doc/samba-


doc/examples/LDAP/samba.schema.gz en formato comprimido, lo descomprimiremos al
vuelo y lo copiaremos al directorio /etc/ldap/schema/:

# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz >


/etc/ldap/schema/samba.schema

Revisamos que tenga los permisos adecuados:

# ls -l /etc/ldap/schema/samba.schema

8
-rw-r--r-- 1 root root 19424 2010-06-24 16:21
/etc/ldap/schema/samba.schema

Ahora que ya tenemos el archivo del esquema de samba instalado necesitamos decirle al
servidor slapd que lo utilice, para hacer esto modificaremos el archivo:

/etc/ldap/slapd.conf.

Antes de modificar el archivo de configuración de slapd haremos una copia de seguridad:

# cp /etc/ldap/slapd.conf{,.orig}

Ahora modificaremos el archivo /etc/ldap/slapd.conf.

# nano /etc/ldap/slapd.conf

En la sección donde se incluyen los esquemas:

# 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

Después del esquema inetorgperson, agregar:

include /etc/ldap/schema/samba.schema

De manera que quede así:

# 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

9
Configurando las Listas de Control de Acceso (ACLs)

El archivo /etc/ldap/slapd.conf ya viene pre configurado con algunas reglas de acceso, entre
ellas una donde permite cambiar la contraseña a los usuarios Unix debidamente
autenticados. Ya que nuestro directorio también almacenará información de cuentas Samba,
debemos permitir que los usuarios Samba plenamente autenticados puedan cambiar su
contraseña desde el mismo cliente Windows. Las contraseñas de cuentas Samba están
almacenadas en los atributos sambaLMPassword y SambaNTPassword, por lo tanto
permitiremos a los usuarios autenticados poder cambiar su contraseña.

En la sección de los ACLs,

Cambiar:

access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=cevirtual" write
by anonymous auth
by self write
by * none

Por:

access to
attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,cevirtual" write
by anonymous auth
by self write
by * none

10
Configurando los índices de atributos más usados

Es importante que los atributos más consultados por los clientes y aplicaciones LDAP estén
debidamente indexados en la base de datos del directorio LDAP, de no ser así podríamos
sufrir de penalizaciones en el rendimiento del directorio, en especial en el tiempo de
respuesta en las consultas, para optimizar el rendimiento del directorio agregaremos una
lista de atributos a la lista de atributos a indexar.

En la sección de índice de atributos,

Cambiar:

# Indexing options for database #1


index objectClass eq

Por:

# Indexing options for database #1


index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

Revisión de permisos en archivos y directorios de Configuración

Antes de reiniciar nuestro servidor para que nuestros cambios tomen efecto, verificaremos
que los permisos sean los adecuados:

Verificando que los permisos del archivo /etc/ldap/slapd.conf estén como se muestra
aquí:

# ls -l /etc/ldap/slapd.conf
-rw-r----- 1 root openldap 5079 2010-06-24 16:35 /etc/ldap/slapd.conf

Si no están así, entonces cambiarlos con los comandos:

# chown root:openldap /etc/ldap/slapd.conf


# chmod 640 /etc/ldap/slapd.conf

11
Ejecutando una revisión sintáctica del archivo de configuración slapd.conf

Antes de reiniciar nuestro servidor slapd realizaremos una comprobación de que nuestras
configuraciones estén correctas, el comando slaptest nos hará una revisión sintáctica de
nuestro archivo de configuración /etc/ldap/slapd.conf.

# slaptest -v -u
config file testing succeeded

Con la opción -v habilitamos el modo verbose, esto es para que muestre detalles sobre
posibles errores encontrados en la configuración.

La opción -u permite que solo se ejecuta la revisión sintáctica aun cuando no se puedan
abrir los archivos de bases de datos del directorio (/var/lib/ldap/).

Si el comando slaptest nos muestra algún error, posiblemente nos dirá en que parte del
archivo se encuentra el error.

Si no nos es posible diagnosticar el error se recomienda ver el archivo de log


/var/log/ldap.log ó correr el demonio slapd con el nivel de severidad mayor, por
ejemplo:

# slapd -d 16383

Esto nos mostrará todos los mensajes en la terminal y no en los logs.

12
Iniciando el servidor slapd y haciendo pruebas preliminares

Ahora que ya tenemos nuestro servidor correctamente configurado y todos los permisos
están correctos podremos iniciar nuestro servidor de forma ordinaria usando el script de
inicio, para iniciar el servidor slapd usamos el comando:

# /etc/init.d/slapd start
Starting OpenLDAP: slapd.

Si el servidor slapd se inicia correctamente, este registrará en el log /var/log/syslog un


mensaje con el error que pudo haber provocado que no se iniciara.

Ahora haremos una consulta al servidor LDAP para ver si responde con lo más básico.
Usaremos el comando ldapsearch para buscar el namingContexts del DIT.

root@ushldap:~# ldapsearch -x -b '' -s base '(objectclass=*)'


namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=cevirtual

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Si el comando ldapsearch nos muestra algo similar a lo que se muestra arriba significa que
nuestro servidor LDAP está funcionando correctamente.

Ahora haremos una búsqueda en el directorio LDAP autenticado como el usuario admin
del LDAP y haremos la búsqueda usando como base dc=cevirtual, esto es para comprobar
que la autenticación y nuestras ACLs funcionen correctamente, además, de comprobar que
el directorio se haya inicializado con la estructura básica.

# ldapsearch -x -D "cn=admin,dc=cevirtual" -b "dc=cevirtual" -W


Enter LDAP Password:admin

Este comando nos debe retornar una salida similar a la anterior solo que con los datos del
usuario admin.

13
Configuración del Cliente LDAP

Las herramientas cliente LDAP como: ldapsearch, ldapmodify, ldapadd y otras usan los
parametros de configuración definidos en el archivo /etc/ldap/ldap.conf, básicamente
en este archivo se pueden definir los siguientes parámetros:

 URI - Dirección del servidor o servidores LDAP predeterminados


 BASE - Sufijo de la base de búsqueda ó Base DN
 SIZELIMIT - Tamaño máximo de las búsquedas
 TIMELIMIT - Límite de tiempo para las consultas
 BINDDN - DN de la cuenta con la que se efectuarán las operaciones

Por ahora solo configuraremos los primeros dos parametros, editemos el archivo de
configuración del cliente LDAP /etc/ldap/ldap.conf:

# nano /etc/ldap/ldap.conf

Definimos la dirección del servidor LDAP y la base de búsqueda:

BASE dc=cevirtual
URI ldap://127.0.0.1

14
Configuración de Samba y las herramientas smbldap-tools

Ahora vamos a ver como configurar el servidor Samba y las herramientas smbldap-tools
para configurar Samba como Controlador de Dominio usando un directorio OpenLDAP
como fuente de información centralizada para cuentas Unix y Samba.

Instalación y configuración del servidor Samba

En esta sección configuraremos el servidor Samba como un Controlador de Dominio


Primario (PDC) Windows NT con la base de datos SAM almacenada en nuestro directorio
LDAP.

Los parámetros Generales que configuraremos son:

 Parámetros de identificación de red como: Dominio, Nombre Servidor.


 Configuración para registro de eventos (logs)
 Interfaces y direcciones de red a las que está conectado el servidor
 Configuración de parámetros para Controlador de Dominio
 Información del servidor LDAP y cómo utilizarlo
 Definición de script para automatizar la administración de las cuentas samba/ldap.
 Directorios compartidos especiales como homes, netlogon y profiles.

A continuación se explica detalladamente la instalación de samba:

Instalando el servidor y cliente Samba

En esta sección instalaremos el servidor samba que en Debian está conformado


principalmente por los paquetes: samba y smbclient, el primero contiene los programas
para servidor y el segundo las herramientas de cliente y diagnostico.

Primero instalaremos los paquetes tanto de servidor y clientes.

# apt-get install samba smbclient

El paquete de instalación del servidor samba es pre configurado con algunos parámetros y
también importan los usuarios en /etc/passwd, en nuestro caso esta configuración no nos
sirve por lo que eliminaremos la configuración creada y los archivos de configuración que
se inicializaron, detenemos los servicios samba para iniciar con la configuración en limpio.

# /etc/init.d/samba stop
* Stopping Samba daemons [ OK ]

Nota

Todavía no iniciaremos el servidor samba hasta que este nuevamente configurado.

15
Configuraciones de Samba para Controlador de Dominio

El archivo de configuración principal de Samba es /etc/samba/smb.conf, ya que


iniciaremos con una configuración nueva, haremos un respaldo de este archivo antes de
iniciar con las modificaciones.

Creamos el respaldo del archivo /etc/samba/smb.conf:

# cp /etc/samba/smb.conf{,.orig}

En la siguiente sección podemos continuar con los parámetros que nos interesan.

Parámetros Globales del servidor Samba

El archivo de configuración de samba define la sección [global], en esta sección


especificaremos parámetros globales que afectarán el comportamiento del servidor Samba,
los parámetros principales son:

 El nombre del Grupo de Trabajo/Dominio al que pertenecemos: CEVIRTUAL


 Nombre NetBIOS del Servidor Samba: cevirtual
 Descripción del servidor Samba: Samba PDC Version %v

Además configuraremos los siguientes parametros extras:

Soporte para habilitar privilegios de Grupos de Dominio Samba: enable privileges = yes,
este parámetro es útil por ejemplo para dar privilegios a los usuarios miembros del grupo
Domain Admins para unir equpos Windows a un Dominio NT.

Hay muchos parámetros que se configuran en éste archivo, pero no detallaremos para que
sirve cada uno, para más información, puedes dirigirte al manual oficial de smb.conf en el
siguiente url: http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

Crearemos un archivo /etc/samba/smb.conf nuevo con los siguientes parametros:

El inicio de la sección global quedará así:

[global]

workgroup = CEVIRTUAL
netbios name = cevirtual

server string = Samba PDC Version %v

wins support = yes


map to guest = Bad User

dns proxy = no

16
name resolve order = wins hosts lmhost bcast

El parámetro map to guest = Bad User define que cuando un usuario no existente (en el
dominio) se conecte al servidor, el servidor smbd mapeará esa conexión al usuario
anónimo, pero las conexiones de usuarios que se autentiquen con una contraseña invalida
serán rechazadas.

Configurando los logs

Ahora configuraremos algunos parámetros para la generación de logs.

syslog = 0
log level = 0
max log size = 50
log file = /var/log/samba/%m.log

Configuraciones de red para el servidor Samba

En esta sección configuraremos los parámetros de red y algunas configuraciones de


seguridad recomendadas.

####networking
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = eth0 lo
hosts allow = 127.0.0.1, 192.168.0.0/24
hosts deny = 0.0.0.0
smb ports = 139 445
bind interfaces only = Yes
name resolve order = wins hosts lmhosts bcast

Configurando los parámetros para Controlador de Dominio

Ahora configuraremos los parámetros relacionados con la configuración de un servidor


Controlador de Dominio.

### PDC Options


time server = Yes
wins support = Yes

os level = 65

domain logons = Yes


preferred master = Yes

17
logon path =
logon home =
logon drive =
logon script =

unix password sync = Yes


passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new
password*" %n\n"
ldap passwd sync = Yes

Parámetros para interacción con el servidor LDAP

Ahora definiremos los parámetros necesarios para que samba utilice el directorio LDAP.

###SAMBA-LDAP declarations
passdb backend = ldapsam:ldap://127.0.0.1/
ldap admin dn = cn=admin,dc=cevirtual
ldap suffix = dc= cevirtual
ldap group suffix = ou=groups
ldap user suffix = ou=users
ldap machine suffix = ou=machines
ldap idmap suffix = ou=idmap
idmap backend = ldap:ldap://127.0.0.1
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind trusted domains only = Yes
#ldap ssl = start_tls

add machine script = /usr/sbin/smbldap-useradd -w -g 515 -d /dev/null


-s /bin/false "%u"
add user script = /usr/sbin/smbldap-useradd -m "%u"
ldap delete dn = No
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"

Configuraciónes de codificación

Ahora configuraremos los parámetros para especificar el juego de caracteres


predeterminado para archivos dos y unix.

###Configuración de juego de caracteres


dos charset = 850
Unix charset = ISO8859-1

Hasta aquí termina la sección Global de smb.conf.

18
El recurso compartido especial [homes]

El recurso compartido [homes] es un recurso compartido especial que es usado para


compartir el directorio $HOME de cada usuario, por ejemplo, tenemos un usuario
unix/windows de nombre alguien, este usuario tiene un directorio $HOME en la ruta
/home/alguien, con este recurso compartido, cada vez que el usuario alguien inicia sesión
por Samba, tendrá disponible un recurso compartido en el servidor con el nombre "alguien"
y por medio de él podrá entrar a sus archivos privados en el servidor.

###Configuraciones de recursos compartidos


[homes]
comment = Home Directories
valid users = %U
read only = No
create mask = 0664
directory mask = 0775
browseable = No

La línea valid users = %U indica que este recurso compartido solo está disponible para
los usuarios Samba autenticados.

En este recurso compartido no se especifica un path ya que podrá variar dependiendo del
usuario que haga login.

Nota

Aunque no sea de ésta sección, debemos crear también la carpeta donde se


almacenaran las carpetas “home” de los usuarios ya que la usaremos en
configuraciones posteriores, la cual sería “/home/samba/homes”, y la creamos con el
siguiente comando:

# mkdir -vp --mode 1777 /home/samba/homes

El recurso compartido especial [netlogon]

Este es otro recurso compartido especial, el recurso [netlogon] solo es utilizado cuando
Samba actúa como un Controlador de Dominio, el propósito de este recurso compartido es
almacenar los scripts de inicio (logon scripts), estos scripts son ejecutados cada vez que un
usuario inicia sesión en el dominio.

[netlogon]
path = /home/samba/netlogon/
browseable = No
read only = yes

19
La opción browseable = No especifica que este recurso compartido no será visible en la
lista de shares disponibles en el servidor, más sin embargo, si podrá ser accesado para los
usuarios que hacen login en el dominio, el acceso será de solo lectura.

Ahora creamos el directorio base en el cual almacenaremos los logon scripts:

# mkdir -vp --mode 755 /home/samba/netlogon


mkdir: se ha creado el directorio `/home/samba/netlogon'

Ahora crearemos un logon script bastante simple que hará las siguientes operaciones

 Sincronizar el reloj del servidor con el del equipo local


 Mapear el recurso de red \\cevirtual\homes a la unidad H:
 Mapear el recurso de red \\cevirtual\publico a la unidad P:

Creamos el archivo /home/samba/netlogon/logon.bat:

# nano /home/samba/netlogon/logon.bat

Y agregue el siguiente contenido:

net time \\cevirtual /set /yes


net use h: \\cevirtual\homes
net use p: \\cevirtual\publico

Nota

\\cevirtual hace referencia a la carpeta /home/samba/ la cual definimos en el archivo de


configuración de samba /etc/samba/smb.conf en la sección de [netlogon]

Ahora convertimos el archivo a formato DOS con CR/LF

# sed -i 's/$/\r/' /home/samba/netlogon/logon.bat

Verificar si el script requiere permisos de ejecución, en caso de que no los tenga,


ejecutamos:

# chmod –Rvf 666 /home/samba/netlogon/logon.bat

El recurso compartido especial [profiles]

El recurso compartido [profiles] también es de uso especial y solo es necesario cuando


Samba se configura como Controlador de Dominio, el propósito de este recurso compartido
es almacenar los Perfiles de Usuarios, en específico es usado cuando se configura que los
usuarios de dominio utilicen los Perfiles Móviles (Roaming Profiles).

20
[profiles]
comment = Users profiles
path = /home/samba/profiles
guest ok = yes
browseable = no
create mask = 0600
directory mask = 0700
read only = no
profile acls = yes
csc policy = disable
valid users = %U @"Domain Admins"

La ruta de este recurso compartido será usado con el atributo ProfilePath para indicar la
ruta en donde está almacenado el Perfil del Usuario, por ejemplo, la entrada en la SAM del
dominio para el usuario alguien especifica: ProfilePath=\\cevirtual\profiles\alguien, lo
cual indica que el perfil del usuario alguien estará en el directorio local
/home/samba/profiles/alguien.

Creamos el directorio para el recurso compartido profiles:

# mkdir -vp --mode 1777 /home/samba/profiles


mkdir: se ha creado el directorio `/home/samba/profiles'

En este momento ya podemos guardar el archivo smb.conf.

Realizando una revisión sintáctica del archivo de configuración smb.conf

Después de haber editado el archivo de configuración smb.conf ejecutaremos el comando


testparm para realizar un revisión sintáctica del archivo smb.conf, este comando nos dirá
si hay algún error de configuración, o si algún parámetro está mal escrito.

Para correr la revisión ejecutamos:

# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[profiles]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions

Si le aparece el mensaje "ERROR: the 'unix password sync' parameter is set and the
'passwd program' (/usr/sbin/smbldap-passwd) cannot be executed (error was No such file or
directory)." ignórelo, en la siguiente sección instalaremos el paquete smbldap-tools.

Si hubiera algún error en la sintaxis el comando testparm no lo reportará y nos dirá en que
línea se encuentra el error y alguna descripción corta sobre el error.

21
Especificando la contraseña del ldap admin dn

Para que Samba pueda agregar/modificar cuentas almacenadas en el directorio LDAP es


necesario que sepa la contraseña del usuario ldap admin dn especificada en el archivo
smb.conf. La cuenta del ldap admin dn debe de tener los suficientes permisos para leer,
agregar y modificar entradas en el directorio LDAP.

Para especificar la contraseña del admin dn, usamos el comando:

# smbpasswd -W
Setting stored password for "cn=admin,dc=cevirtual" in secrets.tdb
New SMB password:admin
Retype new SMB password:admin

La contraseña será almacenada en el archivo /var/lib/samba/secrets.tdb. Se almacena


aquí para no tener que especificarla cada vez que se vaya a ejecutar alguna operación
relacionada a cuentas Samba en el directorio LDAP.

El archivo secrets.tdb debe de tener los permisos así:

# ls -l /var/lib/samba/secrets.tdb
-rw------- 1 root root 8192 2010-06-25 20:29 /var/lib/samba/secrets.tdb

Ahora si podemos iniciar el servidor samba

# /etc/init.d/samba start
* Starting Samba daemons [ OK ]

22
Instalación y Configuración de las smbldap-tools

Ahora configuraremos las herramientas smbldap-tools para predefinir los parámetros de


configuración para la administración de cuentas Unix y Samba.

Primero instalaremos el paquete smbldap-tools así:

# apt-get install smbldap-tools

Los archivos de configuración de las herramientas smbldap-tools se encuentran en el


directorio /etc/smbldap-tools, en este directorio deben de existir dos archivos de
configuración, el archivo smbldap.conf contiene directivas de configuración tanto para la
creación y modificación de cuentas Unix y Samba y el archivo smbldap_bind.conf
contiene el usuario y la contraseña del usuario con el que nos conectaremos al servidor
LDAP para efectuar las operaciones de administración de usuarios y grupos Unix/Samba.

Ya que el archivo /etc/smbldap-tools/smbldap.conf no existe, usaremos un archivo de


ejemplo que se instala junto con el paquete smbldap-tools, lo copiamos así:

# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz >


/etc/smbldap-tools/smbldap.conf

El archivo smbldap_bind.conf tampoco existe por lo que utilizaremos el archivo de


ejemplo:

# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf
/etc/smbldap-tools/

Antes de empezar a configurar estas herramientas cambiaremos los permisos de acceso para
estos archivos. Entramos al directorio /etc/smbldap-tools:

# cd /etc/smbldap-tools

Cambiamos el usuario y grupo propietarios para los archivos, el usuario dueño debe de ser
root y el grupo dueño debe de ser openldap.

# chown root:openldap smbldap*

Nadie más a excepción del usuario root tendrá permiso de lectura y escritura sobre los
archivos, el grupo openldap solo tendrá permisos de lectura.

# chmod 640 smbldap*

Editaremos el archivo de configuración smbldap_bind.conf para especificar el usuario con


con el que haremos las operaciones de administración de usuarios y grupos en el servidor
LDAP.

# nano smbldap_bind.conf

23
Cambiar:

slaveDN="cn=Manager,dc=company,dc=com"
slavePw="secret"
masterDN="cn=Manager,dc=company,dc=com"
masterPw="secret"

Por:

slaveDN="cn=admin,dc=cevirtual"
slavePw="admin"
masterDN="cn=admin,dc=cevirtual"
masterPw="admin"

Nota

Aunque aun no tengamos configurado un servidor LDAP esclavo usaremos el mismo


cn=admin que es nuestro servidor Maestro.

En el archivo smbldap.conf se debe de especificar el SID del dominio Samba con el que
estaremos trabajando, para obtener el SID de nuestro servidor utilizaremos el comando net.

Obteniendo el SID local:

# net getlocalsid
SID for domain cevirtual is: S-1-5-21-2850906233-539131870-2269658519

El SID resultante lo copiaremos, en este caso el SID es: S-1-5-21-2850906233-539131870-


2269658519

Como mínimo debemos de configurar los parámetros que están marcados en negritas.

Ahora editamos el archivo principal de configuración de smbldap-tools /etc/smbldap-


tools/smbldap.conf:

# nano /etc/smbldap-tools/smbldap.conf

Primero editaremos los parámetros referentes al dominio Samba:

# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return
SID="S-1-5-21-2850906233-539131870-2269658519"

# Domain name the Samba server is in charged.


# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="IDEALX-NT"
sambaDomain="CEVIRTUAL"

# Slave LDAP server


# Ex: slaveLDAP=127.0.0.1

24
# If not defined, parameter is set to "127.0.0.1"
slaveLDAP="127.0.0.1"

# Slave LDAP port


# If not defined, parameter is set to "389"
slavePort="389"

# Master LDAP server: needed for write operations


# Ex: masterLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
masterLDAP="127.0.0.1"

# Master LDAP port


# If not defined, parameter is set to "389"
masterPort="389"

Conifguraciones de TLS/SSL:

Ya que en esta instalación inicial no usaremos comunicaciones seguras por SSL/TLS


desactivaremos el uso de TLS en nuestra configuración.

# Use TLS for LDAP


# If set to 1, this option will use start_tls for connection
# (you should also used the port 389)
# If not defined, parameter is set to "1"
ldapTLS="0"

Ahora especificaremos el Base DN de nuestro directorio LDAP, esta configuración servirá


como variable para otras configuraciones, todos los contenedores para almacenar cuentas y
grupos estarán bajo este Base DN.

# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=cevirtual"

# Where to store next uidNumber and gidNumber available for new users and
groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)


hash_encrypt="MD5"

# if hash_encrypt is set to CRYPT, you may set a salt format.


# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"

Además, debemos configurar las rutas donde se almacenaran los directorios home de los
usuarios Unix, como también otros parámetros que se usaran como valores por defecto, en
este caso definimos la home como “/home/samba/homes/%U” pues ya habíamos definido

25
antes que ahí estarían las carpetas de los usuario (“%U” indica el nombre del usuario, que
será el nombre de la carpeta del mismo):

# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"

# Home directory
# Ex: userHome="/home/%U"
userHome="/home/samba/homes/%U"

# Default mode used for user homeDirectory


userHomeDirectoryMode="700"

# Gecos
userGecos="System User"

# Default User (POSIX and Samba) GID


defaultUserGid="512"

# Default Computer (Samba) GID


defaultComputerGid="20003"

# Skel dir
skeletonDir="/etc/skel"

# Default password validation time (time in days) Comment the next line
if
# you don't want password to be enable for defaultMaxPasswordAge days (be
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="99999"

Lo mismo debemos hacer con las cuentas de para los usuarios Windows solo que usando un
formato algo diferente, similar al usado en la definición del script de logueo:

# The UNC path to home drives location (%U username substitution)


# Just set it to a null string if you want to use the smb.conf 'logon
home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="\\PDC-SMB3\%U"
userSmbHome="\\cevirtual\homes\%U"

# The UNC path to profiles locations (%U username substitution)


# Just set it to a null string if you want to use the smb.conf 'logon
path'
# directive and/or disable roaming profiles
# Ex: userProfile="\\PDC-SMB3\profiles\%U"
userProfile="\\cevirtual\profiles\%U"

# The default Home Drive Letter mapping


# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"

26
# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under
dos
userScript="\\cevirtual\netlogon\logon.bat"

Llenando el Directorio LDAP con smbldap-populate

Ahora que ya hemos editado los archivos de configuración de las herramientas smbldap-
tools, inicializaremos nuestro directorio LDAP con la información para el dominio NT:
CEVIRTUAL.

El comando smbldap-populate inicializará nuestro directorio LDAP con la siguiente


información:

 Base DN: dc=cevirtual


 Contenedor (OU= Unidad Organizativa ) para las cuentas Unix/Samba: ou=users

En el contenedor para los Usuarios, se crearán por defecto los usuarios: root y
nobody los cuales serán mapeados al usuarios Administrador y Guest Samba
respectivamente.

 Contenedor (OU= Unidad Organizativa ) para los Grupos Unix/Samba: ou=groups

En el contenedor de los Grupos, se crearán por defecto los Grupos Predeterminados


de un dominio Samba: Domain Admins, Domain Users, Domain Guests, Domain
Computers.

 Contenedor (OU= Unidad Organizativa ) para las cuentas de Computadoras


Windows: ou=machines
 Contenedor (OU= Unidad Organizativa ) para los mapeos de Cuentas Unix a
Cuentas Samba/Windows (SID): ou=idmap

Para inicializar nuestro directorio LDAP con la información de arriba usaremos el comando
smbldap-populate de la siguiente manera:

# smbldap-populate

Al final se nos solicita que asignemos una contraseña para el usuario root del dominio,
utilizaremos la contraseña: admin

Es importante que se tenga en consideración la estructura de nuestro árbol de Directorio, ya


que esta misma estructura podrá ser utilizada al configurar otras aplicaciones para que
interactúen con el directorio LDAP.

27
Las herramientas smbldap-populate crean 5 grupos locales (built-in): Account Operators,
Administrators, Backup Operators, Print Operators, Replicators. A estos grupos les
agrega el atributo sambaGroupType con el valor 5, el tipo de grupo samba 5 es usado para
grupos de dominio y no para grupos locales, para los grupos samba locales debe usar el tipo
4, más información sobre el bug ver el bug 5551 de samba y el bug td18119198 de
smbldap-tools.

Use el comando ldapmodify para cambiar los atributos en los dn de los grupos, cree el
archivo /tmp/samba-builtin-changetype.ldif con el siguiente contenido:

dn: cn=Account Operators,ou=groups,dc=cevirtual


changetype: modify
replace: sambaGroupType
sambaGroupType: 4

dn: cn=Administrators,ou=groups,dc=cevirtual
changetype: modify
replace: sambaGroupType
sambaGroupType: 4

dn: cn=Backup Operators,ou=groups,dc=cevirtual


changetype: modify
replace: sambaGroupType
sambaGroupType: 4

dn: cn=Print Operators,ou=groups,dc=cevirtual


changetype: modify
replace: sambaGroupType
sambaGroupType: 4

Ahora realizamos la modificación con el comando ldapmodify usando el DN cn=admin.

# ldapmodify -h localhost -x -D "cn=admin,dc=midominio,dc=com" -W -f


/tmp/samba-builtin-changetype.ldif
Enter LDAP Password:admin
modifying entry "cn=Account Operators,ou=Groups,dc=cevirtual"

modifying entry "cn=Administrators,ou=Groups,dc=cevirtual"

modifying entry "cn=Backup Operators,ou=Groups,dc=cevirtual"

modifying entry "cn=Print Operators,ou=Groups,dc=cevirtual"

Después de haber llenado el directorio con los usuarios y grupos de dominio


predeterminados, es necesario reiniciar samba para que tenga conocimiento de la nueva
información.

# /etc/init.d/samba restart
* Stopping Samba daemons [ OK ]
* Starting Samba daemons [ OK ]

28
Configuración de la resolución de Identidades con NSS_LDAP

En los sistemas Unix las cuentas de usuario y grupo son mapeadas a un identificador
numérico llamado UID (User ID) y GID (Group ID) respectivamente, esta resolución es
llevada a cabo por la biblioteca del sistema NSS (Name Service Switch), la cual es invocada
cada vez que algún comando o aplicación tratan con alguna cuestión de permisos o
autenticación.

Por default la biblioteca de sistema NSS realiza la consulta de usuarios, grupos y shadow
usando archivos locales, es decir, /etc/passwd, /etc/group y /etc/shadow, ya que nuestro
sistema usará un directorio LDAP para almacenar la información de los usuarios y grupos
será necesario indicarle a la biblioteca NSS que debe usar un directorio LDAP para obtener
información sobre dichas identidades, es aquí donde entra el paquete nss_ldap, el paquete
nss_ldap es un plugin para la biblioteca del sistema NSS para poder realizar la resolución
de identidades usando como fuente de origen un directorio LDAP.

En Debian/Ubuntu el plugin LDAP para la biblioteca NSS es provisto por el paquete


libnss-ldap, lo instalaremos en el sistema vía apt:

Para instalar el paquete libnss-ldap, usamos el comando:

# apt-get install libnss-ldap

Al instalar el paquete libnss-ldap se instalarán otros paquetes como libpam-ldap que lo


utilizaremos en la siguiente sección para configurar la autorización a los servicios del
sistema.

El sistema de administración de paquetes apt nos lanzará un asistente para configuración, la


configuración del asistente no es exactamente como nosotros la necesitamos, por lo que
solo contestaremos las preguntas con cualquier cosa para después reconfigurar libnss-ldap
manualmente.

Deberemos de contestar lo siguiente:

 LDAP server Uniform Resource Identifier: ldapi://127.0.0.1


 Distinguished name of the search base: dc=cevirtual
 LDAP version to use: 3
 Make local root Database admin: No
 Does the LDAP database require login?: No

Este asistente genero un archivo de configuración /etc/ldap.conf, ya que nosotros


crearemos una configuración nueva este archivo lo podemos renombrar.

# cp /etc/ldap.conf{,.orig}

29
Importante

No confundir con el archivo de los clientes LDAP /etc/ldap/ldap.conf.

Después de respaldar el archivo ldap.conf lo editaremos

# nano /etc/ldap.conf

Deberá de quedar así:

# Config file for libnss-ldap and libpam-ldap

uri ldap://127.0.0.1/
ldap_version 3

base dc=cevirtual

pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid

pam_password exop

nss_base_passwd ou=users,dc=cevirtual
nss_base_passwd ou=machines,dc=cevirtual
nss_base_shadow ou=users,dc=cevirtual
nss_base_group ou=groups,dc=cevirtual

bind_policy soft
nss_initgroups_ignoreusers
backup,bin,daemon,dhcp,games,gnats,irc,klog,libuuid,list,lp,mail,man,news
,openldap,proxy,sshd,sync,sys,syslog,uucp,www-data

Los permisos del archivo /etc/ldap.conf deben de ser 644, como se muestra a
continuación:

# ls -l /etc/ldap.conf
-rw-r--r-- 1 root root 467 2008-06-18 23:37 /etc/ldap.conf

Para que el servicio de resolución de entidades en realidad pueda obtener la información del
directorio LDAP, deberemos de modificar el archivo /etc/nsswitch.conf y modificar las
entradas para las entidades: passwd, group y shadow.

Antes de modificar el archivo de configuración de resolución de entidades haremos una


copia de seguridad:

# cp /etc/nsswitch.conf{,.FILES}

Ahora editamos el archivo para decirle que para obtener la información de usuarios, grupos
también consulte el directorio LDAP especificado en el archivo /etc/ldap.conf.

30
# nano /etc/nsswitch.conf

Cambiar:

passwd: compat
group: compat
shadow: compat

Por:

passwd: compat ldap


group: compat ldap
shadow: compat ldap

hosts: files wins dns

Nota

También aprovechamos para que la resolución de nombres de hosts incluya al servidor


WINS incorporado con Samba para resolver nombres netbios.

Después de guardar los cambios haremos unas pruebas con el comando getent para
verificar que si este haciendo las consultas al directorio LDAP.

Verificando la resolución de usuarios:

# getent passwd | grep root


root:x:0:0:root:/root:/bin/bash
root:x:0:0:Netbios Domain Administrator:/root:/bin/bash

En la salida del comando anterior deberemos de ver dos resultados para root, una fue
obtenida del archivo /etc/passwd y otra del directorio LDAP.

Ahora haremos una prueba para que podamos obtener la lista de grupos tanto del archivo
/etc/group como del directorio LDAP.

# getent group | grep -E 'root|Domain'


root:x:0:
Domain Admins:*:512:root
Domain Users:*:513:
Domain Guests:*:514:
Domain Computers:*:515:

En la salida del comando anterior la entrada para el grupo root fue obtenida del archivo
/etc/group y las entradas de los grupos Domain XXXX fueron obtenidas del directorio
LDAP.

Podemos utilizar el comando id para verificar que la resolución de entidades muestre a que
grupos pertenece el usuario root.

31
Inicie una nueva sesión como root en el equipo ya sea por ssh o localmente en una TTY, y
despues ejecute lo siguiente:

# id root
uid=0(root) gid=0(root) groups=0(root),512(Domain Admins)

En este caso, el usuario root pertenece al grupo 512 (Domain Admins) que está en el
directorio LDAP.

Nota

Es recomendable crear un link al archivo libnss-ldap en la carpeta /etc porque pueda


que según las versiones de los paquetes que se estén usando no los encuentre, ya que
otras versiones lo buscan con el nombre “ldap.conf”. Para crear el link ejecutamos la
siguiente línea:

#ln --l /etc/libnss-ldap.conf /etc/ldap.conf

32
Configuración de la Autenticación con PAM_LDAP

Introducción a los Módulos de Autenticación PAM

Que es PAM?

PAM son las siglas de Plugable Authentication Modules que básicamente es un mecanismo
flexible para autenticar usuarios.

Cada línea de los archivos de configuración de PAM contiene tres columnas más
argumentos opcionales, a continuación se muestra un ejemplo:

password requisite pam_unix.so nullok obscure md5

A continuación se explica que es cada elemento:

password

La primer columna sirve para indicar el tipo de modulo de autenticación

requisite

La segunda columna (Control Flag) sirve para indicarle a PAM como es que debe
de actuar d

pam_unix.so

La tercer columna se usa para especificar el nombre del modulo a usar

nullok obscure md5

La cuarta columna (opcional) sirve para especificar argumentos a los modulos.

33
Respaldando la configuración de PAM

Ya que la configuración de PAM y sus modulos es muy importante, y cualquier


configuración mal hecha podría causar que ya no podamos iniciar sesión localmente ( ni
como root), haremos un respaldo antes de realizar nuestras modificaciones:

Todas las configuraciones de PAM estan en el directorio /etc/pam.d/, respaldaremos todo el


directorio

root@ushldap:~# cp -va /etc/pam.d{,.FILES}

Nuestro respaldo tendrá el sufijo .FILES para indicar que son las configuraciones que usan
los archivos /etc/passwd, /etc/group y /etc/shadow.

Configurando los módulos de autenticación de PAM

Configuración del modulo auth

Configurar los archivos de acuerdo a:

# nano /etc/pam.d/common-auth
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

Configuración del modulo account

# nano /etc/pam.d/common-account
account required pam_unix.so
account sufficient pam_ldap.so

Configuración del modulo session

Configurando la Autorización (Auths) con PAM LDAP:

# nano /etc/pam.d/common-session
session required pam_unix.so
session optional pam_ldap.so

Configuración del modulo password

# nano /etc/pam.d/common-password
password required pam_cracklib.so difok=2 minlen=8
dcredit=2 ocredit=2 retry=3
password sufficient pam_unix.so nullok use_authtok md5 shadow
password sufficient pam_ldap.so use_authtok
password required pam_deny.so

34
Instalando el modulo Cracklib de PAM

En el modulo de autenticación password especificamos que es requerido el uso de


pam_cracklib, cracklib es un conjunto de bibliotecas que nos servirán para verificar que
las contraseñas suministradas por usuarios unix sean lo suficientemente fuertes, el chequeo
lo hace contra un diccionario de palabras, así, si un usuario ingresa una contraseña basada
en alguna palabra del diccionario cracklib nos alertará. Por medio del modulo pam_cracklib
también podemos especificar el tamaño mínimo de una contraseña.

Para instalar el modulo pam_cracklib, instalaremos el paquete libpam-cracklib, así:

# apt-get install libpam-cracklib

Configurando Archivo de configuración libpam-ldap.conf

Sencillo, este archivo se configura exactamente igual que el archivo libnss-ldap, son
prácticamente idénticos. Referirse a la sección de configuración de dicho archivo para
configurar este último. La ruta del mismo es “/etc/libpam-ldap.conf”.

Nota

Es recomendable crear un link al archivo libpam-ldap en la carpeta /etc porque pueda


que según las versiones de los paquetes que se estén usando no los encuentre, ya que
otras versiones lo buscan con el nombre “pam.conf”. Pero antes, debemos cambiar de
nombre a un archivo que tiene el mismo nombre (pam.conf) para que nos deje crear el
link que deseamos. Para crear el link ejecutamos la siguiente línea:

#ln --l /etc/libpam-ldap.conf /etc/pam.conf

35
Migración de usuarios y grupos Unix/Posix al directorio LDAP

Aca explicaremos como migrar las cuentas locales de sistema (/etc/passwd) y los grupos
locales (/etc/group) a nuestro directorio LDAP.

En Debian no se incluyen las herramientas necesarias para migrar cuentas Unix a LDAP,
sin embargo, estas herramientas estan como ejemplos en el directorio
/usr/share/doc/smbldap-tools/examples/migration_scripts/, necesitaremos
copiar estas herramientas a /usr/sbin/, lo haremos así:

Instalando el script para migrar cuentas unix:

# zcat /usr/share/doc/smbldap-tools/examples/migration_scripts/smbldap-
migrate-unix-accounts.gz > \
/usr/sbin/smbldap-migrate-unix-accounts

Instalando el script para migrar grupos Unix:

# zcat /usr/share/doc/smbldap-tools/examples/migration_scripts/smbldap-
migrate-unix-groups.gz > \
/usr/sbin/smbldap-migrate-unix-groups

Ahora le configuraremos los permisos a estos dos scripts para que puedan ser ejecutados sin
problemas:

# chmod 755 /usr/sbin/smbldap-migrate-unix-*

Y por último verificamos que los permisos se hayan puesto correctamente:

# ls -l /usr/sbin/smbldap-migrate-unix-*
-rwxr-xr-x 1 root root 11640 2008-07-18 00:49 /usr/sbin/smbldap-migrate-
unix-accounts
-rwxr-xr-x 1 root root 5533 2008-07-18 00:50 /usr/sbin/smbldap-migrate-
unix-groups

Ahora que ya tenemos los scripts para migrar cuentas locales al directorio LDAP
seguiremos con las secciones para migrar cuentas y grupos.

Migración de Usuarios (/etc/passwd y /etc/shadow)

La información de cuentas de usuario están almacenadas en el archivo /etc/passwd, y en el


archivo /etc/shadow principalmente está almacenado el hash de la contraseña del usuario.
Migraremos la información de ambos archivos siguiendo el siguiente procedimiento:

1. Hacer una copia de los archivos /etc/passwd y /etc/shadow en un directorio


temporal:

# cp /etc/passwd /etc/shadow /tmp/

36
2. Eliminar de ambos archivos todas las cuentas que no quieras importar en el
directorio LDAP
3. # for user in root nobody bin daemon
4. do
5. export user
6. perl -i –pe's@^$ENV{user}:(.*)\n@@' /tmp/passwd
7. perl -i -pe's@^$ENV{user}:(.*)\n@@' /tmp/shadow
done

8. Ahora migramos las cuentas de /tmp/passwd y /tmp/shadow a nuestro directorio:

# smbldap-migrate-accounts -a -P /tmp/passwd -S /tmp/shadow

Nota

Con la opción -a de smbldap-migrate-accounts, el atributo


sambaSAMBAccount será agregado a los usuarios importados. Todos los
usuarios que previamente tenían definido un shell valido en /etc/passwd
entonces serán capaces de conectarse a el servidor y actualizar su contraseña
Windows usando el script /usr/sbin/smbldap-passwd ó el comando passwd.

9. Eliminando los archivos temporales


10. # rm -i /tmp/passwd /tmp/shadow
11. rm: remove regular file `/tmp/passwd'? y
rm: remove regular file `/tmp/shadow'? y

37
Migración de Grupos (/etc/group)

Ahora migraremos los grupos del archivo /etc/group. El proceso de Migración deberá de
hacerse como sigue:

1. Hacer una copia del archivo /etc/group a un directorio temporal:

# cp /etc/group /tmp/

2. Elimina todos los grupos que no quieres que se importen al directorio LDAP
3. # for group in root bin daemon
4. do
5. export group
6. perl -i -pe's@^$ENV{group}:(.*)\n@@' /tmp/group
done

7. Ahora si migramos los grupos al directorio LDAP

# smbldap-migrate-groups -a -G /tmp/group

8. Eliminando el archivo temporal


9. # rm -i /tmp/group
rm: remove regular file '/tmp/group'? y

Nota

Con la opción -a de smbldap-migrate-groups, el atributo


sambaGroupMapping será agregado a los grupos de manera que ellos podrán
ser usados como grupos Windows (entonces Samba mapeara los grupos Unix a
los grupos Windows). Deberías de eliminar esta opción si no deseas hacer el
mape de grupos unix a windows.

Podemos usar el comando getent para verificar que los usuarios y grupos migrados esten en
el directorio LDAP.

38
Integrando Clientes Windows al Dominio Samba

Para que un equipo con el sistema operativo Windows pueda participar en un dominio de
red, sea Samba o NT, el equipo debe de unirse al dominio, el proceso para unir un equipo
Windows a un Dominio Samba/NT se detalla en los siguientes pasos:

 Configurar los parámetros de red


 Configuración del nombre de equipo
 Unir el equipo al Dominio

En la siguientes secciones se detallarán los pasos antes mencionados.

Requerimientos del Sistema

Para que un equipo Windows pueda ser unido al dominio es necesario que cumpla con los
siguientes requerimientos

 Debe de ser un sistema operativo Windows XP Profesional, los equipos con


Windows Home Edition no pueden participar por completo en un Dominio de Red
por lo tanto no se podrá utilizar el siguiente procedimiento.
 Debe de tener una interfaz de red funcional y tener conectividad con el servidor de
PDC.
 Se debe de tener una cuenta de usuario con privilegios administrativos en el equipo
local, por ejemplo, la cuenta Administrador.

Configuración de los parámetros de red en el equipo Windows

En esta sección se describe como verificar que los parámetros de red en nuestro equipo
Windows estén correctamente configurados.

Información necesaria para configurar los parámetros de red

Antes de unir un equipo Windows al dominio, verificaremos que los parámetros de red
estén correctamente configurados.

Es importante que el equipo tenga los siguientes parámetros de red configurados:

Dirección IP: Una dirección IP disponible en el segmento 192.168.1.0/24

Servidor DNS: 192.168.0.2

Servidor WINS: 192.168.0.2

39
Soporte NetBIOS sobre TCP/IP: El equipo deberá de tener el soporte de NetBIOS sobre
TCP/IP Activado.

Configurando correctamente los parámetros de red

Para verificar o cambiar estos parámetros ir a Panel de Control=>Conexiones de Red e


Internet=>Conexiones de Red.

Dar click derecho al icono de Conexión de área local, seleccionar el elemento Protocolo
Internet (TCP/IP) y dar click en el botón Propiedades

Dentro del cuadro de dialogo Propiedades de Protocolo Internet (TCP/IP) dar click en el
botón de Opciones Avanzadas

Propiedades de Protocolo Internet (TCP/IP) General

En el cuadro de dialogo Configuración avanzada de TCP/IP después damos click en la


pestaña de nombre WINS

40
En esta pestaña vamos a agregar la dirección IP de nuestro servidor WINS (NetBIOS Name
Server ó NBNS), para agregar el servidor WINS damos click en el botón Agregar como se
muestra en la imagen de abajo.

Propiedades de Protocolo Internet (TCP/IP) Configuraciones WINS

Agregamos la dirección IP de nuestro servidor Samba WINS como se muestra en la imagen


de abajo

Propiedades de Protocolo Internet (TCP/IP) Configuraciones WINS - Agregar

41
Después de agregar la dirección IP del servidor WINS damos click en el botón Agregar y
el servidor WINS aparecerá en la lista.

Nota

Podemos agregar más de un servidor WINS, el sistema los evaluará en el orden en que
aparecen.

Para terminar nuestras configuraciones damos click en el botón Aceptar para regresarnos al
cuadro de dialogo de configuraciones avanzadas, estando en el cuadro de dialogo de
Propiedades de Protocolo Internet (TCP/IP) General damos click en el botón Aceptar y
por ultimo damos click en el botón Cerrar para que nuestros cambios tomen efecto.

42
Verificación de los Parámetros de Red

Solo para confirmar que la configuración si hay tomado efecto damos doble click sobre el
icono de Conexión de área local.

Después damos click en la pestaña Soporte.

Ahí nos muestra una parte de la configuración de red. Damos click en el botón Detalles...
para ver la información completa de la configuración de red.

Viendo los detalles de la conexión de red

Si después de verificar los detalles de los parámetros de red todo esta bien, entonces
podemos continuar con el paso de configuración del nombre de equipo.

Configuración del nombre de equipo Windows

Verificación de nombre de equipo y grupo de trabajo.

Esta es una computadora recién instalada y en el proceso de instalación se le asigno el


nombre de equipo: virtualxp

43
Para verificar el nombre de nuestro equipo vamos al Panel de Control=>Rendimiento y
mantenimiento=>Sistema

Estando en el cuadro de dialogo Propiedades del sistema vamos a la pestaña de Nombre


de equipo donde veremos algo así:

Propiedades del sistema, Nombre de Equipo

Si se desea cambiar el nombre del equipo (recordar que este nombre será como nos verán
en la red), podemos dar click en el botón Cambiar... y nos aparecerá una ventana como la
siguiente.

Propiedades del sistema, Cambios en el nombre de equipo

44
Se cambia el nombre donde dice Nombre de equipo: y se da click en Aceptar.

El nombre de Grupo de trabajo ó Dominio no es necesario cambiarlo en este paso ya que


puede ser cambiado en el proceso de unir la maquina al dominio.

Uniendo el equipo Windows al Dominio Samba

Para unir el equipo al dominio podemos usar el Asistente para identificación de red el
cual nos llevará paso a paso en el proceso para que el equipo sea un miembro del dominio
de red Samba/NT.

Lanzamos el asistente de identificación de red dando click en el botón Id. de red.

Usando el Asistente de Identificación de red

45
La primera pantalla nos da la bienvenida al asistente para conectar el equipo a una red.

Asistente de identificación de red, paso 1

Para continuar con el asistente damos click en el botón Siguiente >

46
El siguiente paso nos pregunta qué tipo de equipo tenemos, en nuestro caso seleccionamos
la opción que dice: El equipo forma parte de una red organizativa y lo utilizo para
conectarme a otros equipos en el trabajo y damos en el botón Siguiente > para
continuar.

Asistente de identificación de red, paso 2

En el siguiente paso nos pregunta el tipo de red de nuestra organización, elegimos la


opción: Mi compañia utiliza una red con dominio y damos click en el botón Siguiente >.

Asistente de identificación de red, paso 3

47
En el siguiente paso del asistente nos da un da un resumen de la información de red que
necesitamos para unir este equipo al dominio

Asistente de identificación de red, paso 4

A continuación se muestra la información requerida junto con la información


correspondiente a nuestro dominio:

Nombre de usuario: alguien

Contraseña de usuario: alguien

Cuenta de usuario del dominio: alguien

Es posible que también necesite:

Nombre del equipo: virtualxp

Dominio del equipo: CEVIRTUAL

Además necesitaremos la contraseña del usuario root del dominio, esta cuenta será
necesaria para poder unir la maquina al dominio y crear la cuenta de computadora
correspondiente a virtualxp. Configuramos esta información como se muestra en la
siguiente imagen:

Asistente de identificación de red, paso 5

48
Después de ingresar la información damos click en el botón Siguiente >.

Al dar click en Siguiente el asistente tratará de encontrar una cuenta de equipo de nombre
virtualxp en el dominio CEVIRTUAL, si no la encuentra nos mostrará un cuadro como el
siguiente, donde nos avisa que no encontró la cuenta de equipo en el dominio, nos pide
escribir nuevamente el nombre de equipo y el dominio.

Asistente de identificación de red, paso 6

49
Damos click en el botón Siguiente >, ya que la cuenta de equipo no se encontró en el
dominio CEVIRTUAL, necesitaremos usar una cuenta con privilegios administrativos de
dominio y su contraseña para que por medio del asistente de identificación de red se cree la
cuenta de equipo virtualxp en el dominio CEVIRTUAL.

Asistente de identificación de red, paso 7

Ya que no tenemos cuentas con privilegios administrativos de dominio, usaremos la cuenta


de root que se creó con smbldap-populate, ingresamos su contraseña y el nombre de
dominio CEVIRTUAL como se muestra en la imagen de arriba, después damos click en el
botón Aceptar para continuar.

50
Si las credenciales que presentamos fueron correctas, en la siguiente ventana, nos dirá que
podemos agregar un usuario al equipo, cuando se agrega un usuario a este equipo se le
concede acceso a todos los recursos del equipo y a todos los recursos compartidos en la red.

Asistente de identificación de red, paso 8

Usaremos el nombre de usuario: alguien y el nombre de dominio: CEVIRTUAL, como se


muestra en la imagen de arriba y damos click en el botón Siguiente > para continuar.

En la siguiente ventana nos solicita asignar un nivel de acceso que el usuario alguien tendrá
sobre el equipo VIRTUALXP, por defecto esta seleccionado el nivel de acceso: Usuario
estándar.

Asistente de identificación de red, paso 9

51
El nivel de acceso Usuario estándar permite que los usuarios puedan cambiar muchas
configuraciones del sistema e instalar programas que no afecten a los archivos del sistema
de Windows. Digamos que este es el nivel intermedio.

El nivel de acceso Usuario restringido permite que los usuarios pueden utilizar el equipo y
guardar documentos, pero no pueden instalar programas o cambiar la configuración del
sistema.

En Otros: podemos elegir otros niveles de acceso, por ejemplo, podemos dar acceso de
Administrador al usuario, esto quiere decir que el usuario alguien tendrá todos los
privilegios sobre el equipo VIRTUALXP, lo cual significa que puede cambiar
configuraciones, puede instalar y desinstalar programas que afecten el sistema, es decir,
puede hacer lo que le dé la gana sobre el equipo, incluso formatear :D.

Por ahora seleccionamos el nivel de acceso Usuario estándar y damos click en el botón
Siguiente > para finalizar.

Figura 12.17. Asistente de identificación de red, Ultimo Paso

52
El último paso nos dice que ya hemos completado con éxito el asistente para identificación
de red, y nos solicita re iniciar el equipo para que los cambios tengan efecto. Damos click
en el botón Finalizar.

Asistente de identificación de red, reiniciar el equipo

Damos click en el botón Aceptar y nos lleva a la siguiente imagen:

Asistente de identificación de red, Alerta de re iniciar el equipo

53
Para que los cambios que hicimos en el asistente de identificación de red tenga efecto es
necesario re iniciar el equipo, damos click en el botón Aceptar para terminar y re iniciar.

Como Iniciar Sesión el Dominio Samba

Después de reiniciar el equipo nos cambiará la ventana de inicio de sesión a como se


muestra a continuación.

Inicio de sesión de Windows - Pantalla inicial

Para poder iniciar sesión presionamos la combinación de teclas Ctrl+Alt+Supr y nos


mostrará una ventana como la siguiente:

Inicio de sesión de Windows - Pantalla predeterminada de login

Si queremos ver en qué equipo o dominio queremos iniciar sesión podemos dar click en el
botón "Opciones" y nos mostrará algo así:

Inicio de sesión de Windows - Pantalla con opciones activa

54
Nota
Si queremos conectarnos al equipo local, damos click en el menú desplegable de
Conectarse a: y elegimos: VIRTUALXP (este equipo).

Después de iniciar sesión en el dominio el menú de inicio se verá así:

Inicio de sesión - Menú inicio

55
Integración de clientes Linux al dominio

Instalar libnss-ldap y libpam-ldap


apt-get install libnss-ldap libpam-ldap

Reconfiguramos los archivos de libnss-ldap


#dpkg-reconfigure libnss-ldap

Reconfiguramos los archivos de libpam-ldap


#dpkg-reconfigure -a libpam-ldap

Configuramos el archivo /etc/ldap/ldap.conf, agregar


BASE dc=cevirtual
URI ldap://192.168.0.2/

Configuramos e archivo /etc/libnss-ldap.conf (/etc/ldap.conf para ubuntu y otros)

host 192.168.0.2

base dc=cevirtual

uri ldap://192.168.0.2/

ldap_version 3

rootbinddn cn=admin,dc=cevirtual

pam_password exop

nss_base_passwd ou=users,dc=cevirtual
nss_base_shadow ou=users,dc=cevirtual
nss_base_group ou=groups,dc=cevirtual

Configuramos e archivo /etc/pam-ldap.conf (/etc/pam.conf para ubuntu y otros)

host 192.168.0.2

base dc=cevirtual

uri ldap://192.168.0.2/

rootbinddn cn=admin,dc=cevirtual

pam_password exop

nss_base_passwd ou=users,dc=cevirtual

56
nss_base_shadow ou=users,dc=cevirtual

nss_base_group ou=groups,dc=cevirtual

Para corregir cualquier error que puede llegar a suceder entre diferentes distros se crean
links de los siguientes archivos, renombrando los archivos linkeados con sus similares de la
distro ubuntu, tal como está a continuación:

ln --l /etc/pam-ldap.conf /etc/pam.conf


ln --l /etc/libnss-ldap.conf /etc/ldap.conf

Autenticación De Usuarios Y Grupos De Dominio Samba En Clientes Linux

Instalar samba smbclient

# apt-get install samba smbclient

Ahora creamos el archivo de configuración con el siguiente contenido:

#
# Archivo de configuración para desktop miembro de dominio
#
[global]

workgroup = CEVIRTUAL
netbios name = debian
server string = debian de CEVIRTUAL

security = DOMAIN
username map = /etc/samba/smbusers

#========== Configuraciones de Red ===========================

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192


interfaces = ath0 lo
bind interfaces only = Yes
smb ports = 139 445

hosts allow = 192.168.0. 127.


hosts deny = 0.0.0.0

remote announce = 192.168.0.255


wins server = 192.168.0.2
name resolve order = wins hosts lmhosts bcast

#========= Opciones para registro de eventos (Logging)======

log level = 1
syslog = 0
log file = /var/log/samba/%m.log
max log size = 50

57
utmp = Yes

#========= Opciones para la codificación ===================

Dos charset = 850


Unix charset = ISO8859-1
display charset = ISO8859-1

#========= Configuraciones para LDAP =======================

passdb backend = ldapsam:ldap://192.168.0.2/


ldap admin dn = cn=admin,dc=cevirtual
ldap suffix = dc=cevirtual
ldap group suffix = ou=groups
ldap user suffix = ou=users
ldap machine suffix = ou=machines
ldap idmap suffix = ou=idmap
idmap backend = ldap:ldap://192.168.0.2/
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind trusted domains only = Yes

Guardamos el archivo y el siguiente paso es agregar la contraseña del admin ldap:

# smbpasswd -W
Setting stored password for "cn=admin,dc=cevirtual" in secrets.tdb
New SMB password:admin
Retype new SMB password:admin

Reiniciamos samba para que los cambios tomen efecto:

# /etc/init.d/samba restart
* Stopping Samba daemons [ OK ]
* Starting Samba daemons [ OK ]

Ahora verificamos que samba pueda leer las cuentas de dominio:

# pdbedit -L
root:0:root
nobody:65534:nobody
virtualxp$:1003:VIRTUALXP$

Ahora unimos el equipo samba al dominio con el siguiente comando:

# net rpc join -U root


Password:dominioadmin
Joined domain CEVIRTUAL.

Podemos utilizar el mismo comando net para obtener información del dominio al que nos
unimos:

# net rpc info –U alguien


Password:

58
Domain Name: CEVIRTUAL
Domain SID: S-1-5-21-2911508632-2405292923-4115677068
Sequence number: 1232322213
Num users: 6
Num domain groups: 7
Num local groups: 0

59
Configurando un Controlador de Dominio de Respaldo (BDC)

Las configuraciones para un servidor de control de dominio de respaldo (bdc) son similares
a las del servidor maestro (PDC), asi que no mostraremos los configuraciones completas,
solo los cambios que se deben hacer para que se comporte como respaldo, para montar el
servidor BDC en sí, sigue los pasos que se describieron anteriormente.

Para empezar, debemos recalcar que solo es necesario instalar y configurar el servidor
“Samba” y sus complemento “smbldap-tools”, “libnss-ldap” y “libpam-ldap”. La parte del
servidor LDAP, servidor DNS (Bind9) y demás no son necesarias.

A continuación se detallarán las configuraciones que son diferentes en los diferentes


archivos de los paquetes instalados y necesarios para el servidor BDC que detallamos al
inicio de ésta sección.

Archivo ldap.conf (/etc/ldap/ldap.conf)

La única línea que cambia de este archivo de configuración es la siguiente:


URI ldap://192.168.0.2/

La cual indica la dirección la dirección donde se encuentra la base de datos LDAP

Archivo smb.conf (/etc/samba/smb.conf)

En éste archivo debemos configurar unas cuantas cosas:

 passdb backend = ldapsam:ldap://192.168.0.2/


Ésta linea indica el servidor contra el que se autenticará, que en nuestro caso es
LDAP y la ip del servidor maestro (no el que estamos configurando como servidor
de respaldo)

 os level = 60
El cual indica el nivel de presentación de samba en la red, por ello el servidor
maestro debe tener un número mayor que el servidor de respaldo, debes verificar
este número en ambos.

 domain master = no
Ésta opción es algo obvia, pero debe colocarse en “no” para que nuestro servidor
sea reconocido como BDC

Archivo smbldap.conf, libnss-ldap y libpam-ldap

Primeramente las rutas de estos archivos son las siguientes:


 smbldap.conf : /etc/smbldap-tools/smbldap.conf
 libnss-ldap y lbpam-ldap: /etc/nombre_del_archivo

60
En estos 3 archivos, lo único que debemos configurar es que cada ip ya no apuntará al
servidor local (127.0.0.1) sino a nuestro servidor maestro que está para nuestro caso en
192.168.0.2.

Y listo, ya tenemos configurado nuestro servidor BDC. Para comprobarlo podemos usar el
comando “testparm” en cada uno de nuestros servidores y veremos el rol de cada uno y que
nuestras configuraciones sean correctas. Nos tendrían que dar unas salidas como éstas
(poner atención a la línea que dice “Server role”:

En el PDC:

Y en el BDC:

61
Servidor de archivos OpenFiler

Bueno, como se dijo al inicio de éste manual, en la implementación del mismo se utilizará
un servidor de archivos llamado OpenFiler, éste servidor será utilizado para almacenar de
manera centralizada los archivos de todos los usuarios del sistema.

Pero, ¿Qué es OpenFiler? Es un sistema Linux basado en una distribución llamada CentOS,
el cual provee muchos servicios para montar un servidor de archivos con diferentes
tecnologías, así como también otros servicios que ayuden al funcionamiento o a dar
mayores prestaciones a nuestro servidor de archivos. Para más información visita su página
oficial: http://www.openfiler.com/

Instalación del servidor OpenFiler

Primeramente, puedes obtener el archivo .iso de la página oficial de OpenFiler mencionada


anteriormente. Luego la quemas en un CD para poder instalarlo en una máquina que será
utilizada solo como servidor de datos. Los pasos a seguir para instalar el sistema son los
siguientes:

1. Entramos con el CD de OpenFiler en la computadora que servirá como servidor.


2. Seleccionar el idioma.
3. Particionar el disco: esto se puede hacer automáticamente de forma que hace lo que
considera oportuno o bien lo haces tú manualmente. Para más o menos hacerse una
idea, la instalación ocupa algo más de 500 MB así que no hace falta un disco duro
exageradamente grande para instalarlo. Otra cosa es el espacio que quieras destinar
para almacenar los archivos de guardaras en el servidor, para ello, debemos dejar
una porción del disco sin particionar y sin formato, mas adelante explicaremos las
configuraciones necesarias para poder utilizarlas.
4. Configuración de red: DHCP o IP estática, DNSs, gateways.
5. Poner la clave de root. IMPORTANTE esta clave NO es la que usaremos para
administrar el OpenFiler. Para administrar OpenFiler, usaremos la cuenta
“openfiler” y la clave es “password”. Una vez finalizada la instalación podremos y
cambiar la clave.
6. Instalación de paquetes. Aca el sistema instala los archivos necesarios, es una
instalación relativamente rápida.
7. Reiniciar

Ya con esto tenemos instalado nuestro servidor de archivos, si deseas ver información mas
detallada sobre la instalación del mismo, visita su manual oficial (en inglés):
http://www.openfiler.com/learn/how-to/graphical-installation

62
Configuración de servidor de archivos OpenFiler

Una vez tenemos instalado OpenFiler, puedes acceder al mismo via su panel de control
basado en web, el cual te permite configurar todas las opciones disponibles en el mismo.

Para hacer esto, debemos escribir en un navegador (de una computadora que este en el
mismo dominio que el servidor) la dirección ip del OpenFiler seguida por dos puntos y el
numero 446 que es el puerto que utiliza OpenFiler, además, deberas utilizar http seguro
para poder acceder al mismo, así: https://IP de OpenFiler:446/

Aparecerá en el navegador una ventana como la siguiente:

Aca, usa el username “openfiler” y la contraseña “password” para poder loguearte al


servidor

Configurando la red

Lo primero que debemos hacer, es configurar los host, la red o las redes que podrán tener
acceso a nuestro servidor. Para ello, seleccionamos la opción “System” del menú principal
y luego la sección “Network Access Configuration” hasta el fondo de la página, ahí
agregamos la ip del/los hosts que podrán accesar a la red, en nuestro caso, configuramos
una red completa que pueda acceder al servidor, la 192.168.0.0 con la máscara (“Netmask”)
255.255.255.0, además, debemos seleccionar en el campo “Type” la opción “Share”, para
que el servidor esté disponible para esa red.

Nota

Como en nuestro control de dominio, solo el servidor samba PDC y samba


BDC se encargan de guardar los archivos, lo mejor sería agregar nada mas ellos
como hosts de acceso al servidor, para evitar que cualquier otra máquina pueda
acceder a ellos.

63
Información importante sobre volúmenes

Antes de continuar con las configuraciones, aclararemos unos conceptos importantes como
lo son los volúmenes en OpenFiler, ya que los utilizaremos para configurar la parte del
almacenamiento de archivos en el servidor:

1. Physical Volume (volumen físico) – Asigna un espacio en el disco físico de la


maquina para ser usado por el Volume Group.
2. Volume Group (Grupo del volumen) – Contiene un volume físico en el cual se
creará un volumen lógico que será nuestro espacio de almacenamiento.
3. Logical Volume (LUN o volumen lógico) – Este es el espacio que utilizará el
servidor para almacenar los archivos.

Con estos conceptos presentes, pasaremos a configurar los volúmenes para nuestro
servidor.

64
Creación de un Nuevo volumen físico

¿Recuerdan que dejamos un espacio sin particionar en el disco del servidor? Bueno, aca
configuraremos ese espacio como volumen físico para que este disponible para ser usado
por OpenFiler.

Necesitamos crear un volumen físico que luego será presentado a través de un grupo de
volumen. Para hacer esto, seleccionamos “Block Devices” del menú “Volumes Section”:

Seleccionamos la opción „Edit Disk‟ en el disco que queramos crear el volumen físico.

Ve hacia el fondo de la página que se te presentará al seleccionar esa opción y verás el


espacio disponible en el disco para crear el nuevo volumen físico (podrás notar que tienes
espacio para crear el volumen si la opción “Starting Cylinder” y “Ending Cylinder” están
habilitadas, si no se habilitan, prueba cambiando el tipo de partición en la opción “Mode”)

Seleccionamos el espacio que queremos darle al volumen con las cajas de texto para los
cilindros, en la opción “Partition Type” seleccionamos el tipo “Physical Volume” y
presionamos el botón “Create” para crear nuestro nuevo volumen:

Luego, nos aparecerá una pantalla resumen donde estaran los diferentes volúmenes que
tenemos disponibles en nuestro servidor (si es que creamos mas de uno)

65
Creando el nuevo Grupo de volumen

Lo siguiente que vamos a crear es el “Volume Group” para el “Physical Volume” que
creamos anteriormente. Damos click en la ficha “Volumes” y luego seleecionamos
“Volume Groups” de la sección de “Volume” en el menú que esta al lado derecho.

Escribimos un nombre para el grupo en la casilla llamada “Volume group name”, en


nuestro caso le pusimos “cevirtual_volumegroup” y chequeamos mas abajo el volumen
físico que vamos a asociar al volumen de grupo, para finalizar presionamos el botón “Add
volumen group”

Ahora aparecerá una pantalla que muestre el nuevo grupo de volumen que acabamos de
crear:

66
Creando el volumen

Es el momento de crear el volumen. Damos click en la opción “Add volume” en la parte


derecha de la pantalla en el menú “Volumes section” y nos aparecerá algo como esto:

Seleccionamos el grupo de volumen que creamos en el paso anterior y presionamos el


botón “Change”. Veremos una pantalla donde se configure el tamaño del volumen que
crearemos para el grupo de volumen que estamos editando.

Para nuestro caso en particular, crearemos un volumen que ocupe todo el espacio del grupo
de volumen que esta unido al volumen físico que creamos antes. Escribimos un nombre
para el volumen, nosotros lo llamamos “cevirtual_volume”. Tambien debemos seleccionar
el tamaño que ocupara moviendo el indicador lo mas a la derecha o según te convenga o
desees. Luego, para el sistema de archivos (Filesystem/Volume type) seleccionamos
“iSCSI”, muy importante el escoger este tipo de volumen.

67
Luego de verificar las configuraciones, podemos presionar el botón “Create” para crear
nuestro nuevo volumen.

Una vez tenemos creado nuestro volumen, veremos una pantalla donde aparece un gran
circulo verde que indica el la cantidad o el espacio usado del grupo de volumen que nuestro
nuevo volumen consume:

68
Bueno, ya tenemos completamente creado y configurado nuestro volumen para los datos.
Ahora debemos habilitar el lado de la conectividad para que se pueda acceder a este nuevo
recurso que hemos habilitado.

Habilitando el servicio iSCSI en el servidor (iSCSI Target)

Damos click en la opción “Services” en el menú principal de OpenFiler.

Lo siguiente es ir a la opción “Modification” y dar click en “Enable” del servicio “iSCSI


target server” para habilitar el servicio (esto en caso de que no este habilitado con
anterioridad). Al final tendremos algo como ésto:

Agregando un target iSCSI o servicio iSCSI

Regresamos a la sección de volúmenes y seleccionamos la opción “iSCSI Targets” del


menú a la derecha.

Primero crearemos un nuevo servicio iSCSI (iSCSI target) y lo hacemos seleccionando la


viñeta “Tarjeta Configuration” en la pantalla actual. Puedes cambiar el nombre del target o
“Target IQN” si lo deseas. Luego presionamos el botón “Add” para agregar el target.

69
Mapeando el volumen lógico o LUN

Ahora seleccionamos la viñeta “LUN Mapping” y damos click en el botón “Map”

Permitiendo el acceso al servidor iSCSI

Establecemos la regla de acceso para la red o hosts que podrán acceder a los datos. Para
ello, seleccionamos en “Access” la opción “Allow” para permitir a quienes queramos el
acceso.

Hasta aquí con la configuración del servidor. Ya lo tenemos listo para ser utilizado en la red
o hosts que configuramos que podrían tener acceso al mismo.

70
Integrando servidor de archivos OpenFiler con los controladores de
dominio

Como recordamos, ya tenemos montado nuestro servidor de archivos OpenFiler y nuestros


controladores de dominio PDC y BDC, pero aun no los hemos integrado para que los
archivos de los usuarios de nuestro sistema de control de dominio tengan sus archivos de
manera centralizada. Para lograr esto, vamos a montar la partición iSCSI que tenemos en
nuestro servidor OpenFiler ya configurado y también debemos configurar a nuestro PDC y
BDC como clientes iSCSI, es decir, la siguiente configuración se realizará en ambos
servidores de manera idéntica.

Instalación de open-iscsi

Lo primero que vamos a hacer es instalar el software iniciador. En Linux contamos con
varios iniciadores iSCSI, sin embargo el más usado es open-iscsi, además está dentro de la
paquetería de Debian. Lo instalamos

# apt-get install open-iscsi

Esto nos instalará un script de inicio que carga los módulos y lanza un programa que
controla el iniciador (iscsid), y un programa para configurar nuestro iniciador
(iscsiadm).

Lo primero que debemos hacer es iniciar el servicio

# /etc/init.d/open-iscsi start

Configuración de open-iscsi

La configuración de open-iscsi se realiza a través del comando iscsiadm y la misma se


guarda en una base de datos. Si queremos cambiar algún parámetro de la configuración
tenemos que hacerlo a través de iscsiadm.

Detección del target

En primer lugar tenemos que indicarle a iscsiadm que detecte nuestro target iSCSI y lo
agregue a su base de datos. Hay que aclarar que iscsiadm tiene tres formas de operación

discovery: En este modo se pueden descubrir targets y agregarlos a la base de datos.

node: En este modo se administran los targets ya descubiertos y se pueden visualizar datos
acerca de estos nodos, así como conectarse a ellos.

session: En este modo se administran los targets a los que se está conectados (en los que
se ha hecho login).

71
Para descubrir nuestro target usamos obviamente “discovery“
# iscsiadm -m discovery -t sendtargets -p 192.168.0.4
192.168.0.4,1 iqn.2005-02.au.com.empresa:san.200G.samba

Con lo que le indicamos a iscsiadm que descubra los targets que le ofrece el portal
ubicado en 192.168.0.4. El método que usa para descubrirlo es “sendtargets“, que es el
método soportado más estable a la fecha (existen otros métodos, como por ejemplo uno que
resuelve nombre de targets).

Como vemos descubrió el target que instalamos anteriormente.

Por lo cual, si hacemos solo:

# iscsiadm -m discovery
192.168.0.4:3260 via sendtargets

Vemos que la información del servidor iSCSI target descubierto quedó almacenada en la
base de datos de iscsiadm

Ahora, si queremos saber cuál es la información que se almacenó sobre el target


descubierto, tenemos que operar en modo nodo

# iscsiadm -m node --targetname iqn.2005-02.au.com.empresa:san.200G.samba


-p 192.168.1.110
node.name = iqn.2005-02.au.com.empresa:san.200G.samba
node.transport_name = tcp
node.tpgt = 1
node.active_conn = 1
node.startup = manual
node.session.initial_cmdsn = 0
node.session.auth.authmethod = None
node.session.auth.username =
node.session.auth.password =
node.session.auth.username_in =
node.session.auth.password_in =
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 0
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
...

72
Login en el dispositivo

Ahora que la información del target ya está configurada, podemos empezar a usarlo. Para
ello debemos hacer login o autenticarnos en el target.

# iscsiadm -m node -targetname iqn.2005-02.au.com.empresa:san.200G.samba


-p 192.168.1.110 -l

La opción “-l” indica que queremos hacer login en el target. Esto significa que el disco
iSCSI estará disponible como un dispositivo de hardware más en nuestro servidor. Para
comprobar si el disco iSCSI se detecto y se “conectó” al equipo, basta con ver la salida de
dmesg

#dmesg
SCSI device sda: 390620475 512-byte hdwr sectors (199998 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 390620475 512-byte hdwr sectors (199998 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
sda: sda1
sd 1:0:0:0: Attached scsi disk sda

En el ejemplo el disco iSCSI se detectó y se “conectó” al equipo como un disco SCSI más.
También notamos que para el sistema nuestro disco iSCSI no se diferencia de un dsico
SCSI conectado físicamente.

Creación de particiones y formateo.

Aunque el disco iSCSI ya está conectado, no es usable hasta que definamos particiones en
él y las formateemos en un sistema que el kernel maneje. Para ello podemos usar fdisk o
alguna otra herramienta en Linux que pueda servir para formatear la partición ya montada.
Como dato extra, la partición en nuestros controladores de dominio se mostrará bajo el
nombre de sdb1 o hdb1 (dependiendo del tipo de disco que se tenga).

Se recomienda que la partición sea formateada con el sistema de archivos ext3 por
cuestiones de compatibilidad con sistemas Linux.

Montaje automático del dispositivo de hardware iSCSI

Como último punto relacionado con la configuración del iniciador, deberíamos definir que
se haga login al target y se conecte el disco automáticamente cada vez que se inicie el
servicio open-iscsi, de manera que no tengamos que hacerlo a mano luego de que nuestro
sistema inicie. Volvemos a utilizar iscsiadm para modificar el parámetro que maneja esta
opción:

73
# iscsiadm -m node -targetname iqn.2005-02.au.com.empresa:san.200G.samba
-p 192.168.1.110 -o update -n node.conn[0].startup -v automatic

Luego de esto, si hacemos

# /etc/init.d/open-iscsi restart

El disco iSCSI debería ser detectado automáticamente y conectado al equipo.

Montaje de nuestra partición ext3 del servidor de archivos en la carpeta designada


para almacenar la información de los clientes del dominio

Como último paso para la configuración de la partición ya en el PDC y BDC, debemos


montar la partición en la carpeta designada para guardar los archivos que estarán
disponibles en la red. Como vimos anteriormente, ésta carpeta es /home/samba, aquí es
donde montaremos nuestra partición, para que todos los archivos en vez de almacenarse en
el BDC o PDC, queden almacenados en el servidor de archivos.

Para ello, ejecutamos el siguiente comando:

#mount –t ext3 /dev/sdb1 /home/samba

Con esto, ya tenemos montada nuestra partición del servidor OpenFiler en ambos PDC y
BDC, solo falta crear las carpetas y archivos con sus respectivos permisos que estaban en
esa carpeta para que ya pueda usarse para guardar de manera centralizada la información de
los clientes del dominio. Referirse a la sección de configuración de samba en los temas “El
recurso compartido especial [netlogon]”, El recurso compartido especial [homes] y “El
recurso compartido especial [profiles]”

74

You might also like