Code

Created trunk inside of 2.6-lhm
[gosa.git] / trunk / gosa-core / doc / admin / es / manual_gosa_es_ldap.tex
1 \chapter{openLDAP}
2 \section{Introducción,¿Que es LDAP?}
3 \subsection{Servicios de Directorios, X.500}
5 Un directorio es una base de datos especializada en busqueda de información basada en atributos.\\
7 X.500|ISO 9594\cite{x500} es un estándar de ITU-S(International Telecommunication Union - Telecommunication Standardisation Burean), anteriormente conocido como CCITT, para solucionar el problema de directorios. Basado en los trabajos realizados con X.400 (un directorio para correo electrónico) y los trabajos de ISO ( International Standards Organisation) y ECMA (European Computer Manufacturers Association).\\
9 El X.501|ISO 9594 parte 2. define los modelos de como debe estar organizada la información, el modelo de información de usuario, el modelo de información administrativa y el servicio de directorio, que define como debe estar distribuida la información entre varios sistemas.\\
11 En X.509|ISO 9594 parte 8. el estándar de autentificación y seguridad usado para SSL.\\
13 X.525|ISO 9594 parte 9. indica como debe ser la replicación entre sistemas.\\
15 En X.519|ISO 9594 parte 5. se definen los protocolos de comunicaciones, entre ellos el que mas nos importa que es DAP - El protocolo de acceso a directorios - que define que operaciones se pueden hacer con la conexión: bind, unbind, los objetos (entradas) y sus operaciones: añadir, eliminar, modificar, buscar, listar, comparar, etc.\\
17 DAP es un protocolo demasiado complejo para que se puedan hacer servidores y clientes para su uso para Internet, así que se crea un protocolo mas cómodo de manejar estos directorios: LDAP.\\
19 LDAP (Lightweight Directory Access Protocol / Protocolo de acceso a directorios ligero) es un protocolo pensado para actualización y busquedas de directorios orientados a Internet (TCP/IP).\\
21 La ultima versión de LDAP es la 3 y es cubierta por los RFCs: 2251\cite{2251}, 2252\cite{2252}, 2253\cite{2253}, 2254\cite{2254}, 2255\cite{2255}, 2256\cite{2256} y 3377\cite{3377}.\\
22 \newpage
23 \subsection{Conceptos Básicos de LDAP}
25 \begin{itemize}
26 \item[]Entrada\\ (Entry)\\
27 Una entrada es una colección de atributos a los que se identifica por su DN (nombre distinguido /  distinguished name).
28 Un DN es único en todo el árbol y por lo tanto identifica claramente la entrada a la que refiere. Como ejemplo: CN=Alex O=CHAOSDIMENSION C=ES identificaría al objeto de nombre común Alex que esta en la organización CHAOSDIMENSION y en país ES (España).\\
30 Un RDN( nombre distinguido relativo / relative distinguished name) es parte del DN, de tal manera que concatenando los RDN dan como resultado el DN. Del ejemplo anterior CN=Alex seria un RDN.
32 \item[]Clase de objeto\\(Object Class)\\
33 Una clase es un atributo especial (ObjectClass) que define que atributos son requeridos y permitidos en una entrada. Los valores de las clases objetos están definidos en el esquema.
34 Todas las entradas deben tener un atributo ObjectClass.
35 No se permite añadir atributos a las entradas que no permitidos por las definiciones de las clases de objetos de la entrada.
37 \item[]Atributo\\(Attrib)\\
38 Un atributo es un tipo con uno o mas valores asociados. 
39 Se identifica por su OID ( identificador de objeto / object identifier).
40 El tipo de atributo indica si puede haber mas de un valor de este atributo en una entrada, los valores que pueden tener y como se los puede buscar.
42 \item[]Esquema\\(Schema)\\
43 Un esquema es una colección de definiciones de tipos de atributos, clases de objetos e información que el servidor usa para realizar las busquedas, introducir valores en un atributo, y permitir operaciones de añadir o modificar.
45 \item[]Filtro\\(Filter)\\
46 Para realizar una busqueda debemos tener en cuenta varios parámetros importantes:
48 \begin{list}{}{}
49 \item[Base](baseObject)\\
50 Un DN que sera a partir del cual realizaremos la busqueda.
52 \item[Alcance](scope)\\
53 Puede tener varios valores.\\- base: solo buscara en ese nivel base.\\- sub: hará busqueda recursiva por todo el árbol a partir del nivel base.\\- one: descenderá solo un nivel por debajo del nivel base.
55 \item[Tamaño limite](sizelimit)\\
56 Restringe el numero de entradas devueltas como resultado de una busqueda.
58 \item[Tiempo limite](timelimit)\\
59 Restringe el tiempo máximo de ejecución de una busqueda.
61 \item[filtro](filter)\\
62 Es una cadena que defina las condiciones que deben ser completadas para encontrar una entrada.
64 \end{list}
66 Los filtros se pueden concatenar con 'and', 'or' y 'not' para crear filtros mas complejos.\\
67 Por ejemplo un filtro con base O=CHAOSDIMENSION, C=ES, alcance base y filtro (CN=Alex) encontraría la entrada
68 CN=Alex, O=CHAOSDIMENSION, C=ES.\\
70 \end{itemize}
71 \newpage
72 \subsection{Servidores de LDAP}
74 LDAP esta soportado por numerosos servidores siendo los mas conocidos Active Directory de Microsoft, eDirectory de Novell, Oracle Internet Directory de Oracle, iPlanet directory server de SUN y por último pero no menos importante openLDAP.
76 En este manual se tratara el uso e instalación de openLDAP, ya que esta soportado por prácticamente todas las distribuciones de linux y su licencia cumple el estándar openSource.
78 Para mas información véase LDAP Linux HowTo\cite{llh}, Using LDAP\cite{ul}, openLDAP administrator Guide\cite{oag} y en español la parte relativa a LDAP del magnifico manual Ldap+Samba+Cups+Pykota\cite{lscp}. 
80 \section{Instalación}
82 Las mayorías de las distribuciones tienen paquetes de openLDAP. Como usar apt-get en debian, Urpmi en Mandrake, up2date en redhat o Yast2 en Suse sale fuera de este manual. Así que este manual explicara los necesario para la construcción desde las fuentes.
84 \subsection{Descargando openLDAP}
85 \label{down_ldap}
86 Aunque realmente no son necesarios, hay varios paquetes que deberían ser instalados antes de openLDAP ya que seguramente los necesitaremos.
88 El primero de ellos es \textbf{openSSL} \ref{down_ssl}.
90 El segundo es Servicios es \textbf{Kerberos v5} \ref{down_kerberos_mit} \ref{down_kerberos_heimdal}.
92 También será interesante tener instaladas las librerías \textbf{Cyrus SASL} (Capa simple de seguridad y autentificación de Cyrus / Cyrus's Simple Authentication and Security Layer).\\Que se pueden conseguir en \htmladdnormallink{http://asg.web.cmu.edu/sasl/}{http://asg.web.cmu.edu/sasl/sasl-library.html}, Cyrus SASL hace uso de openSSL y Kerberos/GSSAPI para autentificación.
94 Necesitaremos por ultimo una base de datos para openLDAP, en lo que atañe a este manual esta será dada a través de las librerías de  \htmladdnormallink{\textbf{Sleepycat Software Berkeley DB}}{http://www.sleepycat.com/}, las necesitaremos tanto si usamos LDBM (Berkeley DB versión 3) o BDB (Berkeley DB versión 4). También existen en la totalidad de distribuciones.
96 Una vez obtenidas y compiladas las librerías necesarias nos bajamos las \htmladdnormallink{fuentes de openLDAP}{http://www.openldap.org/software/download/} en /usr/src (por ejemplo) y 
97 descomprimimos en ese directorio (por ejemplo con tar -zxvf openldap-2.X.XX.tgz).
98 \newpage
99 \subsection{Opciones de instalación}
101 La siguientes opciones son para openLDAP versión 2.2.xx que pueden diferir de las versiones 2.0.XX y 2.1.XX.
103 Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure.sh} con las siguientes opciones.
105 \begin{itemize}
106 \item[](Directorios)\\
107 \begin{tabular}{|ll|}\hline
108 --prefix=/usr & \\
109 --libexecdir='\${prefix}/lib' & \\
110 --sysconfdir=/etc & \\
111 --localstatedir=/var/run & \\
112 --mandir='\${prefix}/share/man' & \\
113 --with-subdir=ldap & \\
114 \hline \end{tabular}
116 \item[](Opciones Básicas)\\
117 \begin{tabular}{|ll|}\hline
118 --enable-syslog & \\
119 --enable-proctitle & \\
120 --enable-ipv6 & $\rightarrow$Sockets IPv6\\
121 --enable-local & $\rightarrow$Sockets Unix\\
122 --with-cyrus-sasl & $\rightarrow$Autentificación Cyrus SASL soportadas\\
123 --with-threads & $\rightarrow$Soporte de Hilos de ejecución\\
124 --with-tls & $\rightarrow$Soporte TLS/SSL\\
125 --enable-dynamic & $\rightarrow$Compilación dinámica\\
126 \hline \end{tabular}
128 \item[](Opciones Slapd)\\
129 \begin{tabular}{|ll|}\hline
130 --enable-slapd & $\rightarrow$Compilar el servidor además de las librerías\\
131 --enable-cleartext & $\rightarrow$Permite el envío de contraseñas en claro\\
132 --enable-crypt & $\rightarrow$Envío de contraseñas encriptadas con DES.\\
133 --enable-spasswd & $\rightarrow$Verificación de contraseñas a través de SASL\\
134 --enable-modules & $\rightarrow$Soporte dinámico de módulos\\
135 --enable-aci & $\rightarrow$Soporte de ACIs por objetos (Experimental)\\
136 --enable-rewrite & $\rightarrow$Reescritura de DN en recuperación de LDAP\\
137 --enable-rlookups & $\rightarrow$Busqueda inversa del nombre del equipo cliente\\
138 --enable-slp & $\rightarrow$Soporte de SLPv2\\
139 --enable-wrappers & $\rightarrow$Soporte TCP wrappers\\
140 \hline \end{tabular}
142 \item[](Soporte)\\
143 \begin{tabular}{|ll|}\hline
144 --enable-bdb=yes & $\rightarrow$Soporte Berkeley versión 4\\
145 --enable-dnssrv=mod & \\
146 --enable-ldap=mod & $\rightarrow$Soporta otro servidor LDAP como base de datos\\
147 --enable-ldbm=mod & \\
148 --with-ldbm-api=berkeley & $\rightarrow$Soporte Berkeley versión 3\\
149 --enable-meta=mod & $\rightarrow$Soporte metadirectorio\\
150 --enable-monitor=mod & \\
151 --enable-null=mod & \\
152 --enable-passwd=mod & \\
153 --enable-perl=mod & $\rightarrow$Soporte scripts en perl\\
154 --enable-shell=mod & $\rightarrow$Soporte scripts en shell\\
155 --enable-sql=mod & $\rightarrow$Soporte base de datos relacional\\
156 \hline \end{tabular}
157 \end{itemize}
159 Posteriormente hacemos:\\
160 \#make \&\& make install
161 \newpage
162 \section{Configuración}
163 \subsection{Básica}
165 \noindent La configuración del servidor slapd de openLDAP se guarda en /etc/ldap/slapd.conf.\\
167 \noindent Una \htmladdnormallink{configuración básica}{http://warping.sourceforge.net/gosa/contrib/es/basic_slapd.conf} quedaría así:\\
168 \\
169 \begin{center}
170 \begin{longtable}{|p{15cm}l|}\hline
171 \caption{Configuración Básica de openLDAP}\\
172 \hline \hline
173 \multicolumn{2}{|c|}{\textbf{Configuración Básica de openLDAP}}\\
174 \hline \hline
175 \endfirsthead
176 \hline \hline
177 \multicolumn{2}{|c|}{\textbf{Configuración Básica de openLDAP (continuación)}}\\
178 \hline \hline
179 \endhead
180 \hline
181 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
182 \hline
183 \endfoot
184 \hline
185 \multicolumn{2}{|c|}{\textbf{Fin}}\\
186 \hline
187 \endlastfoot
188 \# Schema and objectClass definitions, configuración básica & \\
189 include         /etc/ldap/schema/core.schema & \\
190 include         /etc/ldap/schema/cosine.schema & \\
191 include         /etc/ldap/schema/inetorgperson.schema & \\
192 include         /etc/ldap/schema/openldap.schema & \\
193 include         /etc/ldap/schema/nis.schema & \\
194 include         /etc/ldap/schema/misc.schema & \\
195  & \\
196 \#Fuerza a las entradas a encontar eschemas para los ObjectClass & \\
197 schemacheck             on & \\
198  & \\
199 \# Password hash, tipo de encriptación de la clave & \\
200 \# Puede ser: \{SHA\}, \{MD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\
201 password-hash           \{CRYPT\} & \\
202  & \\
203 \# Base de busqueda por defecto & \\
204 defaultsearchbase       "dc=CHAOSDIMENSION,dc=ORG" & \\
205  & \\
206 \#Utilizado por init scripts para parar e iniciar el servidor. & \\
207 pidfile         /var/run/slapd.pid & \\
208  & \\
209 \# Argumentos pasados al servidor. & \\
210 argsfile        /var/run/slapd.args & \\
211  & \\
212 \# Nivel de logs & \\
213 loglevel        1024 & \\
214  & \\
215 \# Donde y que módulos cargar & \\
216 modulepath      /usr/lib/ldap & \\
217 moduleload      back\_bdb \# Berkeley BD versión 4 & \\
218  & \\
219 \#definiciones de la base de datos & \\
220 database        bdb & \\
221  & \\
222 \# La base del directorio & \\
223 suffix          "dc=CHAOSDIMENSION,dc=ORG"  & \\
224  & \\
225 \# Aquí definimos al administrador del directorio y su clave & \\
226 \# En este ejemplo es " tester"  & \\
227 \# La clave se puede sacar con  & \\
228 \# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\
229  & \\
230 rootdn  \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"|  & \\
231 rootpw  \{crypt\}OuorOLd3VqvC2 & \\
232  & \\
233 \# Que atributos indexamos para hacer busquedas & \\
234 index   default                                                sub & \\
235 index   uid,mail                                               eq & \\
236 index   cn,sn,givenName,ou                                     pres,eq,sub & \\
237 index   objectClass                                            pres,eq & \\
238  & \\
239 \# Directorio donde se guarda la base de datos & \\
240 directory       " /var/lib/ldap"  & \\
241  & \\
242 \# Indicamos si deseamos guardar la fecha de la ultima modificación & \\
243 lastmod off & \\
244  & \\
245 \#Acceso del administrador & \\
246 access to * & \\
247         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" =wrscx| & \\
248         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\
249         by * read & \\
250 \end{longtable}
251 \end{center}
253 \newpage
254 \subsection{Específica para GOsa}
256 GOsa añade varios esquemas para el control de ciertos servicios y características de los usuarios.\\
258 Los esquemas necesarios para GOsa están en el paquete, en la seccion contrib, lo ideal será copiarlos todos a /etc/ldap/schema\\
260 Una \htmladdnormallink{configuración recomendada}{http://warping.sourceforge.net/gosa/contrib/es/gosa_slapd.conf} de /etc/ldap/slapd.conf es la siguiente:\\
262 \begin{center}
263 \begin{longtable}{|p{15cm}l|}\hline
264 \caption{Configuración Específica para GOsa}\\
265 \hline \hline
266 \multicolumn{2}{|c|}{\textbf{Configuración Específica para GOsa}}\\
267 \hline \hline
268 \endfirsthead
269 \hline \hline
270 \multicolumn{2}{|c|}{\textbf{Configuración Específica para GOsa (continuación)}}\\
271 \hline \hline
272 \endhead
273 \hline
274 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
275 \hline
276 \endfoot
277 \hline
278 \multicolumn{2}{|c|}{\textbf{Fin}}\\
279 \hline
280 \endlastfoot
281 \# Schema and objectClass definitions, configuración básica & \\
282 include         /etc/ldap/schema/core.schema & \\
283 include         /etc/ldap/schema/cosine.schema & \\
284 include         /etc/ldap/schema/inetorgperson.schema & \\
285 include         /etc/ldap/schema/openldap.schema & \\
286 include         /etc/ldap/schema/nis.schema & \\
287 include         /etc/ldap/schema/misc.schema & \\
288  & \\
289 \# Estos esquemas deberían estar presentes en GOsa. En el caso de samba3 & \\
290 \# se deben cambiar samba.schema y gosa.schema por samba3.schema & \\
291 \# y gosa+samba3.schema. & \\
292 include         /etc/ldap/schema/samba3.schema & \\
293 include         /etc/ldap/schema/pureftpd.schema & \\
294 include         /etc/ldap/schema/gohard.schema & \\
295 include         /etc/ldap/schema/gofon.schema & \\
296 include         /etc/ldap/schema/goto.schema & \\
297 include         /etc/ldap/schema/gosa+samba3.schema & \\
298 include         /etc/ldap/schema/gofax.schema & \\
299 include         /etc/ldap/schema/goserver.schema & \\
300  & \\
301 \#Obliga al cumplimiento de los ObjectClass & \\
302 schemacheck             on & \\
303  & \\
304 \# Password hash, tipo de encriptación de la clave & \\
305 \# Puede ser: \{SHA\}, \{SMD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\
306 password-hash           \{CRYPT\} & \\
307  & \\
308 \# Base de busqueda por defecto & \\
309 defaultsearchbase       " dc=CHAOSDIMENSION,dc=ORG"  & \\
310  & \\
311 \#Utilizado por init scripts para parar e iniciar el servidor. & \\
312 pidfile         /var/run/slapd.pid & \\
313  & \\
314 \# Argumentos pasados al servidor. & \\
315 argsfile        /var/run/slapd.args & \\
316  & \\
317 \# Nivel de logs & \\
318 loglevel        1024 & \\
319  & \\
320 \# Donde y que módulos cargar & \\
321 modulepath      /usr/lib/ldap & \\
322 moduleload      back\_bdb \# Berkeley BD versión 4& \\
323  & \\
324 \# Algunos parámetros de rendimiento & \\
325 threads         64 & \\
326 concurrency             32 & \\
327 conn\_max\_pending      100 & \\
328 conn\_max\_pending\_auth        250 & \\
329 reverse-lookup          off & \\
330 sizelimit               1000 & \\
331 timelimit               30 & \\
332 idletimeout             30 & \\
333  & \\
334 \# Limitaciones específicas & \\
335 limits  anonymous       size.soft=500 time.soft=5 & \\
336  & \\
337 \# Definiciones de la base de datos & \\
338 database        bdb & \\
339 cachesize       5000 & \\
340 checkpoint      512 720 & \\
341 mode            0600 & \\
342  & \\
343 \# La base del directorio & \\
344 suffix          " dc=CHAOSDIMENSION,dc=ORG"  & \\
345  & \\
346 \# Aquí definimos al administrador del directorio y su clave & \\
347 \# En este ejemplo es " tester"  & \\
348 \# La clave se puede sacar con  & \\
349 \# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\
350  & \\
351 rootdn  \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"|  & \\
352 rootpw  \{crypt\}OuorOLd3VqvC2 & \\
353  & \\
354 \# Que atributos indexamos para hacer busquedas & \\
355 index   default                                                sub & \\
356 index   uid,mail                                               eq & \\
357 index   gosaMailAlternateAddress,gosaMailForwardingAddress     eq & \\
358 index   cn,sn,givenName,ou                                     pres,eq,sub & \\
359 index   objectClass                                            pres,eq & \\
360 index   uidNumber,gidNumber,memberuid                          eq & \\
361 index   gosaSubtreeACL,gosaObject,gosaUser                     pres,eq & \\
362  & \\
363 \# Indexing for Samba 3
364 index   sambaSID                                               eq & \\
365 index   sambaPrimaryGroupSID                                   eq & \\
366 index   sambaDomainName                                        eq & \\
367  & \\
368 \# Quienes pueden cambiar las claves de usuario & \\
369 \# Solo por el propio usuario si está autentificado & \\
370 \# o por el administrador & \\
371 access to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange & \\
372         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
373         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
374         by anonymous auth & \\
375         by self write & \\
376         by * none  & \\
377 access to attr=userPassword,shadowMax,shadowExpire & \\
378         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
379         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
380         by anonymous auth & \\
381         by self write & \\
382         by * none  & \\
383  & \\
384 \# Denegar acceso a las claves imap, fax o kerberos guardadas en & \\
385 \# LDAP & \\
386 access to attr=goImapPassword & \\
387         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
388         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
389         by * none  & \\
390 access to attr=goKrbPassword & \\
391         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
392         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
393         by * none  & \\
394 access to attr=goFaxPassword & \\
395         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
396         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
397         by * none  & \\
398  & \\
399 \# Permite que el servidor escriba el atributo LastUser & \\
400 access to attr=gotoLastUser & \\
401         by * write & \\
402  & \\
403 \#Las claves samba por defecto pueden ser cambiadas & \\
404 \#por el usuario si se ha autentificado. & \\
405 access to attr=sambaLmPassword,sambaNtPassword & \\
406         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
407         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
408         by anonymous auth & \\
409         by self write & \\
410         by * none & \\
411  & \\
412 \# Permite acceso de escritura para administrador de terminales & \\
413 access to dn=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG"  & \\
414         by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
415         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
416         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
417  & \\
418 access to dn.subtree=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG"  & \\
419         by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
420         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\
421         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\
422  & \\
423 \# Directorio donde se guarda la base de datos & \\
424 directory       " /var/lib/ldap"  & \\
425  & \\
426 \# Indicamos si deseamos guardar la fecha de la ultima modificación & \\
427 lastmod off & \\
428  & \\
429 \# Acceso del administrador & \\
430 access to * & \\
431         by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\
432         by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\
433         by * read & \\
434 \end{longtable}
435 \end{center}
436     
437 \section{Utilización}
438 \subsection{Configuración PAM/NSS}
440 NSS (Librerías del servicio de seguridad en red / Network Security Service Libraries)\\
442 NSS es una parte básica del sistema, sirve para control de las cuentas POSIX, para poder usar LDAP para cuentas POSIX (del sistema) utilizaremos NSS\_LDAP, que se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/nss\_ldap.html}{http://www.padl.com/OSS/nss\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos:\\
444 \noindent \#cd /usr/src/nss\_ldap\\
445 \noindent \#./configure \&\& make \&\& make install\\
447 La configuración básica de NSS esta en /etc/nsswitch.conf y debe quedar así para lo que nosotros queremos.\\
448 \begin{center}
449 \begin{longtable}{|ll|}\hline
450 \caption{Configuración NSSWITCH}\\
451 \hline \hline
452 \multicolumn{2}{|c|}{\textbf{Configuración NSSWITCH}}\\
453 \hline \hline
454 \endfirsthead
455 \hline \hline
456 \multicolumn{2}{|c|}{\textbf{Configuración NSSWITCH (continuación)}}\\
457 \hline \hline
458 \endhead
459 \hline
460 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
461 \hline
462 \endfoot
463 \hline
464 \multicolumn{2}{|c|}{\textbf{Fin}}\\
465 \hline
466 \endlastfoot
468 passwd:         files ldap & \# Estas son las lineas que cambiamos para que haga peticiones ldap\\
469 group:          files ldap & \#\\
470 shadow:         files ldap & \#\\
471  & \\
472 hosts:          files dns & \\
473 networks:       files & \\
474  & \\
475 protocols:      db files & \\
476 services:       db files & \\
477 ethers:         db files & \\
478 rpc:            db files & \\
479  & \\
480 netgroup:       nis & \\
481 \hline \end{longtable}
482 \end{center}
483 \newpage
484 La configuración de nss-ldap se guarda en /etc/nss-ldap.conf y una configuración válida para GOsa quedaría así:
485 \begin{center}
486 \begin{longtable}{|ll|}\hline
487 \caption{Configuración NSS}\\
488 \hline \hline
489 \multicolumn{2}{|c|}{\textbf{Configuración NSS}}\\
490 \hline \hline
491 \endfirsthead
492 \hline \hline
493 \multicolumn{2}{|c|}{\textbf{Configuración NSS (continuación)}}\\
494 \hline \hline
495 \endhead
496 \hline
497 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
498 \hline
499 \endfoot
500 \hline
501 \multicolumn{2}{|c|}{\textbf{Fin}}\\
502 \hline
503 \endlastfoot
504 host ip.servidor.ldap & \# Aquí ponemos donde\\
505  & \# estará nuestro servidor LDAP\\
506 base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aquí donde van a ir los usuarios y sus claves.\\
507  & \# OU significa unidad organizativa\\
508  & \# y OU=people es el lugar donde GOsa guarda las\\
509  & \# caracteristicas de los usuarios\\
510 ldap\_version 3 & \# Versión de LDAP soportada \\
511  & \#(muy recomendado la versión 3)\\
512 nss\_base\_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las caracteristicas POSIX\\
513 nss\_base\_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las claves\\
514 nss\_base\_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde las caracteristicas de los grupos POSIX\\
515 \hline \end{longtable}
516 \end{center}
518 PAM ( Módulos de autentificación conectables / Pluggable Authentication Modules) es una paquete de librerías dinámicas que permiten al administrador de sistema elegir en que manera las aplicaciones autentifican a los usuarios.
520 PAM viene de serie en todas las distribuciones, en /etc/pam.d se guarda la configuración de cada módulo y en /lib/security las librerías dinámicas.
522 Nos vamos a concentrar en uno de los módulos de PAM: pam\_ldap. Este módulo nos servirá para que las aplicaciones que usen el sistema base de autentificación y control de sesión y que no usen LDAP, indirectamente accedan a LDAP, como fuente de autentificación.
524 Con PAM\_LDAP y la infraestructura de PAM conseguimos que los usuarios POSIX del sistema funcionen atraves de LDAP y se puedan configurar con GOsa.
526 PAM\_LDAP se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/pam\_ldap.html}{http://www.padl.com/OSS/pam\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos el clásico:\\
528 \noindent \#cd /usr/src/pam\_ldap\\
529 \noindent \#./configure \&\& make \&\& make install\\
530 \\
531 La configuración de este módulo estará en /etc/pam\_ldap.conf, una configuración básica que funcione con GOsa quedaría:
532 \begin{center}
533 \begin{longtable}{|ll|}\hline
534 \caption{Configuración PAM}\\
535 \hline \hline
536 \multicolumn{2}{|c|}{\textbf{Configuración PAM}}\\
537 \hline \hline
538 \endfirsthead
539 \hline \hline
540 \multicolumn{2}{|c|}{\textbf{Configuración PAM (continuación)}}\\
541 \hline \hline
542 \endhead
543 \hline
544 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
545 \hline
546 \endfoot
547 \hline
548 \multicolumn{2}{|c|}{\textbf{Fin}}\\
549 \hline
550 \endlastfoot
551 host ip.servidor.ldap & \# Aquí ponemos donde estará nuestro servidor LDAP\\
552 base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aquí donde van a ir los usuarios y sus claves.\\
553  & \# OU significa unidad organizativa y OU=people\\
554  & \# es el lugar donde GOsa guarda las caracteristicas de los usuarios\\
555 ldap\_version 3 & \# Versión de LDAP soportada (muy recomendado la versión 3)\\
556 scope one & \# En gosa los usuarios están al mismo nivel,\\
557  & \# no necesitamos descender.\\
558 rootbinddn cn=ldapadmin,dc=solaria,dc=es & \# Aquí está el DN del administrador LDAP del servidor,\\
559  & \# es necesario, ya que el servidor solo\\
560  & \# dará acceso a las claves encriptadas al administrador.\\
561 pam\_password md5 & \# Indica como están encriptadas las claves.\\
562 \hline \end{longtable}
563 \end{center}
565 En el archivo /etc/secret pondremos la clave del administrador LDAP, este archivo, así como el anterior solo deberían ser accesibles por root.
567 Para poder user ahora los servicios con la autentificación LDAP deberemos concentrarnos en tres archivos:\\
568 Control de cuentas /etc/pam.d/common-account:
569 \begin{center}
570 \begin{longtable}{|ll|}\hline
571 \caption{Configuración PAM common-account}\\
572 \hline \hline
573 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-account}}\\
574 \hline \hline
575 \endfirsthead
576 \hline \hline
577 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-account (continuación)}}\\
578 \hline \hline
579 \endhead
580 \hline
581 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
582 \hline
583 \endfoot
584 \hline
585 \multicolumn{2}{|c|}{\textbf{Fin}}\\
586 \hline
587 \endlastfoot
588 account required          pam\_unix.so & \# Siempre requerido\\
589 account sufficient        pam\_ldap.so & \# Las llamadas a ldap\\
590 \hline \end{longtable}
591 \end{center}
593 Control de autentificación /etc/pam.d/common-auth:
594 \begin{center}
595 \begin{longtable}{|ll|}\hline
596 \caption{Configuración PAM common-auth}\\
597 \hline \hline
598 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-auth}}\\
599 \hline \hline
600 \endfirsthead
601 \hline \hline
602 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-auth (continuación)}}\\
603 \hline \hline
604 \endhead
605 \hline
606 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
607 \hline
608 \endfoot
609 \hline
610 \multicolumn{2}{|c|}{\textbf{Fin}}\\
611 \hline
612 \endlastfoot
613 auth     sufficient     pam\_unix.so & \# Autentificación estandar\\
614 auth     sufficient     pam\_ldap.so try\_first\_pass & \# Autentificacion LDAP en el primer intento\\
615 auth     required       pam\_env.so & \\
616 auth     required       pam\_securetty.so & \\
617 auth     required       pam\_unix\_auth.so & \\
618 auth     required       pam\_warn.so & \\
619 auth     required       pam\_deny.so & \\
620 \hline \end{longtable}
621 \end{center}
623 Control de sesiones /etc/pam.d/common-session:
624 \begin{center}
625 \begin{longtable}{|ll|}\hline
626 \caption{Configuración PAM common-session}\\
627 \hline \hline
628 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-session}}\\
629 \hline \hline
630 \endfirsthead
631 \hline \hline
632 \multicolumn{2}{|c|}{\textbf{Configuración PAM common-session (continuación)}}\\
633 \hline \hline
634 \endhead
635 \hline
636 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
637 \hline
638 \endfoot
639 \hline
640 \multicolumn{2}{|c|}{\textbf{Fin}}\\
641 \hline
642 \endlastfoot
643 session required        pam\_limits.so & \\
644 session required        pam\_unix.so & \# Sesión unix estandar\\
645 session optional        pam\_ldap.so & \# Sesión basada en LDAP\\
646 \hline \end{longtable}
647 \end{center}
649 Esta configuración será necesaria al menos para configurar POSIX y SAMBA.
650 \newpage
651 \subsection{Replicación}
653 Si tenemos mas de un dominio debemos tener una estructura mas distribuida que sea mas eficiente contra fallos. Una estructura básica sería un servidor maestro con el árbol LDAP completo y servidores con subárboles LDAP que solo tuvieran la parte del dominio que controlan.
655 De esta manera GOsa controla el servidor maestro y a traves de un proceso llamado replicación los servidores de dominio.
657 La replicación se configura en la configuración de ldap, pero no la ejecuta el demonio slapd, sino otro especializado llamado slurp.
658 Su configuración se realiza en la base de datos que queremos replicar, como en el ejemplo básico no hemos configurado mas que una base de datos solo tendríamos que añadir al final del fichero de configuración /etc/ldap/slapd.conf:
660 \begin{center}
661 \begin{longtable}{|ll|}\hline
662 \caption{Configuración Replicación}\\
663 \hline \hline
664 \multicolumn{2}{|c|}{\textbf{Configuración Replicación}}\\
665 \hline \hline
666 \endfirsthead
667 \hline \hline
668 \multicolumn{2}{|c|}{\textbf{Configuración Replicación (continuación)}}\\
669 \hline \hline
670 \endhead
671 \hline
672 \multicolumn{2}{|c|}{Sigue $\ldots$}\\
673 \hline
674 \endfoot
675 \hline
676 \multicolumn{2}{|c|}{\textbf{Fin}}\\
677 \hline
678 \endlastfoot
679 \#Configuración de réplica & \\
680 \#Utilizado por init scripts para parar e iniciar el servidor. & \\
681 replica-pidfile         /var/run/slurp.pid & \\
682  & \\
683 \# Argumentos pasados al servidor. & \\
684 replica-argsfile        /var/run/slapd.args & \\
685  & \\
686 \#Lugar donde grabamos lo que se replica, y que usara slurpd & \\
687 replogfile      /var/lib/ldap/replog & \\
688 \#Las configuraciones de réplica & \\
689 \#Indicación de réplica & \\
690 replica & \\
691 \#Dirección URI del servidor & \\
692 uri=ldap://ip.servidor.esclavo1 & \\
693 \#Que vamos a replicar del maestro & \\
694 suffix=" dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\
695 \#Como vamos a autentificar & \\
696 bindmethod=simple & \\
697 \#DN replica del esclavo1 & \\
698 binddn=\verb|"cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\
699 \#Contraseña del usuario & \\
700 \# de replica de esclavo1 & \\
701 credentials=" tester" & \\
702 \#Indicación de réplica del esclavo2 & \\
703 replica & \\
704 uri=ldap://ip.servidor.esclavo2 & \\
705 suffix=" dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\
706 bindmethod=simple & \\
707 binddn=\verb|"cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\
708 credentials=" tester" & \\
709 \hline \end{longtable}
710 \end{center}
712 Por simplicidad hemos supuesto que los dos servidores esclavos están configurados igual que el maestro, excepto por la configuración de replica del maestro y las indicaciones de los esclavos de quien es el servidor maestro.
714 En los servidores esclavos añadimos al final del /etc/ldap/slapd.conf:
716 En esclavo1:\\
717 \begin{tabular}{|ll|}\hline
718 \#Quién puede actualizar el servidor & \\
719 updatedn \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\
720 \#Desde donde & \\
721 updateref ldap://ip.servidor.maestro & \\
722 \#Permitimos el acceso & \\
723 access to dn.subtree= " dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\
724 by dn= \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"|  =wrscx & \\
725 by * none & \\
726 \hline\end{tabular}
727 \vspace{0.5cm}
729 En esclavo2:\\
730 \begin{tabular}{|ll|}\hline
731 \#Quién puede actualizar el servidor & \\
732 updatedn \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\
733 \#Desde donde & \\
734 updateref ldap://ip.servidor.maestro & \\
735 \#Permitimos el acceso & \\
736 access to dn.subtree= " dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\
737 by dn= \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\
738 by * none & \\
739 \hline \end{tabular}
740 \vspace{1cm}
742 Además debemos crear los usuarios de replica en las bases de datos correspondientes. Eso se vera en el siguiente punto.
744 \subsection{Carga de datos}
746 En este punto daremos los datos iniciales de nuestro árbol LDAP necesario para GOsa.
747 Tambien indicaremos de que manera hacer la carga de estos datos y que hacer en el caso de un servidor único o en el caso de que haya réplicas.
749 La carga se puede hacer de dos maneras, una es atraves de slapadd y la otra es atraves de ldapadd.\\
750 En el primer caso la carga se hace directamente sobre la base de datos con lo cual no existe replicación y ademas no se mostrarán los datos en el servidor LDAP hasta que este no sea iniciado nuevamente, \textbf{la carga de datos de esta manera debe ser hecha con el servidor apagado}.\\
751 En el segundo caso, la carga se hace a traves de ldap y si hay replica esta se generara de la manera pertinente.
753 Para una carga desde cero de la base de datos, deberemos hacerla desde slapadd, con el servidor slapd parado.
755 La forma de usar slapadd es:\\
757 \noindent \#slapadd -v -l fichero\_con\_datos.ldif\\
759 LDIF es el formato estándar para guardar datos de LDAP. GOsa trae su propio ldif de ejemplo, en los siguientes dos puntos explicaremos como usarlo según nuestras necesidades.
760 \vspace{1cm}
762 \subsubsection{Servidor Único}
764 Es el caso mas básico, en el no hay replicación y solo necesitamos un árbol simple.\\
765 En nuestro ejemplo supondremos que nuestro árbol GOsa está en dc=CHAOSDIMENSION,dc=ORG.\\
767 Cargaremos los datos con un script, le llamaremos \htmladdnormallink{carga.sh}{http://warping.sourceforge.net/gosa/contrib/es/carga.sh}, esto simplificara los pasos.
768 Los parámetros del script serán: DN de la base, Servidor IMAP,Realm Kerberos\\
770 \begin{center}
771 \begin{longtable}{|l|}\hline
772 \caption{Configuración Carga de Datos}\\
773 \hline \hline
774 \multicolumn{1}{|c|}{\textbf{Configuración Carga de Datos}}\\
775 \hline \hline
776 \endfirsthead
777 \hline \hline
778 \multicolumn{1}{|c|}{\textbf{Configuración Carga de Datos (continuación)}}\\
779 \hline \hline
780 \endhead
781 \hline
782 \multicolumn{1}{|c|}{Sigue $\ldots$}\\
783 \hline
784 \endfoot
785 \hline
786 \multicolumn{1}{|c|}{\textbf{Fin}}\\
787 \hline
788 \endlastfoot
789 \#!/bin/sh\\
790 \\
791 if [ \$\{\#@\} != 3 ]\\
792 then\\
793 \verb|    |echo "Se necesita los parametro DN base, Servidor IMAP y Servidor Kerberos"\\
794 \verb|    |echo "Por ejemplo carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"\\
795 \verb|    |exit\\
796 fi\\
797 \\
798 DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d \textbackslash , -f 1`\\
799 IMAP=\$2\\
800 KRB=\$3\\
801 \\
802 slapadd \verb|<<| EOF\\
803 dn: \$1\\
804 objectClass: dcObject\\
805 objectClass: organization\\
806 description: Base object\\
807 dc: \$DC\\
808 o: My own Organization\\
809 \\
810 dn: cn=terminal-admin,\$1\\
811 objectClass: person\\
812 cn: terminal-admin\\
813 sn: Upload user\\
814 description: GOto Upload Benutzer\\
815 userPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=\\
816 \\
817 dn: ou=systems,\$1\\
818 objectClass: organizationalUnit\\
819 ou: systems\\
820 \\
821 dn: ou=terminals,ou=systems,\$1\\
822 objectClass: organizationalUnit\\
823 ou: terminals\\
824 \\
825 dn: ou=servers,ou=systems,\$1\\
826 objectClass: organizationalUnit\\
827 ou: servers\\
828 \\
829 dn: ou=people,\$1\\
830 objectClass: organizationalUnit\\
831 ou: people\\
832 \\
833 dn: ou=groups,\$1\\
834 objectClass: organizationalUnit\\
835 ou: groups\\
836 \\
837 dn: cn=default,ou=terminals,ou=systems,\$1\\
838 objectClass: gotoTerminal\\
839 cn: default\\
840 gotoMode: disabled\\
841 gotoXMethod: query\\
842 gotoRootPasswd: tyogUVSVZlEPs\\
843 gotoXResolution: 1024x768\\
844 gotoXColordepth: 16\\
845 gotoXKbModel: pc104\\
846 gotoXKbLayout: de\\
847 gotoXKbVariant: nodeadkeys\\
848 gotoSyslogServer: lts-1\\
849 gotoSwapServer: lts-1:/export/swap\\
850 gotoLpdServer: lts-1:/export/spool\\
851 gotoNtpServer: lts-1\\
852 gotoScannerClients: lts-1.\$DC.local\\
853 gotoFontPath: inet/lts-1:7110\\
854 gotoXdmcpServer: lts-1\\
855 gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1\\
856 \\
857 dn: cn=admin,ou=people,\$1\\
858 objectClass: person\\
859 objectClass: organizationalPerson\\
860 objectClass: inetOrgPerson\\
861 objectClass: gosaAccount\\
862 uid: admin\\
863 cn: admin\\
864 givenName: admin\\
865 sn: GOsa main administrator\\
866 sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB\\
867 sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378\\
868 userPassword:: dGVzdGVy\\
869 \\
870 dn: cn=administrators,ou=groups,\$1\\
871 objectClass: gosaObject\\
872 objectClass: posixGroup\\
873 objectClass: top\\
874 gosaSubtreeACL: :all\\
875 cn: administrators\\
876 gidNumber: 999\\
877 memberUid: admin\\
878 \\
879 dn: cn=lts-1,ou=servers,ou=systems,\$1\\
880 objectClass: goTerminalServer\\
881 objectClass: goServer\\
882 goXdmcpIsEnabled: true\\
883 macAddress: 00:B0:D0:F0:DE:1D\\
884 cn: lts-1\\
885 goFontPath: inet/lts-1:7110\\
886 \\
887 dn: cn=afs-1,ou=servers,ou=systems,\$1\\
888 objectClass: goNfsServer\\
889 objectClass: goNtpServer\\
890 objectClass: goLdapServer\\
891 objectClass: goSyslogServer\\
892 objectClass: goCupsServer\\
893 objectClass: goServer\\
894 macAddress: 00:B0:D0:F0:DE:1C\\
895 cn: afs-1\\
896 goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no\_root\_squash)\\
897 goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\
898 goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\
899 goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\
900 goLdapBase: \$1\\
901 \\
902 dn: cn=vserver-02,ou=servers,ou=systems,\$1\\
903 objectClass: goImapServer\\
904 objectClass: goServer\\
905 macAddress: 00:B0:D0:F0:DE:1F\\
906 cn: vserver-02\\
907 goImapName: imap://\$IMAP\\
908 goImapConnect: {\$IMAP:143}\\
909 goImapAdmin: cyrus\\
910 goImapPassword: secret\\
911 goImapSieveServer: \$IMAP\\
912 goImapSievePort: 2000\\
913 \\
914 dn: cn=kerberos,ou=servers,ou=systems,\$1\\
915 objectClass: goKrbServer\\
916 objectClass: goServer\\
917 macAddress: 00:B0:D0:F0:DE:1E\\
918 cn: kerberos\\
919 goKrbRealm: \$KRB\\
920 goKrbAdmin: admin/admin\\
921 goKrbPassword: secret\\
922 \\
923 dn: cn=fax,ou=servers,ou=systems,\$1\\
924 objectClass: goFaxServer\\
925 objectClass: goServer\\
926 macAddress: 00:B0:D0:F0:DE:10\\
927 cn: fax\\
928 goFaxAdmin: fax\\
929 goFaxPassword: secret\\
930 \\
931 dn: ou=incoming,\$1\\
932 objectClass: organizationalUnit\\
933 ou: incoming\\
934 \\
935 EOF\\
936 \hline \end{longtable}
937 \end{center}
939 \subsubsection{Servidor Maestro y dos réplicas}
941 La carga de datos se hará con el mismo script de la sección anterior, tanto en el maestro como en los esclavos, con las siguientes diferencias:\\
943 En el maestro por ejemplo "DC=CHAOSDIMENSION,DC=ORG" ejecutaremos este script \htmladdnormallink{crea\_base.sh}{http://warping.sourceforge.net/gosa/contrib/es/crea\_base.sh} para crear la base:\\
945 \begin{center}
946 \begin{longtable}{|l|}\hline
947 \caption{Configuración Crea Base Maestro}\\
948 \hline \hline
949 \multicolumn{1}{|c|}{\textbf{Configuración Crea Base Maestro}}\\
950 \hline \hline
951 \endfirsthead
952 \hline \hline
953 \multicolumn{1}{|c|}{\textbf{Configuración Crea Base Maestro (continuación)}}\\
954 \hline \hline
955 \endhead
956 \hline
957 \multicolumn{1}{|c|}{Sigue $\ldots$}\\
958 \hline
959 \endfoot
960 \hline
961 \multicolumn{1}{|c|}{\textbf{Fin}}\\
962 \hline
963 \endlastfoot
964 \#!/bin/sh\\
965 \\
966 if [ \$\{\#@\} != 1 ]\\
967 then\\
968 \verb|    |echo "Se necesita el parámetro DN base del maestro"\\
969 \verb|    |echo "Por ejemplo crea\_base.sh dc=CHAOSDIMENSION,dc=ORG"\\
970 \verb|    |exit\\
971 fi\\
972 \\
973 DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\
974 \\
975 slapadd \verb|<<|  EOF\\
976 dn: \$1\\
977 objectClass: dcObject\\
978 objectClass: organization\\
979 description: Base object\\
980 dc: \$DC\\
981 o: My own Base Organization\\
982 \\
983 EOF\\
984 \hline \end{longtable}
985 \end{center}
987 Además con el script de la sección anterior cargaremos los dominios de ejemplo:\\ "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\
989 En el esclavo1 ejecutaremos el script con "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y en esclavo2 con "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\ En ambos casos los dos servidores LDAP esclavos habrán sido configurados para su propio DN.
991 Lo que nos faltaría seria crear el usuario para la replica, que se podría hacer con el siguiente script \htmladdnormallink{usuario\_replica.sh}{http://warping.sourceforge.net/gosa/contrib/es/usuario\_replica.sh} con parámetros nombre del usuario y el DN base: \\
993 \begin{center}
994 \begin{longtable}{|l|}\hline
995 \caption{Configuración Usuario Réplica}\\
996 \hline \hline
997 \multicolumn{1}{|c|}{\textbf{Configuración Usuario Réplica}}\\
998 \hline \hline
999 \endfirsthead
1000 \hline \hline
1001 \multicolumn{1}{|c|}{\textbf{Configuración Usuario Réplica (continuación)}}\\
1002 \hline \hline
1003 \endhead
1004 \hline
1005 \multicolumn{1}{|c|}{Sigue $\ldots$}\\
1006 \hline
1007 \endfoot
1008 \hline
1009 \multicolumn{1}{|c|}{\textbf{Fin}}\\
1010 \hline
1011 \endlastfoot
1012 \#!/bin/sh\\
1013 if [ \$\{\#@\} != 2 ]\\
1014 then\\
1015 \verb|    |echo "Se necesita los parametros nombre de usuario y DN base para replica"\\
1016 \verb|    |echo "Por ejemplo usuario\_replica.sh replicator dc=dominio1,dc=CHAOSDIMENSION,dc=ORG "\\
1017 \verb|    |exit\\
1018 fi\\
1019 \\
1020 KEY=`makepasswd --crypt --chars=7 \textbackslash \\--string="abcdefghijklmnopqrstuvwxyz1234567890"`\\
1021 PASS=`echo \$KEY|awk '\{ print \$1 \}'`\\
1022 CRYPT=`echo \$KEY|awk '\{ print \$2 \}'`\\
1023 \\
1024 echo \verb|"Creando usuario $1 con contraseña: $PASS"|\\
1025 \\
1026 slapadd \verb|<<| EOF\\
1027 dn: cn=\$1,ou=people,\$2\\
1028 displayName: Debian User,,,\\
1029 userPassword: \{crypt\} \$CRYPT\\
1030 sambaLMPassword: \\
1031 sambaNTPassword: \\
1032 sn: \$1\\
1033 givenName: \$1\\
1034 cn: \$1\\
1035 homeDirectory: /home/\$1\\
1036 loginShell: /bin/false\\
1037 uidNumber: 10000\\
1038 gidNumber: 100\\
1039 gecos: \$1\\
1040 shadowMin: 0\\
1041 shadowMax: 99999\\
1042 shadowWarning: 7\\
1043 shadowInactive: 0\\
1044 shadowLastChange: 12438\\
1045 gosaDefaultLanguage: es\_ES\\
1046 uid: \$1\\
1047 objectClass: posixAccount\\
1048 objectClass: shadowAccount\\
1049 objectClass: person\\
1050 objectClass: organizationalPerson\\
1051 objectClass: inetOrgPerson\\
1052 objectClass: gosaAccount\\
1053 objectClass: top\\
1054 \\
1055 EOF\\
1056 \hline \end{longtable}
1057 \end{center}
1059 \section{Modificaciones para Kerberos}
1060 \subsection{Configurando Sasl y Openldap}
1063 \section{Configurar Heimdal Kerberos sobre OpenLdap}
1064 \label{heimdal_ldap}
1066 ¿Porque debemos meter la base de datos de heimdal en ldap?
1068 La explicación es sencilla, replicación, ldap tiene sistemas de replicación y de acceso a datos mucho mas modernos y utiles que los de hprop o iprop.
1070 Por otro lado al estar los datos en ldap, GOsa no tiene mas que escribirlos o modificarlos directamente, permitiendo crear dominios Kerberos desde ldap o añadir/quitar usuarios/servicios.
1072 \subsection{Configurar Heimdal}
1074 La instalación \ref{down_kerberos_heimdal} y la configuración \ref{heimdal_conf} en la misma, pero vamos a añadir al archivo de configuración un nuevo bloque:
1076 \vspace{0.5cm}
1077 \begin{center}
1078 \begin{tabular}{|l|l|}\hline 
1079 \verb|    [kdc]| & $\rightarrow$ Configuración de base de datos del KDC.\\
1080 \verb|    database = {| & $\rightarrow$ Definiciones de la base de datos.\\
1081 \verb|            realm=CHAOSDIMENSION.ORG| & $\rightarrow$ Que dominio tendremos bajo ese DN\\
1082 \verb|            dbname = ldap:ou=people,dc=chaosdimension,dc=org| & $\rightarrow$ El DN bajo el cual se va a guardar la\\
1083 & base de datos, debemos elegir la que convenga segun nuestra configuración GOsa.\\
1084 \verb|            acl_file=/var/lib/heimdal-kdc/kadmind.acl| & $\rightarrow$ Fichero con los permisos de acceso a esa base de datos.\\
1085 \verb|            mkey_file = /var/lib/heimdal-kdc/m-key| & $\rightarrow$ Clave maestra de esa base de datos.\\
1086 \verb|    }| & $\rightarrow$ \\
1087 \hline \end{tabular}
1088 \end{center}
1089 \vspace{0.5cm}
1091 \subsection{Configurar OpenLdap}
1093 La configuración de openLDAP tiene cuatro partes:\\
1094 La primera es que heimdal solo accede al servidor openLDAP de forma local, via ldapi://, esto tendra que ser activado en el inicio de openLDAP.\\
1095 La segunda es que tenemos que añadir el esquema para kerberos, lo podemos descargar de \htmladdnormallink{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema}{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema} y debemos colocarlo en /etc/ldap/schemas.\\
1096 La tercera parte son los cambios necesarios en slapd.conf:\\
1097 \vspace{0.5cm}
1098 \begin{center}
1099 \begin{tabular}{|l|l|}\hline 
1100 ... & $\rightarrow$ En la carga de esquemas\\
1101 \verb|include         /etc/ldap/schema/krb5-kdc.schema| & \\
1102 ... & $\rightarrow$ Configuración SSL/TLS\\
1103 \verb|TLSCertificateFile /etc/ldap/ssl/ldap.crt| & \\
1104 \verb|TLSCertificateKeyFile /etc/ldap/ssl/ldap.key| & \\
1105 \verb|TLSCACertificateFile /etc/ldap/ssl/gosa.ca| & \\
1106 ... & $\rightarrow$ Configuración Sasl\\
1107 \verb|sasl-host ldap.chaosdimension.og| & \\
1108 \verb|sasl-keytab /etc/krb5.keytab.ldap| & \\
1109 \verb|sasl-realm CHAOSDIMENSION.ORG| & \\
1110 \verb|sasl-secprops noanonymous| & \\
1111  & \\
1112 \verb|sasl-regexp "uidNumber=0\\\+gidNumber=.*,cn=peercred,cn=external,cn=auth"| & \\
1113 \verb|        "krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org"| & \\
1114 \verb|sasl-regexp uid=(.+),cn=gssapi,cn=auth uid=$1,ou=people,dc=chaosdimension,dc=org| & \\
1115 ... & $\rightarrow$ Configuracion Kerberos:\\
1116 \verb|srvtab          /etc/krb5.keytab.ldap| & \\
1117 ... & $\rightarrow$ El las listas de acceso de la base de datos:\\
1118 \verb|access to dn=""| & \\
1119 \verb|  by * read| & \\
1120  & \\
1121 \verb|access to dn.base="cn=Subschema"| & \\
1122 \verb| by * read| & \\
1123  & \\
1124 \verb|access to attr=supportedSASLMechanisms,subschemaSubentry| & \\
1125 \verb|  by anonymous read| & \\
1126 \verb|  by * read| & \\
1127  & \\
1128 \verb|access to dn.regex="(.*,)?ou=chlgrupo,dc=chlgrupo,dc=com"| & \\
1129 \verb|  by dn="krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org" =wrscx| & \\
1130 \hline \end{tabular}
1131 \end{center}
1132 \vspace{0.5cm}