Configurando un Controlador Primario de Dominio en Fedora 11 con Samba y OpenLDAP

=== Aún en revisión ===

Software:  Fedora 11 Leonidas, openldap 2.4.15-3
Nombre del Sistema:   mypdc.mydom.mynet

INSTALAR Y CONFIGURAR OPENLDAP

1.- Instalar los paquetes requeridos

openldap.i586 : LDAP support libraries
openldap-clients.i586 : LDAP client utilities
openldap-devel.i586 : LDAP development libraries and header files
openldap-servers.i586 : LDAP server
openldap-servers-sql.i586 : SQL support module for OpenLDAP server
nss_ldap.i586 : NSS library and PAM module for LDAP
migrationtools.noarch : Migration scripts for LDAP
phpldapadmin.noarch : Web-based tool for managing LDAP servers

smbldap-tools.noarch : User and group administration tools for Samba/OpenLDAP

yum install openldap openldap-clients openldap-devel openldap-servers openldap-servers-sql nss_ldap migrationtools phpldapadmin smbldap-tools

2.- Arrancar el servicio

[root@mypdc ~]# chkconfig --levels 235 ldap on
[root@mypdc ~]# service ldap start 

3.- Crear el password para el usuario root de LDAP

[root@mypdc ~]# slappasswd
    New password:
    Re-enter new password:
    {SSHA}BXpSV5tAvjtQ/ZtsbTsS0Q2b4YenI88R

4.- Actualizar el password de root en el archivo de configuración de LDAP

[root@mypdc ~]# vi /etc/openldap/slapd.conf

 88 database        bdb
 89 suffix          "dc=mydom,dc=mynet"
 90 checkpoint      1024 15
 91 rootdn          "cn=Manager,dc=mydom,dc=mynet"
 92 rootpw          {SSHA}BXpSV5tAvjtQ/ZtsbTsS0Q2b4YenI88R

5.- Aplicar los cambios

[root@mypdc ~]# service ldap restart 

6.- Crear usuarios de prueba

[root@mypdc ~]# useradd test1
[root@mypdc ~]# passwd test1
    Changing password for user test1.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
[root@mypdc ~]# useradd test2
[root@mypdc ~]# passwd test2
    Changing password for user test2.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.

7.- Migrar los usuarios locales a LDAP

[root@mypdc ~]# grep root /etc/passwd > /etc/openldap/passwd.root
[root@mypdc ~]# grep test1 /etc/passwd > /etc/openldap/passwd.test1
[root@mypdc ~]# grep test2 /etc/passwd > /etc/openldap/passwd.test2

8.- Actualizar la configuración en el script de migración

[root@mypdc ~]# vi /usr/share/migrationtools/migrate_common.ph

 70 # Default DNS domain
 71 $DEFAULT_MAIL_DOMAIN = "mydom.mynet";
 72 
 73 # Default base 
 74 $DEFAULT_BASE = "dc=mydom,dc=mynet";

9.- Convertir el passwd.file a un archivo de formato intercambiable de datos de LDAP (LDAP data interchange file -ldif)

[root@mypdc ~]# /usr/share/migrationtools/migrate_passwd.pl /etc/openldap/passwd.root /etc/openldap/root.ldif
[root@mypdc ~]# /usr/share/migrationtools/migrate_passwd.pl /etc/openldap/passwd.test1 /etc/openldap/test1.ldif
[root@mypdc ~]# /usr/share/migrationtools/migrate_passwd.pl /etc/openldap/passwd.test2 /etc/openldap/test2.ldif

10.- Actualizar el archivo root.ldif para el administrador del servidor LDAP

[root@mypdc ~]# vi /etc/openldap/root.ldif

  1 dn: uid=root,ou=People,dc=mydom,dc=mynet
  2 uid: root
  3 cn: Manager
  4 objectClass: account

============== UTILIZAR SAMBA COMO BACKEND =======================

 Importar el esquema de samba al árbol de LDAP

11.- Copiar el esquema de Samba al directorio de LDAP

[root@mypdc ~]# cp /usr/share/doc/samba-3.3.2/LDAP/samba.schema /etc/openldap/schema/

12.- Creamos un archivo con la entrada para la configuracion

