Kerberos como servicio de autenticación

KERBEROS...
Uno de los servicios de seguridad fundamentales que deben brindar los sistemas en internet es la autentificación, esto debido a que el ataque a la seguridad más frecuente es la suplantación. La suplantación es un ataque de tipo activo, en el que una entidad finge ser otra, es decir un intruso trata de acceder a información restringida a la que no tiene acceso y por alguna razón obtiene acceso a esa información fingiendo ser otro usuario y realiza acciones indebidas negando que él las hizo. Kerberos ofrece una solución bastante sólida a esta problemática, pero ¿Es kerberos completamente infalible e invulnerable?
Surgimiento de kerberos
 Primero que nada hay que comenzar por los motivos que se tuvieron para el desarrollo de kerberos. Kerberos ofrece un servicio de autentificación bastante completo, añadiendo que también ofrece los mecanismos de  integridad de los datos y cifrado. Todo lo que incluye se debe al propósito con el que fue desarrollado. Se creó con la intención de dar solución a la problemática de que un usuario no autorizado pudiera acceder a información no autorizada para este, también para que un usuario no pudiera fingir ser otro y realizar algún tipo de transacción negando que la hizo, en pocas palabras realizando una suplantación. Kerberos también se desarrolló con la intención de restringir el acceso de los usuarios autorizados a cierta información y autentificar las solicitudes a dicha información.
 ¿Qué es kerberos?
Ya que se han mencionado las problemáticas que motivaron a que se desarrollara el servicio de autentificación conocido como kerberos, es necesario definir qué es: Kerberos es un servicio de autenticación que se desarrolló en el MIT (Massachusetts Institute of Technology) como parte del proyecto Athena.
 Kerberos ofrece una autentificación de usuario, integridad y privacidad. La autenticación la ofrece al asegurar que las identidades del remitente y el destinatario sean verdaderas al realizar una transacción, ofrece integridad de los datos al asegurar que los datos llegan a un destinatario tal y como fueron enviados y ofrece privacidad al cifrar la información cuanto es transmitida a través de la red. Kerberos maneja un servidor central de autentificación que tiene la función de autentificar a los usuarios a un servidor y autentificar el servidor a los usuarios. Con el servicio kerberos se puede iniciar sesión en varios dispositivos, intercambiar datos, transferir datos de manera segura; además también ofrece servicios de autorización que permiten que un administrador pueda restringirle a un usuario el acceso a ciertos servicios y/o equipos. Y de igual manera siendo usuario de kerberos se puede restringir el acceso a otras personas a una cuenta personal.
