Esta manual tiene como objetivo el describir de cómo instalé y configuré un controlador de dominios con samba y ldap en un sistema de Linux Debian Sarge( ojo para etch existen variaciones), No hay razón por la que no trabajaría en ningún otro sistema de linux, .
*********** INSTALACION DE SLAPD *****************
1.-Instalación de servidor LDAP :
$ apt-get update
$ apt-get upgrade
$ apt-get install slapd db4.2-util
Responder las siguientes perguntas:
DNS domain name: silcom.com.pe
Name of organisation: silcom.com.pe
Admin password: password
Confirm password: password
Allow LDAP v2: yes
****** INSTALACION PHPLADADMIN **********
1.- Phpldapadmin requiere un servidor web instalado. En una nueva instalación, nosotros necesitaremos instalar apache. Si usted tiene instalado apache omitir este paso.
$ apt-get install apache
Y responder con lo siguiente:
Enable SuExec: no
2.- instalar phpldapadmin nos provee un frontend para administrar LDAP
$ apt-get install phpldapadmin
use las siguientes respuestas :
Authentication type: session
Configure webserver: apache-ssl
Restart: yes
3.- Phpldapadmin requiere una utilidad llamada mkntpwd para crear las contraseñas Samba hashes. esta incluida en smbldap-tools pero esta no parece estar incluida para Debian así que se requiere descargarla.
$ cd /opt/
$ wget http://www.silcom.com.pe/soft/mkntpwd.tar.gz
$ tar -zxf mkntpwd.tar.gz
$ cd mkntpwd
$ make
$ cp mkntpwd /usr/local/bin
Chequeamos que esta corriendo:
$ mkntpwd
************* INSTALACION DE SAMBA ***********
1.- Ahora instalamos los paquetes samba y samba-doc
$ apt-get install samba samba-doc
Y respondemos con lo siguiente:
Domain Name: silcom
Use Password Encryption: Yes
Modify smb.conf to use WINS settings via DHCP: No
How to run Samba: daemons
Create password database: Yes
************* CONFIGURANDO Y POPULANDO LDAP *********
1.- slapd necesita Samba schema para trabajar. Hacemos lo siguiente:
$ cd /usr/share/doc/samba-doc/examples/LDAP/
$ gunzip samba.schema.gz
$ cp samba.schema /etc/ldap/schema/
Ahora incluimos las siguiente linea en /etc/ldap/slapd.conf :
include /etc/ldap/schema/samba.schema
Y reiniciamos slapd:$ /etc/init.d/slapd restart
2.- Se necesita crear unidades organizativas en LDAP para nuestros usuarios, grupos and maquinas.ingresar a phpldapadmin http://debian.silcom.com.pe/phpldapadmin/ (obiamente ingresar su direccion ip o dominio).
Ingresar con la contraseña para el usuario admin en LDAP.
Expandir la raiz del arbol, y hacer click en «Create New Entry Here»
Seleccionar «Organizational Unit» (ou): llamar a la ou «users» y confirmar.
repetir estos pasos, y aderir dos ou’s llamadas groups y machines. El arbol debe quedar de la siguien forma:
************** CONFIGURAR SAMBA ***************
1.- Ahora se configurara samba. abrir el archivo /etc/samba/smb.conf y buscar la linea:
passdb backend = tdbsam guest
Esta linea necesita ser reemplazada por lo siguiente :
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=silcom,dc=com,dc=pe
ldap machine suffix = ou=machines
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=silcom,dc=com,dc=pe
ldap delete dn = no
# para PDC
domain logons = yes
# permitir privilegios a usuarios
enable privileges = yes
2.- ejecutar testparm para verificar que la configuracion no tiene errores.
$ testparm
3.- le enviamos a samba la contraseña del admin de LDAP del siguiente modo:
$ smbpasswd -w password
4.- Reiniciar samba:
$ /etc/init.d/samba restart
5.- Ahora mire en phpldapadmin, y serciorese que se ha creado una nueva entrada como esta : sambaDomainName=SILCOM
copiar el valor de sambaSID (eg S-1-5-21-2620819820-906013693-4274777306 ), ya que sera necesaria mas adelante.
************* CONFIGURAR PHPLDAPADMIN ********************
1.- Editar el archivo
/usr/share/phpldapadmin/templates/template_config.php . Buscar las siguiente linea :
// uncomment to set the base dn of posix groups
// default is set to the base dn of the server
//$base_posix_groups=»ou=People,dc=example,dc=com»;
$samba3_domains[] =
array( ‘name’ => ‘My Samba domain Name’,
‘sid’ => ‘S-1-5-21-4147564533-719371898-3834029857’ );
// The base dn of samba group. (CUSTOMIZE)
//$samba_base_groups = «ou=Groups,ou=samba,dc=example,dc=org»;
Cambiarla por esta:
// uncomment to set the base dn of posix groups
// default is set to the base dn of the server
$base_posix_groups=»ou=groups,dc=silcom,dc=com,dc=pe»;
$samba3_domains[] =
array( ‘name’ => ‘silcom’,
‘sid’ => ‘S-1-5-21-2620819820-906013693-4274777306’ );
// The base dn of samba group. (CUSTOMIZE)
$samba_base_groups = «ou=groups,dc=silcom,dc=com,dc=pe»;
donde el valos de sid se obtiene de phpldapadmin.
*********** INSGRESAR GRUPOS POR DEFECTO **************
1.- Se necesitara crear algunos grupos por defecto . para crearlos en phpladpadmin use Samba 3 Group Mappings sobre ou=groups:
Unix name Samba Name gid Samba Sid
admins Domain Admins 20000 Built-In -> Domain Admins
users Domain Users 20001 Built-In -> Domain Users
guests Domain Guests 20002 Built-In -> Domain Guests
************ CONFIGURACION AUTENTIFICACION UNIX ************
Configuraremos el servidor de modo que los usuariaros de LDAP aparescan como usuarios del sistema linux.
1.- Instalar libnss-ldap package y configurar:
$ apt-get install libnss-ldap
LDAP Server Host: 127.0.0.1
DN of Search Base: dc=silcom,dc=com,dc=pe
LDAP Version: 3
Database requires login: no
Make config readable by owner only: yes
2.- Editar el archivo /etc/nsswitch.conf de la siguiente forma:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
3.- Ahora use la utilidad getent para confirmar que los grupos han sido correctamente configurados de la siguiente forma:
$ getent group
ssh:x:103:
users:x:20001:
guests:x:20002:
admins:x:20000:
4.- Instalar el paquete libpam-ldap
$ apt-get install libpam-ldap
Make local root db admin: yes
Database requires logging in : no
Root login account : cn=admin,dc=silcom,dc=com,dc=pe
Root password : password
Crypt : MD5
5.- Samba requiere un usuario Administrator (con un uidNumber de 0) para ingresar a las maquinas Windows al dominio.
No recomiendo tener un usuario el usuario root en LDAP ya que puede ser capaz de abrirse una sesión a los sitios de trabajo de Linux, para esto agregamos un filtro en /etc/pam_ldap.conf .
si no les incomoda este aspecto se puede saltar este paso.
Ingresar la siguiente linea en al final del archivo /etc/pam_ldap.conf
pam_filter !(uidNumber=0)
6.-Los siguientes archivos son necesarios para configurar PAM para LDAP:
/etc/pam.d/common-account
# Comentar esta linea
#account required pam_unix.so
# e insertar estas dos
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass
/etc/pam.d/common-auth
# comentar esta linea
#auth required pam_unix.so nullok_secure
# e insertar estas dos
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
/etc/pam.d/common-password
# comentar
#password required pam_unix.so nullok obscure min=4 max=8 md5
# insertar estas lineas
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass
7.- Reiniciar ssh y samba
$ /etc/init.d/ssh restart
$ /etc/init.d/samba restart
8.- Instalar el servicio de caching para nombres:
$ apt-get install nscd
************ AGREGAR USUARIOS *****************
1.- Ahora se podra agregar algunos usuario. Se necesesita un Administrator (uid=0) y otro usuario para realizar las pruebas.
crear un nuevo : Samba 3 User(s) sobre ou=users de la siguiente forma:
Uid First Name User Name User Password Encryption Windows Group
0 Admin Administrator password MD5 Domain Admins
10000 Simon simon ******** MD5 Domain Admins
2.- Verificamos con getent que nss esta funcionando correctamente sobre el servidor linux.
$ getent passwd
simon:x:10000:20000:Simon Newton:/home/simon:/bin/bash
Administrator:x:0:20000:admin :/home/administrator:/bin/bash
3.- Creamos los directorios home para los usuarios:
$ mkdir /home/simon
$ cp /etc/skel/.* /home/simon/
$ chown -R simon /home/simon
$ chgrp -R users /home/simon
************ ASIGNANDO PRIVILEGIOS Y AUTOMATIZANDO *************
Ingresar computadoras al dominio automaticamente
1.- INstalar los siguientes modulos de Perl :
$ apt-get install libnet-ldap-perl libcrypt-smbhash-perl
2.- copiar el script smbldap-useradd (y archivos de configuracion) del paquete Samba-doc . en la ubicacion /usr/local/smbldaptools
$ mkdir /usr/local/smbldaptools
$ cd /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools-0.8.7
$ cp smbldap_bind.conf smbldap_tools.pm.gz smbldap.conf.gz smbldap-useradd.gz /usr/local/smbldaptools/
$ gunzip /usr/local/smbldaptools/*.gz
$ cd /usr/local/smbldaptools
$ chmod go-r *
$ chmod u+x smbldap-useradd
Editar el archivo /usr/local/smbldaptools/smbldap.conf para que queden de esta manera:
SID=»S-1-5-21-3131077580-1338128831-1697195685″
suffix=»dc=silcom,dc=com,dc=pe»
usersdn=»ou=users,${suffix}»
computersdn=»ou=machines,${suffix}»
groupsdn=»ou=groups,${suffix}»
sambaUnixIdPooldn=»sambaDomainName=SILCOM,${suffix}»
hash_encrypt=»MD5″
Editar el archivo /usr/local/smbldaptools/smbldap_bind.conf:
slaveDN=»cn=admin,dc=silcom,dc=com,dc=pe»
slavePw=»password»
masterDN=»cn=admin,dc=silcom,dc=com,dc=pe»
masterPw=»password»
Editar /usr/local/smbldaptools/smbldap_tools.pm para enlazar los archivos correctos para la configuracion:
my $smbldap_conf=»/usr/local/smbldaptools/smbldap.conf»;
my $smbldap_bind_conf=»/usr/local/smbldaptools/smbldap_bind.conf»;
3.- Ubicar el objeto sambaDomainName=SILCOM en phpldapadmin.
Hacer click y Agregar un nuevo valor sobre el object class y escoger sambaUnixIdPool luego hacer click
en siguiente e ingresar un numero de uid y gid de inicio para este caso sera el 30000.
4.- Probar la configuracion ingresando una maquina de la siguiente manera:
$./smbldap-useradd -w «quigon»
si no emitio agun error todo esta correcto, se creara un nuevo objeto uid=quigon$ en el ou machines.
Nos daremos cuenta que el uidNumber en el objeto sambaDomainName=SILCOM se habra actualizado a 30001 ahora.
Este objeto solo sirve para verificar que todo esta trabajando bien ,procederemos a eliminarlo del arbol
5.- Finalmente agregar la siguiente linea en el archivo smb.conf :
add machine script = /usr/local/smbldaptools/smbldap-useradd -w «%u»
6.- Si deseamos que un usuario normal agregue las maquinas al dominio. podemos conceder al usuario derechos
para agregar las maquinas al dominio usando lo siguiente:
net rpc -UAdministrator rights grant simon SeMachineAccountPrivilege
************ SCRIPS DE INICIO DE SESION *****************
Vamos a usar KiXtart para escribir los archivos de inicio.
$ cd /opt/
$ wget http://www.kixtart.org/binary/distrib/KiX2010_453.zip
$ apt-get install unzip
$ unzip /opt/KiX2010_453.zip
1.- crear el netlogon, y hacer que el grupo administrador tenga a acceso a escribir
$ mkdir -p /data/samba/netlogon
$ chgrp admins /data/samba/netlogon
Y agregar las siguientes lines en /etc/samba/smb.conf:
# put this in the main section
logon script = logon.bat
# share for the logon scripts
[netlogon]
comment = Network logon service
path = /data/samba/netlogon
write list = «@admins»
guest ok = Yes
2.- Para el inicio de sesion de una maquina windows a un usuario en el grupos Domain Admins.Se tiene que tener aceso a escritura sobre la capeta netlogon
Download KiXstart,
extract, and put the following files into the netlogon share:
KIX32.EXE
KX32.dll
$ cp /opt/KiX2010.453/KIX32.EXE /data/samba/netlogon/
$ cp /opt/KiX2010.453/KX32.dll /data/samba/netlogon/
3.- crear un archivo logon.bat en la carpeta netlogon e ingresar lo siguiente
en el archivo:
\\pdc\netlogon\kix32 \\debian\netlogon\logon.kix /f
4.- crear un archivo logon.kix. eset se ejecutara cuando el usuario se loguee.
se puede montar unidades compartidas, sincronizar la hora etc. como este ejemplo:
; logon script
setconsole(‘hide’)
; delete all mapped drives
USE * /delete
; sync time
$timeserver = «\\pdc»
Settime $timeserver
IF INGROUP(«SILCOM\Domain Admins»)
use n: \\pdc\netlogon
ENDIF
; add more drive mappings here
; map homedirectory
use u: @HOMEDIR
Hasta aqui se debiar poder configurar una estacion de trabajo que se autentifique contral el dominio
***************** HABILITAR PROFILES **********************
mkdir /data/samba/profiles
[profiles]
path = /data/samba/profiles
comment = Profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700
************* CREACION DE HOME POR DEFECTO *************
Por defecto cuando se registra un usuario en ldap no crea el home respectivo
para corregir esto utilizamos lo siguiente:
editar /etc/pam.d/common-session y agregar en la primera linea
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
************ PERMITIR CAMBIO DE CONTRASEÑA ******************
Es bueno permitirle a los usuarios de windows cambiar su contraseña en el servidor ldap
para esto se hara lo siguiente:
cd /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools-0.8.7
cp smbldap-passwd.gz /usr/local/smbldaptools/
cd /usr/local/smbldaptools/
gunzip smbldap-passwd.gz
chmod u+x smbldap-passwd
en el archivo /etc/samba/smb.conf modificar las siguientes lineas :
unix password sync = no
passwd program = /usr/bin/passwd %u
por estas :
unix password sync = yes
passwd program = /usr/local/smbldaptools/smbldap-passwd -o %u







