Академический Документы
Профессиональный Документы
Культура Документы
1- Introducció
2- Software a utilizar
3- Configuració de SLAPD
3.1- Agregar el Schema Samba al Directori
3.2- El fitxer /etc/ldap/slapd.conf
3.3- Proves Preliminars de servidor ldap
3.4- Preparar apache i PHP per PhpLDAPadmin
3.5- L’eina phpldapadmin
4- Configuració de Samba
4.1- El fitxer /etc/samba/smb.conf
4.2- L’eina SWAT (Samba Web Administration Tool)
4.3- Crear els directoris netlogon i profiles
4.4- Comprovant la configuració i iniciant el servei
5- Configuració de smbldap-tools
5.1- Obtenint els fitxers de configuració
5.2- Obtenint el SID
5.3- El fitxer /etc/smbldap-tools/smbldap.conf
5.4- El fitxer /etc/smbldap-tools/smbldap_bind.conf
5.5- Poblant el directori LDAP amb el Schema Samba – L’eina
smbldap-populate
5.6- Testejant la configuració de Samba i ldap
6- Configuració de PAM/NSS
6.1- Configuració de libnss-ldap
6.1.1- El fitxer /etc/ldap/ldap.conf
6.1.2- El fitxer /etc/libnss-ldap.conf
6.1.3- El fitxer /etc/libnss-ldap.secret
6.2- Configurant el paquet libpam-ldap
6.2.1- El fitxer /etc/pam_ldap.conf
6.2.2- El fitxer /etc/pam_ldap.secret
6.3- El fitxer /etc/nsswitch.conf
6.4- Configuran PAM
6.4.1- El fitxer /etc/pam.d/common-auth
6.4.2- El fitxer /etc/pam.d/common-account
6.4.3- El fitxer /etc/pam.d/common-password
6.4.4- El fitxer /etc/pam.d/common-session
7- Creació d’usuaris i grups en el directori LDAP amb smbldap-tools
7.1- Crear usuaris del domini
7.2- Crear un usuari administrador del domini
7.3- Crear un Grup en el domini
7.4- Eliminar usuaris i grups del domini
8- Agregar els usuaris Linux/Unix locals al directori LDAP
9- Agregar equips Windows al Domini
9.1- Requisits del sistema Windows
9.2- Unir l’equipo amb Windows XP Professional al domini Samba
10- Bibliografia
INTRODUCCIÓ
1. Què és LDAP?
Un directori és com una base de dades, però en general conté informació més
descriptiva i més basada en atributs. La informació que conté en un directorio
normalment es llegeix molt més del que s’escriu. Com conseqüència els directoris
no implementen normalment els complicats esquemes per transaccions o esquemes
de reducció (rollback) que les bases de dades utilitzen per portar a terme
actualitzacions complexes de grans volums de dades. Per contra, les actualitzacions
en un directori són usualment canvis senzills de tot o res, si es que es permeten en
algu.
Els directoris estan afinats per proporcionar una resposta ràpida a operacions de
búsqueda o consulta. Poden tenir la capacitat de replicar informació de forma
amplia, amb el fi d’augmentar la disponibilitat i la fiabilitat, i al mateix temps reduiïr
el temps de resposta. Quan es duplica (o es replica) la informació del directori,
poden admetre inconsisténcies temporals entre la informació que hi ha en les
répliques, sempre que finalment existeixi una sincronizació.
Paquets necessaris:
Abans d’instal·lar els paquets necessaris per LDAP necessitem fer el següent:
apt-get update
zone “aso.local” {
type master;
file “ /etc/bind/aso.local.zone”;
};
$TTL 604800
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
@ IN NS aso.local.
@ IN A 192.50.61.22
aso.local IN A 192.50.61.22
Ara si, ja podem instal·lar els paquets per fer funcionar LDAP:
apt-get install apache2-suexec libapache2-mod-php5 php5 php5-cli php5-curl php5-gd
php5-imap php5-ldap php5-mcrypt php5-mhash php5-sqlite php5-tidy php5-xmlrpc php-
pear slapd mcrypt ldap-utils libgd-tools apache2-doc libpam-ldap libnss-ldap
resolvconf samba swat smbclient smbfs smbldap-tools libpam-cracklib libpam-dotfile
3. Configuració de SLAPD
# dpkg-reconfigure slapd
L’eina slapcat ens permet volcar el contingut d’una base de dades ldap a un arxiu
de text ldif(LDAP Directory Interchange Format).
######################################################################
#
# Global Directives:
# Features to permit
#allow bind_v2
######################################################################
#
# Specific Backend Directives for hdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend hdb
######################################################################
#
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend <other>
######################################################################
#
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database hdb
# For the Debian package we use 2MB as default but be sure to update
this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0
# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for
more
# information.
# Save the time that the entry gets modified, for database #1
lastmod on
Per verificar que estigui bé el contingut del fitxer executem l’eina slaptest:
# slaptest -v -u
config file testing succeeded
/etc/init.d/nscd stop
/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -l ~/slapd.ldif
slapindex
chown -Rf openldap:openldap /var/lib/ldap
/etc/init.d/slapd start
Quan fem slapindex, ens sortirá un warning, però no afecta a res.Verifiquem amb
slapcat.
Fem una consulta al servidor LDAP per veure si respon correctament. Amb el
comandament ldapsearch consultarems el namingContexts.
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=aso,dc=local
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Ara farem una recerca en el directori LDAP autenticat com l’usuari admin del LDAP i
farem la recerca fent servir com base dc=aso,dc=local, això és per comprovar que
la autenticació i les nostres ACLs funcionen correctament, a més de comprovar que
el directori es troba incialitzat amb la estrucutra bàsica.
# aso.local
dn: dc=aso,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: aso.local
dc: aso
# admin, aso.local
dn: cn=admin,dc=aso,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fWRuZ2QvVWtZMEdzbGc=
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
memory_limit = 128M;
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = "Asia/Hong_Kong"
display_errors = Off
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
/etc/init.d/apache2 restart
Preparar phpLDAPadmin:
$ldapservers->SetValue($i,'server','host','127.0.0.1');
NOTA: Aquesta linea no está en la seva versió més recent. Descargar la versió
1.1.0.6.
4. Configuració de Samba
[global]
dos charset = UTF-8
display charset = UTF-8
workgroup = aso.local
realm = aso.local
server string = %h server
map to guest = Bad User
username map = /etc/samba/smbusers
passdb backend = ldapsam:ldap://127.0.0.1/
pam password change = Yes
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n
*all*authentication*tokens*updated*
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
add user script = /usr/sbin/smbldap-useradd -m %u
delete user script = /usr/sbin/smbldap-userdel %u
add group script = /usr/sbin/smbldap-groupadd -p %g
delete group script = /usr/sbin/smbldap-groupdel %g
add user to group script = /usr/sbin/smbldap-groupmod -m %u %g
delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g
set primary group script = /usr/sbin/smbldap-usermod -g %g %u
add machine script = /usr/sbin/smbldap-useradd -w %u
logon script = logon.bat
logon path = \\%N\profiles\%U
logon drive = U:
domain logons = Yes
os level = 65
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
ldap admin dn = cn=admin,dc=aso,dc=local
ldap delete dn = Yes
ldap group suffix = ou=group
ldap idmap suffix = ou=idmap
ldap machine suffix = ou=computer
ldap suffix = dc=aso,dc=local
ldap ssl = no
ldap user suffix = ou=people
panic action = /usr/share/samba/panic-action %d
map acl inherit = Yes
case sensitive = No
hide unreadable = Yes
map hidden = Yes
map system = Yes
[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0600
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[netlogon]
path = /var/lib/samba/netlogon
browseable = No
[profiles]
path = /var/lib/samba/profiles
force user = %U
read only = No
create mask = 0600
directory mask = 0700
guest ok = Yes
profile acls = Yes
browseable = No
csc policy = disable
[public]
path = /tmp
read only = No
guest ok = Yes
El fitxer /etc/samba/smbusers
O:
I ara li indiquem a samba la clau del nostre usuari admin especificat en smb.conf
per a que pugui així accedir i modificar el nostre directori ldap, en aquest cas, la
clau és: admin
# smbpasswd -W
Setting stored password for "cn=admin,dc=aso,dc=local" in secrets.tdb
New SMB password: admin
Retype new SMB password: admin
5. Configuració de smbldap-tools
El fitxer de configuració de smbldap-tools és /etc/smbldap-tools/smbldap.conf, en
el qual es defineixen els paràmetres bàsics com servidor ldap, servidor samba,
tipus de comunicació (xifrada o en clar), domini, SID, etc.
A més necessita comptar amb el fitxer smbldap_bind.conf, en el qual
s’emmagatzemará en clar la informació necessaria per la connexió amb el servidor
ldap.
NOTA: Probablement ens trobem amb algun missatge d’error al executar net
getlocalsid, aixó és degut a que el paquet smbldap-tools encara no està configurat.De
totes maneres el SID es mostará correctament.
# $Source: $
# $Id: smbldap.conf,v 1.18 2005/05/27 14:28:47 jtournier Exp $
#
# smbldap-tools.conf : Q & D configuration file for smbldap-tools
# Purpose :
# . be the configuration file for all smbldap-tools scripts
######################################################################
########
#
# General Configuration
#
######################################################################
########
# 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-2886131689-1916166610-3206518675"
######################################################################
########
#
# LDAP Configuration
#
######################################################################
########
# Notes: to use to dual ldap servers backend for Samba, you must patch
# Samba with the dual-head patch from IDEALX. If not using this patch
# just use the same server for slaveLDAP and masterLDAP.
# Those two servers declarations can also be used when you have
# . one master LDAP server where all writing operations must be done
# . one slave LDAP server where all reading operations must be done
# (typically a replication directory)
# CA certificate
# see "man Net::LDAP" in start_tls section for more details
cafile="/etc/smbldap-tools/ca.pem"
# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=aso,dc=local"
# 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 Accounts Configuration
#
######################################################################
########
# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"
# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"
# Gecos
userGecos="System User"
# Skel dir
skeletonDir="/etc/skel"
######################################################################
########
#
# SAMBA Configuration
#
######################################################################
########
######################################################################
########
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
######################################################################
########
# comment out the following line to get rid of the default banner
# no_banner="1"
Ens demanarà que li assignem una contrasenya al usuari root del domini, li
pondrem la clau admin. Fem còrrer el comandament smbldap-populate.
# smblap-populate
Aquesta clau és del nostre Adminstrador del domini mapejat a la compta root. És la
clau que haurem d’utilitzar per ,per exemple, afegir un equip al domini.
Podem testejar el funcionamient dels alies de root que varem definir abans en el
fitxer /etc/samba/smbusers, Administrador y Administrator
~# smbclient //localhost/netlogon -U administrador
Enter administrador's password: admin
Domain=[DEBIAN] OS=[Unix] Server=[Samba 3.2.5]
smb: \> quit
~# smbclient //localhost/netlogon -U administrator
Enter administrator's password: admin
Domain=[DEBIAN] OS=[Unix] Server=[Samba 3.2.5]
smb: \> quit
~#
6. Configuració de PAM/NSS
El servei NSS (Name Service Switch) proveix una interficie per configurar i accedir
a diferents bases de dades de comptess d’usuaris, la forma més bàsica i conecguda
és accedir a la informació dels usuaris locals amb els fitxers
/etc/passwd i /etc/shadow, /etc/group, /etc/hosts, etc.
Llavors, la combinació PAM/NSS ens proveix una capa de abstracció que ens
permet obtenir la informació d’usuaris i la seva identitat sense importar que
aquesta informació sigui emmagatzemada en un simple fitxer de text pla
(/etc/passwd) o un complex directori ldap.
El dimoni nscd (Name Service Cache Daemon) és una caché de noms per el servei
NSS. Accelera de forma significativa les consultes però pot fer-nos passar males
estoness durant la configuració. Per tant,l’aturem:
# /etc/init.d/nscd stop
6.1.1 El fitxer /etc/ldap/ldap.conf
host localhost
base dc=aso,dc=local
binddn cn=admin,dc=aso,dc=local
bindpw admin
bind_policy soft
pam_password exop
timelimit 15
nss_base_passwd dc=aso,dc=local?sub
nss_base_shadow dc=aso,dc=local?sub
nss_base_group ou=group, dc=aso,dc=local?one
# cat /etc/pam_ldap.secret
admin
Aixó indica al servei NSS que ha d’utilitzar l’origen files (/etc/passwd, /etc/group y
/etc/shadow respectivamente) i l’origen ldap (mitjantçant el modul libnss-ldap).
Amb samba ya configurat com servidor de nomss wins podem afegir tambiè el
suport per resolució de noms de hosts amb aquest servei.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 ldap
Aqui l’ordre és més important, això indica que ha de resoldre nom de host amb files
(/etc/hosts), després utilitzarà wins (samba) i finalment amb el DNS resoldre.
Per possibles erros de udevd, que busca per usuaris/grups no existents de NSS
crearem els següents grups:
addgroup --system nvram
addgroup --system rdma
addgroup --system fuse
addgroup --system kvm
adduser --system --group --shell /usr/sbin/nologin --home /var/lib/tpm
tss
Ja podem reiniciar. Si durant el reinici dona algun error, o si en l’entrada de sessió
tenim problemes, hi ha hagut algun problema.
man smbldap-useradd per més informació sobre les opcions del comandament.
El paquet libpam-dotfile ens proveix l’eina pamtest que ens permet verificar el
funcionamient dels mecanismes de autenticació. Provem amb el nostre usuari
prova:
:~# pamtest passwd prova
Trying to authenticate <prova> for service <passwd>.
Password: 123456
Authentication successful.
Tambè podem ingresar al sistema amb aquest usuari, i podrem comprovar que és
només un administrador del domini però no té permissos de root (su prompt no es
#)
$ id adminnuevo
uid=1002(adminnuevo) gid=513(Domain Users) grupos=512(Domain
Admins),513(Domain Users)
I ara , ja no existeix:
:~# getent group | grep "Grupo Nuevo"
:~#
Treïem d’aquests fitxers temporals les usuaris que no desitjem migrar i llavors si
correm l’eina de migració:
# smbldap-migrate-unix-accounts -a -P /tmp/passwd -S /tmp/shadow
Migrant grups locals al directori LDAP
Copiem /etc/group a una ubicació temporal:
# cp /etc/group /tmp/
Editem el fitxer deixant els grups que volguem migrar (podria no migrar els grups
root, bin i daemon) i llavors fem:
# smbldap-migrate-unix-groups -a -G /tmp/group
Segurament volguem que els usuaris Samba pertanyin a certs grups Unix, per
exemple els grups audio, video, cdrom, plugdev, floppy, etc. per tenir aquets
privilegis quan accedeixin desde terminals Linux/Unix. No tenim més que agregar-
los als grups, per exemple al usuari adminnuevo:
# smbldap-usermod --group audio,video,floppy,cdrom,plugdev,"Domain
Admins","Domain Users" adminnuevo
Al no ser un servidor DNS resulta per a nosaltres en una mínima configuració més, al no
copttar amb un servidor DNS el dominio aso.local no es resol amb la IP del servidor.
Això no suposa un problema, simplement haurem d’utilitzar noms NetBIOS en lloc de noms
DNS, per el qual,tant els clients no podràn agregar-se al domini aso.local sino que hauran
de fer-ho al domini NetBIOS ASO.LOCAL.
Haurem de configurar als nostres clientes per a que utilitzin el nostre Samba com servidor de
noms WINS.
Configuració de red
Assignem al cliente una direcció IP dins del segment de red del nostre servidor i configurem
per a que el servidor wins sigui el nostre servidor Samba. Haurem d’habilitar tambè NetBIOS
sobre TCP/IP:
Al tractar d’unir una màquina al domini ens diu : ERROR AL INTENTAR UNIRSE AL
DOMINIO “X” NO SE HA ENCONTRADO EL NOMBRE DE USUARIO. Aquest error es
degut a que la màquina no està com de confiança.
Hem que crear una compta de màquina per cada equip que volguem introduïr en el
domini, la compta de màquina estarà formada per un compta d’usuario unix i una
compta d’usuario samba i a diferencia de la compta d’usuari, aquesta tindrà el
símbol dolar.
# passwd -l WinXP-SP3$
Creem la compta samba, la opció –m indica que es tracta d’una compta de tipus
màquina.
#smbpasswd -a -m WinXP-SP3
10. BIBLIOGRAFIA
http://fliiby.com/file/26557/ag1y87ah7t.html
http://www.scribd.com/doc/8754614/Configuracion-Del-Cliente-LDAP
http://edin.no-ip.com/content/ldap-samba-pdc-pamnss-debian-lenny-howto
http://www.dragonjar.org/como-configurar-ldap-en-ubuntu-server-o-debian.xhtml
http://es.tldp.org/COMO-INSFLUG/COMOs/LDAP-Linux-Como/LDAP-Linux-
Como.html
http://www.debian-administration.org/article/OpenLDAP_installation_on_Debian#ldap-
install
http://www.ac.usc.es/docencia/ASRI/Tema_6html/node22.html
http://dns.bdat.net/documentos/ldap/
http://www.tuxjm.net/docs/samba+ldap-como/html-onechunk/
http://www.linuca.org/body.phtml?nIdNoticia=327
http://jroliva.wordpress.com/samba-ldap-debian-40-etch/
http://edin.no-ip.com/content/ldap-samba-pdc-pamnss-debian-lenny-howto
http://www.esdebian.org/wiki/controlador-primario-dominio-pdc-debian-lenny-50-
mediante-samba-pamnss-openldap
http://jroliva.wordpress.com/samba-ldap-debian-40-etch/