Ventajas de Kerberos
Kerberos presenta varias ventajas, una de ellas es que proporciona autentificación y seguridad entre dominios o dentro de un único dominio. Otra de sus grandes ventajas es que es flexible, es decir, en la ejecución de las aplicaciones, ya que se puede configurar para que sólo se permitan solicitudes de servicios de red que se basen o no en kerberos o igualmente se puede configurar el servicio kerberos para permitir únicamente solicitudes que se basen en el servicio ya mencionado
Kerberos posee ciertas características que lo hacen un servicio bastante completo y confiable, estas características son las siguientes:
Seguridad: Kerberos ofrece seguridad al no permitir que cualquier persona que esté en la red como observador pueda obtener información necesaria para hacerse pasar por un usuario de algún sistema.
Fiabilidad: Kerberos es fiable al proporcionar una arquitectura de servidores distribuidas en la que un sustema puede disponer de copias de otro. De esta manera es tolerante a fallos.
Transparencia: Debido a que el usuario debe introducir una contraseña y que este no se da cuenta que está ocurriendo una autentificación.
Escalabilidad: Debido a que puede darle lugar a un gran número de clientes y a un gran número de servidores
Otra de las grandes ventajas de kerberos es que es un sistema de inicio de sesión único, es decir que sólo se necesita autentificarse ante el servicio una vez por inicio de sesión, el resto de las transacciones que se realizan dentro del sistema al que se ingresó se comprueban de manera automática.
La autentificación con Kerberos          
Ya que se ha definido lo que es kerberos, por qué surgió, en qué consiste y cuáles son sus ventajas, es necesario explicar cómo es que funciona.
Kerberos es diferente a los métodos de autentificación de usuario y contraseña. En vez de validar cada usuario para cada uno de los servicios de red, se usa una un cifrado de tipo simétrico y un tercero, un KDC (Centro de distribución de llaves) para autentificar los usuarios ante varios servicios de red. Una vez que el usuario se haya autentificado ante el KDC, se le envía un ticket específico para la sesión que ha iniciado, y dicho ticket se manda a la máquina del usuario, y cuando se requiera la utilización del algún servicio de red kerberizado, el servicio buscará el ticket en la máquina del usuario en vez de pedirle que introduzca nuevamente una contraseña para que pueda autentificarse.
Cuando un usuario se registra a un sistema que utiliza kerberos, el ID del usuario se envía al KDC como petición para solicitar un TGT (Ticket de acceso), el cual es un ticket especial que le permite al cliente obtener otros tickets sin la necesidad de solicitarlos desde el KDC. El KDC envía la petición del usuario a Un servidor de autenticación (AS)  y este responde a la petición del cliente, genera el TGT y luego es mandado al KDC.
Cuando el usuario quiere iniciar sesión el KDC busca en su base de datos al usuario, y si lo encuentra cifra el TGT que ya fue generado previamente y se lo manda al usuario. Se descifra el TGT usando la contraseña que el usuario ingresó al sistema cuando se registró. La contraseña del usuario es utilizada en su computadora, por lo que esta no es enviada a la red, y de esta manera se autentifica al usuario, ya que este posee un TGT único y al ser la contraseña obtenida desde su computadora y no enviada por la red, no puede ser interceptada por un intruso. Por lo que el riesgo de que alguien más pueda obtener la contraseña se reduce.
Los TGT tienen una configuración que hacen que se caduquen después de cierto tiempo (10 horas normalmente). El TGT es almacenado en el caché de credenciales de la máquina del cliente. Al existir un tiempo para que el TGT se caduque, un intruso tiene muy poco tiempo para que el ticket pueda serle de utilidad. El usuario no necesita mandar su contraseña al KDC hasta que el ticket (TGT) se halla caducado o hasta que la sesión se haya cerrado y quiera iniciarse de nuevo.
Cuando un usuario quiera acceder a algún otro servicio de red, no es necesario autentificarse con la contraseña, sino que el TGT se utiliza para eso, el servidor AS accede a un servidor TGS para autentificar, y de esta manera obtiene otros tickets que le sirven al usuario para acceder a dichos servicios.
Desventajas de Kerberos
No todo es infalible al utilizar kerberos, ya que a pesar de ser un servicio de autentificación bastante completo también tiene sus defectos ya que se vuelve vulnerable cada vez que el usuario en la red se valida ante un servicio no kerberizado y requiere enviar su contraseña en la red en texto plano, es decir sin cifrar.
Otra desventaja de kerberos es que este requiere de ciertros servicios en la red para trabajar correctamente y si se utilian servicios de la red no kerberizados, el servicio de autentificación se vuelve bastante vulnerable.
Conclusión
En conclusión Kerberos es un servicio de autentificación bastante confiable y sólido que se diferencia de otros métodos de autentificación debido a la emisión de tickets que este realiza para poder autentificar a los usuarios. Gracias a los tickets TGT la autentificación se realiza de una manera más concreta puesto que estos tienen un tiempo de caducidad, por lo que un intruso no dispone de mucho tiempo para utilizarlo en caso de obtenerlo, la contraseña que el usuario ingresa a un sistema kerberizado no requiere ser enviada por la red a cada momento para autentificarse, para eso está el TGT. Kerberos reduce en gran medida los ataques de suplantación, autentifica, asegura la integridad de los datos y los hace privados ya que también utiliza el mecanismo de cifrado ya que los tickets TGT se cifran para enviarse y se descifran cuando se reciben, todo esto con un cifrado simétrico.
Sin embargo a pesar de que kerberos resulta ser un servicio bastante completo, no es perfecto y también tiene sus vulnerabilidades, debido a que cuando un usuario se valida ante un servicio de red no kerberizado y envía su contraseña sin cifrar por la red, kerberos se hace muy vulnerable, o el hecho de que se requiere de ciertos servicios de red para que kerberos funcione bien.
Kerberos resulta ser una buena opción para utilizarse como servicio de autenticación en un sistema en la red, sin embargo hay que tener en cuenta que no es completamente infalible, y que como todas las cosas tiene sus vulnerabilidades en ciertos casos específicos.

Referencias:
William Stallings;(2004); Fundamentos de Seguridad en Redes, Aplicaciones y Estándares; 2 aedición; Editorial Pearson educación; Madrid, España; Páginas 71-15.
Oracle ;( 2002-2011);Guía de administración de servicios del sistema: Servicios de seguridad; California, EU; Recuperado en:https://docs.oracle.com/cd/E24842_01/html/E23286/intro-5.html
Red Hat;(2005); Ref Hat Enterprise Linux 4: Manual de referencia;Cambridge, Massachusetts; Recuperado enhttp://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-kerberos.html 



Comentarios

Entradas más populares de este blog

Algoritmos asimétricos o de Clave pública

Conclusión Principios del manifiesto ágil

Las Tablas Hash