[root@mypdc ~]# vi /etc/openldap/schema_convert.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/samba.schema

13.- Creamos un directorio para la salida

[root@mypdc ~]# mkdir /tmp/ldif_output

14.- Usamos slaptest para convertir los archivos de esquema

[root@mypdc ~]# slaptest -f /etc/openldap/schema_convert.conf -F /tmp/ldif_output
config file testing succeeded

15.- Editar el archivo /tmp/ldif_output/cn=config/cn=schema/cn={12}samba.ldif y cambiar los siguientes atributos

root@mypdc ~]# vi /tmp/ldif_output/cn=config/cn=schema/cn={12}samba.ldif

  1 dn: cn=samba,cn=schema,cn=config
  2 objectClass: olcSchemaConfig
  3 cn: samba

** remover las siguientes líneas del final del archivo

186 structuralObjectClass: olcSchemaConfig
187 entryUUID: 1db6cc9e-0259-426c-a4d1-4a746afc99e2
188 creatorsName: cn=config
189 createTimestamp: 20090626183612Z
190 entryCSN: 20090626183612.991751Z#000000#000#000000
191 modifiersName: cn=config
192 modifyTimestamp: 20090626183612Z

los valores pueden variar, solo hay que asegurarse que se borren las líneas completas

16.- Utilizamos la utileria ldapadd para agregar el nuevo esquema al directorio

root@mypdc ~]# ldapadd -x -D "cn=admin,cn=config" -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{12\}samba.ldif

17.- Crear un  archivo samba_indexes.ldif con las siguientes lineas

root@mypdc ~]# vi /etc/opeldap/samba_indexes.ldif

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

18.- Utilizar la utileria ldapmodify para cargar los nuevos indices

root@mypdc ~]# ldapmodify -x -D cn=admin,cn=config -W -f /etc/openldap/samba_indexes.ldif

19.- Si todo salió bien se pueden ver los nuevos indices con ldapsearch

root@mypdc ~]# ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb

20.- Configurar phpldapadmin

root@mypdc ~]# vi /usr/share/phpldapadmin/config/conf.php

167 $ldapservers->SetValue($i,'server','base',array('dc=mydom,dc=mynet'));

21.- Editar nsswitch.conf

[root@mypdc ~]# vi /etc/nsswitch.conf

 33 passwd:     compat      ldap
 34 shadow:     compat      ldap
 35 group:      compat      ldap

**************************  SAMBA ******************

22.-  Modificar /etc/openldap/slapd.conf para indicarle que soporte el esquema de samba

[root@mypdc ~]# vi /etc/openldap/slapd.conf

  6 include         /etc/openldap/schema/corba.schema
  7 include         /etc/openldap/schema/core.schema
  8 include         /etc/openldap/schema/cosine.schema
  9 include         /etc/openldap/schema/duaconf.schema
 10 include         /etc/openldap/schema/dyngroup.schema
 11 include         /etc/openldap/schema/inetorgperson.schema
 12 include         /etc/openldap/schema/java.schema
 13 include         /etc/openldap/schema/misc.schema
 14 include         /etc/openldap/schema/nis.schema
 15 include         /etc/openldap/schema/openldap.schema
 16 include         /etc/openldap/schema/ppolicy.schema
 17 include         /etc/openldap/schema/collective.schema
 18 include         /etc/openldap/schema/samba.schema

23.- Agregar los parámetros requeridos

 22 allow bind_anon_dn

 91 database        bdb
 92 suffix          "dc=mydom,dc=mynet"
 93 checkpoint      1024 15
 94 rootdn          "cn=Manager,dc=mydom,dc=mynet"
 95 rootpw          {SSHA}qBASkIcIKLWSl/GGKCLGlRRXSp8Mu+Cg

 108 # Indices to maintain for this database
 109 index objectClass                       eq,pres
 110 index ou,cn,mail,surname,givenname      eq,pres,sub
 111 index uidNumber,gidNumber,loginShell    eq,pres
 112 index uid,memberUid                     eq,pres,sub
 113 index nisMapName,nisMapEntry            eq,pres,sub
 114 index displayName                       eq,pres,sub
 115 index sambaSID                          eq
 116 index sambaPrimaryGroupSID              eq
 117 index sambaDomainName                   eq
 118 index default                           sub

