Sun Guía de Sun Enterprise Authentication Mechanism

Administración de tablas de claves

Todos los sistemas que proporcionen un servicio deben tener un archivo local, denominado tabla de claves, que contenga el principal para el servicio apropiado, denominado clave de servicio. El servicio utiliza ésta para autenticarse al KDC y sólo la conoce Kerberos y el mismo servicio. Por ejemplo, si tiene un servidor NFS mediante Kerberos, este servidor debe tener una tabla de claves que contenga su principal de servicio nfs.

Para agregar una clave de servicio a una tabla de claves, agregue el principal de servicio apropiado a la tabla de claves de un sistema mediante el comando ktadd de kadmin. Como está agregando un principal de servicio a una tabla de claves, el principal ya debe existir en la base de datos de Kerberos para que kadmin pueda verificar su existencia. En el KDC maestro, el archivo de tabla de claves está ubicado de forma predeterminada en /etc/krb5/kadm5.keytab. En los servidores de aplicaciones que proporcionan servicios mediante Kerberos, el archivo de tabla de claves está ubicado de forma predeterminada en /etc/krb5/krb5.keytab.

La tabla de claves es análoga a la contraseña de un usuario. Tan importante es que los usuarios protejan sus contraseñas, como que los servidores de aplicaciones protejan sus tablas de claves. Almacene siempre las tablas de claves en un disco local, haga que sólo el usuario root pueda leerlas y no envíe nunca una tabla de claves a través de una red no protegida.

También hay un ejemplar especial para agregar un principal de root a la tabla de claves de un sistema. Básicamente, si desea que un usuario de un cliente SEAM monte los sistemas de archivos NFS adaptados a Kerberos utilizando automáticamente la autenticación de Kerberos, debe agregar el principal root del cliente a su tabla de claves. De lo contrario, los usuarios deben utilizar el comando kinit siendo root para obtener credenciales para el principal root del cliente cada vez que deseen montar un sistema de archivos NFS adaptado a Kerberos, incluso al utilizar el montador automático. Véase "Configuración de la autenticación de root para montar los sistemas de archivos NFS" para obtener información detallada.


Nota -

Al configurar un KDC maestro, necesita agregar los principales kadmind y changepw al archivo kadm5.keytab, de forma que el KDC pueda desencriptar los cupones de Kerberos de los administradores para determinar si debe darles acceso a la base de datos o no.


Otro comando que puede utilizar para administrar las tablas de claves es el comando ktutil, que es una utilidad interactiva de interfaz de línea de comandos que permite gestionar la tabla de claves de un sistema local sin tener privilegios de administración de Kerberos, ya que no interactúa con la base de datos del mismo modo que lo hace kadmin. Así, después de que se agregue un principal a una tabla de claves, puede utilizar ktutil para ver la lista de claves de una tabla de claves o para inhabilitar temporalmente la autenticación para un servicio.

Mapa de tareas de la administración de tablas de claves

Tabla 5-9 Mapa de tareas de la administración de tablas de claves

Tarea 

Descripción 

Para obtener instrucciones, vaya a ... 

Agregar un principal de servicio a una tabla de claves 

Para agregar un principal de servicio a una tabla de claves, utilice el comando ktadd de kadmin.

"Adición de un principal de servicio a una tabla de claves"

Eliminar un principal de servicio de una tabla de claves 

Para eliminar un servicio de una tabla de claves, utilice el comando ktremove de kadmin.

"Eliminación de un principal de servicio de una tabla de claves"

Mostrar la lista de claves (principales) de una tabla de claves 

Para mostrar la lista de claves de una tabla de claves, utilice el comando ktutil.

"Muestra de la lista de claves (principales) de una tabla de claves"

Inhabilitar temporalmente la autenticación de un servicio en un sistema 

Este procedimiento es una forma rápida de inhabilitar temporalmente la autenticación para un servicio en un sistema sin que sean necesarios los privilegios de kadmin. Antes de utilizar ktutil para suprimir el principal de servicio en la tabla de claves del servidor, copie la tabla de claves original en una ubicación temporal. Cuando desee volver a habilitar el servicio, copie la tabla de claves original.

"Inhabilitación temporal de la autenticación para un servicio de un sistema"

