19.5. Configurar un servidor Kerberos 5

Cuando esté configurando Kerberos, debe instalar el servidor primero. Si necesita instalar servidores esclavos, los detalles para configurar las relaciones entre servidores maestro y esclavo se cubren en Manual de instalación de Kerberos 5 localizado en el directorio /usr/share/doc/krb5-server-<version-number> (reemplace <version-number> con el número de versión del paquete krb5-server instalado en su sistema).

Para configurar un servidor Kerberos básico, siga estos pasos:

  1. Asegúrese de que tanto el reloj como el DNS funcionan correctamente en todas las máquinas servidores y clientes antes de configurar el Kerberos 5. Preste especial atención a la sincronización de la hora entre el servidor Kerberos y de sus clientes. Si la sincronización de los relojes del servidor y de los clientes se diferencia en más de cinco minutos ( la cantidad predeterminada es configurable en el Kerberos 5), los clientes de Kerberos no podrán autentificarse al servidor. La sincronización de los relojes es necesaria para evitar que un intruso use un ticket viejo de Kerberos para hacerse pasar como un usuario autorizado.

    Se recomienda configurar una red cliente/servidor compatible con Network Time Protocol (NTP) aún si no está usando Kerberos. Red Hat Enterprise Linux incluye el paquete ntp para este propósito. Vea /usr/share/doc/ntp-<version-number>/index.htm para detalles sobre cómo configurar servidores Network Time Protocol y http://www.eecis.udel.edu/~ntp para información adicional sobre NTP.

  2. Instale los paquetes krb5-libs, krb5-server, y krb5-workstation en una máquina dedicada que ejecutará el KDC. Esta máquina tiene que ser muy segura — si es posible, no debería ejecutar ningún otro servicio excepto KDC.

    Si desea usar una utilidad de interfaz gráfica para administrar Kerberos, instale el paquete gnome-kerberos. Este contiene krb5, que es una herramienta tipo GUI para manejar tickets.

  3. Modifique los archivos de configuración /etc/krb5.conf y /var/kerberos/krb5kdc/kdc.conf para que reflejen el nombre de su reino y las correspondencias (mappings) de dominio a reino. Se puede construir un reino simple sustituyendo las instancias de EXAMPLE.COM y example.com con el nombre correcto del dominio — siempre y cuando se respete el formato correcto de los nombres escritos en mayúscula y en minúscula — y se cambie el KDC del kerberos.example.com con el nombre de su servidor Kerberos. En general, los nombres de reinos se escriben en mayúscula y todos los nombre DNS de host y nombres de dominio se escriben en minúscula. Para más detalles sobre los formatos de estos archivos, vea sus respectivas páginas man.

  4. Cree la base de datos usando la utilidad kdb5_util desde el intérprete de comandos del shell:

    /usr/kerberos/sbin/kdb5_util create -s 

    El comando create crea la base de datos que será usada para almacenar las llaves para el reino Kerberos. La opción -s fuerza la creación de un archivo stash en el cual la llave maestra del servidor es guardada. Si no se presenta un archivo stash desde donde leer la llave, el servidor Kerberos (krb5kdc) le pedirá al usuario que ingrese la contraseña maestra del servidor (la cual puede ser usada para regenerar la llave) cada vez que arranca.

  5. Modifique el archivo /var/kerberos/krb5kdc/kadm5.acl. Este archivo es usado por kadmind para determinar cuales principales tienen acceso administrativo a la base de datos Kerberos y sus niveles de acceso. La mayoría de las organizaciones pueden resolverse con una sola línea:

    */admin@EXAMPLE.COM  *

    La mayoría de los usuarios serán presentados en la base de datos por un principal simple (con una instancia NULL, o vacía, tal como joe@EXAMPLE.COM). Con esta configuración, los usuarios con un segundo principal con una instancia de admin (por ejemplo, joe/admin@EXAMPLE.COM) podrán tener todo el acceso sobre la base de datos del reino Kerberos.

    Una vez que se arranca kadmind en el servidor, cualquier usuario puede accesar a sus servicios ejecutando kadmin en cualquiera de los clientes o servidores en el reino. Sin embargo, solamente los usuarios que aparecen en la lista del archivo kadm5.acl podrán modificar la base de datos, excepto por sus propias contraseñas.

    NotaNota
     

    La utilidad kadmin se comunica con el servidor kadmind por la red y usa Kerberos para llevar a cabo la autentificación. Por esta razón, el primer principal ya debe existir antes de conectarse al servidor sobre la red para poder administrarla. Puede crear esta primera entrada con el comando kadmin.local, el cual se ha creado específicamente para usarlo en la misma máquina que el KDC y no usa Kerberos para la autenticación.

    Escriba el comando kadmin.local en una terminal KDC para crear la primera entrada como usuario principal:

    /usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
  6. Arranque Kerberos usando los siguientes comandos:

    /sbin/service krb5kdc start
    /sbin/service kadmin start
    /sbin/service krb524 start
  7. Agregue principals para sus usuarios con el comando addprinc y kadmin. kadmin y kadmin.local son interfaces de línea de comandos para el KDC. Como tales, muchos comandos están disponibles después de lanzar el programa kadmin. Vea la página del manual kadmin para más información.

  8. Verifique que el servidor KDC esté creando tickets. Primero, ejecute kinit para obtener un ticket y guardarlo en un archivo de credenciales caché. Luego, use klist para ver la lista de credenciales en su caché y use kdestroy para eliminar el caché y los credenciales que contenga.

    NotaNota
     

    Por defecto, kinit intenta autenticar el usuario usando el nombre de conexión (login) de la cuenta que usó cuando se conectó al sistema (no al servidor Kerberos). Si ese nombre de usuario no se corresponde a un principal en la base de datos Kerberos, kinitemite un mensaje de error. Si estó ocurre, indique a kinit el nombre de su principal correcto como un argumento en la línea de comandos (kinit <principal>).

Una vez que haya completado los pasos listados, el servidor Kerberos funcionará correctamente.