es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recibir ticket Kerberos para la cuenta de administrador del cliente desde el servidor.

Imagina un escenario como este: quieres que una aplicación WPF ejecute algunos scripts de PowerShell en los ordenadores de los usuarios en nombre de una cuenta de operador de servicio de mesa de ayuda.
Una forma de hacerlo es enviar las credenciales del operador de servicio de mesa de ayuda en texto plano a través de HTTPS, junto con el script que deseas ejecutar y crear NetworkCredentials a partir de ellas. No es muy seguro, pero lo suficientemente simple.

La nueva forma solicitada después de una auditoría de seguridad es intentar utilizar tickets de Kerberos en lugar de las credenciales en texto plano, pero estoy confundido sobre cómo funcionaría eso, porque según entiendo, Kerberos es una operación de múltiples pasos entre el cliente, el servidor y el Centro de Distribución de Claves, así que no entiendo cómo el servidor podría crear un ticket de Kerberos para el operador de servicio de mesa de ayuda y luego enviarlo a través de HTTPS (quizás haya alguna otra forma más “kerberosa”) al cliente, y el cliente lo usaría de alguna manera sin ningún tipo de validación de clave, y así sucesivamente… ¿De qué manera sería más seguro sin la validación de clave?

Quizás haya algún tipo de solicitud de Kerberos que el cliente pueda hacer para obtener las credenciales de un operador, pero nuevamente no veo cómo eso sería posible y seguro al mismo tiempo.

¿Alguien tiene experiencia con esto o puede señalarme un ejemplo?

Por cierto, el servidor está ejecutando ASP.NET Core, si eso ayuda de alguna manera o abre alguna posibilidad, y todos los entornos están completamente controlados por Active Directory.

Edit 1: Después de un comentario, tengo que aclarar que la aplicación WPF se inicia con credenciales normales de usuario final con casi ningún privilegio, se comunica con el servidor y descarga un script para ejecutarlo y las credenciales del operador, de modo que el script no falle si está haciendo algo que requiera permisos más altos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La solución propuesta de utilizar tickets de Kerberos en lugar de credenciales en texto plano para la autenticación es una opción más segura. Kerberos es un protocolo de autenticación de terceros confiable que proporciona una forma de autenticar de manera segura a un cliente y un servicio utilizando un ticket cifrado.

    Para implementar esta solución, el servidor necesitaría autenticar la cuenta del operador de servicio y obtener un ticket de Kerberos. Este ticket podría luego ser enviado al cliente a través de HTTPS. El cliente luego validaría el ticket con el Centro de Distribución de Claves (KDC, por sus siglas en inglés) y lo usaría para autenticarse con el servicio. Esto implicaría descifrar el ticket, verificar la autenticidad del servicio y luego generar una clave de sesión para la comunicación cifrada.

    Si bien esta solución ofrece mayor seguridad, requiere alguna infraestructura adicional, como un KDC, y una configuración cuidadosa para garantizar que tanto el cliente como el servidor estén correctamente configurados para utilizar Kerberos. Sin embargo, una vez configurado correctamente, ofrece una solución más segura y escalable para la autenticación.

    En cuanto a la implementación específica en ASP.NET Core, existen varias bibliotecas y recursos disponibles para ayudar en la implementación de la autenticación de Kerberos. Una opción es utilizar el paquete Microsoft.AspNetCore.Authentication.Negotiate, que proporciona soporte para SPNEGO (Mecanismo de Negociación de GSS-API Simple y Protegido), una variación del protocolo Kerberos. Este paquete se puede utilizar para habilitar la autenticación de Kerberos en una aplicación ASP.NET Core.

    En resumen, Kerberos ofrece una opción más segura para la autenticación y, con una configuración e implementación adecuadas, se puede utilizar junto con HTTPS para proporcionar una solución sólida y segura para la autenticación.

Comments are closed.