Adición de un principal de servicio a una tabla de claves

  1. Asegúrese de que ya exista el principal en la base de datos de Kerberos.

    Para más información, véase "Visualización de la lista de principales".

  2. Conviértase en superusuario en el sistema que necesita la adición de un principal en su tabla de claves.

  3. Inicie el comando kadmin.


    # /usr/krb5/sbin/kadmin
    
  4. Agregue un principal a una tabla de claves mediante el comando ktadd.


    kadmin: ktadd [-k tabla_claves] [-q] [principal | -glob exp_principal]

    -k tabla_claves

    Especifica el archivo de tabla de claves. De forma predeterminada, se utiliza /etc/krb5/krb5.keytab.

    -q

    Muestra información menos detallada. 

    principal

    El principal que se agregará a la tabla de claves. Puede agregar los siguientes principales de servicio: host, root, nfs y ftp.

    -glob exp_principal

    Se agregarán a la tabla de claves todos los principales que concuerden con la expresión de principal. Las reglas para la expresión de principal son las mismas que para el comando list_principals de kadmin.

  5. Salga del comando kadmin.


    kadmin: quit
    

Ejemplo: adición de un principal de servicio a una tabla de claves

El ejemplo siguiente agrega los principales kadmin/admin y kadmin/changepw a la tabla de claves de un KDC maestro. Para este ejemplo, el archivo de tabla de claves debe ser el especificado en el archivo kdc.conf.


kdc1 # /usr/krb5/bin/kadmin.local
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw
Entrada para el principal kadmin/admin@ACME.COM con kvno 3, tipo de codificación DES-CBC-CRC 
agregado a la tabla de claves WRFILE:/etc/krb5/kadm5.keytab. 
Entrada para el principal kadmin/changepw@ACME.COM con kvno 3, tipo de codificación DES-CBC-CRC 
agregado a la tabla de claves 
WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: quit

El ejemplo siguiente agrega el principal host de puebla al archivo de tabla de claves de puebla, para que el KDC pueda autenticar los servicios de red de puebla.


puebla # /usr/krb5/bin/kadmin
kadmin: ktadd host/puebla@acme.com@ACME.COM
kadmin: Entrada para el principal host/puebla@acme.com@ACME.COM con kvno 2, 
tipo de codificación DES-CBC-CRC agregado a la tabla de claves 
WRFILE:/etc/krb5/krb5.keytab. 
kadmin: quit

Eliminación de un principal de servicio de una tabla de claves

  1. Conviértase en superusuario en el sistema con el principal de servicio que se deba eliminar de su tabla de claves.

  2. Inicie el comando kadmin.


    # /usr/krb5/bin/kadmin
    
  3. Opcional. Para mostrar la lista actual de principales (claves) de la tabla de claves, utilice el comando ktutil.

    Véase "Muestra de la lista de claves (principales) de una tabla de claves" para obtener instrucciones detalladas.

  4. Puede eliminar un principal de una tabla de claves mediante el comando ktremove.


    kadmin: ktremove [-k tabla_claves] [-q] principal [kvno | todos | antiguos ]

    -k tabla_claves

    Especifica el archivo de tabla de claves. De forma predeterminada, se utiliza /etc/krb5/krb5.keytab.

    -q

    Muestra información menos detallada. 

    principal

    El principal que se eliminará de la tabla de claves. 

    kvno

    Elimina todas las entradas del principal especificado cuyo kvno (número de versión de clave) concuerde con kvno.

    todos

    Elimina todas las entradas del principal especificado. 

    antiguos

    Elimina todas las entradas del principal especificado excepto las que tengan el kvno más alto. 

  5. Salga del comando kadmin.


    kadmin: quit
    

Ejemplo: eliminación de un principal de servicio de una tabla de claves

El ejemplo siguiente elimina el principal host de puebla del archivo de tabla de claves de puebla.


puebla # /usr/krb5/bin/kadmin
kadmin: ktremove host/denver.acme.com@ACME.COM
kadmin: Entrada para el principal host/puebla.acme.com@ACME.COM con kvno 3 
eliminada de la tabla de claves WRFILE:/etc/krb5/krb5.keytab. 
kadmin: quit

Muestra de la lista de claves (principales) de una tabla de claves

  1. Conviértase en superusuario en el sistema de la tabla de claves.


    Nota -

    Aunque puede crear tablas de claves que sean propiedad de otros usuarios, la ubicación predeterminada para la tabla de claves necesita la propiedad de root.


  2. Inicie el comando ktutil.


    # /usr/krb5/bin/ktutil
    
  3. Lea la tabla de claves en la memoria intermedia de listas de clave mediante el comando read_kt .


    ktutil: read_kt tabla_claves
    
  4. Muestre la memoria intermedia de lista de claves mediante el comando list.


    ktutil: list
    

    Aparecerá la memoria intermedia de lista de claves actual.

  5. Salga del comando ktutil.


    ktutil: quit
    

Ejemplo: visualización de la lista de claves (principales) de una tabla de claves

El ejemplo siguiente muestra la lista de claves del archivo /etc/krb5/krb5.keytab del servidor puebla.


puebla # /usr/krb5/bin/ktutil
    ktutil: read_kt /etc/krb5/krb5.keytab
    ktutil: list
ranura KVNO Principal 
---- ---- --------------------------------------- 
1    5 host/puebla@ACME.COM 
ktutil: quit

Inhabilitación temporal de la autenticación para un servicio de un sistema

Puede haber ocasiones en los que necesite inhabilitar temporalmente el mecanismo de autenticación para un servicio, como rlogin o ftp, en un servidor de aplicaciones de red. Por ejemplo, quizás desee evitar que los usuarios inicien sesiones en un sistema mientras lleva a cabo procedimientos de mantenimiento. El comando ktutil le permite hacer esto eliminando el principal de servicio en la tabla de claves del servidor, sin necesitar privilegios de kadmin. Para volver a habilitar la autenticación, todo lo que debe hacer es copiar la tabla de claves original que guardó de vuelta a su ubicación original.


Nota -

De forma predeterminada, la mayoría de servicios están configurados para que requieran la autenticación para funcionar. Si no es así, el servicio funcionará de todas formas incluso si inhabilita su autenticación.


  1. Conviértase en superusuario en el sistema de la tabla de claves.


    Nota -

    Aunque puede crear tablas de claves que sean propiedad de otros usuarios, la ubicación predeterminada para la tabla de claves necesita la propiedad de root.


  2. Guarde la tabla de claves actual en un archivo temporal.

  3. Inicie el comando ktutil.


    # /usr/krb5/bin/ktutil
    
  4. Lea la tabla de claves en la memoria intermedia de lista de claves mediante el comando read_kt.


    ktutil: read_kt tabla_claves
    
  5. Muestre la memoria intermedia de lista de claves mediante el comando list.


    ktutil: list
    

    Aparecerá la memoria intermedia de lista de claves actual. Anote el número de ranura del servicio que desea inhabilitar.

  6. Para inhabilitar temporalmente un servicio de un sistema, elimine el principal de servicio específico en la memoria intermedia de lista de claves mediante el comando delete_entry.


    ktutil: delete_entry número_ranura
    

    número_ranura

    El número de ranura del principal de servicio que se suprimirá, según lo muestra el comando list.

  7. Escriba la memoria intermedia de tabla de lista en la tabla de claves mediante el comando write_kt.


    ktutil: write_kt tabla_claves
    
  8. Salga del comando ktutil.


    ktutil: quit
    
  9. Cuando desee habilitar de nuevo el servicio, vuelva a copiar la tabla de claves temporal (original) de vuelta a su ubicación original.

Ejemplo: inhabilitación temporal de un servicio de un sistema

El ejemplo siguiente inhabilita temporalmente el servicio host del sistema puebla. Para rehabilitar el servicio host en puebla, debería copiar el archivo krb5.keytab.temp sobre el archivo /etc/krb5/krb5.keytab.


puebla # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp
puebla # /usr/krb5/bin/ktutil
    ktutil:read_kt /etc/krb5/krb5.keytab
    ktutil:list
ranura KVNO Principal 
------ ---- --------------------------------------- 
1    8 root/puebla@ACME.COM 
2    5 host/puebla@ACME.COM 
ktutil:delete_entry 2
    ktutil:list
ranura KVNO Principal 
------ ---- -------------------------------------- 
1    8 root/ranura@ACME.COM 
ktutil:write_kt /etc/krb5/krb5.keytab
    ktutil: quit