Académique Documents
Professionnel Documents
Culture Documents
servidor SAMBA en
dominio y recursos
compartidos
Sobre Linux
Este manual describe la implementacin de un servidor
Controlador de Dominio con Samba y OpenLDAP en Ubuntu
Server o Ubuntu 12.04
Indice
Resumen ................................................................................................................................................... 1
Caracteristicas Generales ..........................................................................................................................
2
Capitulo 1. Caractersticas para Entornos Unix/Linux ............................................................................... 4
Caractersticas para Entornos Windows ............................................................................................... 5
Capitulo 2. Estructura del Arbol de Directorio (DIT) ................................................................................. 6
Captulo 3. Requerimientos de Software .................................................................................................. 8
Su rootInstalacin y Configuracin del servidor OpenLDAP ................................................................. 9
Configuracin Inicial del servicio slapd ............................................................................................... 16
Agregando los esquemas (schemas) necesarios ................................................................................. 18
Configurando las Listas de Control de Acceso (ACLs) ......................................................................... 20
Configurando los Indices de atributos ms usados ............................................................................ 21
Configuracin de los Registros de Eventos (logs) del servidor Slapd ................................................. 21
Configuracion de los logs en OpenLDAP ............................................................................................. 22
Configuraciones para sysklogd ............................................................................................................ 23
Configuraciones para syslog-ng ............................................................. Error! Bookmark not defined.
Configuracin de los lmites de consulta y conexin .......................................................................... 25
Revisin de permisos en archivos y directorios de Configuracin ..................................................... 25
Ejecutando una revisin sintactica del archivo de configuracin slapd.conf ..................................... 26
Capitulo 4. Iniciando el servidor slapd y haciendo Pruebas Preliminares .............................................. 27
Controlando el servicio Slapd ............................................................................................................. 29
Recursos adicionales ............................................................................................................................... 30
Sitios web ............................................................................................................................................ 30
Paginas de manual .............................................................................................................................. 30
Captulo 5. Configuracin del Cliente LDAP ............................................................................................ 31
Captulo 6. Configuracin de Samba y las herramientas smbldap-tools ................................................ 32
Instalacin y configuracin del servidor Samba ................................................................................. 32
Configuracines de Samba para Controlador de Dominio ................................................................. 33
Parametros Globales del servidor Samba ........................................................................................... 33
Configurando la autentificacin para el controlador de dominio ...................................................... 34
Configuracines del registro de eventos (logs) del servidor Samb ..................................................... 34
Resumen
Este manual describe la implementacin de un servidor Controlador de Dominio con Samba y OpenLDAP
en Ubuntu Server, el controlador de dominio servir para administrar de forma centralizada las cuentas
de usuario y grupo para sistemas Unix y GNU/Linux y tambin para cuentas de usuario, grupos, y
computadoras de confianza para sistemas Windows. En la implementacin se describe un entorno
hetereogeneo conformado por servidores GNU/Linux y clientes mixtos GNU/LInux y Windows. Se ven los
procedimientos para administrar las cuentas de usuario y grupos Unix/Linux y Windows, as como la
integracin de clientes Unix/Linux y Windows al dominio y algunas tareas operativas sobre los miembros
del dominio.
Caracteristicas Generales
La implementacin aqu descrita es para una red de computadoras ficticia de una empresa de
tamao pequeo/mediano. La instalacin del servidor controlador de dominio se realiza en la
distribucin Ubuntu Server 8.04 LTS amd64, el servidor solo tiene una interfaz de red conectado
al switch de la red local.
La Informacin de la red de la empresa EXAMPLE S.A. de C.V se describe a continuacin:
Dominio Samba/NT: EXAMPLE.
Dominio DNS: example.com.
Nombre NetBIOS del servidor PDC: PDC.
Nombre DNS FQDN: pdc.example.com.
Direccin IP de red para el dominio EXAMPLE : 192.168.1.0/24.
Direccin IP del servidor PDC: 192.168.1.3.
Direccin IP del gateway para la red LAN: 192.168.1.254.
Direccin IP del servidor DNS primario: 192.168.1.253.
Direccin IP del servidor DNS secundario: 192.168.1.254.
Direccin IP del servidor WINS: 192.168.1.3.
Es escencial tener a la mano la informacin de nuestra implementacin ya que ser utilizada en
capitulos/secciones posteriores. En el siguiente diagrama se describe la red: Figura 2.1. Mapa de
red Example
Como podemos ver en el diagrama anterior, la red ficticia de la empresa EXAMPLE usa un
esquema clsico, una red local con PCs, Laptops, impresoras y algunos servidores, contando un
firewall que da salida a Internet.
En las siguientes secciones se describen las caracteristicas de la implementacin especficas para
los diferentes entornos.
Nota
Este tipo de polticas pueden ser aplicadas de forma global, (para todos los usuarios del
dominio) por usuario por grupo de Domino.
Sincronizar el reloj del sistema con el reloj del servidor de dominio (net time)
Instalar aplicaciones de forma desatendida (usando WKPG) o Mapear unidades
de red automaticamente o Instalar Impresoras en red de forma desatendida en el
equpo local
Nota
Estas opciones se pueden aplicar a nivel global, por usuario o por grupo.
5
Con esta funcionalidad se pueden crear listas de control de acceso (ACL por sus
siglas en Ings) para permitir no el acceso a ciertas carpetas compartidas en red,
esta restriccin se puede aplicar por usuario o por grupo, as, por ejemplo, solo los
usuarios del grupo Contabilidad y la directora podrn entrar a la carpeta compartida
"contabilidad" y podrn: crear, modificar, borrar archivos o directorios dentro de
dicha carpeta compartida. o Adems se pueden tener permisos ms granulares en
cuanto a los accesos de los archivos y directorios dentro de las carpetas
compartidas, por medio de ACLs. Soporte para Perfiles Mviles (Roaming
Profiles) para clientes Windows.
Con esta caracterstica se puede almacenar el perfil del usuario en un servidor de red, y as,
cada vez que un usuario de dominio inicia sesin en un equpo podr tener sincronizado su
perfil disponible en cualquier equpo en el que inicie sesin.
Antes de continuar es importante recordar que la informacin de cuentas de usuario y grupos tanto
para cuentas Unix/Linux o Windows se almacenarn en un directorio LDAP en una estructura de
rbol especfica, en la siguiente seccin veremos la estructura de rbol del directorio LDAP.
Este DIT sigue las recomendaciones de el RFC 2307bis. No usamos ou=Hosts para almacenar
cuentas de computadoras ya que hay una diferencia entre hosts TCP/IP y cuentas de computadoras
Microsoft Windows. Usamos el contenedor ou=DSA para almacenar cuentas de seguridad
especficas para clientes LDAP).
No es obligatorio utilzar este DIT para tu propia implementacin, ms sin embargo, se recomienda
seguir estas recomendaciones para la configuracin inicial, en instalaciones posteriores podrs
adaptar el DIT y las configuraciones a tu gusto.
La implementacin de este documento ser hecha en la distribucin Ubuntu Server Hardy 8.04, la
mayora de los pasos podrn implementarse en Ubuntu Gutsy, a excepcin de las configuraciones
de NSS_LDAP y PAM_LDAP ya que en Hardy se consolido el archivo de configuracin de
ambos.
Instalaremos el siguiente software:
7
OpenLDAP 2.4.9-0ubuntu0.8.04.1
OpenLDAP es una implementacin libre de los protocolos LDAP.
Samba 3.0.28a-1ubuntu4.7
Samba es la implementacin libre de los protocolos SMB/CIFS el cual funcionar como
servidor Controlador de Dominio usando como base de informacin un directorio LDAP,
adems servir como servidor de impresoras y archivos.
smbldap-tools 0.9.4-1
Herramientas para administrar cuentas Unix/Posix y Samba almacenadas en un servidor
OpenLDAP
libnss-ldap 258-1ubuntu3
NSS son las bibliotecas de resolucin de entidades, servirn para resolver nombres de
usuarios a UID y viceversa, as como nombres de grupos a GID y viceversa usando como
fuente de informacin el directorio LDAP.
libpam-ldap 184-2ubuntu2
PAM son los modulos de autenticacin/autorizacin para otorgar permisos de acceso a
diferentes servicios locales (login, KDM, su, sudo, ssh, samba, cron, cups, etc.) usando
como fuente de informacin el servidor LDAP.
Es importante notar que todo el software usado es libre, todos en su mayora con licencias GPL.
En esta seccin instalaremos y configuraremos un servidor OpenLDAP junto con las herramientas
de administracin y cliente. La instalacin inicial la realizaremos con el asistente de instalacin de
APT.
Cuando se instala el paquete slapd al final nos lanzar un asistente de configuracin del servicio
slapd, ser ver como en la siguiente pantalla:
Al reconfigurar el paquete slapd se lanzar el mismo asistente que vimos atras, pero en este caso
ser reconfigurado desde cero.
La primer pantalla nos pregunta si queremos omitir la configuracin inicial del servidor slapd,
contestaremos: NO
10
Despues, nos pregunta el nombre de dominio con el que queremos configurar nuestro arbol de
directorio, este nombre de dominio ser configurado con la base de nuestro directorio (Base DN)
o la base de busqueda de nuestro directorio (Search Base).
Si ingresamos el nombre de dominio example.com entonces en formato Domain Component (DC
por sus siglas en Ingls) nos pondr nuestra base as: dc=example,dc=com.
11
Despues de configurar el nombre de dominio y la organizacin nos pide ingresar una contrasea
para el usuario Administrador del directorio LDAP, en este caso el Distinguished Name (DN por
sus siglas en Ingls) de la cuenta ser: cn=admin,dc=example,dc=com, usaremos la contrasea:
uacj
12
Ahora confirmaremos la contrasea para el Administrador del servidor LDAP, usaremos la misma
que se ingreso arriba: uacj
En este paso seleccionaremos el tipo de base de datos (data store) en el que almacenaremos la informacin de nuestro
directorio, utilizaremos el tipo HDB la cual es la opcin recomendada por Ubuntu y por el equipo de desarrollo de
OpenLDAP, anteriormente se recomendaba el tipo BDB pero se han encontrado razones por las cuales no se
recomienda BDB y esas mismas razones son las que han convencido de considerar como pastura el BDB Data Store
para OpenLDAP, podemos encontrar la referenca sobre los problemas presentados en BDB en la siguiente articulo
The King is Dead, Long Live the King.
13
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 opcin 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 instalacin
usando dichos archivos.
Si por alguna razn ya existia una base de datos de una instalacin anterior (como en nuestro caso
de re instalacin) el asistente nos pregunta si deseamos mover la base de datos vieja a un directorio
de respaldo (/var/backups/), elejimos la opcin Yes.
14
Y por ultimo nos pregunta si deseamos permitir conexiones al servidor LDAP usando la version
obsoleta del protocolo LDAP 2, por defecto esta desactivado, se recomienda no activarlo ya que
las todas aplicaciones que usaremos usan la versin 3 del protocolo LDAP, as que contestaremos:
No
La salida anterior nos dice que detuvo el servicio slapd, hizo un respaldo de la base de datos anterior
en el directorio /var/backups, regener un archivo de conifguracin en base a nuestras respuestas,
inicializa un directorio basico e inicia el servidor slapd con la nueva configuracin y el nuevo
directorio.
En la siguiente seccin veremos como configurar el servidor slapd para nuestros propositos.
Configuracin 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 instalacin debern de pertenecer a este usuario y
grupo.
Verificaremos que se creo un grupo de nombre openldap:
root@pdc:~# grep ldap /etc/group openldap:x:130:
Como vemos, nos creo el grupo openldap y tiene el GID: 130 Ahora
confirmaremos que el usuario openldap fue creado:
root@pdc:~# grep ldap /etc/passwd openldap:x:121:130:OpenLDAP Server
Account,,,:/var/lib/ldap:/bin/false
Como vemos nos creo el usaurio openldap, con el ID de Usuario (UID): 121, su grupo primario es
el grupo de ID 130 (openldap), su directorio $HOME es /var/lib/ldap, y esta cuenta no tiene un
shell vlido: /bin/false.
Tambin 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:
root@pdc:~# ls -ld /var/lib/ldap drwx-xr-x- 2 openldap
openldap 4096 May 28 12:25 /var/lib/ldap
Verificaremos que el demonio slapd sea ejecutado con el usaurio y grupo openldap, esto esta
definido en el archivo /etc/default/slapd, y por defecto est as:
16
Antes de modificar el archivo principal de configuracin del demonio slapd, nos aseguraremos de
que el demonio no este corriendo, lo verificamos as:
root@pdc:~# ps aux | grep slapd
openldap 9495 0.0 2.7 22124 3560 ? Ssl 23:20 0:00 /usr/sbin/slapd -g openldap
-u openldap -f /etc/ldap/slapd.d
Los esquemas (schemas) definen el tipo de objectos (objectClass) que podemos manejar en nuestro
arbol de directorio, adems 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 configuracin de slapd son los necesarios para poder
almacenar informacin de cuentas Unix/POSIX, almacenar informacin para crear 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 informacin,
el esquema LDAP Samba permite almacenar la siguiente informacin:
El esquema samba define ms atributos, pero los principales son estos que se mencionaron arriba,
para conocer los demas atributos ver el archivo /etc/ldap/schemas/samba.schema.
Los esquemas estan definidos en archivos dentro del directorio /etc/ldap/schema/, el esquema
para samba no viene incluido dentro de la instalacin 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/sambadoc/examples/LDAP/samba.schema.gz en formato comprimido, lo
descomprimiremos al vuelo y lo copiaremos al directorio /etc/ldap/schema/:
Ahora que ya tenemos el archivo del esquema de samba instalado necesitamos decirle al servidor
slapd que lo utilize, para hacer esto hacemos lo siguiente:
Creamos un archivo que llamaremos schema_convert.conf
18
Con el siguiente commando vamos a crear el archivo LDIF que necesitaremos LDIF
slaptest -f schema_convert.conf -F /tmp/ldif_output/
Editamos el archivo /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{3\}samba.ldif
El archivo slapd.conf que tenemos abierto ya viene preconfigurado con algunas reglas de acceso,
entre ellas una donde permite cambiar la contrasea a los usuarios Unix debidamente autenticados.
Ya que nuestro directorio tambin almacenar informacin de cuentas Samba, debemos permitir
que los usuarios Samba plenamente autenticados puedan cambiar su contrasea desde el mismo
cliente Windows. Las contraseas de cuentas Samba estan almacenadas en los atributos
sambaLMPassword y SambaNTPassword, por lo tanto permitiremos a los usuarios autenticados
poder cambiar su contrasea.
En la seccin # Schema and ObjectClass definitions agregamos la lnea
include /etc/ldap/schema/samba.schema
19
include /etc/ldap/schema/samba.schema
Por:
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by
self write
by * none
Es importante que los atributos ms consultados por los clientes y aplicaciones LDAP esten
debidamente indexados en la base de datos del directorio LDAP, de no ser as podramos 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 seccin de Indice de atributos del archivo /usr/share/slapd/slapd.conf (que tenemos
abierto)
Cambiar:
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
Si en un futuro desea agregar ms atributos a la lista de indices vea la seccin Agregar nuevos
indices de atributos en OpenLDAP.
No cerraremos este archivo ya que lo seguiremos utilzando en las siguientes secciones.
20
En esta seccin se vern los parametros requeridos para configurar el servicio slapd para el
resgistro de eventos, los cuales nos ayudarn a analizar la informacin provista por el directorio
LDAP, disgnosticar problemas o simplemente para verificar que todo este funcionando
correctamente. Veremos las configuraciones requeridas para el legendario syslogd o sysklogd y
syslog-ng.
Configuracion de los logs en OpenLDAP
16
32
(0x20 filter) search filter processing 64 (0x40 config) configuration file processin
64
128
256
512
21
En el valor del parametro loglevel podemos usar tanto el valor nmerico o su equivalente en ingls,
para desactivar el registro de eventos de slapd use el valor none.
Para nuestro caso usaremos el nivel stats (256) el cual nos mostrar informacin sobre el servicio
slapd, conexiones, y accesos al servidor.
En la seccin de logs cambiaremos:
# Read slapd.conf(5) for possible values loglevel
none
Por:
# Read slapd.conf(5) for possible values loglevel
stats
En la mayora de distribuciones Linux el sistema de logs esta controlado por el demonio syslog,
en Ubuntu el paquete sysklogd provee el demonio de logs predeterminado. En la configuracin
predeterminada de syslog en Ubuntu, los logs del servidor slapd son enviados con un facility
local4.*, y por default todos los mensajes del servidor slapd son enviados a los archivos
/var/log/debug y /var/log/syslog, esta configuracin hace que los mesajes de ldap se
mezclen con mensajes de sistema generales.
Configuraremos el demonio sysklogd para que los logs referentes a OpenLDAP sean enviados a
un archivo de logs independiente, por ejemplo, al archivo /var/log/ldap.log.
El archivo de configuracin del demonio syslog es /etc/syslog.conf, haremos una copia de respaldo
antes de hacer cambios.
root@pdc:~# cp /etc/rsyslog.d/50-default.conf{,.orig}
22
Y tambin agregaremos unas exclusiones a los logs debug y syslog para que no se registren logs
de ldap en ellos.
Cambiando configuracion para el log /var/log/syslog:
Cambiamos en el archivo archivo /etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none
-/var/log/syslog
Por
*.*;auth,authpriv.none;local4.none
-/var/log/syslog
-/var/log/debug
-/var/log/debug
Grabamos el archivo y nos salimos, despus creamos el archivo vacio para los de ldap:
root@pdc:~# touch /var/log/ldap.log
Ahora garbamos y nos salimos del archivo slapd.conf y reiniciamos el servidor syslog para que los cambios tomen
efecto:
root@pdc:~# sudo /etc/init.d/rsyslog restart
* Restarting system log daemon...
[ OK ]
Ahora pruebe hacer un tail -f /var/log/syslog, (termnelo con Ctrl + C) reinicie el servidor slapd y vea que no se
registre ningn evento relacionado al demonio slapd, si no aparece nada en dichos logs confirme que todos los logs se
estan enviando a /var/log/ldap
23
OPCIONAL.- Si usted utiliza logrotate para rotar los logs de OpenLDAP automticamente, cree el archivo de rotacin
para los logs de OpenLDAP:
# nano /etc/logrotate.d/rsyslog
Y listo, ahora sus logs se rotarn semanalmente y sern mantenidos durante 7 semanas, al cumplir
la 8a semana los logs sern rotados automticamente.
Configuracin de los lmites de consulta y conexin
Existe un limite de cuantas entradas sern devueltas en las operaciones de busqueda de los clientes
LDAP, este limite por defecto esta configurado a 500 lo que significa que solo sern devueltas 500
entradas a los clientes LDAP aun cuando la consulta no tenga limite.
# The maximum number of entries that is returned for a search operation
sizelimit 500
Nota
Este valor ser incrementado en configuraciones posteriores, en especfico cuando se haga una
replicacin/sincronizacin del DIT.
Revisin de permisos en archivos y directorios de Configuracin
Cambiamos el dueo y los permisos del archivo slapd.conf con los comandos:
root@pdc:~# chown root:openldap /usr/share/slapd/slapd.conf
Antes de volver reiniciar nuestro servidor para que nuestros cambios tomen efecto, verificaremos
que los permisos sean los adecuados:
Verificando que los permisos del archivo /usr/share/slapd/slapd.conf esten como se muestra aqu:
root@pdc:~
-l
# ls -rw23:45
/usr/share/slapd/slapd.conf
r----- 1
/usr/share/slapd/slapd.c
root openldap 5079 2009-01-11
onf
Antes de reiniciar nuestro servidor slapd realizaremos una comprobacin de que nuestras
configuraciones esten correctas, el comando slaptest nos har una revisin sintactica de nuestro
archivo de configuracin /usr/share/slapd/slapd.conf
root@pdc:~# slaptest -v -u config
file testing succeeded
Con la opcin -v habilitamos el modo verbose, esto es para que muestre detalles sobre posibles errores encontrados
en la configuracin.
La opcin -u permite que solo se ejeucta la revisin sintactica aun cuando no se puedan abrir los archivos de bases de
datos del directorio (/var/lib/ldap/).
Si el comando slaptest nos muestra algun 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
deminio slapd con el nivel de severidad mayor, por ejemplo:
root@pdc:~# slapd -d 16383
[ OK ]
1 2008 01
begin_of_the_skype_highlighting
1
01 FREE end_of_the_skype_highlighting :08:50) $
^Ibuildd@terranova:/build/buildd/openldap2.32.4.9/debian/build/servers/slapd
Jan 11 23:51:06 pdc slapd[9755]: slapd starting
2008
En el mensaje anterior nos muestra que el proceso slapd con el identificador de proceso (PID)
15795 se inicio correctamente.
Ahora revisaremos que el servidor slapd haya abierto el socket TCP/IP, en especifico veremos que
nos abra el puerto TCP/389.
Con el comando netstat veremos si el proceso slapd con PID 15795 abre el puerto TCP/389.
root@pdc:~# netstat -pltn | grep slapd
tcp
0
0 0.0.0.0:389
4400/slapd
tcp6
0
0 :::389
4400/slapd
0.0.0.0:*
LISTEN
:::*
LISTEN
Ahora haremos una consulta al servidor LDAP para ver si responde con lo ms bsico. Usaremos el comando
ldapsearch para buscar el namingContexts del DIT.
root@pdc:~# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
# dn: namingContexts:
dc=example,dc=com
# 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
esta funcionando correctamente.
26
Ahora haremos una busqueda en el directorio LDAP autenticado como el usuario admin del LDAP y haremos la
buqueda usando como base dc=example,dc=com, esto es para comprobar que la autenticacin y nuestras ACLs
funcionen correctamente, adems, de comprobar que el directorio se haya incializado con la estrucutra bsica..
root@pdc:~# ldapsearch -x -D "cn=admin,dc=example,dc=com" -b "dc=example,dc=com" -W
Enter LDAP Password:uacj
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# example.com dn:
dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass:
organization o: Example
S.A. de C.V.
dc: example
# admin, example.com dn:
cn=admin,dc=example,dc=com
objectClass:
simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator userPassword::
e2NyeXB0fWUwTng4TmRUZk54Wm8=
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Si deseamos que el servidor slapd sea iniciado automticamente al arranque del sistema, usaremos
el comando:
27
Cuando se instala el paquete slapd, este agregar el servicio slapd para que sea iniciado
automaticamente al arranque del sistema, por lo que es posible que reciba un mensaje como el
siguiente:
root@pdc:~# update-rc.d slapd defaults
System startup links for /etc/init.d/slapd already exist.
Si deseamos que el servidor slapd NO sea iniciado al arranque del sistema usaremos el comando:
root@pdc:~# update-rc.d -f slapd remove
Removing any system startup links for /etc/init.d/slapd ...
/etc/rc0.d/K20slapd
/etc/rc1.d/K20slapd
/etc/rc2.d/S20slapd
/etc/rc3.d/S20slapd
/etc/rc4.d/S20slapd
/etc/rc5.d/S20slapd
/etc/rc6.d/K20slapd
Con el comando anterior slapd ya no ser iniciado al arranque del sistema, para controlarlo se
tendr que hacer con los comandos antes mencionados.
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se
aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas
utilizados en este capitulo.
28
Paginas de manual
Antes de modificar el archivo de configuracin global del cliente LDAP, respalde el archivo:
root@pdc:~# cp /etc/ldap/{,.orig}
dc=example,dc=com
ldap://127.0.0.1
Y grabamos.
29
Los parametros antes definidos son de uso general, si desea usar parametros diferentes para un
usuario de sistema en particular cree un archivo ~/.ldaprc dentro del directorio home del usuario,
por ejemplo:
root@pdc:~# nano ~/.ldaprc
Con el contenido:
BASE
URI
BINDDN
dc=example,dc=com
ldap://127.0.0.1
cn=admin,dc=example,dc=com
Captulo
6. Configuracin
herramientas smbldap-tools
de Samba y
las
30
El paquete que instala la parte servidor de samba preconfigurado con algunos parmetros, adems
de que importa los usuarios de sistema en /etc/passwd a la base de datos de cuentas samba, en
nuestro caso esta configuracin no nos sirve por lo que eliminaremos la configuracin creada y los
archivos de configuracin que se crearon, para inicializar la configuracin de samba detenemos
los servicios samba siga los siguienes pasos:
root@pdc:~# sudo service smbd stop smbd
stop/waiting
Nota
En la siguiente seccin podemos continuar con los parametros que nos intersan.
Parametros Globales del servidor Samba
Soporte para habilitar privilegios de Grupos de Dominio Samba: enable privileges = yes, este
parametro es til por ejemplo para dar privilegios a los usuarios miembros del grupo Domain
Admins para unir equpos Windows a un Dominio NT.
Crearemos un archivo /etc/samba/smb.conf nuevo con los siguientes parametros:
El inicio de la seccin global quedar as:
[global]
workgroup = EXAMPLE
netbios
name = PDC-SRV
server string =
Servidor PDC-SRV
wins support =
yes
os level = 33
El parametro map to guest = Bad User define que cuando un usuario no existente (en el dominio)
se conecte al servidor, el servidor smbd mapear esa conexin al usuario anonimo, pero las
conexines de usuarios que se autentiquen con una contrasea invalida sern rechazadas.
Configuracines del registro de eventos (logs) del servidor Samb
La configuracin anterior especifica que no se envan los logs al demonio syslog local, el nvel de
severidad de logs es 0 (ms bajo), se define un tamao de logs de 50M y los logs de las conexiones
de los equipos o usuarios clientes se guardan en el directorio /var/log/samba con el formato
MAQUINA.log.
l
32
Ahora definiremos los parametros necesarios para que samba utilice el directorio LDAP, por lo
que en la seccin de ### Misc ###.
####### Misc #######
socket options = TCP_NODELAY SO_RCVBUF=8192
SO_SNDBUF=8192
username map = /etc/samba/smbusers
passdb backend = ldapsam:ldap://127.0.0.1/
ldap admin dn
= cn=admin,dc=example,dc=com
ldap suffix =
dc=example,dc=com
ldap group suffix = ou=Groups
ldap
user suffix = ou=Users
ldap machine suffix = ou=Computers
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
33
Ahora configuraremos los parametros para especificar el juego de caracteres predeterminado para
archivos dos y unix en la seccin de ### Misc ### .
dos charset = 850
Unix charset = ISO8859-1
Hasta aqu termina la seccin Global de smb.conf, en las siguientes secciones configuraremos
secciones especiales para nuestro Controlador de Dominio.
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
jmedina, este usuario tiene un directorio $HOME en la ruta /home/jmedina, con este recurso
compartido, cada vez que el usuario jmedina inicia sesin por Samba, tendr disponible un recurso
compartido en el servidor con el nombre "jmedina" y por medio de l podr entrar a sus archivos
privados en el servidor.
[homes]
comment = Home Directories
valid users = %U
read only
= no
create mask = 0664
directory mask = 0775
browseable = no
La linea valid users = %U indica que este recurso compartido solo esta 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.
34
Este es otro recurso compartido especial, el recurso [netlogon] solo es utilizado cuando Samba
actua como un Controlador de Dominio, el proposito de este recurso compartido es almacenar los
scripts de inico (logon scripts), estos scripts son ejecutados cada vez que un usuario inicia sesin
en el dominio.
[netlogon]
path = /home/samba/netlogon/
browseable = No
read only =
yes
La opcin browseable = No especifica que este recurso compartido no ser visible en la lista de
shares disponibles en el servidor, ms sin embargo, si podr ser accesado para los usuarios que
hacen login en el dominio, el acceso ser de solo lectura.
Grabamos el archivo smb.conf y nos salimos a la terminal.
La
ultima
opcin
TIP (NO HACER): Meter opcin para que los usuarios miembros del grupo "Domain Admins"
tengan permiso de escritura a este recurso compartido, as, estos usuarios podrn crear los logon
scripts.
Ahora creamos el directorio base en el cual almacenaremos los logon scripts:
root@pdc:~# mkdir -p --mode 755 /home/samba/netlogon
TIP(NO HACER): Cambiar los permisos a root:"Domain Admins" con permisos 775
Ahora crearemos un logon script bastante simple que har las siguientes operaciones
35
El recurso compartido [profiles] tambin es de uso especial y solo es necesario cuando Samba se
configura como Controlador de Dominio, el proposito de este recurso compartido es almacenar
los Perfiles de Usuarios, en especifico es usado cuando se configura que los usuarios de dominio
utilizen los Perfiles Mviles (Roaming Profiles), por lo que agregamos las siguientes lineas
[profiles]
path =
/home/samba/profiles
read
only = No
create mask =
0600
directory mask = 0700
browseable = No
guest ok =
Yes
profile acls = Yes
csc policy = disable
force
user = %U
valid users = %U @"Domain Admins"
La ruta de este recurso compartido ser usado con el atributo ProfilePath para indicar la ruta en
donde esta almacenado el Perfil del Usuario, por ejemplo, la entrada en la SAM del dominio para
el usuario jmedina especifica: ProfilePath=\\PDC-SRV\profiles\jmedina, lo cual indica que el
perfil del usuario jmedina estar en el directorio local /home/samba/profiles/jmedina.
Creamos el directorio para el recurso compartido profiles desde otra terminal como root ponemos
el siguiente comando:
root@pdc:~# mkdir -p --mode 1777 /home/samba/profiles
Nota
37
2008-06-18
23:29
Nota
Para poder manipular los archivos tdb podemos utilizar las herramientas del paquete tdbtools.
Ahora si podemos iniciar el servidor samldaba
root@pdc:~# sudo service smbd start smbd start/running,
process 4306 (puede cambiar este numero)
En la siguiente seccin veremos como configurar las herramientas smbldap-tools para facilitar la
administracin de cuentas de usuario y grupos en sistemas basados en Samba y OpenLDAP.
Instalacin y Configuracin de las smbldap-tools
38
/usr/share/doc/smbldap-tools/examples/smbldap_bind.conf
Antes de empezar a configurar estas herramientas cambiaremos los permisos de acceso para estos
archivos,
Entramos al directorio /etc/smbldap-tools:
root@pdc:~# cd /etc/smbldap-tools
Cambiamos el usuario y grupo propietarios para los archivos, el usaurio dueo debe de ser root y
el grupo dueo debe de ser openldap.
root@pdc:~# chown root:openldap smbldap*
Nadie ms a exepcion del usuario root tendr permiso de lecutra y escritura sobre los archivos, el
grupo openldap solo tendr permisos de lectura.
root@pdc:~# chmod 640 smbldap*
Cambiar:
slaveDN="cn=Manager,dc=company,dc=com" slavePw="secret"
masterDN="cn=Manager,dc=company,dc=com"
masterPw="secret"
39
Por:
slaveDN="cn=admin,dc=example,dc=com" slavePw="uacj"
masterDN="cn=admin,dc=example,dc=com"
masterPw="uacj"
Nota
principal
de
configuracin
de
smbldap-tools
TODO: Dividir los parametros globales para el dominio Samba y los parametros para especificar
en que servidor LDAP almacenaremos la informacin de cuentas Unix/Samba.
Primero editaremos los parametros 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-2911508632-2405292923-4115677068"
# Domain name the Samba server is in charged.
# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="IDEALX-NT" sambaDomain="EXAMPLE"
# Slave LDAP server
# Ex: slaveLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1" slaveLDAP="ldap://127.0.0.1"
40
Conifguraciones de TLS/SSL:
Ya que en esta instalacin inicial no usaremos comunicacione seguras por SSL/TLS
desactivaremos el uso de TLS en nuestra configuracin.
# 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 configuracin servir como
variable para otras configuraciones, todos los contenedores para almacenar cuentas y grupos
estarn bajo este Base DN.
# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=example,dc=com"
# 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="SSHA"
# 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"
# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="idealx.com" mailDomain="example.com"
41
# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/false"
# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"
# Default mode used for user homeDirectory
userHomeDirectoryMode="700"
#
Gecos
userGecos="System User"
# Default User (POSIX and Samba) GID
defaultUserGid="513"
# Default Computer (Samba) GID
defaultComputerGid="515"
# 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"
Nota
42
Ahora que ya hemos editado los archivos de configuracin de las herramientas smbldap-tools,
inicializaremos nuestro directorio LDAP con la informacin para el dominio NT: EXAMPLE
El comando smbldap-populate inicializar nuestro directorio LDAP con la siguiente informacin:
Para inicializar nuestro directorio LDAP con la informacin de arriba usaremos el comando
smbldap-populate de la siguiente manera:
43
root@pdc:~# smbldap-populate
Populating LDAP directory for domain EXAMPLE (S-1-5-21-291150863224052929234115677068)
(using builtin directory structure)
entry dc=example,dc=dev already
exist.
adding new entry: ou=Users,dc=example,dc=com adding new entry:
ou=Groups,dc=example,dc=com adding new entry: ou=Computers,dc=example,dc=com
adding new entry: ou=Idmap,dc=example,dc=com adding new entry:
uid=root,ou=Users,dc=example,dc=com adding new entry:
uid=nobody,ou=Users,dc=example,dc=com adding new entry: cn=Domain
Admins,ou=Groups,dc=example,dc=com adding new entry: cn=Domain
Users,ou=Groups,dc=example,dc=com adding new entry: cn=Domain
Guests,ou=Groups,dc=example,dc=com adding new entry: cn=Domain
Computers,ou=Groups,dc=example,dc=com adding new entry:
cn=Administrators,ou=Groups,dc=example,dc=com adding new entry: cn=Account
Operators,ou=Groups,dc=example,dc=com adding new entry: cn=Print
Operators,ou=Groups,dc=example,dc=com adding new entry: cn=Backup
Operators,ou=Groups,dc=example,dc=com adding new entry:
cn=Replicators,ou=Groups,dc=example,dc=com entry
sambaDomainName=EXAMPLE,dc=example,dc=com already exist. Updating it...
Please provide a password for the domain root:
Changing UNIX and sdamba passwords for root
New password:uacj
Retype new password:uacj
Al final se nos solicita que asignemos una contrasea para el usuario root del dominio, utilizaremos
la contrasea: uacj
Si al llenar el directorio LDAP no se presenta error alguno, entonces al final tendremos nuestro
arbol de directorio con la siguiente estructura.
dc=EXAMPLE,dc=COM
|
,___ ou=Users
Contenedor para almacenar cuentas de
usuario para sistemas Linux/Unix y Windows
|
|
|
,_______uid=root
Usuario Unix/Samba root (Administrador
Unix y Administrador de Dominio Samba)
|
|
|
,_______uid=nobody
d
Usuario Unix/Samba nobody (Cuenta
anonima para entornos Unix y Dominio Samba)
|
,___ ou=Computers
Contenedor para las cuentas de
Computadoras (Trusted Machine Accounts) para sistemas Windows
|
,___ ou=Groups
Contenedor para alamacenar Grupos de
sistema para sistemas Unix y Windows
|
( o para cualquier otro sistema LDAP-aware).
|
,_______cn=Domain Admins
Dominio NT: EXAMPLE
|
44
,_______cn=Domain Users
EXAMPLE
|
,_______cn=Domain Computers
del Dominio NT: EXAMPLE
45
Despues de haber llenado el directorio con los usuarios y grupos de dominio predeterminados, es
necesario reiniciar samba para que tenga conocimiento de la nueva informacin.
root@pdc:~# sudo service smbd restart
smbd stop/waiting smbd
start/running.process 25663
En esta seccin veremos algunos comandos que nos podrn servir para verificar que las cuentas de
samba sean las almacenadas en el directorio ldap, y tambin se hace una prueba de conexin al
servidor samba.
Probando Samba con Cuentas en el Directorio LDAP
El comando pdbedit nos servir para hacer un listado de usuarios Samba, el comando pdbedit se
conectar al servidor LDAP para obtener la informacin, si todo fue configurado correctamente
nos deber de mostrar lo siguiente:
root@pdc:~# pdbedit -L
root:0:root nobody:65534:nobody
nota si llegara a salir el error Failed to issue the StartTLS instruction: Protocol error,
editamos el archivo smb.conf y agregamos la siguiente lnea:
ldap ssl = off
[ OK ]
[ OK ]
46
Como se vio antes, los usuarios samba deben de estar mapeados al UID de un usuario Unix, en
este caso el usuario root Samba esta mapeado al usuario root Unix con UID 0 y el usuario nobody
Samba esta mapeado al usuario nobody Unix con UID 65534.
Si deseamos mostrar los detalles de informacin de un usuario samba usamos el comando pdbedit
de la siguiente manera:
root@pdc:~# pdbedit -Lv root
Unix username:
root
NT username:
root
Account Flags:
[U
]
User SID:
S-1-5-21-2911508632-2405292923-4115677068-500
Primary Group SID:
S-1-5-21-2911508632-2405292923-4115677068-513
Full Name:
root Home
Directory:
\\PDC-SRV\root
HomeDir Drive:
H:
Logon Script:
Profile Path:
\\PDC-SRV\profiles\root
Domain:
EXAMPLE
Account desc:
Workstations:
Munged dial:
Logon time:
0
Logoff time:
never
Kickoff time:
never
Password last set:
Wed, 14 Jan 2009 10:50:24 CST
Password can change: Wed, 14 Jan 2009 10:50:24 CST
Password must change: never
Last bad password
: 0
Bad password count : 0
Logon hours
: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
47
PREGUNTA
root@pdc:~# net groupmap list
Domain Admins (S-1-5-21-2911508632-2405292923-4115677068-512) -> 512
Domain Users (S-1-5-21-2911508632-2405292923-4115677068-513) -> 513
Domain Guests (S-1-5-21-2911508632-2405292923-4115677068-514) -> 514
Domain Computers (S-1-5-21-2911508632-2405292923-4115677068-515) -> 515
Administrators (S-1-5-32-544) -> 544
Account Operators (S-1-5-32-548) -> 548
Print Operators (S-1-5-32-550) -> 550
Backup Operators (S-1-5-32-551) -> 551
Replicators (S-1-5-32-552) -> 552
En la salida anterior, la informacin del grupo Windows/Samba se encuentra del lado izquierdo
separada de la informacin del grupo Unix del lado derecho. Por ejemplo, podemos ver que el
grupo Domain Admins con SID S-1-5-21-2911508632-2405292923-4115677068-512 esta
mapeado al grupo Unix con GID 512.
Si desea conocer una lista de los SID bien conocidos en sistemas Windows ver el articulo
Wellknown security identifiers in Windows operating systems.
En el captulo siguiente Configuracin de la resolucin de Identidades con NSS_LDAP veremos
como obtener la informacin de los grupos Unix va LDAP usando NSS_LDAP para la
centralizacin de usuarios y grupos Unix en un directorio OpenLDAP y as tener un mapeo
consistente de informacin de usuarios y grupos WIndows y Unix almacenados en un servidor de
directorio centralizado con OpenLDAP.
Probando conexiones al servidor Samba usando cuentas en LDAP
PREGUNTAEXAMEN
root@pdc:~# smbclient //localhost/netlogon -U root
Password:uacj
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 3.0.28a] smb: \> quit root@pdc:~#
49
En Debian/Ubuntu el plugin LDAP para la biblioteca NSS es provisto por el paquete libnss-ldap,
lo instalaremos en el sistema va apt-get usando el siguiente el comando:
root@pdc:~# aptitude install libnss-ldap
Importante
50
Nota
El parmetro nss_initgroups_ignoreusers define una lista de usuarios para los cuales se van a
ignorar los grupos almacenados en el directorio LDAP, esto necesario para servicios que
inician antes del servidor OpenLDAP o la red.
Los permisos del archivo /etc/ldap.conf deben de ser 644, como se muestra a continuacin:
root@pdc:~# ls -l /etc/ldap.conf
-rw-r--r-- 1 root root 467 2008-06-18 23:37 /etc/ldap.conf
51
Ahora editamos el archivo para decirle que para obtener la informacin de usuarios, grupos
tambin consulte el directorio LDAP especificado en el archivo /etc/ldap.conf.
root@pdc:~# nano /etc/nsswitch.conf
Cambiar:
passwd:
group:
shadow:
compat
compat
compat
Por:
passwd:
group:
shadow:
compat ldap
compat ldap
compat ldap
hosts:
Nota
Tambin aprovechamos para que la resolucin de nombres de hosts incluya al servidor WINS
incorporado con Samba para resolver nombres netbios.
Despues de guardar los cambios haremos unas pruebas con el comando getent para verificar que
si este haciendo las consultas al directorio LDAP.
Verificando la resolucin de usuarios:
root@pdc:~# getent passwd | grep -E 'root|nobody'
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh root:x:0:0:Netbios
Domain Administrator:/root:/bin/bash
nobody:x:65534:514:nobody:/nonexistent:/bin/false
En la salida del comando anterior deberemos de ver dos resultados para root y nobody, 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.
root@pdc:~# getent group | grep -E 'root|Domain' root:x:0:
Domain Admins:*:512:root
Domain Users:*:513:
Domain Guests:*:514:
Domain Computers:*:515:
52
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 resolucin de entidades muestre a que grupos
pertenece el usuario root.
Inicie una nueva sesin como root en el equipo ya sea por ssh o localmente en una TTY, y despues
ejecute lo siguiente:
PREGUNTAEXAMEN root@pdc:~#
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 esta en el directorio
LDAP.
Importante
53
Que es PAM?
PAM son las siglas de Plugable Authentication Modules que basicamente es un mecanismo
flexible para autenticar usuarios.
Cada linea de los archivos de configuracin de PAM contiene tres columnas ms argumentos
opcionales, a continuacin se muestra un ejemplo:
password
requisite
pam_unix.so
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
A continuacin se describe cada una de las columnas involucradas en las configuraciones de PAM:
Tipos de Modulos
Hay cuatro tipos de modulos PAM que a continuacin se describen.
authentication (autenticacion) .- Tareas encaminadas a comprobar que, efectivamente, o el
usuario es realmente quien dice ser. A menudo, cuando se habla de PAM, slo o se tiene en cuenta
esta tarea, ignorando las demas. Estas tareas ofrecen incluso un sistema de credenciales que
permiten al usuario ganar ciertos privilegios fijados por el administrador.
1. Los modulos establecen que el usuario es quien dice ser instruyendo la aplicacion
(servicio) que le pregunte al usuario una contrasea u otro mecanismo de
identificacin.
2. El modulo puede otorgar membrecia a un grupo u otros privilegios a traves de las
propiedades de las credenciales del usaurio.
account (cuenta) .- En este grupo se engloban tareas que no estan relacionadas a directamente
con la autenticacion. Algunos ejemplos son permitir/denegar el acceso o en funcion de la hora,
los recursos disponibles o, incluso, la localizacion. Ofrece o o verificacion de cuentas de usuario.
Por ejemplo, se encarga de determinar si el usuario o tiene o no acceso al servicio, si su contrasena
ha caducado, etc.
Este ltimo tipo de modulo es requerido para actualizar el token de autenticacin asociado
a un usuario.
session (sesin) .- En este grupo se engloban tareas que se deben llevar a cabo antes o de iniciarse
el servicio y despues de que este finalice. Es especialmente util para e mantener registros de
acceso o hacer accesible el directorio home del usuario.
Estos modulos estan asociados a las realizacin de tareas que necesitas que sean hechas
para el usuario antes de que se le pueda dar acceso a un servicio o despues de que el servicio
ha sido provisto.
Tales tareas incluyen registrar (logging) informacin correspondiente al usuario, montar
directorios, y abrir y cerrar archivos o intercambio de datos con otro usuario
Respaldando la configuracin de PAM
Ya que la configuracin de PAM y sus modulos es muy importante, y cualquier configuracin mal
hecha podra causar que ya no podamos iniciar sesin 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
55
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 modulos de autenticacin PAM con LDAP
El mdulo de autenticacin pam_ldap debe ser llamado por el nombre pam_ldap.so en los archivos
de configuracin, el mdulo pam_ldap.so utiliza los parmetros de configuracin definidos en el
archivo /etc/ldap.conf para conectarse y consultar el servidor LDAP en donde buscar la
informacin de cuentas UNIX.
Para nuestro usaremos los parmetros definidos en la seccin anterior ya que los parmetros para
NSS LDAP y PAM LDAP son los mismos.
Configuracin del modulo auth
Para
configurar
el
mdulo
account
con
pam_ldap.so
edite
el
archivo
/etc/pam.d/commonaccount:
nanroot@pdc:~# nano /etc/pam.d/common-account
required
pam_ldap.so
pam_unix.so account
session
optional
required
pam_ldap.so
pam_unix.so session
Para
configurar
el
mdulo
password
con
pam_ldap.so
edite
el
archivo
/etc/pam.d/commonpassword:
root@pdc:~# nano /etc/pam.d/common-password
sufficient
sufficient
pam_deny.so
Al inicio del archivo y antes de la carga del mdulo pam_unix.so agregue la carga del modulo
pam_cracklib.so, por ejemplo:
password
required
ocredit=2 retry=3
password
sufficient
password
sufficient
required
pam_deny.so
57
Nota
Hacemos lo siguiente:
ln -s /usr/sbin/smbldap-passwd /usr/sbin/smbldap-passwd.cmd
Para ms informacin de como crear cuentas unix con las herramientas smbldapt-tools ver la
Seccin Administracin de cuentas Unix y Samba va smbldap-tools.
58
Verificando que los UID y GID sean consistentes con los del LDAP:
jmedina@pdc:~$ id
uid=1008(jmedina) gid=513(Domain Users) groups=513(Domain Users)
Probando crear archivos y directorios y ver que reporte los UID y GID en los archivos y dirs creados:
jmedina@pdc:~$ mkdir DirPrueba
jmedina@pdc:~$ touch
ArchivoPrueba jmedina@pdc:~$ ls l total 4
-rw-r--r-- 1 jmedina Domain Users
0 2008-07-17 21:24 ArchivoPrueba drwxr-xrx 2 jmedina Domain Users 4096 2008-07-17 21:24 DirPrueba
El usuario puede cambiar su propia contrasea desde un shell usando el comando passwd.
jmedina@pdc:~$ passwd
Enter login(LDAP) password:123456
New UNIX password:NuevaContraseA
Retype new UNIX password:NuevaContraseA LDAP password information changed for jmedina passwd:
password updated successfully jmedina@pdc:~$
Nota
Recuerde que el comando passwd esta ligado a la bilioteca NSS y NSS a su vez con LDAP y realizar una operacin de cambio de
contrasea en el directorio LDAP.
Si utiliza una nueva contrasea debil el sistema (con ayuda de pam_cracklib) le notificar, por ejemplo:
59
jmedina@pdc:~$ passwd
Enter login(LDAP)
password:
New UNIX password:
BAD PASSWORD: it's WAY too short
New UNIX password:
BAD PASSWORD: it is based on your username
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
New UNIX password:
BAD PASSWORD: it is based on a dictionary word passwd:
Authentication token manipulation error passwd:
password unchanged
Note que las reglas de cracklib estan funcionando ya que no permite contraseas simples e
inseguras.
En este cpitulo explicaremos como migrar las cuentas locales de sistema (/etc/passwd) y los
grupos locales (/etc/group) a nuestro directorio LDAP.
En Ubuntu no se incluyen las herramientas necesarias para migrar cuentas Unix a LDAP, sin
embargo, estas herramientas estan como ejemplos en el directorio
necesitaremos
/usr/share/doc/smbldaptools/examples/migration_scripts/,
copiar estas herramientas a /usr/sbin/, lo haremos as:
Instalando el script para migrar cuentas unix:
root@pdc:~# zcat /usr/share/doc/smbldap-tools/examples/migration_scripts/smbldap-migrateunixaccounts.gz > \ /usr/sbin/smbldap-migrate-unix-accounts
Ahora le configuraemos los permisos a estos dos scripts para que puedan ser ejecutados sin
probleas:
root@pdc:~# chmod 755 /usr/sbin/smbldap-migrate-unix-*
60
Ahora que ya tenemos los scripts para migrar cuentas locales al directorio LDAP seguiremos con
las secciones para migrar cuentas y grupos.
Migracin de Usuarios (/etc/passwd y /etc/shadow)
2. Eliminar de ambos archivos todas las cuentas que no quieras importar en el directorio
LDAP
root@pdc:~# for user in root nobody bin daemon
do
export user
perl -i -pes@^$ENV{user}:(.*)\n@@
/tmp/passwd
perl -i -pes@^$ENV{user}:(.*)\n@@
/tmp/shadow done
Nota
61
Ahora migraremos los grupos del archivo /etc/group. El proceso de Migracin deber de hacerse
como sigue:
1. Hacer una copia del archivo /etc/group a un directorio temporal:
root@pdc:~# cp /etc/group /tmp/
2. Elimina todos los grupos que no quieres que se importen al directorio LDAP
root@pdc:~# for group in root bin daemon
do
export group
Nota
62
Normalmente la informacin de las cuentas de usuario y grupos de sistema (Posix) y Samba estn
almacenadas en una serie de archivos comunes, como /etc/passwd, /etc/group,
/etc/shadow
Para administrar los usuarios y grupos ya no podremos utilizar las herramientas ordinarias como:
useradd, passwd, groupadd, etc, en su lugar usaremos las herramientas smbldap-tools, estas
herramientas estn especialmente diseadas para administrar usuarios y grupos de sistema y samba
almacenados en un directorio LDAP.
A continuacin se describirn estas herramientas para realizar las tareas comunes de
administracin de usuarios y grupos.
Atributos predefinidos para la creacin de usuarios
Las herramientas smbldap-tools tienen algunos archivos de configuracin que son usados para
configurar las cuentas en el directorio LDAP, adems se pueden establecer valores predefinidos
para algunos atributos de cuentas y grupos, tanto Posix como Samba. El archivo principal de
configuracin de las smbldap-tools es: /etc/smbldap-tools/smbldap.conf. Este archivo fue
generado en el cpitulo Configuracin de Samba y las herramientas smbldap-tools en la seccin
Instalacin y Configuracin de las smbldap-tools.
Creacin de cuentas de usuarios
Para la administracin de usuarios, en especifico agregar usuarios, usaremos el comando smbldapuseradd. Una lista de las opciones que podemos usar a la hora de crear usuarios se muestran en la
siguiente tabla. Como ya vimos arriba, muchas opciones las podemos predeterminar en el archivo
/etc/smbldap-tools/smbldap.conf, algunas cadenas que inician con $ se refieren a parmetros
variables definidas en archivo de configuracin /etc/smbldaptools/smbldap.conf.
Opcin Descripcin
-a
-w
-u -u
-g
Ejemplo
Valor Predeterminado
usuario
Primero
disponible
siguiente
GID
512,550
-d /var/usuario
$userHomePrefix/usuario
-s
-s /bin/ksh
$userLoginShell
-c
-m
-P
$userGecos
-A
-B
64
Opcin Descripcin
Ejemplo
-C
Valor Predeterminado
$userSmbHome
$userHomeDrive
-F
$userProfile
-N Juan
-S
-S Perez
Por ejemplo, Agregaremos uno usuario a Usuario Red 1 con el login usuariored1 el cual:
65
Digamos que para agregar un usuario que solo sera usado para ejecutar comandos
administrativos y agregar maquinas al dominio, entonces deber de pertenecer al grupo Domain
Admins: Ejecutamos:
root@pdc:~# smbldapuseradd -a -m -G 512
/bin/bash
-s Changing UNIX
and
samba passwords for
usuarioadmin
New
password:123456
Retype new
password:123456
-P
usuarioadmin
Nota
Para conocer acerca de las dems opciones del comando smbldap-useradd ver la pgina del
manual del comand smbldap-useradd(8).
Hay opciones como -C, -D, -E y -F que sera mejor desactivarlas de forma global en el archivo
/etc/smbldap-tools/smbldap.conf.
Para ver como configurar los privilegios para que usuarioadmin pueda unir maquinas al dominio
ver la seccin Delegando tareas y privilegios a los miembros del dominio.
Eliminacin de cuentas de usuarios
Para eliminar una cuenta de usuario, se usa el comando smbldap-userdel, por ejemplo:
root@pdc:~# smbldap-userdel usuariored1
66
Si deseas eliminar la cuenta usuariored1 del directorio LDAP, y si tambin deseas eliminar el
directorio $HOME, use el parmetro -r, por ejemplo: comando:
root@pdc:~# smbldap-userdel -r usuariored1
-R
Aviso
El usar la opcin -r es peligroso ya que puede eliminar datos importantes del usaurio, usalo
con cuidado.
Cambiando la contrasea de un usuario
Si desea permitir que los usuarios Windows puedan cambiar su contrasea desde el mismo
Windows vea la seccin Permitiendo que usuarios Windows cambien su contrasea de dominio.
Modificacin de cuentas de usuario
Para modificar una cuenta de usuario, usamos el comando smbldap-usermod. Las opciones
disponibles estn listadas en la siguiente tabla:
Tabla 10.3. Tabla de opciones disponibles para el comando smbldap-usermod
67
Opcin Descricpcin
Ejemplo
-c
-c
"Usuario
Administrador"
-d
-d /var/user
-u
-u 1003
Opcin Descricpcin
Ejemplo
-g 1003
-g
Estable el valor para el Group ID (GID). Este ser el grupo primario del usuario
-G
Agrega la cuenta a uno o ms grupos suplementarios (Secundarios), si se van a establecer varios -G 512, 550
grupos suplementarios, cada nombre de grupo va seprado por coma.
-s
-N
-S
-P
-a
-e
-A
-A 1
-B
El usuario debe cambiar su contrasea la primer vez que inicia sesin: 0 = No, 1 = S
-B 1
-C
Establece la ruta para el recurso compartido homes en el servidor Samba, usado por la opcin -C \\PDC\homes
D
-s /bin/ksh
68
NOTA: Se se desea desactivar el mapeo del directorio home en el servidor al usuario, se asigna -C ""
un valor vaco:
-D
Estable la letra de la unidad de red con la que se mapear el $HOME del usuario en el servidor -D H:
(-C) al usuario cuando inicie sesin en el dominio. NOTA: Hay que agregar los ":" (dos puntos)
al final de la letra.
NOTA: Si no se desea mapear el home del usaurio, debemos de asignar un valor vaco.
-E
-D ""
Nombre del script batch (DOS) para ejecutarse al inicio de sesin del usuario. NOTA: La ruta al -E common.bat
logon script debe de ser relativa a la ruta del recurso [netlogon]
NOTA: Si no se desea ejecutar un logon script para el usuario se debe de especificar un valor -E ""
vaco.
Opcin Descricpcin
-F
Ejemplo
Establece la ruta al directorio (el el servidor) del perfil de Windows para uso con perfiles mviles -F
\\PDC\profiles\usuario
(Roaming Profiles)
NOTA: Si no se desea activar el uso de roaming profiles para el usuario se debe de asignar un -F ""
valor vacio.
-I
-I 1
-J
-J 1
Tambin puedes usar el comando smbldap-userinfo para actualizar la informacin del usuario.
Este comando tambin puede ser usado por los usuarios para actualizar su propia informacin, la
informacin que pueden cambiar los usaurios esta listada en la siguiente tabla:
Nota
Ejemplo
69
-f
-w
Establece
el
nmero
-w 55 44 33 22 11 begin_of_the_skype_highlighting
telefnico del Trabajo
33 22 11 FREE end_of_the_skype_highlighting
-h
Establece
el
telefnico de Casa
-s
55 44
nmero -h 22 11 22 33 44
Hay opciones como -C, -D, -E y -F que sera mejor desactivarlas de forma global en el archivo
/etc/smbldap-tools/smbldap.conf.
70
Para agregar un nuevo grupo usaremos el comando smbldap-groupadd. Una lista de opciones
disponibles que se encuentran en la siguiente tabla:
Tabla 10.5. Tabla de opciones disponibles para el comando smbldap-groupadd
Opcin Descipcin
-a
-g gid
-o
Ejemplo
-g 1002
-r
RID- Establece el ID Relativo (RID) para el grupo Samba
GRUPO
-r 1002
-s
SID- Establece el SID del grupo a SID-GRUPO
GRUPO
-s S-1-5-21-3703471949371859183823245856961002
-t
-p
71
Normalmente no es necesario especificar el gid ni el rid manualmente, ya que dejaremos que elija
el siguiente disponible, por lo que solamente podemos ejecutar:
root@pdc:~# smbldap-groupadd -a contabilidad
Para visualizar la informacin del nuevo grupo podemos usar el comando smbldap-groupshow,
por ejemplo:
PREGUNTAEXAMEN
root@pdc:~# smbldap-groupshow contabilidad dn:
cn=contabilidad,ou=Groups,dc=example,dc=com
objectClass: top,posixGroup,sambaGroupMapping
cn: contabilidad gidNumber: 1001
sambaSID: S-1-5-21-1482872308-118742792-23177566043003 sambaGroupType: 2 displayName: contabilidad
Eliminando Grupos
Para eliminar grupos, usaremos el comando smbldap-groupdel, por ejemplo, para eliminar el
grupo contabilidad usaremos el siguiente comando:
root@pdc:~# smbldap-groupdel contabilidad
72
Si queremos eliminar ms de un usuario a la vez separamos cada nombre de usuario por coma,
como en el siguiente ejemplo:
root@pdc:~# smbldap-groupmod -x carlos,sara contabilidad
deleting user carlos from group contabilidad
deleting user sara from group contabilidadEliminando Usuarios de Grupos
73
En este ejemplo la contrasea del rootdn esta en texto plano, para cambiarla y protegerla usando
un hash criptogrfico siga los siguientes pasos:
1. Genere el hash de la contrasea usando slappasswd:
# slappasswd
New password:
Re-enter new password:
{SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6
Nota
El hash predefinido es SSHA, si desea cambiar el tipo de hash use la opcin -h para
definir un hash diferente, por ejemplo: -h {CRYPT}, para ms informacin vea la
pagina del manual de slappasswd(8).
2. Copie el HASH {SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6 y cambielo en el
valor rootpw del archivo /usr/share/slapd/slapd.conf por ejemplo:
rootdn "cn=Manager,dc=example,dc=com" rootpw
{SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6
Importante
74
[ OK ]
[ OK ]
OPCIONAL
Tambien
puede
mantener
la
contrasea
del
rootdn
fuera
del
archivo
/usr/share/slapd/slapd.conf, es decir, puede eliminar la directiva rootpw del archivo
/usr/share/slapd/slapd.conf y agregar una entrada para el DN en el directorio LDAP.
Los beneficios que obtenemos al mantener la entrada el rootdn en el directorio son:
Puede actualizar la contrasea de forma dinamica sin reiniciar el servicio usando una
operacin de modificacin desde cualquier cliente LDAP.
Si olvida la contrasea siempre puede realizar la configuracin manual usando
slappasswd(8) y slapd.conf(5).
Para mantener la entrada del RootDN en el directorio LDAP siga este procedimiento:
1. Cree el archivo /tmp/rootdn.ldif con la entrada para la cuenta del root dn en formato
LDIF:
dn: cn=Manager,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole cn:
Manager
description: LDAP Manager
userPassword: {SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6
Referencias adicionales:
man slapd.conf(5)
man slapd(8)
man slappasswd(8)
man slapadd(8)
OpenLDAP Software 2.4 Administrators Guide - Directory Backups
Cuando usa OpenLDAP con backends basados en Berkeley DB por ejemplo el backend tipo hdb
debe de tener indexados los atributos ms utilizados en las consultas LDAP y as incrementar el
rendimiento en las consultas desde las aplicaciones y clientes LDAP, un ejemplo de un atributo no
indexado lo podemos ver en los logs de OpenLDAP:
slapd[4164]: <= bdb_equality_candidates: (uniqueMember) not indexed
El mensaje anterior nos muestra que se estan haciendo consultas para el atributo uniqueMember y
no esta indexado lo cual se puede reflejar en bajo rendimiento del servicio LDAP.
Para agregar uno o ms atributos a la lista de indices para una base de datos en OpenLDAP debe
de seguir el siguiente procedimiento:
1. Agregar definicin de indice para los atributos deseados al archivo de configuracin del
servicio OpenLDAP:
# nano /usr/share/slapd/slapd.conf
Nota
# /etc/init.d/slapd stop
6. Ahora ya puede iniciar el servicio slapd con todos los atributos indexados.
# /etc/init.d/slapd start
Referencias adicionales:
slapindex(8)
FAQ de OpenLDAP sobre Performance Tunning
Respaldar los archivos de configuracin de OpenLDAP
Se recomienda respaldar los directorios de configuraciones tanto de Samba, OpenLDAP, smbldaptools, NSS LDAP y PAM.
En la siguiente tabla se muestra una lista:
Tabla 11.1. Directorios de configuracin a respaldar
Servicio
Archivos y Directorios
OpenLDAP
/etc/ldap/, /etc/default/slapd
Samba
/etc/samba
smbldap-tools /etc/smbldap-tools/
77
libnss-ldap
PAM
/etc/pam.d
En esta seccin explicar como crear una copia de seguridad de una base de datos en un servidor
OpenLDAP, generaremos respaldos en frio y en caliente, los respaldos sern generados en formato
LDIF. Suponiendo que en el archivo /usr/share/slapd/slapd.conf tenemos una definicin de
base de datos as:
# Specific Backend Directives for hdb:
backend hdb
# Specific Directives for database #1, of type hdb:
database hdb
# The base of your directory in database #1
suffix "dc=example,dc=com"
# Where the database file are physically stored for database #1
directory "/var/lib/ldap"
78
Y listo, puede usar el comando slapcat para verificar los datos, y no olvide verificar sus
aplicaciones cliente.
79
Referencias adicionales:
El formato LDIF man
slapd.conf(5) man
slapd(8) man slapcat(8)
man slapadd(8)
OpenLDAP Software 2.4 Administrators Guide - Directory Backups
Respaldando archivos importante de Samba
Es prudente almacenar el SID de la maquina y/o dominio en un archivo por seguridad, Porque?
Porque un cambio en el nombre de la maquina (hostname) o en el nombre de dominio (workgroup)
puede resultar en un cambio en el SID. As, cuando tienes el SID a la mano, es simple restaurarlo.
La alternativa sera sufrir el dolor de tener que recuperar los perfiles de los usuarios de escritorio
y quizas re-unir todos las maquinas miembras del dominio.
Primero, no olvides almacenar el SID local a un archivo. Es una buena idaa ponerlo en el directorio
en el que el archivo smb.conf esta almacenado, un ejemplo simple seria:
root@pdc:~# net getlocalsid > /etc/samba/EXAMPLE-SID
80
dominio, el procedimiento para unir un equipo Windows a un Dominio Samba/NT incluye los
siguientes pasos:
Adems de unir el equipo windows al dominio samba, veremos algunas otras operaciones que se
deben o pueden realizar en un entorno de red windows con un controlador de dominio samba
relacionados a la comparticin de recursos como archivos e impresoras.
Antes de continuar con el procedimiento debe asegurarse de cumplir con los requerimientos de red
y de sistema que se listan en la siguiente seccin.
Requerimientos del sistema
Para que un equipo Windows pueda ser unido al dominio es necesario que cumpla con los
siguientes requerimientos:
En las siguientes secciones se describen los procedimientos antes mencionados para unir un equipo
windows al dominio Samba.
En esta seccin se describe como verificar que los parmetros de red en nuestro equipo Windows
estn correctamente configurados.
Informacin necesaria para configurar los parmetros de red
Antes de unir un equipo Windows al dominio, verificaremos que los parmetros de red estn
correctamente configurados, recuerde que la informacin de red de la red de la empresa es:
82
83
84
Despus de agregar la direccin IP del servidor WINS damos click en el botn Agregar y el
servidor WINS aparecer en la lista.
Nota
85
Para terminar nuestras configuraciones damos click en el botn 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 botn Aceptar y por ultimo damos click
en el botn Cerrar para que nuestros cambios tomen efecto.
Verificacin de los Parmetros de Red
Solo para confirmar que la configuracin si hay tomado efecto damos doble click sobre el icono
de Conexin de rea local.
Despus damos click en la pestaa Soporte.
Ah nos muestra una parte de la configuracin de red. damos click en el botn Detalles... para ver
la informacin completa de la configuracin de red.
Figura 12.4. Viendo los detalles de la conexin de red
Si despus de verificar los detalles de los parmetros de red todo esta bien, entonces podemos
continuar con el paso de configuracin del nombre de equipo.
86
87
Si se desea cambiar el nombre del equipo (recordar que este nombre ser como nos vern en la
red), podemos dar click en el botn Cambiar... y nos aparecer una ventana como la siguiente.
Figura 12.6. Propiedades del sistema, Cambios en el nombre de equipo
Importante
No use un nombre de equipo que sea igual a un usuario local o de dominio ya que no esta
permitido.
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.
88
jperezx
La primer pantalla nos da la bienvenida al asistente para conectar el equipo a una red.
89
90
En el siguiente paso nos pregunta el tipo de red de nuestra organizacin, elegimos la opcin: Mi
compaia utiliza una red con dominio y damos click en el botn Siguiente >.
91
92
Adems necesitaremos la contrasea del usuario root/Administrator del dominio, esta cuenta ser
necesaria para poder unir la maquina al dominio y crear la cuenta de computadora correspondiente
a winpc001. Configuramos esta informacin como se muestra en la siguiente imagen:
93
94
Damos click en el botn Siguiente >, ya que la cuenta de equipo no se encontr en el dominio
EXAMPLE, necesitaremos usar una cuenta con privilegios administrativos de dominio y su
contrasea para que por medio del asistente de identificacin de red se cree la cuenta de equipo
winpc001 en el dominio EXAMPLE.
95
96
97
El nivel de acceso Usuario estndar permite que los usuarios pueden 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 configuracin del sistema.
98
En Otros: podemos elegir otros niveles de acceso, por ejemplo, podemos dar acceso de
Administrator al usuario, esto quiere decir que el usuario jperez tendr todos los privilegios sobre
el equipo WINPC001, lo cual significa que puede cambiar configuraciones, puede instalar y
desinstalar programas que afecten el sistema, es decir, puede hacer lo que le de la gana sobre el
equipo, incluso formatear :D.
Por ahora seleccionamos el nivel de acceso Usuario estndar y damos click en el botn Siguiente
> para finalizar.
Figura 12.17. Asistente de identificacin de red, Ultimo Paso
El ltimo paso nos dice que ya hemos completado con xito el asistente para identificacin de red,
y nos solicita re iniciar el equipo para que los cambios tengan efecto. Damos click en el botn
Finalizar.
99
100
Para que los cambios que hicimos en el asistente de identificacin de red tenga efecto es necesario
re iniciar el equipo, damos click en el botn Aceptar para terminar y re iniciar.
Si el equipo se uni satisfactoriamente al dominio, Samba crear una cuenta de computadora, la
cual autoriza al equipo para acceder a los recursos de la red. Puede ver la lista de cuentas de
computadoras con el comando pdbedit, por ejemplo:
root@pdc:~# pdbedit -L
# pdbedit -L root:0:root
nobody:65534:nobody
jperez:1009:Juan Perez
winpc001$:1011:WINPC001$
Las cuentas de computadora terminan con el simblo $, use el parmetro -V para ver ms
informacin acerca de la cuenta, por ejemplo:
root@pdc:~# pdbedit -Lv winpc001$
Unix username:
winpc001$
NT username:
winpc001$
Account Flags:
[W
]
User SID:
S-1-5-21-1482872308-118742792-2317756604-1001
Primary Group SID:
S-1-5-21-1482872308-118742792-2317756604-515
Full Name:
WINPC001$
Home Directory:
HomeDir Drive:
Logon Script:
logon.bat
Profile Path:
Domain:
EXAMPLE
Account desc:
Computer
Workstations:
Munged dial:
Logon time:
0
Logoff time:
never
Kickoff time:
never
Password last set:
0
Password can change: 0
Password must change: 0
Last bad password
: 0
Bad password count : 0
Logon hours
: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Nota
Las cuentas de computadora tienen el Account Flags W, el cual significa que es un workstation
no una cuenta de usuario.
Las cuentas de computadora se crean en la OU=Computers. En la siguiente seccin veremos como
iniciar sesin en un dominio de red.
101
Despues de reiniciar el equipo nos cambiar la ventana de inicio de sesin a como se muestra a
continuacin.
Figura 12.20. Inicio de sesin de Windows - Pantalla inicial
Para poder iniciar sesin presionamos la combinacin de teclas Ctrl+Alt+Supr y nos mostrar
una ventana como la siguiente:
102
Si queremos ver en que equipo o dominio queremos iniciar sesin podemos dar click en el botn
"Opciones" y nos mostrar algo as:
103
Nota
104
Ahora que el usuario a iniciado sesin en el equipo usando las credenciales del dominio, el usuario
podr acceder a los recuros a los que esta autorizado.
Como permitir que un usuario cambie la contrasea de dominio
Es posible dar acceso a que el usuario pueda actualizar su contrasea de dominio desde el sistema,
esto es recomendable cuando se manejan politicas de expiracin de contraseas.
Para autorizar a un usuario a cambiar su contrasea de dominio desde windows use el comando
smbldap-usermod con el parmetro -A 1 para darle acceso, por ejemplo:
# smbldap-usermod -A 1 jperez
105
Ahora el usuario debe teclear Ctrl+Alt+Supr para que le aparezca el siguiente men:
Escriba su contrasea actual y la nueva dos veces para actualizarla, presione Aceptar para aplicar
la nueva contrasea.
106
Cuando cambia la contrasea desde windows Samba actualiza la contrasea en los atributos
sambaLMPassword y sambaNTPassword, as como la contrasea Unix/LDAP en el atributo
userPassword automticamente.
Para desactivar el cambio de contrasea a una cuenta que previamente le dio acceso use smbldapusermod con el parmetro -A 0, por ejemplo:
# smbldap-usermod -A 0 jperez
Si el usuario intenta cambiar su contrasea de dominio y no tiene autorizacin para hacerlo recibir
el siguiente mensaje.
107
En esta seccin veremos como conectar una unidad de disco en red en un cliente de dominio
windows, esta funcionalidad permite que los usuarios del dominio puedan acceder a sus archivos
personales que se encuentran en el directorio $HOME del servidor Samba desde cualquier lugar
en la red.
Hay dos formas de mepear el directorio $HOME a una unidad de disco en los clientes windows,
uno es hacerlo de forma global para todos los usuarios del dominio y la otra es de forma individual
por cada usuario.
Para el mtodo global debe definir el parmetro logon home y logon drive en la seccin
[global] del archivo de configuracin de samba /etc/samba/smb.conf, por ejemplo:
logon home = \\PDC\homes
logon drive = H:
Si no desea definir el logon home y logon drive de forma global use como valor una caden vaca,
por ejemplo:
logon home =
logon drive =
108
Para definir el logon home de forma individual para un usuario del dominio puede usar el comando
smbldap-usermod con el parmetro -C --sambaHomePath, y para definir el logon drive de
forma individual use el parmetro -D o --sambaHomeDrive, por ejemplo:
root@pdc:~# smbldap-usermod -C '\\PDC\jperez' -D 'H:' jperez
Inicie una nueva sesin con el usuario jperez y use el Explorador de archivos para verificar que la
unidad de disco H: esta conectada al directorio $HOME del servidor.
109
El usuario puede usar la unidad H para almacenar documentos personales y estos sern
almacenados en su directorio $HOME (/home/jperez) en el servidor.
Para desactivar el logon home para un usuario use el comando smbldap-usermod con el
parmetro -C, y para desactivar el logon drive use el parmetro -D o --sambaHomeDrive con un
valor nlo, por ejemplo:
root@pdc:~# smbldap-usermod -C '' -D '' jperez
Para ms informacin de como conectar unidades de red ver el articulo Cmo conectar y
desconectar una unidad de red en Windows XP.
110
En esta seccin se explicar como un usuario de dominio puede compartir una carpeta en su equipo
local a ciertos miembros y grupos del dominio, la carpeta compartida tendr las siguientes
caracteristicas:
Despues damos clic con el botn derecho sobre la carpeta y damos clic en Compartir y
seguridad..., esto nos llevar al men para configurar los parametros para compartir la carpeta, as
como los permisos que tendrn los usuarios y grupos de red.
111
Ahora veremos como configurar los controles de acceso que definimos arriba.
Damos clic en el botn Permisos, nos aparecer el siguiene cuadro de dialogo:
112
113
Damos clic en el botn Agregar.... Y en el recuadro que dice: Escriba los nombres de objecto
que desea seleccionar cada uno de los objectos va separado por un punto y coma ;, como se
muestra en la imagen de abajo:
Figura 12.28. Seleccionar Usuarios o Grupos
Despues damos clic en Aceptar y nos regresa a la venana anterior con los usuarios y gruipos en la
lista, como se muestra en la siguiente imagen:
114
Ahora que ya estan los usuarios y grupos en la lista, seleccionaremos cada uno para asignarle sus
permisos. Asignaremos los permisos de la siguiente forma:
1. Eliminar el grupo Todos ya que solo se da acceso a algunos miembros del dominio
2. Seleccionar contabilidad (EXAMPLE\contabilidad) y en el recuadro de abajo
seleccionar Control Total.
115
116
Hay dos formas de habilitar la ejecucin de un logon sript a los usuarios del dominio Samba, uno
es hacerlo de forma global para todos los usuarios del dominio y la otra es de forma individual por
cada usuario.
Para el mtodo global debe definir el parmetro logon script en la seccin [global] del archivo
de configuracin de samba /etc/samba/smb.conf, por ejemplo:
logon script = logon.bat
Si no desea definir el logon home y logon drive de forma global use como valor una caden vaca,
por ejemplo:
logon script =
La ruta absoluta al script de inicio de sesin es relativa a la ruta del recurso compartido
[netlogon], en la seccin de instalacin de samba se creo uno de prueba con el siguiente
contenido:
# nano /home/samba/netlogon/logon.bat
Para habilitar el uso de el logon script logon.bat para un usuario de dominio use el comando
smbldap-usermod con el parmetro -E --sambaLogonScript, por ejemplo:
# smbldap-usermod -E logon.bat jperez
117
jperez
jperez
[U
]
S-1-5-21-1482872308-118742792-2317756604-3018
S-1-5-21-1482872308-118742792-2317756604-513
Juan Perez
\\PDC\jperez
H:
logon.bat
EXAMPLE
0
never
never
Mon, 21 Mar 2011 22:29:31 CST
Mon, 21 Mar 2011 22:29:31 CST
never
0
0
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Ahora inicie una nueva sesin y verifique que el reloj del sistema esta sincronizado con el servidor
PDC y que se creo la unidad de red P: que esta mapeada al directorio publico \\PDC\publico.
Para desactivar el logon script para un usuario use el comando smbldap-usermod con el
parmetro -E con un valor nlo, por ejemplo:
root@pdc:~# smbldap-usermod -E '' jperez
118
Captulo
13. Integrando Clientes
Dominio Samba
Linux/Unix al
En este capitulo veremos los procedomiento requeridos para integrar un sistema cliente Linux al
dominio EXAMPLE.COM usando NSS_LDAP, NSS_PAM, SAMBA y otras herramientas.
Informacin preliminar del equipo cliente Linux
Para la resolucin de cuentas de usuario y grupos Unix mediante LDAP usaremos el paquete
libnss-ldap, la configuracin es similar al servidor, solo cambiar la direccin IP del servidor
LDAP.
Configuramos el archivo /etc/ldap.conf para libnss-ldap:
# Config file for libnss-ldap and libpam-ldap
uri
ldap://192.168.1.10/
ldap_version 3 scope
sub
119
base dc=example,dc=com
pam_filter objectclass=posixAccount
pam_login_attribute uid pam_member_attribute
memberuid
pam_password exop
nss_base_passwd
nss_base_passwd
nss_base_shadow
nss_base_group
ou=Users,dc=example,dc=com
ou=Computers,dc=example,dc=com
ou=Users,dc=example,dc=com
ou=Groups,dc=example,dc=com
Cambiamos el archivo de configuracin /etc/nsswitch.conf para que utilize la fuente LDAP que
recien configuramos:
passwd:
group:
shadow:
compat ldap
compat ldap
compat ldap
hosts:
Si despues de hacer las pruebas anteriores obtienes los mismos resultados significa que la
resolucin de cuentas de usuario y grupo mediante LDAP esta funcionando correctamente en el
sistema. El siguiente paso es la configuracin de la autorizacin mediante PAM y las bibliotecas
PAM-LDAP.
120
Antes de iniciar con los cambios en la configuracin de los modulos de autenticacin PAM,
haremos un respaldo del directorio /etc/pam.d/
Todas las configuraciones de PAM estan en el directorio /etc/pam.d/, respaldaremos todo el
directorio
root@ushldap:~# cd /etc/
Nuestro respaldo tendr el sufijo .FILES para indicar que son las configuraciones que usan los
archivos /etc/passwd, /etc/group y /etc/shadow.
root@ushldap:~# cp -va pam.d pam.d.FILES
cat /etc/pam.d/common-auth
sufficient
pam_unix.so likeauth nullok
sufficient
pam_ldap.so use_first_pass auth
pam_deny.so
de
root@ushldap:~# cat /etc/pam.d/common-account
account
required
pam_unix.so account
sufficient
pam_ldap.so
121
Realice prueba de login local va TTY, remoto SSH y login grfico con GDM y KDM.
Configurando resolucin de cuentas de dominio mediante Samba
122
Samba
daemons
Samba
daemons
123
root:0:root nobody:65534:nobody
elconta:1000:Nombre Contador
asistenteconta:1001:asistenteconta
directora:1002:directora
jamdvwxpp$:1003:JAMDVWXPP$
asistentefinanzas:1004:asistentefinanzas
Solo como ultima medida verificamos que los UID de samba corresponden a los devueltos por nssldap:
root@jmlap:~# id asistentefinanzas
uid=1004(asistentefinanzas) gid=1004(finanzas) groups=1004(finanzas)
root@jmlap:~# id elconta uid=1000(elconta) gid=1000(contabilidad)
groups=1000(contabilidad)
Podemos utilizar el mismo comando net para obtener infomacin del dominio al que nos unimos:
root@jmlap:~# net rpc info -U Administrator
Password:
Domain Name: EXAMPLE
Domain SID: S-1-5-21-2911508632-2405292923-4115677068
Sequence number: 1232322213
Num users: 6
Num domain groups: 7 Num local groups: 0
En esta seccin veremos como configurar un sistema cliente Linux para que cuando inicie sesion
en el sistema se monte automticamente un recurso compartido en red, como por ejemplo un
directorio SAMBA (cifs) o NFS, y que se desmonte automticamente cuando el usuario cierra la
sesin.
El montaje automtico lo realizaremos con el modulo PAM pam-mount, con pam-mount es posible
montar de forma automtica recursos compartidos en red cuando el usuario inicia sesin en el
sistema.
Para poder automontar volumens samba primero instalaremos el paquete libpam_mount y
despues crearemos una configuracin para montar el volumen.
Instale el paquete libpam_mount:
124
pam_mount.so
Por ejemplo:
session
optional
optional
required
pam_unix.so session
pam_ldap.so session
pam_mount.so
Agregar a /etc/pam.d/common-auth:
auth
optional
pam_mount.so
use_first_pass
Por ejemplo:
auth
sufficient
pam_unix.so likeauth nullok
auth
sufficient
pam_ldap.so use_first_pass auth
optional
pam_mount.so
use_first_pass auth
required
pam_deny.so
Con esto, al hacer login grfico co KDE automaticamente pasar la contrasea al modulo
pam_mount y montar el volumen. podemos ver que el directorio si se haya montado.
//truzka/jmedina on /home/jmedina/truzka type cifs (rw,mand)
125
default en el archivo de conifguracin instalado por default en Ubuntu, podemos ver un ejemplo
de la configuracin de mkmountpoint en /etc/security/pam_mount.conf.xml:
<!-Create mountpoint if it does not exist yet. This is a good thing.
If enabled, and a mountpoint was created by pam_mount, the mountpoint will be
removed again on logout. To disable this behavior, use remove="false".
-->
<mkmountpoint enable="1" remove="true" />
Si no esta activado en su sistema cambie enable="0" por enable="1", note que tambin puede
configurar si usted desea que el directorio del punto de montaje sea eliminado automticamente al
cerrar la sesin.
Carpetas compartidas con ACL a usuarios y grupos de dominio
para
compartir
una
carpeta
en
el
home del
usuario
mkdir ~/Reportes_Tickets
126
Un problema muy frecuente es que los usuarios no pueden hacer login en su equipo local ya que
no tiene red o el servidor LDAP esta fuera de linea y por lo tanto es imposible autenticar el usuario.
Existe la posibilidad de permitir el login disconnected.
127