Kerberos: Separando AS y TGS

9

En Kerberos, el servidor de autenticación (AS) y el servidor de concesión de tickets (TGS) generalmente se implementan en el mismo servidor. Esta máquina se llama Centro de distribución de claves (KDC).

Seguramente, tiene sentido implementar estos servicios en la misma máquina física, ya que en redes pequeñas y medianas sería excesivo separar estos dos servicios. Además, tengo una fuente relativamente confiable, que dice (traducida):

TGS y AS tienen que acceder al mismo DB => no tiene mucho sentido implementar TGS y AS en diferentes máquinas

Sin embargo, no veo qué base de datos se debe compartir entre los dos.

Esta es mi idea, cómo separaría AS y TGS, no hay bases de datos compartidas:

  • Como AS y TGS están separados, tienen un secreto maestro diferente
  • El AS tiene una base de datos con todos los usuarios con su respectivo secreto maestro (utilizado cuando el Usuario inicia sesión, para cifrar la clave de sesión), así como el secreto maestro del TGS (para cifrar los TGT solicitados).
  • El TGS tiene una base de datos, que le permite determinar qué usuario puede usar qué servicio (ACL, lista de revocación, ...), así como una base de datos con todos los servicios con sus respectivos secretos maestros (para encriptar Tickets).

Cuando un usuario quiere usar un servicio (simplificado):

  • Autenticar en el AS
  • Obtenga un Ticket Granting Ticket (TGT), cifrado con el secreto maestro de TGS, así como la clave de sesión, cifrada con el secreto maestro del usuario.
  • Póngase en contacto con el TGS con el TGT
  • Obtenga un boleto, encriptado con el secreto maestro del servicio
  • Póngase en contacto con el servicio con el boleto

¿Me estoy perdiendo algo o realmente no hay ningún problema para separar el AS y el TGS?

Misch
fuente
1
Parece que estás demasiado metido en lo interno de Kerberos. La forma habitual de escalar es simplemente agregar más KDC, por lo que no estoy realmente seguro de lo que está tratando de lograr.
Michael Hampton
1
Correcto: ¿con qué problema te enfrentas y que estás tratando de resolver?
mfinni
1
No estoy tratando de resolver ningún problema concreto. Solo estoy tratando de entender las partes internas de Kerberos (para un examen) sin querer usarlo en este momento. La pregunta es puramente teórica, solo quiero saber si entendí algo mal o si la cita en mi pregunta no es totalmente correcta.
Misch

Respuestas:

4

Tu pregunta es toda teoría. Entonces responderé en especie. El AS y la TGS son servidores lógicos, y como tales podrían teóricamente ser separados. Pero en la práctica no ha habido una buena razón para implementarlos en máquinas separadas, por lo que nadie lo hace en la vida real. Incluso las redes más grandes y activas del mundo en términos de autenticación Kerberos no tienen necesidad de separar los componentes lógicos de los KDC. En las implementaciones de la vida real de Kerberos, todos los datos que necesita el AS y todos los datos que necesita el TGS se almacenan en la misma base de datos. Teóricamente podría separarse, pero no hay una buena razón para hacerlo y no haría nada más que complicar innecesariamente la implementación.

Ryan Ries
fuente
1
Acabo de encontrar otro problema al separar AS y TGS: no solo es posible obtener TGT del AS, sino que también puede solicitar un boleto para cualquier otro servicio (por ejemplo, si sabe que solo necesitará este boleto, entonces no es necesario el desvío a través de TGT). Esto significa que el AS además necesita todos los datos que supuse que solo el TGS necesita.
Misch