Sie sind auf Seite 1von 19

cunori.com 192.168.1.

123456

Instalacin del OpenLDAP


El primer paso ser la instalacin de OpenLDAP:
apt-get install slapd ldap-utils

El asistente nos solicitar la contrasea del administrador del directorio LDAP. Nosotros utilizaremos la contrasea 123456

Configuracin bsica del LDAP


Ejecutaremos el siguiente comando para configurar los principales parmetros de nuestro directorio OpenLDAP:
dpkg-reconfigure --priority=low slapd

El asistente nos solicitar la siguiente informacin: o Desea omitir la configuracin del servidor OpenLDAP? No o Introduzca su nombre de dominio DNS: cunori.com o Nombre de la organizacin: cunori.com o Contrasea del administrador: 123456 o Verificacin de la contrasea: 123456 o Motor de base de datos a utilizar: HDB o Desea que se borre la base de datos cuando se purgue el paquete slapd? No. De esta manera, aunque desinstalramos por equivocacin el paquete slapd no perderamos nuestros datos. o Desea mover la base de datos antigua? S. Relizamos una copia de seguridad de los datos anteriores.
Hugo Diego Josu Rivas Elas

o Desea permitir el protocolo LDAPv2? No. nicamente deberamos permitir el protocolo LDAPv2 si queremos utilizar alguna aplicacin que solo acepta la versin 2. Comprobamos que se ha inicializado correctamente nuestro directorio:
slapcat

Debera mostrar dos objetos: o La raz de nuestro directorio: dn: dc=cunori,dc=com o El usuario administrador: dn: cn=admin,dc=cunori,dc=com Si no muestra la informacin esperada pararemos el servicio slapd, borraremos la base de datos actual, ejecutaremos el asistente (introduciendo los datos indicados anteriormente), iniciaremos el servicio slapd y comprobaremos de nuevo el contenido de nuestro directorio:

service slapd stop rm -R /var/lib/ldap/* dpkg-reconfigure --priority=low slapd service slapd start slapcat

Configuracin Avanzada
Conexin segura (TLS/SSL) y Verificacin del Servicio
Podemos verificar que el servicio est en ejecucin con el siguiente comando:
service slapd status

Tambin podemos comprobar que el servicio slapd est escuchando en el puerto esperado (TCP 389):
netstat -atun (muestra los puertos en formato numrico, 389) netstat -atu (muestra el nombre del servicio, ldap)

Hugo Diego Josu Rivas Elas

Verificamos que la conexin a nuestro directorio OpenLDAP realizando una consulta:


ldapsearch -x -b "dc=cunori,dc=com"

Parmetros: -x Configuracin sencilla en lugar de SASL. -b Punto de inicio de la consulta.

Configuracin de OpenLDAP para almacenar la informacin de Samba


El siguiente paso es la configuracin de OpenLDAP para almacenar la informacin de Samba (dominio, grupos, usuarios, equipos...).

Instalacin del esquema de Samba


El primer paso ser listar los esquemas que OpenLDAP ya tiene cargados:
ls -l /etc/ldap/slapd.d/cn\=config/cn\=schema

Por defecto OpenLDAP carga los siguientes esquemas:


cn={0}core.ldif cn={1}cosine.ldif cn={2}nis.ldif cn={3}inetorgperson.ldif

Si aadimos otro esquema deberamos asignarle el siguiente nmero libre. En nuestro caso, el 4. El esquema OpenLDAP de Samba podemos encontrarlo en el paquete sambadoc:
apt-get install samba-doc

Hugo Diego Josu Rivas Elas

Copiamos el esquema de samba al directorio donde OpenLDAP tiene los almacenados los esquemas (/etc/ldap/schema):
zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

A continuacin crearemos un directorio temporal donde crearemos y modificaremos todos los ficheros de configuracin de OpenLDAP:
mkdir -p /root/temporal/ldap

Creamos un directorio donde almacenaremos los esquemas en formato LDIF:


mkdir /root/temporal/ldap/esquemas.d

Creamos el fichero (nano, gedit) /root/temporal/ldap/esquemas.conf y estableceremos como contenido la lista de esquemas ya cargados en OpenLDAP (en riguroso orden) y los esquemas que queremos aadir (en nuestro caso, Samba):

include include include include include

/etc/ldap/schema/core.schema /etc/ldap/schema/cosine.schema /etc/ldap/schema/nis.schema /etc/ldap/schema/inetorgperson.schema /etc/ldap/schema/samba.schema

Convertimos el fichero /root/temporal/ldap/esquemas.conf a formato LDIF:

slaptest -f /root/temporal/ldap/esquemas.conf -F /root/temporal/ldap/esquemas.d

Hugo Diego Josu Rivas Elas

Editamos el fichero ldif del esquema Samba (/root/temporal/ldap/esquemas.d/cn\=config/cn\=schema/cn\=\{4\}samba.ld if) y realizamos los siguientes cambios: o Modificamos las tres primeras lneas de la siguiente manera:

dn: cn=samba,cn=schema,cn=config objectClass: olcSchemaConfig cn: samba

o Borramos las ltimas lneas:

structuralObjectClass: olcSchemaConfig entryUUID: 8309b686-91ed-102f-93fa-972e7504ce9b creatorsName: cn=config createTimestamp: 20101201232147Z entryCSN: 20101201232147.210006Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20101201232147Z

Aadimos el esquema Samba con el siguiente comando:

ldapadd -Y EXTERNAL -H ldapi:/// -f /root/temporal/ldap/esquemas.d/cn\=config/cn\=schema/cn\=\{4\}samba.ldif

Parmetros: -Y Especifica el mecanismo SASL de autentificacin. -H Especifica la URI que hace referencia al servidor LDAP (protocolo/host/puerto). -f Lee las modificaciones desde un fichero en lugar de utilizar la entrada estndar.

Hugo Diego Josu Rivas Elas

ndices de Samba
Samba necesita una serie de ndices en la base de datos para funcionar correctamente. Crearemos el fichero /root/temporal/ldap/samba_indices.ldif con el siguiente contenido:

dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub

Aadimos los ndices anteriores con el siguiente comando:

ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/temporal/ldap/samba_indices.ldif

Podemos comprobar que los ndices se han aadido correctamente con la siguiente consulta:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex

Parmetros: -Q Habilita el modo SASL Quiet. Nunca solicita informacin. -LLL Modifica la forma en que se muestra la informacin
Hugo Diego Josu Rivas Elas

-Y Especifica el mecanismo SASL de autentificacin. -H Especifica la URI que hace referencia al servidor LDAP (protocolo/host/puerto). -f Lee las modificaciones desde un fichero en lugar de utilizar la entrada estndar.

Aadimos usuario LDAP de solo consulta


Si configuramos alguna aplicacin que solo necesite acceso de lectura a OpenLDAP es recomendable crear un usuario que pueda consultar el directorio pero que no pueda modificarlo. Creamos un fichero con la informacin del usuario (/root/temporal/ldap/usuario_consulta.ldif):

dn: cn=consulta,dc=cunori,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: conexion description: Usuario de consulta userPassword: indiferente

Aadimos el usuario cn=consulta,dc=cunori,dc=com con el siguiente comando:

ldapadd -x -D "cn=admin,dc=cunori,dc=com" -w 123456 -f /root/temporal/ldap/usuario_consulta.ldif

Parmetros: -x Configuracin sencilla en lugar de SASL.


Hugo Diego Josu Rivas Elas

-D Usuario con la que realizamos la conexin. -w Contrasea del usuario con el que realizamos la conexin. -f Lee las modificaciones desde un fichero en lugar de utilizar la entrada estndar. Debemos establecer la contrasea del nuevo usuario:

ldappasswd -x -D "cn=admin,dc=cunori,dc=com" -w 123456 -s consulta "cn=consulta,dc=cunori,dc=com"

Parmetros: -s Contrasea que queremos establecer al usuario. Podemos comprobar qu permisos de acceso a la base de datos estn asignados actualmente:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={1}hdb olcAccess

Para establecer los nuevos permisos creamos el fichero /root/temporal/ldap/permisos.ldif:

dn: olcDatabase={1}hdb,cn=config changetype: modify delete: olcAccess dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcAccess olcAccess: to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword,sambaPwdMu stChange,sambaPwdLastSet by dn="cn=admin,dc=cunori,dc=com" write by dn="cn=consulta,dc=cunori,dc=com" read by anonymous auth by self write by * none

Hugo Diego Josu Rivas Elas

dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by * read dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcAccess olcAccess: to * by self write by dn="cn=admin,dc=cunori,dc=com" write by * read

Podemos realizar las modificaciones con el siguiente comando:

ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /root/temporal/ldap/permisos.ldif

Operaciones bsicas de gestin


Copias de seguridad de la base de datos
Realizar copia de seguridad de la base de datos:

slapcat -l backup.ldif

Recuperar copia de seguridad de la base de datos:

slapadd -c -l backup.ldif

Instalacin de Samba
Instalamos el servidor Samba:

Hugo Diego Josu Rivas Elas

apt-get install samba

El asistente nos solicitar la siguiente informacin: Nombre del dominio o del grupo de trabajo: cunori.com

Configuracin de Samba
El primer paso ser realizar una copia de seguridad del fichero de configuracin de Samba (/etc/samba/smb.conf):

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

El contenido de /etc/samba/smb.conf debe ser el siguiente:

[global] ### ------ Dominio ------ ### display charset = UTF-8 workgroup = cunori.com netbios name= ingenieria realm = cunori.com server string = %h PDC security = user dns proxy = No ### ------ Usuarios ------ ### passdb backend = ldapsam:ldap://127.0.0.1 username map = /etc/samba/smbusers # Si queremos permitir el acceso a usuarios invitados deberemos crear el # usuario indicado en 'guest account' # map to guest = Bad User # guest account = guest map to guest = Never encrypt passwords = Yes

Hugo Diego Josu Rivas Elas

unix password sync = Yes ldap passwd sync = Yes passwd program = /usr/sbin/smbldap-passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* #idmap backend = ldap:ldap://127.0.0.1 #idmap uid = 10000-40000 #idmap gid = 10000-40000 ### ------ PDC ------ ### domain master = Yes preferred master = Yes local master = Yes wins support = Yes os level = 100 #domain logons = Yes #logon path = \\%L\profiles\%U\ #logon drive = H: logon script = logon.bat time server = Yes ### ------ LDAP ------ ### ldap suffix = dc=cunori,dc=com ldap admin dn = cn=admin,dc=cunori,dc=com ldap ldap ldap ldap user suffix = ou=Users group suffix = ou=Groups machine suffix = ou=Computers idmap suffix = ou=Idmap

ldap passwd sync = Yes ldap ssl = No ldap delete dn = Yes # La siguiente directiva solo tiene sentido si tenemos un servidor LDAP esclavo # ldap replication sleep = 1000

add machine script = /usr/sbin/smbldap-useradd -w %u 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

Hugo Diego Josu Rivas Elas

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 ### ------ Ficheros ------ ### case sensitive = No default case = lower preserve case = Yes short preserve case = Yes map acl inherit = Yes hide unreadable = Yes dos charset = 850 Unix charset = ISO8859-1 ### ------ Impresoras ------ ### # load printers = Yes # printing = cups # printcap name = cups ### ------ Red ------ ### socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 interfaces = eth0 eth1 eth2 eth3 lo hosts allow = 127.0.0.1, 192.168.1.0/24, 10.0.2.0/24 hosts deny = 0.0.0.0 smb ports = 139 445 bind interfaces only = Yes name resolve order = wins hosts lmhosts bcast # La directiva "remote announce" solo la utilizaremos para enviar # paquetes broadcast a redes remotas (no conectadas al servidor) # remote announce = 192.168.200.255, 192.168.210.255 ### ------ Logs ------ ### syslog only = No max log size = 1000 log file = /var/log/samba/log.%m syslog = 0

### ------ Varios ------ ### panic action = /usr/share/samba/panic-action %d ### ------ Comparticiones ------ ###

Hugo Diego Josu Rivas Elas

[netlogon] comment = Domain Logon Service path = /home/samba/netlogon guest ok = No read only = Yes browseable = No [profiles] comment = Network Profiles Share path = /home/samba/profiles read only = No create mask = 0600 directory mask = 0700 browseable = No guest ok = No printable = No profile acls = Yes csc policy = disable [homes] comment = Home Directories valid users = %S, %D%w%S read only = No browseable = No guest ok = No create mask = 0600 directory mask = 0700 inherit acls = Yes vfs objects = recycle recycle:repository = Papelera de reciclaje recycle:keeptree = Yes recycle:versions = Yes [printers] comment = All Printers path = /var/spool/samba browseable = No printable = Yes guest ok = No read only = Yes create mask = 0700 [print$] comment = Printer Drivers

Hugo Diego Josu Rivas Elas

path = /var/lib/samba/printers browseable = Yes read only = Yes guest ok = No [public] path = /tmp read only = No guest ok = Yes

Crearemos el fichero /etc/samba/smbusers con el siguiente contenido:

root = Administrador root = Administrator

Indicamos a Samba la contrasea del usuario rootDN (cn=admin,dc=cunori,dc=com):

smbpasswd -w 123456

La contrasea del usuario rootDN se almacena en el fichero /var/lib/samba/secrets.tdb. Es importante que este fichero solo pueda ser leido por el usuario root. Reiniciamos el servicio Samba:

service samba restart service smbd restart

Si consultamos el contenido de nuestro directorio (comando slapcat) veremos cmo se ha creado un objeto (dn: sambaDomainName=INGENIERIA,dc=cunori,dc=com) con la informacin de nuestro dominio Samba.

Hugo Diego Josu Rivas Elas

Directorios de Samba: netlogon, profiles y shares

Crearemos los directorios necesarios para almacenar la informacin de nuestro dominio Samba:

netlogon: almacena los scripts de autentificacin de los clientes Windows. profiles: almacena los perfiles de usuario de los clientes Windows. shares: almacena los directorios compartidos de nuestro dominio.

Ejecutaremos los siguientes comandos para crear y configurar los directorios anteriores:

mkdir -p /home/samba/{netlogon,profiles,shares} chmod 755 /home/samba/{netlogon,shares} chmod 1777 /home/samba/profiles

Fichero netlogon.bat
Esta parte es opcional
Creamos el fichero /home/samba/netlogon/netlogon.bat.unix con el siguiente contenido:

net time \\INGENIERIA /set /yes net use H: \\INGENIERIA\%U

INGENIERIA es el nombre NETBIOS de nuestro servidor Samba.

Hugo Diego Josu Rivas Elas

Debemos convertir el fichero a formato DOS. Para ello utilizaremos la aplicacin tofrodos. Instalamos la aplicacin tofrodos:

apt-get install tofrodos

Convertimos el fichero a formato DOS:

fromdos -u < /home/samba/netlogon/netlogon.bat.unix > /home/samba/netlogon/netlogon.bat

El paquete smbldap-tools nos facilitar mucho la gestin de nuestro dominio: crear los objetos necesarios (unidades organizativas, grupos...) y nos proporcionar comandos para la gestin de usuarios y grupos.

Instalacin de smbldap-tools

Instalamos el paquete smbldap-tools:

apt-get install smbldap-tools

Configuracin de smbldap-tools

Hugo Diego Josu Rivas Elas

Descomprimimos el archivo /usr/share/doc/smbldaptools/examples/smbldap.conf.gz en /etc/smbldap-tools/smbldap.conf

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

Copiamos el archivo /usr/share/doc/smbldaptools/examples/smbldap_bind.conf al directorio /etc/smbldap-tools/

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

Buscamos el Samba SID de nuestro directorio PDC y lo copiamos al portapapeles:

net getlocalsid

Ahora abrimos el archivo /etc/smbldap-tools/smbldap.conf y lo modificamos de modo que los datos queden de la siguiente manera:

SID="S-1-5-21-502694665-2564526811-1695455512" sambaDomain="ingenieria" slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ldapTLS="0" ldapSSL="0" verify="require" cafile="/etc/smbldap-tools/ca.pem" clientcert="/etc/smbldap-tools/smbldap-tools.pem" clientkey="/etc/smbldap-tools/smbldap-tools.key" suffix="dc=cunori,dc=com" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" scope="sub"

Hugo Diego Josu Rivas Elas

password_hash="MD5" password_crypt_salt_format="%s" userLoginShell="/bin/bash" userHome="/home/%U" userHomeDirectoryMode="700" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" shadowAccount="1" defaultMaxPasswordAge="45" userSmbHome="\\%L\%U\.profile" userProfile="\\%L\%profiles\%U" userHomeDrive="H:" userScript="logon.bat" mailDomain="cunori.com" with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd"

Modificamos el archivo /etc/smbldap-tools/smbldap_bind.conf:

slaveDN="cn=admin,dc=cunori,dc=com" slavePw="123456" masterDN="cn=admin,dc=cunori,dc=com" masterPw="123456"

Cambiamos la configuracin con los permisos correctos:

chmod 0644 /etc/smbldap-tools/smbldap.conf chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Ahora terminamos de crear nuestra base de datos ldap:

smbldap-populate

Hugo Diego Josu Rivas Elas

Hacemos backup a la base de datos anterior:

slapcat > ~/smbldap.ldif

Comprobacin de Conexin
Para realizar una conexin al servidor Samba necesitamos instalar el cliente Samba:

apt-get install smbclient service smbd restart

El comando que utilizaremos para comprobar es el siguiente:

smbclient L localhost

Se mostrar lo siguiente:

Hugo Diego Josu Rivas Elas

Das könnte Ihnen auch gefallen