Code

cc59a56547417f9337107019fd6c66c0e363c975
[gosa.git] / doc / guide / admin / es / manual_gosa_es_kerberos.tex
1 \chapter{Servidor Horario de Red}
2 \section{El protocolo NTP}
4 NTP(Network Time Protocol) es el protocolo estandar de sincronización de la hora en equipos de una misma red.
6 El servidor devuelve la Hora UTC (Horario de Greenwich u horario universal), con lo cual hay que modificar este horario para los paises en que estemos y su uso horario.
8 Amplia documentación puede ser encontrada en \hlink{http://www.ntp.org/} y servidores ntp públicos en \hlink{http://pool.ntp.bitic.net/} y \hlink{http://www.eecis.udel.edu/~mills/ntp/servers.html}.
10 Sigue los siguientes RFC: RFC 778, RFC 891, RFC 956, RFC 958, y RFC 1305.
12 El servidor NTP y el cliente correspondiente serán necesarios para su utilización con Kerberos, ya que este protocolo de autentificación necesita gran precisión horaria.
15 \section{NTP-server}
17 \subsection{Instalación}
19 Es el servidor oficial, que puede ser descargado de \hlink{http://ntp.isc.org/bin/view/Main/SoftwareDownloads}, una vez descargado y descomprimido en /usr/src/ntp-4.X.X haremos:
21 \jump
22 \begin{rbox}
23 # cd build-refclock && ../configure --prefix=/usr \
24         --enable-all-clocks --enable-parse-clocks --enable-SHM \
25         --disable-debugging --sysconfdir=/var/lib/ntp \
26         --cache-file=../config.cache --disable-errorcache \
27         --enable-linuxcaps
28 # make
29 # make install
30 \end{rbox}
31 \jump
33 \subsection{Configuración}
35 La configuración se guarda en /etc/ntp.conf y esta es una configuración básica:
37 \jump
38 \begin{rbox}
39 # Donde guardamos los registros.
40 logfile /var/log/ntpd
42 # Indica la dirección del archivo de frecuencia.
43 driftfile /var/lib/ntp/ntp.drift
45 # Directorio donde se volcarán estadísticas
46 statsdir /var/log/ntpstats/
48 # Mas de estadísticas
49 statistics loopstats peerstats clockstats
50 filegen loopstats file loopstats type day enable
51 filegen peerstats file peerstats type day enable
52 filegen clockstats file clockstats type day enable
54 # Usaremos pool.ntp.org ya que redirecciona a gran cantidad
55 # de servidores ntp publicos
56 server pool.ntp.org
58 # Restricciones de acceso
59 restrict your.lan kod notrap nomodify nopeer noquery
60 restrict 127.0.0.1 nomodify
61 restric default ignore
63 # Para proveer de hora a la subred
64 broadcast your.subnet.255
66 \end{rbox}
67 \jump
69 ntp-server soporta muchos mas parámetros de configuración como autentificación, certificados, monitorización, etc. Que se salen de las necesidades de este manual.
71 \section{Chrony}
73 \subsection{Instalación}
75 Chrony es otro servidor horario mas ligero que el anterior y tambien ampliamente utilizado, lo descargaremos de \hlink{http://chrony.sunsite.dk/download.php} y como hacemos con todos los paquetes lo ponemos en /usr/src:
77 \jump
78 \begin{rbox}
79 # cd /usr/src/chrony-
80 # ./configure --prefix='/usr'
81 # make
82 # make install
83 \end{rbox}
84 \jump
86 Mas documentación la encontraremos en \hlink{http://chrony.sunsite.dk/guide/chrony.html} .
88 \subsection{Configuración}
90 El archivo de configuración básico es /etc/chrony/chrony.conf y sería como:
92 \jump
93 \begin{rbox}
94 # See www.pool.ntp.org for an explanation of these servers.  Please
95 # consider joining the project if possible.  If you can't or don't want to
96 # use these servers I suggest that you try your ISP's nameservers.  We mark
97 # the servers 'offline' so that chronyd won't try to connect when the link
98 # is down.  Scripts in /etc/ppp/ip-up.d and /etc/ppp/ip-down.d use chronyc
99 # commands to switch it on when the link comes up and off when it goes
100 # down.  If you have an always-on connection such as cable omit the
101 # 'offline' directive and chronyd will default to online.
103 # Configuración para pool.net.org, al igual que en ntp-server, en este caso 
104 # usaremos tres intentos por si nuestra primera petición da con un servidor offline.
106 server pool.ntp.org minpoll 8
107 server pool.ntp.org minpoll 8
108 server pool.ntp.org minpoll 8
110 # Clave del administrador,
112 keyfile /etc/chrony/chrony.keys
114 # Clave para el ejecutable (la primera del anterior)
116 commandkey 1
118 # Fichero de frecuencias
120 driftfile /var/lib/chrony/chrony.drift
122 # Registro del servidor
124 log tracking measurements statistics
125 logdir /var/log/chrony
127 # Stop bad estimates upsetting machine clock.
129 maxupdateskew 100.0
131 # Volcar las mediciones al cerrar el servidor
133 dumponexit
135 # Y donde:
137 dumpdir /var/lib/chrony
139 # Let computer be a server when it is unsynchronised.
141 local stratum 10
143 # Clientes permitidos
145 allow your.subnet
147 # Envia un registro si tiene que actualizar hora de mas de x segs:
149 logchange 0.5
151 # Idem pero enviando un correo
152 # if chronyd applies a correction exceeding a particular threshold to the
153 # system clock.
155 mailonchange root@your.domain 0.5
157 \end{rbox}
158 \jump
160 \section{ntpdate}
162 \subsection{Instalación y Funcionamiento}
164 ntpdate es un cliente que viene con ntp-server, se instalara al mismo tiempo que ntp-server, su funcionamiento básico es muy sencillo, aunque soporte autentificación, en este caso supondremos que el cliente se ejecuta en la maquina a traves de un sistema periódico (cron):
166 \jump
167 \begin{rbox}
168 # /usr/sbin/ntpdate your.ntp.server
169 \end{rbox}
170 \jump
172 \section{¿Cómo uso pool.ntp.org?}
173 El fichero de frecuencias deberia quedar así:
175 \jump
176 \begin{rbox}
177 server pool.ntp.org
178 server pool.ntp.org
179 server pool.ntp.org
180 \end{rbox}
181 \jump
183 ¿Sencillo, no?
185 \chapter{Servicios de seguridad - Kerberos}
187 \section{Seguridad e identificación}
188 ¿Quién se conecta al servidor?\\
189 ¿Puedo estar seguro de que se puede confiar en el cliente, y el cliente en el servidor?
191 Esto es solo un pequeño resumen, para mas documentación vease Criptografía y Seguridad en Computadores\cite{cripto1} en español.
193 Los rfc mas interesantes son:
195 \jump
196 \begin{itemize}
197 \item The Kerberos Network Authentication Service (V5),\cite{1510}
198 \item Encryption and Checksum Specifications for Kerberos 5,\cite{3961}
199 \item Advanced Encryption Standard (AES) Encryption for Kerberos 5,\cite{3961}
200 \end{itemize}
202 \subsection{Caso 1: Las contraseñas van en texto plano}
203 Están ahí, todo aquel que vea el tráfico de la red las verá.
204 Solo es factible si se están usando canales que se consideren seguros (SSL,ipsec,etc).
206 \subsection{El problema del hombre de enmedio}
207 Si alguien ve tu usuario y tu contraseña puede hacer algo peor que simplemente ver que haces, puede suplantarte.
209 El hombre de enmedio (man in the middle) es un sistema que esta entre el cliente y el servidor que coge las peticiones del cliente, las manipula y las envia al servidor, por supuesto tambien puede manipular lo que viene del servidor.
211 \subsection{Caso 2: Las contraseñas tienen codificación simetrica}
213 \begin{enumerate}
214 \item Mejora mucho la seguridad, cuanto mejor sea la encriptación sera mas seguro.
215 \item Aún así es problemático y deberia usarse bajo canales seguros.
216 \item ¿Como enviamos la clave con la que encriptamos la contraseña?
217 \item Si esta clave cae, se producira una situación como la del envio en texto plano, y volvemos a estar en situación de que un sistema intermedio tome nuestra personalidad.
218 \item Se considera segura a partir de 128bits de longitud.
219 \item No autentifica quien envio el mensaje.
220 \end{enumerate}
222 \subsection{Caso 3: Cifrado por bloques (Hashes)}
224 \begin{enumerate}
225 \item Las contraseñas se codifican de tal manera que no se puede volver a conseguir la contraseña por otro metodo que no sea la fuerza bruta.
226 \item Es menos problemático, pero deberia usarse solo bajo canales seguros.
227 \item Se envían de esta manera por la red, cualquiera puede identificar que es una contraseña e intentar romper por fuerza bruta la contraseña.
228 \item Sigue siendo sensible al problema del robo de identidad, ya que no autentifica quien envio el mensaje.
229 \item Se puede mejorar usando tecnicas de desafio, enviando antes de pedir la clave un codigo al usuario con el que mejorar la seguridad del código resultante.
230 \end{enumerate}
232 \subsection{Caso 4: Cifrado Asimetrico, Certificados SSL}
233 \begin{enumerate}
234 \item Se dividen en dos partes: la privada, aquella con la que codificamos, y la publica, que es aquella con la que decodifican los mensajes los clientes.
235 \item Necesita logitudes de clave muy largas para ser seguros (>1024bits) y mucho mas tiempo de computación que los cifrados simetricos.
236 \item En la práctica se utilizan para el envio de la clave y despues los mensaje se envian con codificación simetrica.
237 \item Es mas resistente a sistemas intermedios, ya que este no puede acceder a la clave privada y por lo tanto no puede codificar mensajes.
238 \end{enumerate}
241 \subsection{Caso 5: Kerberos para identificación}
242 \begin{enumerate}
243 \item El protocolo supone que la red es insegura y que hay sistemas intermedios que pueden escuchar.
244 \item Los usuarios y servicios (principales) deben autentificarse ante un tercero, el servidor kerberos, el cual es aceptado como autentico.
245 \item Usa cifrado simetrico convirtiendo el conjunto en una red segura.
246 \end{enumerate}
249 \section{El protocolo Kerberos}
251 \subsection{El servidor Kerberos}
253 El servidor kerberos no sirve un unico servicio, sino tres:
255 \jump
256 \begin{itemize}
257 \item AS = Servidor de autentificación.
258 \item TGS = Servidor de Tickets.
259 \item SS = Servidor de servicios.
260 \end{itemize}
262 \subsection{Clientes y Servidores}
264 El cliente autentifica contra el AS, despues demuestra al TGS que esta autorizado para recibir el ticket para el servicio que quiere usar, y por último demuestra ante el SS que esta autorizado para usar el servicio.
266 \subsection{Que es un ticket y como funciona Kerberos}
268 \begin{enumerate}
269 \item[1.-] Un usuario introduce una clave y contraseña en el cliente.
270 \item[2.-] El Cliente usa un hash sobre la contraseña y la convierte en la clave secreta del cliente.
271 \item[3.-] El cliente envía un mensaje al AS pidiendo servicio para el cliente.
272 \item[4.-] El AS comprueba si el usuario existe en la base de datos. Si existe le envia dos mensajes al cliente.\\
273 El mensaje A: Tiene una clave de sesión del TGS codificada usando la clave secreta del usuario.\\
274 El mensaje B: (TGT)Ticket-Granting Ticket. Este incluye el identificador del cliente, la dirección de red es este, un periodo de valided, y la clave de sesión del TGS, todo codificado usando la clave secreta del TGS.
275 \item[5.-] El cliente recibe los mensajes A y B, con su clave secreta decodifica el mensaje A y coge la clave de sesión del TGS, con esta podra comunicarse con el TGS. Se observa que el cliente no puede decodificar el mensaje B al no tener la clave secreta del TGS.
276 \item[6.-] Cuando el cliente quiere usar algún servicio, envia los siguientes mensajes al TGS:\\
277 Mensaje C: Compuesto por el TGT del mensaje B y el identificador de petición de servicio.\\
278 Mensaje D: Autentificador (El cual está compuesto por el identificador del cliente y una marca horaria - timestamp -) codificado con la clave de sesión del TGS.
279 \item[7.-] Al recibir los dos mensajes, el TGS decodifica el autentificador usando la clave de sesión del usuario y envia los siguientes mensajes al cliente:\\
280 Mensaje E: Ticket Cliente Servidor, que contiene el identificador del cliente, su dirección de red, un periodo de valided, y la clave de sesión del TGS, codificado usando la clave secreta del servidor.\\
281 Mensaje F: Clave de sesión Cliente / Servidor codificada con la clave de sesión del TGS del cliente.
282 \item[8.-] Una vez recibidos desde el TGS los mensajes, el cliente tiene información suficiente para autentificarse ante el SS. El cliente se conectara al SS y le enviara los siguientes mensajes:\\
283 Mensaje G: El ticket de cliente / servidor codificado con la clave secreta del servidor. (Mensaje E).\\
284 Mensaje H: Un nuevo autentificador que contiene el identificador del cliente, una marca horaria y que esta codificado usando la clave de sesión cliente / servidor.
285 \item[9.-] El SS decodifica el Mensaje G usando su propia clave secreta y usando la clave Cliente/TGS en el mensaje F consigue la clave de sesion cliente/servidor, entonces le enviara el siguiente mensaje al cliente para confirmar su identidad:\\
286 Mensaje I: La marca horaria del Autentificador mas 1, codificado usando la clave de sesión cliente/servidor.
287 \item[10.-] El cliente decodifica el mensaje de confirmación y comprueba si la marca horaria ha sido actualizada correctamente. Si todo es correcto, el cliente confiara en el servidor y puede comenzar a hacer peticiones al servidor.
288 \item[11.-] El servidor responde a las peticiones de ese cliente que ha sido autentificado.
290 \end{enumerate}
292 \section{MIT Kerberos}
294 El Intituto de Tecnologias de Massachusetts (MIT, Massachusetts Institute of Technology) junto con DEC e IBM comenzaron el proyecto Athena para computación distribuida. Parte de este proyecto es el protocolo de autentificación Kerberos. El proyecto comenzo su funcionamiento en 1983.
296 La versión 4 del protocolo salio en 1980 para el proyecto Athena, y en 1993 salio la versión 5\cite{1510} que superaba las limitaciones y problemas de su predecesor.
298 MIT Kerberos es distribuido libremente bajo licencia tipo BSD.
301 \subsection{Instalación}
302 \label{down_kerberos_mit}
304 Antes de nada, nos bajaremos una librería de las que depende MIT kerberos:
306 \jump
307 \begin{itemize}
308 \item[e2fsprogs]
309 Se puede descargar de \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} para acceso al sistema de archivos y para las librerías libss y libcomerr2.
310 \end{itemize}
311 \jump
313 Las fuentes de MIT Kerberos se pueden descargar de \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www}, como haremos con todas las fuentes las descomprimiremos en /usr/src y entraremos en /usr/src/krb5-1.X.X y jecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_krb5.sh} con las siguientes opciones:
315 \jump
316 \begin{tabular}{|ll|}\hline
317 --prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\
318 --mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\
319 --localstatedir=/etc & \\
320 --enable-shared & $\rightarrow$ Librerias dinamicas, necesarias\\
321 & $\rightarrow$ para compilar otros programas\\
322 --with-system-et &  $\rightarrow$ Usara la libreria estandar de errores\\
323 & $\rightarrow$ , libcomerr2, para com\_err.so y compile\_et\\
324 --with-system-ss & Necesario para que use libss2, una libreria\\
325 & $\rightarrow$ para la entrada de linea de comandos.\\
326 --without-tcl & $\rightarrow$ No compilamos el soporte tcl.\\
327 --enable-dns-for-kdc & $\rightarrow$ Busquedas dns para el kdc\\
328 \hline \end{tabular}
329 \jump
331 Una vez configurado, hacemos:
333 \jump
334 \begin{tabular}{|l|}\hline 
335 \#make \&\& make install\\
336 \hline \end{tabular}
337 \jump
339 \subsection{Configuración y funcionamiento}
341 \subsubsection{Iniciar un dominio}
342 Antes de iniciar un dominio debemos estar seguros de que la configuración DNS es correcta \ref{dns_kerberos}.
345 El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado el programa haremos:
347 \subsubsection{Añadir usuarios y servicios}
349 \subsection{Replicación - kprop}
351 \subsection{Ventajas y desventajas}
355 \section{El servidor Heimdal Kerberos}
357 Por culpa de las regulaciones de exportación de los Estados Unidos que prohibian la salida del código del MIT Kerberos porque usaba el algoritmo de encriptación DES con logitud de clave de 56 bit. Se comenzo una implementación nueva en KTH, suecia: Heimdal.
359 En el 2000 se elimino las restricciones a la exportación y se pudo mejorar la compatibilidad entre ambos servidores.
361 Aunque GOsa puede usar cualquiera de las dos versiones de Heimdal, desde este manual se recomienda Heimdal, ya que es thread safe (no tiene problemas con los hilos), tiene mejor rendimiento y es el servidor kerberos elegido por el grupo de desarrollo de Samba para su proxima versión 4.
363 \subsection{Instalación}
364 \label{down_kerberos_heimdal}
366 Antes de nada, nos bajaremos una librería de las que depende Heimdal kerberos:
367 \begin{itemize}
368 \item[readline]
369 Se puede descargar de \htmladdnormallink{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}. Es una librería que controla el acceso a la linea de comandos.
370 \end{itemize}
373 \noindent Heimdal Kerberos se puede descargar de \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, las descomprimiremos en /usr/src y entraremos en /usr/src/heimdal-0.6.X.
375 Ejecutamos  \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_heimdal.sh} con las siguientes opciones:
377 \jump
378 \begin{tabular}{|ll|}\hline
379 --prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\
380 --mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\
381 --infodir=/usr/share/info & $\rightarrow$  Donde van los info\\
382 --libexecdir=/usr/sbin & $\rightarrow$ Donde van los ejecutables de aministrador\\
383 --with-roken=/usr & $\rightarrow$ Donde van las librerias roken\\
384 --enable-shared & $\rightarrow$  Librerias dinamicas, necesarias\\
385 & $\rightarrow$ para compilar otros programas\\
386 --with-krb4 & $\rightarrow$ Compilar con la versión antigua del protocolo\\
387 --with-openldap & $\rightarrow$ Soporte openldap \ref{down_ldap}\\
388 \hline \end{tabular}
389 \jump
391 Una vez configurado, hacemos:
393 \jump
394 \bbox
395 \#make \&\& make install\\
396 \ebox
397 \jump
399 \subsection{Configuración y funcionamiento}
401 La configuración de Heimdal Kerberos se guarda principalmente en estos archivos:\\
402 \begin{tabular}{|l|l|}\hline 
403 /etc/krb5.conf & Configuración de los dominios Kerberos y de otros parametros.\\
404  & \\
405 /var/lib/heimdal-kdc/kdc.conf & Configuración de los parametros del servidor kdc.\\
406 & \\
407 /var/lib/heimdal-kdc/kadmind.acl & Configuración de acceso de usuarios y servicios\\
408  &  a la base de datos de Kerberos desde acceso remoto al administrador.\\
409 & \\
410 /var/lib/heimdal-kdc/m-key & Clave secreta del servidor Kerberos.\\
411 & \\
412 /etc/krb5.keytab & Aqui se guardaran las claves de maquinas y servicios.\\
413 & \\
414 \hline \end{tabular}
415 \jump
417 Los ejecutables que normalmente vamos a usar son:\\
418 \begin{tabular}{|l|l|}\hline 
419 kadmin & Aplicación para la administración de los dominios y de los keytab.\\
420  &  Para usarlo en modo local se usara -l.\\
421 & \\
422 ktutil & Utilidad mas específica para los keytab.\\
423 & \\
424 kinit & Aplicación para iniciar tickets, sirve para probar el servidor.\\
425 & \\
426 kpasswd & Utilidad para cambiar las contraseñas de usuarios.\\
427 & \\
428 \hline \end{tabular}
429 \jump
431 \subsubsection{Iniciar un dominio}
432 Antes de iniciar un dominio debemos estar seguros de que la configuración DNS es correcta \ref{dns_kerberos}.
434 \label{heimdal_conf}
436 El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado y antes de iniciar heimdal editaremos /etc/krb5.conf:
438 \jump
439 \begin{center}
440 \begin{tabular}{|l|l|}\hline 
441 \verb|[libdefaults]| & $\rightarrow$ Valores por defecto de los dominios\\
442 \verb|    default_realm = CHAOSDIMENSION.ORG| & $\rightarrow$ Dominio por defecto \\
443 & del servidor si no se pide el dominio\\
444 \verb|    kdc_timesync = true| & $\rightarrow$ Intenta compensar la diferencias de \\
445 & tiempos entre clientes y servidores\\
446 \verb|    clockskew = 60| & $\rightarrow$ Máxima diferencia de segundos cuando se \\
447 & comparan tiempos\\
448 \verb|    dns_lookup_kdc = true| & $\rightarrow$ Usar DNS SRV para busquedas \\
449 & servidores KDC.\\
450 \verb|    dns_lookup_realm = true| & $\rightarrow$ Usar DNS TXT para relacionar \\
451 & dominios DNS \\
452 & con dominios Kerberos.\\
453 \verb|    max_retries = 1| & $\rightarrow$ Numero de intentos en la autentificación.\\
454 \verb|    krb4_get_tickets = false| & $\rightarrow$ No Aceptamos tickets de Kerberos v4.\\
455 & \\
456 \verb|[realms]| & $\rightarrow$ Definimos los dominios\\
457 \verb|     CHAOSDIMENSION.ORG = {| & $\rightarrow$ \\
458 \verb|        kdc = kdc.chaosdimension.org| & $\rightarrow$ Donde está el KDC.\\
459 \verb|        admin_server = kadmin.chaosdimension.org| & $\rightarrow$ Dondé estará el Kadmind.\\
460 \verb|        kpasswd_server = kpasswd.chaosdimension.org| & $\rightarrow$ Donde está el kpasswd.\\
461 \verb|     }| & \\
462 & \\
463 \verb|[domain_realm]| & $\rightarrow$ Mapeo de Dominios.\\
464 \verb|    .chaosdimension.org = CHAOSDIMENSION.ORG| & \\
465 \verb|    chaosdimension.org = CHAOSDIMENSION.ORG| & \\
466  & \\
467 \verb|[logging]| & $\rightarrow$ Configuración de registro\\
468 \verb|    kdc = FILE:/var/lib/heimdal-kdc/kdc.log| & \\
469 \verb|    hpropd = FILE:/var/lib/heimdal-kdc/hpropd.log| & \\
470 \verb|    ipropd = FILE:/var/lib/heimdal-kdc/ipropd.log| & \\
471 \verb|    kpasswdd = FILE:/var/lib/heimdal-kdc/kpasswdd.log| & \\
472 \verb|    kadmind = FILE:/var/lib/heimdal-kdc/kadmind.log| & \\
473 \verb|    default = FILE:/var/log/heimdal-kdc.log| & \\
474 \hline \end{tabular}
475 \end{center}
476 \jump
478 Esta es la configuración mínima para hacer funcionar Heimdal Kerberos, la configuración para GOsa es la indicada en heimdal sobre ldap \ref{heimdal_ldap}, ya que es la que permite mayor control y una replicación mas comoda.
481 El siguiente paso es crear la clave privada del servidor, para ello ejecutaremos el comando kstah:
483 \bbox
484 \verb|\#kstash|\\
485 \verb|Master key: |\\
486 \verb|Verifying password - Master key: |\\
487 \ebox
490 Iniciamos el dominio CHAOSDIMENSION.ORG:
492 \bbox
493 \verb|# kadmin -l|\\
494 \verb|     kadmin> init CHAOSDIMENSION.ORG|\\
495 \verb|     Realm max ticket life [unlimited]:|\\
496 \verb|     Realm max renewable ticket life [unlimited]:|\\
497 \ebox
499 \subsubsection{Añadir usuarios y servicios}
501 Añadir un usuario es sencillo, hacer en la consola de administración (kadmin -l):
503 \bbox
504 \verb|     kadmin> add usuario|\\
505 \verb|     Max ticket life [unlimited]:|\\
506 \verb|     Max renewable life [unlimited]:|\\
507 \verb|     Attributes []:|\\
508 \verb|     Password:|\\
509 \verb|     Verifying password - Password:|\\
510 \ebox
512 Para comprobar si funciona:
514 \bbox
515 \verb|# kinit usuario@CHAOSDIMENSION.ORG|\\
516 \verb|# klist|\\
517 \ebox
521 Para añadir un servicio necesitamos añadirlo como si fuera un usuario, en este caso la clave sera un valor al azar, ya que no necesita identificarse ante el servidor y por otro lado hay que guardar los datos en el keytab.
523 Por ejemplo para configurar el servicio ldap tenemos:
525 \bbox
526 \verb|# kadmin -l|\\
527 \verb|     kadmin> add --random-key ldap/my.host.name|\\
528 \verb|     Max ticket life [unlimited]:|\\
529 \verb|     Max renewable life [unlimited]:|\\
530 \verb|     Attributes []:|\\
531 \verb|     Password:|\\
532 \verb|     Verifying password - Password:|\\
533 \ebox
535 Si queremos aceptar todos los servicios de ese servidor tenemos:
537 \bbox
538 \verb|# kadmin -l|\\
539 \verb|     kadmin> add --random-key host/my.host.name|\\
540 \verb|     Max ticket life [unlimited]:|\\
541 \verb|     Max renewable life [unlimited]:|\\
542 \verb|     Attributes []:|\\
543 \verb|     Password:|\\
544 \verb|     Verifying password - Password:|\\
545 \ebox
547 Guardamos entonces el servicio en el keytab.
549 \bbox
550 \verb|# kadmin -l|\\
551 \verb|     kadmin> ext host/my.host.name|\\
552 \verb|     kadmin> exit|\\
553 \verb|# ktutil list|\\
554 \verb|     Version  Type             Principal|\\
555 \verb|          1   des-cbc-md5      host/my.host.name@CHAOSDIMENSION.ORG|\\
556 \verb|          1   des-cbc-md4      host/my.host.name@CHAOSDIMENSION.ORG|\\
557 \verb|          1   des-cbc-crc      host/my.host.name@CHAOSDIMENSION.ORG|\\
558 \verb|          1   des3-cbc-sha1    host/my.host.name@CHAOSDIMENSION.ORG|\\
559 \ebox
561 \subsubsection{Administración Remota}
563 Para poder administrar de forma remota (lease que no este ejecutandose en la maquina donde estamos o que no seamos root de la maquina donde se está administrando). usaremos kadmin sin la opción -l, en el servidor kerberos debemos tener configurado el usuario de administración remota con los permisos que nosotros querramos. Esto se debe dejar claro en kadmind.acl, por ejemplo si queremos que el usuario admin desde la maquina admin.remote.host pueda tener todos los permisos en el dominio CHAOSDIMENSION.ORG:
565 \bbox
566 \verb|admin@CHAOSDIMENSION.ORG       all        *@CHAOSDIMENSION.ORG|\\
567 \verb|admin@CHAOSDIMENSION.ORG       all        */*@CHAOSDIMENSION.ORG|\\
568 \ebox
572 \subsection{Replicación - hprop}
574 Hprop es el servicio de replicación que trae Heimdal Kerberos de serie. No es incremental, se basa en un dump de la base de datos y en la copia de este a los otros servidores.
576 El servidor hpropd se ejecuta en los esclavos, y el cliente hprop se ejecuta a intervalos regulares en el servidor, cuando hprop es ejecutado intenta una conexión con el puerto 754/TCP del servidor, coge la base de datos del dominio y la envia en un formato que permite al servidor convertirla en la nueva base de datos del cliente.
578 El servidor maestro debe tener configurado el usuario kadmin/hprop, ya que se crea al inicializar el dominio, si no es asi, haremos:
580 \bbox
581 \verb|# kadmin -l|\\
582 \verb|     kadmin> add --random-key kadmin/hprop@CHAOSDIMENSION.ORG|\\
583 \verb|     Max ticket life [unlimited]:|\\
584 \verb|     Max renewable life [unlimited]:|\\
585 \verb|     Attributes []:|\\
586 \ebox
588 Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administración remota:
590 \bbox
591 \verb|     kadmin> add admin@CHAOSDIMENSION.ORG|\\
592 \verb|     Max ticket life [unlimited]:|\\
593 \verb|     Max renewable life [unlimited]:|\\
594 \verb|     Attributes []:|\\
595 \verb|     Password:|\\
596 \verb|     Verifying password - Password:|\\
597 \ebox
599 Editamos el archivo kadmind.acl y añadimos el usuario administrador:
601 \bbox
602 \verb| admin@CHAOSDIMENSION.ORG        all           */*@CHAOSDIMENSION.ORG|\\
603 \ebox
605 Tanto en el maestro como en los servidores esclavos, con la configuración dns apuntando como servidor de dominio al servidor maestro, haremos:
607 \bbox
608 \verb|# ktutil get -p admin@CHAOSDIMENSION.ORG hprop/esclavo.hostname@CHAOSDIMENSION|\\
609 \verb|admin@CHAOSDIMENSION's Password:|\\
610 \ebox
612 Para hacer una replica del maestro, simplemente ejecutaremos hpropd en el esclavo y en el servidor ejecutaremos:
614 \bbox
615 \verb|# hprop --source=heimdal --v5-realm=CHAOSDIMENSION.ORG --encrypt \|\\
616 \verb|    --master-key=/var/lib/heimdal-kdc/m-key esclavo.hostname|\\
617 \ebox
619 Para comprobar que la replicación esta bien hecha haremos en el esclavo:
621 \bbox
622 \verb|# kadmin -l list *|\\
623 \ebox
626 La replicación debe ser controlada desde el maestro, normalmente se ejecutara cada cierto tiempo dependiendo del tamaño de la base de datos. En el esclavo lo normal es que hpropd se ejecute a traves de inetd, aunque puede ejecutarse como demonio.
628 \subsection{Replicación incremental - iprop}
630 Iprop es un servicio de replica incremental de la base de datos de Heimdal Kerberos, su idea es sencilla, es un log se van grabando las transacciones de la base de datos, cuando un cliente iprop se conecta se le envian las transacciones que este no haya ejecutado anteriormente.
632 Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administración remota:
634 \bbox
635 \verb|     kadmin> add admin@CHAOSDIMENSION.ORG|\\
636 \verb|     Max ticket life [unlimited]:|\\
637 \verb|     Max renewable life [unlimited]:|\\
638 \verb|     Attributes []:|\\
639 \verb|     Password:|\\
640 \verb|     Verifying password - Password:|\\
641 \ebox
643 Editamos el archivo kadmind.acl y añadimos el usuario administrador:
645 \bbox
646 \verb| admin@CHAOSDIMENSION.ORG        all           */*@CHAOSDIMENSION.ORG|\\
647 \ebox
649 Tanto en el maestro como en los servidores esclavos, con la configuración dns apuntando como servidor de dominio al servidor maestro, haremos:
651 \bbox
652 \verb|# ktutil get -p admin@CHAOSDIMENSION.ORG iprop/esclavo.hostname@CHAOSDIMENSION|\\
653 \verb|admin@CHAOSDIMENSION's Password:|\\
654 \ebox
656 Para hacer una replica del maestro, simplemente ejecutaremos \verb| #iprop-master &| en el servidor y en los servidor escalvos ejecutaremos:
658 \bbox
659 \verb|# iprop-slave maestro.hostname &|\\
660 \ebox
662 Para comprobar que la replicación esta bien hecha haremos en el esclavo:
664 \bbox
665 \verb|# kadmin -l list *|\\
666 \ebox
668 Esta replicación es incremental lo que significa que cada cambio en el servidor maestro es enviado automaticamente a los esclavos.
670 \subsection{Heimdal sobre ldap}
672 Vease en \ref{heimdal_ldap}
674 \subsection{Ventajas y desventajas}
676 Heimdal es un desarrollo con mucho futuro, mas aun cuando ha sido elegido como la implementación que llevara el futuro samba4, es thread safe lo que significa menor probabilidad de fallos y mejor rendimiento para aplicaciones que tiren directamente de el, como openLdap o samba4.
678 La replicacion iprop da numerosos problemas de estabilidad, asi que no es muy recomendada para replicación.
680 No tiene soporte de politicas de contraseñas, aunque se puede usar cracklib para la seguridad de las contraseñas, esto tiene que añadirse mediante un parche o a traves de aplicaciones externas.
682 \section{La configuración de clientes MS Windows}
686 \section{SASL}
687 \label{down_sasl}
689 \subsection{La configuración de SASL}
691 \subsection{Modulos para kerberos}