24.- Configurar /etc/openldap/ldap.conf

[root@mypdc ~]# vi /etc/openldap/ldap.conf

 14 URI ldap://127.0.0.1/
 15 BASE dc=mydom,dc=mynet

25.- Arrancar nuevamente ldap

[root@mypdc ~]# service ldap restart

26.- Configurar smb.conf con wizard de SWAT

Si no quieres meterte en lios con el kilométrico conf de samba, utiliza el wizard para configurarlo como Controlador de Dominio y posteriormente personaliza el archivo resultante

27.- Personalizar samba en /etc/samba/smb.conf

[root@mypdc ~]# vi /etc/samba/smb.conf

  1 # Samba config file created using SWAT
  2 # from UNKNOWN (¬)
  3 # Date: 2009/06/29 14:56:49
  4 
  5 [global]
  6         workgroup = MYGROUP
  7         server string = Samba Server Version %v
  8         passdb backend = ldapsam:ldap://localhost
  9         log file = /var/log/samba/log.%m
 10         max log size = 50
 11         cups options = raw

 14  # ----- Parametros LDAP -----
 15 
 16  #Quien va a ser el usuario administrador del dominio
 17          admin users = Administrator @"Domain Admins"
 18          passdb backend = ldapsam:ldap://localhost
 19  #Sufijo ldap para todas las entradas siguientes
 20          ldap suffix = dc=mydom,dc=mynet
 21  # OU de usuarios netbios
 22          ldap user suffix = ou=People
 23  # OU de Grupos netbios
 24          ldap group suffix = ou=Group
 25  # Cuentas maquinas netbios
 26          ldap machine suffix = ou=Computers
 27  # La cuenta administrador openLDAP
 28          ldap admin dn = cn=Manager,dc=mydom,dc=mynet
 29  # Sincronizacion de cuentas LDAP, NT y LM
 30          ldap passwd sync = yes
 31  # Agregado de cuentas maquina automáticamente
 32          add machine script = /usr/local/sbin/smbldap-useradd.pl -w %u
 33 
 34  # Aqui dejo comentado por si es necesario o a tu criterio usarlo 
 35  #ldap ssl = start tls
 36         add user script = /usr/local/sbin/smbldap-useradd.pl -m "%u"
 37         ldap delete dn = Yes
 38         delete user script = /usr/local/sbin/smbldap-userdel.pl "%u"
 39         add group script = /usr/local/sbin/smbldap-groupadd.pl -p "%g"
 40         delete group script = /usr/local/sbin/smbldap-groupdel.pl "%g"
 41         add user to group script = /usr/local/sbin/smbldap-groupmod.pl -m "%u" "%g"
 42         delete user from group script = /usr/local/sbin/smbldap-groupmod.pl -x "%u" "%g"
 43         set primary group script = /usr/local/sbin/smbldap-usermod.pl -g "%g" "%u"
 44  #ldap replication sleep = 1000 # Tiempo de replicacion entre servidores 
 45 
 46  # ----- FIN DE PARAMETROS LDAP 

 49 security = user
 50 
 51 encrypt passwords = yes
 52 os level = 65
 53 domain master = yes
 54 preferred master = yes
 55 domain logons = yes

28.- Le decimos a samba que el usuario administrador de openldap para que pueda conectarse a su directorio

[root@mypdc ~]# smbpasswd -w password

29.- Probamos nuestra configuración y reiniciamos samba

[root@mypdc ~]# testparm
[root@mypdc ~]# service smb restart

30.- Averiguamos el SID de nuestro  servidor de samba

[root@mypdc ~]# net getlocalsid

SID for domain MYGROUP is:   S-1-5-21-XXXXXXXXXX-XXXXXXXXXX 

* Anotalo o copialo

31.- Configuramos el script de configuración de smbldap

