Este capítulo proporciona una introducción al producto SEAM.
SEAM (Sun Enterprise Authentication Mechanism) es una arquitectura cliente/servidor que ofrece la autenticación potente de los usuarios, así como la integridad y la privacidad de los datos, para proporcionar transacciones seguras a través de las redes. La autenticación garantiza las identidades del remitente y el destinatario de una transacción de red; SEAM también puede verificar la validez de los datos que pasan de un lado a otro (integridad) y encriptarlos durante la transmisión (privacidad). Con SEAM puede conectarse a otras máquinas, ejecutar comandos, intercambiar datos y transferir archivos de forma segura. Además, SEAM proporciona servicios de autorización, que permiten que los administradores puedan restringir el acceso a servicios y máquinas; asimismo, como usuario de SEAM puede regular el acceso de otras personas a su cuenta.
SEAM es un sistema de inicio de sesión único, cosa que significa que sólo necesita autenticarse en SEAM una vez por sesión y el resto de transacciones durante la sesión están protegidas automáticamente. Después de que SEAM le haya autenticado, no es necesario que se autentique cada vez que utilice un comando basado en SEAM como ftp o rsh, o cada vez que acceda a los datos de un sistema de archivos NFS. Así no tiene que enviar su contraseña a través de la red, donde puede ser interceptada, cada vez que utilice estos servicios.
SEAM se basa en el protocolo de autenticación de red Kerberos V5, desarrollado en el Massachusetts Institute of Technology (MIT). Por tanto, aquellos que hayan utilizado Kerberos V5 deberían encontrar SEAM muy familiar. Como Kerberos V5, de hecho, es un estándar industrial para la seguridad de red, SEAM promueve la interoperatividad con otros sistemas. Dicho de otra forma, como SEAM funciona con los sistemas que utilicen Kerberos V5, permite las transacciones seguras incluso a través de redes heterogéneas. Además, SEAM proporciona la autenticación y la seguridad entre dominios y dentro de un solo dominio.
Como SEAM se basa en Kerberos V5 y se ha diseñado para interoperar con él, este manual utiliza a menudo los términos "Kerberos" y "SEAM" de forma más o menos intercambiable; por ejemplo, "ámbito de Kerberos" o "utilidad basada en SEAM" (además, "Kerberos" y "Kerberos V5" también se utilizan de forma intercambiable). El manual hace las distinciones cuando sea necesario.
SEAM permite la ejecución de aplicaciones de Solaris de forma flexible. Puede configurarlo para permitir las solicitudes basadas y no basadas en SEAM de los servicios de red, como el servicio NFS, telnet y ftp. Esto significa que las aplicaciones actuales de Solaris seguirán funcionando incluso si están instaladas en sistemas en los que no está instalado SEAM. Por supuesto, también puede configurar SEAM para que sólo permita las solicitudes de red basadas en SEAM.
Además, si se desarrollan otros mecanismos de seguridad, las aplicaciones no tienen que estar dedicadas a SEAM. Como éste se ha diseñado para integrarse de forma modular en la API genérica de servicios de seguridad, las aplicaciones que usen la GSS-API pueden utilizar el mecanismo de seguridad que mejor se ajuste a sus necesidades.
A continuación se ofrece una visión general del sistema de autenticación SEAM. Para obtener una descripción más detallada, véase "Funcionamiento del sistema de autenticación".
Desde el punto de vista del usuario, SEAM es básicamente invisible una vez iniciada la sesión de SEAM. Los comandos, como rsh o ftp funcionan casi normalmente. A menudo, la inicialización de una sesión de SEAM simplemente es iniciar una sesión y proporcionar una contraseña de Kerberos.
El sistema SEAM se centra en el concepto del cupón. Un cupón es un conjunto de información electrónica que sirve como identificación de un usuario o un servicio, como el servicio NFS. Al igual que su carnet de conducir le identifica e indica qué permisos de conducción tiene, el cupón le identifica junto con sus privilegios de acceso de red. Cuando lleva a cabo una transacción basada en SEAM (por ejemplo, si hace un rlogin en otra máquina), está enviando de forma transparente una solicitud de un cupón a un Centro de distribución de claves, o KDC, que accede a una base de datos para autenticar su identidad. El KDC devuelve un cupón que le concede el permiso para acceder a la otra máquina. "De forma transparente" significa que no necesita solicitar un cupón de forma explícita, sino que sucede como parte del comando rlogin. Como sólo el cliente autenticado puede obtener un cupón para un servicio concreto, otro cliente no puede usar rlogin bajo una identidad asumida.
Los cupones tienen asociados determinados atributos. Por ejemplo, un cupón puede ser remitible (lo que significa que se puede utilizar en otra máquina sin un nuevo proceso de autenticación), o con fecha futura (no válido hasta una hora especificada). El uso de los cupones (por ejemplo, quiénes tienen permiso para obtener qué tipos de cupón) está definido mediante normas, determinadas cuando se instala o se administra SEAM.
A menudo, verá los términos credencial y cupón. En el mundo de Kerberos, se utilizan a menudo de forma intercambiable. Sin embargo, técnicamente una credencial es un cupón más la clave de sesión para esa sesión. Esta diferencia se explica con más detalle en "Obtención de acceso a un servicio mediante SEAM".
Los apartados siguientes explican brevemente el proceso de autenticación de SEAM.
La autenticación de Kerberos tiene dos fases: una autenticación inicial que permite todas las autenticaciones siguientes y estas mismas autenticaciones siguientes.
Figura 1-1 muestra cómo se lleva a cabo la autenticación inicial:
Un cliente (un usuario o un servicio como NFS) inicia una sesión de SEAM solicitando un cupón de obtención de cupones (TGT) al Centro de distribución de claves. Esto a menudo se realiza automáticamente durante el inicio de sesión.
El cupón de obtención de cupones es necesario para obtener otros cupones para servicios específicos. Es posible considerar que el cupón de obtención de cupones es similar a un pasaporte. Al igual que éste, el cupón de obtención de cupones le identifica y le permite obtener diversos "visados", pero éstos (cupones) no son para países extranjeros sino para máquinas remotas o servicios de red. Al igual que los pasaportes y los visados, el cupón de obtención de cupones y los otros cupones diversos tienen vigencias limitadas. La diferencia es que los comandos "adaptados a Kerberos" se dan cuenta de que tiene un pasaporte y obtienen los visados por usted (no es necesario que se encargue personalmente de las transacciones).
El KDC crea un cupón de obtención de cupones y lo envía de vuelta codificado al cliente, el cual lo desencripta mediante su contraseña.
El cliente, en posesión de un cupón de obtención de cupones válido, ahora puede solicitar cupones para todo tipo de operaciones de red, como rlogin o telnet, mientras dure el cupón de obtención de cupones. Habitualmente, su duración es de varias horas. Cada vez que el cliente lleva a cabo una operación de red única solicita al KDC un cupón para esa operación.
Después de que el cliente haya recibido la autenticación inicial, todas las autenticaciones individuales siguen el modelo que se muestra en Figura 1-2:
El cliente solicita al KDC un cupón para un servicio determinado (por ejemplo, para hacer rlogin en otra máquina); para ello envía su cupón de obtención de cupones como prueba de identidad.
El KDC envía el cupón para el servicio específico al cliente.
Por ejemplo, suponga que el usuario juan utiliza rlogin en el servidor puebla. Como ya está autenticado (es decir, ya tiene un cupón de obtención de cupones), obtiene un cupón como parte del comando rlogin de forma automática y transparente. Este cupón le permite hacer rlogin en puebla tan a menudo como desee hasta que caduque. Si juan desea hacer un rlogin en la máquina madrid, obtendrá otro cupón, como en el paso 1.
El cliente envía el cupón al servidor.
El servidor permite el acceso del cliente.
Al seguir estos pasos, posiblemente se haya dado cuenta de que parece que el servidor nunca se comunica con el KDC. No obstante, sí que lo hace; se registra con el KDC, al igual que el primer cliente. Hemos omitido esa parte para simplificar el proceso.
¿Cuáles son los comandos basados en SEAM (o "adaptados a Kerberos") que puede utilizar un usuario como juan? Éstos son:
ftp
rcp
rlogin
rsh
telnet
Estas aplicaciones son las mismas que las de Solaris del mismo nombre, con la excepción de que utilizan principales de Kerberos para autenticar las transacciones, por lo que proporcionan la seguridad basada en Kerberos (para obtener información sobre los principales, véase "Principales").
Estos comandos se tratan con más detalle en "Comandos de SEAM".
Los clientes en SEAM se identifican por su principal, que es una identidad única a la que el KDC puede asignar cupones; puede ser un usuario, como juan, o un servicio, como nfs o telnet.
Convencionalmente, los nombres de principal se dividen en tres partes: primario, ejemplar y ámbito. Por ejemplo, un principal típico de SEAM sería juan/admin@ING.ACME.COM, donde:
juan es el primario, que puede ser un nombre de usuario, como se muestra aquí, o un servicio, como nfs. También puede ser la palabra host, lo que significa que es un principal de servicio configurado para proporcionar diversos servicios de red ( ftp, rcp, rlogin, etcétera).
admin es el ejemplar. En el caso de los principales de usuario, el ejemplar es opcional, pero es obligatorio para los principales de servicio. Por ejemplo: si el usuario juan actúa a veces como administrador del sistema, puede utilizar juan/admin para distinguirse de su identidad de usuario habitual. Del mismo modo, si juan tiene cuentas en dos sistemas diferentes, puede utilizar dos nombres de principal con diferentes ejemplares (por ejemplo, juan/puebla.acme.com y juan/madrid.acme.com). Observe que SEAM trata a juan y juan/admin como dos principales completamente distintos.
En el caso de un principal de servicio, el ejemplar es el nombre de sistema completo. granmaquina.ing.acme.com es un ejemplo de estos ejemplares, de forma que, por ejemplo, el primario/ejemplar serían, ftp/granmaquina.ing.acme.com o host/granmaquina.ing.acme.com.
ING.ACME.COM es el ámbito de SEAM. Los ámbitos se tratan en "Ámbitos".
Todos los nombres de principal siguientes son válidos:
juan
juan/admin
juan/admin@ING.ACME.COM
ftp/host.ing.acme.com@ING.ACME.COM
host/ing.acme.com@ING.ACME.COM
Un ámbito es una red lógica, como un dominio, que define a un grupo de sistemas bajo el mismo KDC maestro (véase a continuación). Figura 1-3 muestra cómo se pueden relacionar los ámbitos entre sí. Algunos ámbitos son jerárquicos (uno es un superconjunto de otro). Pero, si los ámbitos son no jerárquicos debe definirse la reasignación entre ellos. Una de las funciones de SEAM es que permite la autenticación entre ámbitos; cada ámbito únicamente necesita tener una entrada para el otro ámbito en el KDC.
Cada ámbito debe incluir un servidor que mantenga la copia maestra de la base de datos de principales. Este servidor se denomina el servidor KDC maestro. Además, cada ámbito debería contener un servidor KDC esclavo como mínimo, con copias duplicadas de la base de datos de principales. Tanto el servidor KDC maestro como los esclavos crean los cupones utilizados para establecer la autenticación.
El ámbito también puede incluir dos tipos adicionales de servidores SEAM. Un servidor de aplicaciones de red SEAM proporciona acceso a las aplicaciones adaptadas a Kerberos (como ftp, telnet y rsh). Los ámbitos también pueden incluir los servidores NFS, que proporcionan servicios de NFS mediante la autenticación de Kerberos.
Figura 1-4 muestra qué puede contener un ámbito hipotético.
Además de proporcionar la autenticación segura de los usuarios, SEAM ofrece dos servicios de seguridad:
Integridad. Al igual que la autenticación garantiza que los clientes de la red son quienes afirman ser, la integridad garantiza que los datos que envían son válidos y no han sido alterados durante el camino. Esto se lleva a cabo mediante la suma de comprobación criptográfica de los datos. La integridad también incluye la autenticación de los usuarios.
Privacidad. La privacidad lleva la seguridad un paso más allá. No sólo incluye la verificación de los datos transmitidos, sino que los encripta antes de la transmisión, para protegerlos contra intrusos. También autentica a los usuarios.
Debido a las restricciones de exportación de los EE.UU., puede que el servicio de privacidad no esté disponible para todos los usuarios.
Actualmente, de todas las aplicaciones adaptadas a Kerberos que forman parte de SEAM, sólo el comando ftp permite a los usuarios cambiar el servicio de seguridad en el tiempo de ejecución ("de inmediato"). Los desarrolladores pueden diseñar sus aplicaciones basadas en RPC para que elijan un servicio de seguridad mediante la interfaz de programación RPCSEC_GSS.
Al igual que la distribución de MIT de Kerberos V5, SEAM incluye:
Centro de distribución de claves (KDC) (maestro):
Daemon de administración de bases de datos de Kerberos: kadmind
Daemon de proceso de cupones de Kerberos: krb5kdc
KDC esclavos
Programas de administración de bases de datos: kadmin y kadmin.local
Software de propagación de bases de datos: kprop
Programas de usuario para obtener, ver y destruir los cupones (kinit, klist, kdestroy) y para cambiar su contraseña de SEAM (kpasswd)
Aplicaciones (ftp, rcp, rlogin, rsh y telnet) y daemons para ellas (ftpd, rlogind, rshd y telnetd)
Utilidades de administración: ktutil, kdb5_util
Varias bibliotecas
Además, el producto SEAM incluye:
La Herramienta de administración SEAM (SEAM Tool) (gkadmin): permite administrar el KDC. Esta GUI basada en Java permite a un administrador que lleve a cabo las tareas que se efectúan habitualmente mediante el comando kadmin.
El módulo de autenticación conectable (PAM) permite que las aplicaciones puedan utilizar varios mecanismos de autenticación; PAM puede utilizarse para hacer inicios y fines de sesión de forma transparente para el usuario.
Una utilidad (gsscred) y un daemon (gssd): estos programas ayudan a reasignar los UID de UNIXTM a los nombres de principal, ya que los servidores NFS de SEAM utilizan los ID de UNIX para identificar los usuarios y no sus nombres, que se almacenan en un formato distinto.
Estructura GSS_API: la interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSS-API) permite que las aplicaciones puedan utilizar varios mecanismos de seguridad sin tener que recompilarlas cada vez que se agrega un mecanismo nuevo. Como GSS-API es independiente de la máquina, es adecuado para las aplicaciones en Internet. GSS-API ofrece a las aplicaciones la posibilidad de incluir servicios de seguridad, privacidad y autenticación.
La interfaz de programación de aplicaciones (API) RPCSEC_GSS permite que los servicios de NFS puedan utilizar la autentificación Kerberos. RPCSEC_GSS es una nueva versión de seguridad que proporciona servicios de seguridad independientes de los mecanismos utilizados; RPCSEC_GSS se encuentra "encima" de la capa de GSS-API. Las aplicaciones que utilicen RPCSEC_GSS pueden usar cualquier mecanismo de seguridad conectable basado en GSS_API.
Un procedimiento de preconfiguración, que permite definir los parámetros de instalación y de configuración de SEAM, haciendo que su instalación sea automática; lo que resulta especialmente útil si se van a realizar varias instalaciones.
Modificaciones del núcleo que permiten un rendimiento más rápido.