[root@mypdc ~]# vim /etc/smbldap-tools/smbldap.conf

 35 # Put your own SID. To obtain this number do: "net getlocalsid".
 36 # If not defined, parameter is taking from "net getlocalsid" return
 37 SID="S-1-5-21-757083707-1314198870-71231094"

 58 # Slave LDAP server
 59 # Ex: slaveLDAP=127.0.0.1
 60 # If not defined, parameter is set to "127.0.0.1"
 61 slaveLDAP="127.0.0.1"
 62 
 63 # Slave LDAP port
 64 # If not defined, parameter is set to "389"
 65 slavePort="389"
 66 
 67 # Master LDAP server: needed for write operations
 68 # Ex: masterLDAP=127.0.0.1
 69 # If not defined, parameter is set to "127.0.0.1"
 70 masterLDAP="127.0.0.1"
 71 
 72 # Master LDAP port
 73 # If not defined, parameter is set to "389"
 74 masterPort="389"
 75 
 76 # Use TLS for LDAP
 77 # If set to 1, this option will use start_tls for connection
 78 # (you should also used the port 389)
 79 # If not defined, parameter is set to "0"
 80 #ldapTLS="1"

Esta última línea (80) debe comentarse o ponerse en 0

104 # LDAP Suffix
105 # Ex: suffix=dc=IDEALX,dc=ORG
106 suffix="dc=mydom,dc=mynet"

108 # Where are stored Users
109 # Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
110 # Warning: if 'suffix' is not set here, you must set the full dn for usersdn
111 
112 
113 # linea original  usersdn="ou=People,${suffix}"
114 
115 usersou=q(People)
116 usersdn="ou=People,${suffix}

119 # Where are stored Computers
120 # Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
121 # Warning: if 'suffix' is not set here, you must set the full dn for computersdn
122 # linea original computersdn="ou=Computers,${suffix}"
123 
124 computersou=q(Computers)
125 computersdn="ou=Computers,${suffix}"

128 # Where are stored Groups
129 # Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
130 # Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
131 # linea original  groupsdn="ou=Group,${suffix}"
132 
133 groupsou=q(Group)
134 groupsdn="ou=Group,${suffix}"

137 binddn="cn=Administrator,${suffix}"
138 bindpasswd="master"

En esta línea incluir el passwd del administrador de ldap sin cifrar

183 # Default User (POSIX and Samba) GID
184 defaultUserGid="513"
185 
186 # Default Computer (Samba) GID
187 defaultComputerGid="515"

32.- Llenar el directorio

[root@mypdc ~]# smbldap-populate

6 respuestas a Configurando un Controlador Primario de Dominio en Fedora 11 con Samba y OpenLDAP

  1. jose dice:

    Hola. He seguido tu tutorial y no logro iniciar session phpldapadmin como manager, podrias ayudarme. gracias.

  2. Hola José, disculpa la tardanza en la respuesta pero tuve unas semanas bastantes complicadas y tenía bastante descuidado mi blog. El post que hice sobre Samba lo dejé en revisión porque era un proyecto que traía trabajando y de repente se enfrió (por parte del cliente) y ya no lo concluí.
    El detalle de la validación de phpldapadmin no lo traigo aqui fresco pero debes modificar el archivo de configuración de phpldapadmin con el usuario Manager o al que le des acceso a la herramienta.
    Espero que aún te sirva y si ya lo resolviste compartenoslo por favor

    Saludos

  3. Chesstrian dice:

    Cuando se corren las herramientas de ldap, se hace necesaria una contraseña que no tiene nada que ver con la de Manager, que contraseña debería ir cuando se usan los comandos ldapadd, ldapmodify o la búsqueda?

  4. Jitle Noriega dice:

    hola he seguido el manual al pie de la letra pero no he podido configurar samba como controlador de dominio primario con autenticacion por OPENLDAP, si tienes un manual mas completo en PDF me lo puedes enviar a este email jnoriega.lbp@gmail.com

    Gracias

  5. Forgiveness dice:

    Buenas…. me puedes enviar el manual pdf de lo mismo a mi correo forgiveness911@gmail.com. Gracias.

  6. Hola,

    No tengo un manual propiamente de SAmba en pdf, el post que tengo en el blog es un borrador acerca de los pasos que seguí para levantar un controlador PDC en Fedora y es una compilación de varias fuentes. Lamentablemente no he tenido tiempo de seguir la investigación y se quedó solamente como borrador

    En el sitiode Samba se encuentran excelentes artículos y libros completos de referencia, lamento no haber podido ser de mas utilidad

    Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: