Atrás   Índice

Seguridad en WINDOWS 2000


Directorio activo. Políticas de grupo

Encrypted File System - EFS

Herramientas de configuración de seguridad

Autenticación Kerberos

IPSec



En los últimos años se ha revolucionado el concepto de red y de trabajo en grupo. Una de las novedades es la base de datos de directorio, o más genéricamente, el Directorio. Para Windows 2000 el término es Directorio Activo.

Un directorio o base de datos de directorio no es más que una simple base de datos que almacena distintos tipos de objetos. Su objetivo es centralizar todos los recursos que hay en una red en un único sitio para su administración. Otra de sus grandes ventajas es que los usuarios de dicha red podrán acceder al Directorio para consultas sobre los recursos existentes.

 



Veamos algunos conceptos del Directorio activo de Windows 2000:

  • Espacio de nombres. Cualquier servicio de directorio es un espacio de nombres. Esto quiere decir que cualquier objeto que este dentro de dicho directorio tendrá un nombre único y podrá ser resuelto por el servicio.
  • Objeto. Es cada elemento que compone la base de datos del directorio. Un objeto esta definido por un conjunto de atributos (propiedades). Por ejemplo, en el caso de un objeto Usuario sus atributos serán: Nombre, Apellidos, Dirección, etc.
  • Contenedor. Son objetos que a su vez pueden contener otros objetos. Tienen sus propios atributos.
  • Árbol. Es una jerarquía de objetos y contenedores que parten de un único punto y se van ramificando. Un directorio de un disco es un ejemplo muy claro de un árbol. Dentro de un árbol el espacio de nombres es contiguo. Esto quiere decir que cualquier objeto tiene por nombre el de sus contenedores, más el suyo propio.
  • Bosque. Conjunto de árboles que definen diferentes árboles que no forman un espacio de nombres contiguo. Todos los dominios en un bosque mantienen relaciones de confianza transitivas.
  • Esquema. Cada objeto que hay en el directorio es de un tipo diferente o mejor dicho, clase. La definición de las diferentes clases de objetos que existen en un directorio activo se denomina Esquema. Es posible, dar de alta nuevos objetos modificando el esquema o ampliar o reducir el número de atributos de un determinado objeto.

Este manual no pretende dar una explicación detallada del Directorio Activo de Windows 2000, simplemente introducirlo para ver los aspectos de seguridad que provee.

Los diferentes tipos de objetos del directorio permiten estructurarlo de forma eficaz para la administración.

Así, los diferentes objetos que viene por defecto en él son:

Cada objeto se podrá añadir en la rama del árbol que se desee, aunque es muy importante pensar en la organización del directorio antes de crearlo.

  • OU – Unidad organizativa. Objeto contenedor que tiene como misión organizar el Directorio en grupos o departamentos.
  • Ordenador – Objeto que define las propiedades de un equipo dado de alta en el dominio. Solo son aquellos ordenadores pertenecientes al dominio.
  • Usuario – Objeto que define a un usuario.
  • Impresora – Mediante este tipo de objetos incluiremos impresoras en nuestro directorio.
  • Grupo – Define un grupo de objetos y son de dos tipos:
  • Grupos de seguridad – Similares a los que hasta ahora conocemos. Nos facilitan la asignación de permisos y derechos a usuarios o equipos.
  • Grupos de distribución – Se utilizan como entrada para listas de distribución de correo electrónico. No se les puede asignar permisos, ni derechos.

Por otro lado, al ámbito de influencia de los grupos se divide en:

  • Grupos del dominio local.

Estás limitados al dominio al que pertenecen y tan solo se pueden asignar permisos a recursos de ese dominio. Sus miembros pueden ser de cualquier dominio dentro del mismo bosque.

  • Grupos globales.

Se usarán para garantizar permisos en múltiples dominios y son visibles en todos los dominios con relaciones de confianza. Sus miembros solo pueden ser del dominio en el que se crea el grupo.

  • Grupos universales.

Son similares a los anteriores en el sentido que pueden verse en todos los dominios con confianza, pero sus miembros pueden pertenecer a cualquier dominio de un bosque. Su objetivo es garantizar permisos para todo el bosque (conjunto de arboles que definen la estructura total del Directorio Activo).

  • Contacto – Permite definir una persona de contacto con múltiples propiedades y que no pertenece al bosque en la que está. Se utiliza para permitir la consulta por parte de los clientes del directorio activo.
  • Directorio compartido – Una vez que un equipo pone a compartir un directorio, este puede ser incluido en el Directorio Activo.

Cada objeto dentro del directorio tiene un identificador único que se crea al añadirlo al directorio activo. Este identificador es el ya mencionado SID. Es este identificador el que el sistema maneja en vez del nombre.

Mediante este SID y las ACL vistas para la versión NT 4.0 el Directorio Activo mantiene la seguridad.

Así, cada objeto en el Directorio Activo tiene una ACL donde se definen las entradas de los usuarios o grupos que tienen acceso a dicho objeto.

 



De forma similar a como se realiza para el sistema de ficheros NTFS, en la página de Seguridad de las propiedades de cada objeto se abre la ventana de la figura. En ella, se puede observar como para cada grupo o usuario definido en la lista superior se pueden ver los permisos de acceso que tiene en la lista inferior.

Mediante el botón Advanced... se puede especificar detalladamente los permisos hasta un nivel absoluto de detalle. Veamos esto. Mediante las ACL se puede controlar el acceso a un objeto contenedor y sus hijos, a un objeto concreto e incluso a determinadas propiedades de un objeto.

En la figura se puede observar una caja de selección que define si este objeto hereda los permisos de sus objetos contenedores. Si deshabilitamos esta caja no se heredarán permisos de los objetos padres.

Al pulsar deshabilitarla nos aparecerá un mensaje para que indiquemos que operación deseamos realizar.

 


Podremos o copiar los permisos heredados para usarlos como plantilla o eliminar dichos permisos, quedándonos únicamente con los especificados para el objeto.

Si pulsamos el botón de Advanced.. veremos lo siguiente:

 



Podemos especificar los permisos de forma detallada y al mismo tiempo podemos especificar la auditoria y la propiedad del objeto.

Para especificar detalladamente un permiso debemos editarlo o añadir uno nuevo. Si pulsamos el botón editar veremos la siguiente ventana:

 

En esta ventana existen dos páginas. La página Objeto, especifica los permisos detallados que se asignan al grupo o usuario a editar para el objeto concreto. En esta página podemos detallar los permisos para el objeto en cuestión o para otro tipo de objetos. Para cada tipo de objeto los permisos difieren y son muy detallados.

Mediante la otra página, Propiedades podemos especificar los permisos concretos para cada una de las propiedades del objeto. Al igual que lo dicho anteriormente esto permite especificar las propiedades para este objeto o para otro tipo de objetos.

Cuando un permiso aparece en gris quiere decir que es un permiso heredado y por lo tanto no se puede editar en el objeto presente y tan solo podrá ser modificado en el original.

En la figura siguiente podemos ver los permisos que se pueden aplicar a las propiedades de un objeto Usuario.



Otro factor de seguridad que incluye el Directorio Activo es la Delegación de Control. Mediante esta propiedad se puede asignar por parte de una autoridad administrativa de nivel superior la capacidad de realizar tareas administrativas a objetos contenedores y subárboles.

Esta característica permite eliminar el grupo Administradores de Dominio para realizar tareas administrativas a lo largo del dominio. Así, mediante la Delegación de Control podemos delegar la administración de forma estructurada y sin dar excesivos permisos no deseados.

Esta característica esta únicamente presente en los objetos contenedores. Al accionar esta característica se nos abre un Asistente que primero nos pide los grupos y/o usuarios a los que deseamos Delegar el control.

Una vez especificados los grupos y/o usuarios a los cuales deseamos delegar el control nos pide si deseamos delegar el control para una serie de tareas estándar o si queremos determinar con exactitud las tareas a delegar.

 


 

Si especificamos que deseamos configurar una tarea determinada nos pedirá si lo deseamos hacer para el objeto en cuestión y todos sus hijos o para un determinado tipo de objeto que nos encontremos en el contenedor:

 

Una vez que determinamos el tipo de objeto sobre el cual queremos delegar el control debemos especificar que tipo de tareas deseamos delegar. Para ello nos permite seleccionar hasta el punto más detallado. Y nos da tres posibilidades complementarias:

  • General – Tareas del tipo creación y eliminación de objetos.
  • Propiedades – Dependiendo del tipo de objeto que hayamos especificado nos aparecerán sus propiedades y los permisos asociados a ellas.
  • Creación/Borrado de objetos hijos – Nos aparecen las tareas de creación y borrado de los posibles objetos hijos.

 


Una vez especificado el tipo de tarea a delegar, el Asistente finaliza dándonos un resumen del tipo de Delegación que hemos determinado y la posibilidad de modificarla o Aceptarla definitivamente.

Como se repetirá en este manual, la seguridad de nuestra información dependerá del numero de barreras que pongamos para que nuestros atacantes no puedan violar la seguridad del sistema. Si pese a poner barreras, un atacante consigue entrar en nuestro sistema a través de Internet, dependerá de la seguridad del propio sistema el que su ataque sea un éxito o no.

Una de las medidas de seguridad más importantes que se puede llevar a cabo para proteger información es encriptarla. Hasta ahora, Windows NT no tenía un sistema de encriptado de información integrado en el propio sistema operativo y, lo que es más importante, en el sistema de archivos. A este sistema de encriptación se le conoce por el nombre de EFS – Encrypted File System.

Este sistema de encriptado de archivos está totalmente integrado con la infraestructura de clave pública (PKI) que viene con Windows 2000. Esto quiere decir que utiliza las rutinas y funciones del API del sistema operativo como cualquier otra aplicación externa. La diferencia esencial es que esas llamadas se hacen desde el propio sistema dando una transparencia total al usuario.

Veamos como funciona el encriptado de un archivo.

Cuando solicitamos encriptar un archivo (se verá más adelante), lo primero que hace EFS es asignar una clave privada y una clave pública a nuestra cuenta. Si nuestra cuenta ya tiene un certificado asociado se usará su clave pública, si no es así, EFS generará un par de claves nuevas para su uso en la encriptación del archivo. Realmente genera un certificado X509 (ya se verá su estructura cuando se hable de SSL) y utilizará la clave pública de este certificado.

Realmente el encriptado que utiliza EFS no es de clave pública, sino de clave simétrica. Los ficheros son encriptados utilizando el DESX, una variante del DES estándar. Los motivos por los que se usa un cifrado simétrico son dos. El primero es que el encriptado usando algoritmos simétricos en mucho más rápido. El segundo motivo es la necesidad de compartir ficheros entre varios usuarios. Si dichos ficheros estuvieran encriptados con la clave pública de un usuario, tan solo él podría descifrarlo con su clave privada o dar a conocer a todo el mundo su clave privada (absurdo).

El mecanismo que se sigue es el siguiente. Una vez que se tiene la clave pública del usuario que desea encriptar la información, el sistema EFS genera un número aleatorio que denominaremos FEK ( File Encryption Key). Esta será la clave usada en el algoritmo DESX para encriptar el fichero.

Posteriormente se guardan lo que se denomina Campos de desencriptación de datos. Cada entrada de estas estructuras corresponderá a un usuario que tiene acceso al fichero. De cada usuario se guarda su SID y alguna información del Certificado.

Aunque el sistema está preparado para la compartición de archivos encriptados mediante el uso del anillo de entradas DDF, en las primeras versiones no se acepta esta posibilidad.

 


Como se pude observar cada entrada DDF guarda información del Certificado del usuario y del SID del mismo. La información del Certificado la guarda para en el proceso de desencriptación poder solicitar la clave privada del usuario. La firma del certificado (hash) se guarda para saber con que certificado y par de claves asociado, se encriptó el fichero.

También se guardan las entradas DRF (Data Recovery Field). Estas entradas tienen la misma estructura que las anteriores. Su objetivo es que si un usuario se despide o se produce cualquier error al manejar sus certificados sea posible recuperar los archivos encriptados por él. Para ello existen lo que se denomina Agentes de recuperación. Son certificados de usuarios que pueden desencriptar los ficheros.

Para establecer un Agente de recuperación se debe definir en el Directorio Activo, en las Directivas de grupo. Se podrá tener por dominio o local. Por defecto en un controlador de dominio el Agente de recuperación es el Administrador del dominio.

Se pueden tener varios agentes de recuperación y así, se insertarán tantas entradas DRF como Agentes existan y estén activos.

 


El proceso de desencriptado es totalmente transparente al usuario. En definitiva, EFS lo que hace es comprobar que el SID del usuario que accede al fichero está en las entradas DDF. Si es así, comprueba que certificado se usó y solicita la clave privada asociada a dicho certificado para desencriptar la FEK. Una vez, desencriptada la FEK tan solo debe descifrar el fichero mediante DESX y la FEK obtenida.

El proceso de recuperación funciona igual que el de desencriptado, con la diferencia que desencripta la FEK con alguna entrada de las DRFs. Este proceso se muestra en la figura de la página siguiente:

 


Para encriptar un archivo debemos hacerlo desde el Explorador de Windows o desde una utilidad del modo comandos denominada cipher. Desde el Explorador debemos pulsar el botón de Avanzado de las propiedades del archivo y nos saldrá la siguiente ventana:


Al decir OK el sistema encriptará el archivo. Si quitamos el atributo el archivo se desencriptará, obviamente si tenemos permiso para ello.

Desde la línea de comandos un archivo o directorio se encripta usando la siguiente instrucción:

D:\>cipher /e /s:"D:\Basura"

Los parámetros posibles son:


Veamos ahora que es lo que pasa cuando se mueve o copia un fichero encriptado. Primero veamos que pasa cuando se copia un fichero o directorio encriptado desde un equipo Windows 2000 a:

  • Otro sitio NTFS Windows 2000 en el mismo ordenador. Se mantiene encriptado y el proceso es transparente al usuario.
  • Sitio FAT en el mismo ordenador. El fichero se desencripta y es transparente al usuario.
  • Otro equipo con NTFS Windows 2000. Se mantiene encriptado siempre y cuando el ordenador remoto admita encriptación de archivos remota.

Veamos que pasa ahora cuando lo movemos o renombramos a

  • Mismo volumen que el original. Permanece encriptado y es transparente al usuarios.
  • A otro volumen. Como es una copia, se debe aplicar lo visto para las copias.

Por último decir que un fichero o directorio encriptado puede ser borrado por otro usuario siempre y cuando tenga el permiso para hacerlo. Esto es muy importante y conviene recordar que no es lo mismo los permisos NTFS que el encriptado de archivos.

Windows NT 4.0 tiene un conjunto de características de seguridad que le hacen un sistema operativo seguro. No obstante, la administración de dicha seguridad requería la utilización de diferentes programas y había que configurar distintas opciones en varios sitios.

Para hacer la labor de configurar un sistema seguro más sencilla, se ha incluido en Windows 2000 (era un componente en NT 4.0) lo que se denomina Herramientas de configuración de seguridad. Utilizando la tecnología de las MMC (Microsoft Management Console – Consolas de Administración Microsoft) permite al administrador configurar la seguridad del sistema desde un único sitio y de forma sencilla e intuitiva.

Los objetivos de estas herramientas de seguridad son:

  • Configurar la seguridad en uno o más sistemas Windows 2000.
  • Realizar análisis de la seguridad en uno o más sistemas Windows 2000.
  • Completar estas tareas desde una única plataforma integrada.

Estas herramientas permiten configurar al detalle todos los aspectos de la seguridad y está clasificado en los siguientes puntos:

  • Política de cuentas. Permite especificar toda la política de cuentas, longitud de las contraseñas, validez de los tickets Kerberos, etc.
  • Política local. Derechos de usuario, auditoría local y opciones de seguridad del sistema.
  • Grupos restringidos. Permite administrar los miembros pertenecientes a determinados grupos sensibles a la seguridad.
  • Servicios del sistema. Permite configurar los servicios del sistema.
  • Compartición de ficheros o directorios. Configura determinados aspectos de la seguridad del sistema de archivos NTFS y del servicio Redirector.
  • Registro. Permite especificar los permisos a las claves del registro.
  • Sistema de archivos. Permite configurar la seguridad del sistema de archivos de una forma cómoda.

Las herramientas de seguridad se componen de seis elementos interconectados unos con otros:

  • Servicio de configuración de seguridad. Es el núcleo de las herramientas de configuración de seguridad y es responsable de toda la funcionalidad de configuración y análisis de las herramientas.
  • Instalación de seguridad. En la instalación de cualquier Windows 2000 se crea una base de datos de seguridad con los valores por defecto que se denomina Política del equipo local.
  • Editor de configuraciones de seguridad. Mediante el podemos crear bases de datos de seguridad y tenerlas almacenadas para aplicarlas cuando se desee a un equipo u a otro. Asimismo, trae consigo una serie de plantillas estándar.
  • Administrador de configuración de seguridad. Es la herramienta que nos permite configurar la seguridad del sistema y analizarla.
  • Extensión de seguridad para la Política de grupo. Es la herramienta que permite definir las directivas del sistema o Política de grupo existe una extensión para la seguridad.
  • Herramienta de comando: Secedit.exe. Comando para ejecutar tareas de seguridad desde la línea de comandos.


Primero veamos los procedimientos para asegurar nuestro servidor y posteriormente veremos cada una de las opciones con algo más de detalle.

Las posibles tareas que se pueden realizar con este conjunto de herramientas son las siguientes:

Definir configuraciones de seguridad

Mediante el editor de configuraciones de seguridad podemos crear distintas configuraciones donde se almacenarán todos los parámetros de seguridad. El Editor trae una serie de configuraciones estándar que pueden usarse si así se desea. Dichas configuraciones se almacenan en ficheros de texto tipo .inf con lo que pueden ser modificadas con cualquier editor de texto. Esto último no es recomendable para prevenir la alteración del formato del fichero que pueda producir errores.

Para definir las distintas configuraciones está el propio Editor de configuraciones de seguridad que es una Consola de Administración con la misma interfaz que todas como puede observarse en la figura de la página siguiente.

 


Configurar el sistema

Para configurar un sistema el conjunto de herramientas de seguridad nos permite hacerlo desde tres sitios diferentes:

  • Extensión de seguridad de la Política de Grupo. Esta opción es recomendada para configurar sistemas basados en el Directorio Activo. La Política de grupo puede definirse dentro del Directorio Activo y así se aplicará donde se desee, dominio, unidad organizativa u otro tipo de contenedor. Es la última política que se aplica lo que hará que prevalezca sobre el resto.
  • Administrador de la configuración de seguridad. Esta recomendada para configurar sistemas que no están basados en el Directorio Activo. Mediante esta herramienta podemos importar ficheros de plantilla y aplicarlos ala configuración de nuestro equipo. Así, podremos aplicar diferentes configuraciones que el sistema irá mezclando, y no borrando, una sobre otra al aplicar el comando Import. Una vez que tengamos la configuración que deseamos, podemos dar a la opción Configurar Ahora para aplicarla.

 




  • Línea de comandos secedit.exe. Está recomendado cuando no se tiene Directorio Activo y se desea realizar configuraciones de seguridad frecuentes y en multiples equipos.

Permite realizar diferentes tareas al introducirle parámetros:

secedit {/analyze | /configure | /generate | /refreshPolicy | /validate}

  • Análisis del sistema - /analyze
  • Configurar el sistema - /configure
  • Genera una configuración desde una base de datos - /generate
  • Refresca la configuración de seguridad - /refreshPolicy
  • Valida el formato de una plantilla del Editor de Configuraciones - /validate


Analizar la seguridad del sistema

Para analizar la seguridad del sistema se utiliza el Administrador de configuraciones de seguridad o desde la línea de comandos. El análisis consiste en revisar los parámetros reales de la maquina y compararlos con aquellos definidos en la base de datos. El resultado nos lo da el sistema en el Administrador y nos resalta aquellos parámetros que no coinciden.

Una vez que el sistema ha finalizado el análisis nos muestra la configuración indicándonos para cada parámetro la configuración de la base de datos y el parámetro efectivo. Nos lo resaltará mediante iconos. Nos permitirá modificar los valores que deseemos y corregir lo que sea necesario Configurando el sistema de nuevo.



 

Kerberos es un nombre de la mitología griega y era el perro de tres cabezas que guardaba la entrada a las profundidades. También es el nombre usado para el RFC1510 que define un sistema de autenticación de usuarios.
Windows 2000 adopta este estándar para la autenticación de usuarios en el acceso a los recursos de la red.
Windows 2000 soporta dos opciones para la autenticación de usuarios en la red:

  • NTLM – Protocolo usado por la versión NT 4.0 y que lo soporta por compatibilidad con dichos sistemas y además lo usa para la autenticación local.
  • Kerberos Versión 5. Este es el protocolo de autenticación por defecto.

Entre las ventajas añadidas del protocolo Kerberos sobre el NTLM podemos destacar que es mucho más rápido ya que una vez que un cliente se ha autenticado con un determinado servidor no requiere en ningún momento conectarse con el controlador del dominio. Otra ventaja es que permite la autenticación mutua, esto es, cliente y servidor tienen la garantía de que el otro extremo es quien dice ser.

El protocolo está pensado para funcionar en una red absolutamente pública, es decir, se considera que todos los elementos intervinientes son inseguros. Se duda de todo, de la autenticidad del servidor y del cliente y que en el trayecto alguien puede estar escuchando y capturando paquetes que puedan revelar información.

El sistema se basa en el concepto de que para autenticar la identidad mutua entre dos personas deben conocer un secreto entre ambas. Si ambas personas conocen un secreto y nadie más lo conoce, les resultará muy fácil autenticarse una a la otra diciendo simplemente el secreto.

Hasta aquí todo va muy bien. El problema surge en como notificar el secreto a la otra parte sin darlo a conocer al resto de posibles atacantes. La solución vuelve a ser sencilla, se encripta con una clave. Al encriptarlo con una clave el secreto se manda de un extremo a otro y la autenticación se produce al encriptarla y si el otro es capaz de desencriptarla podrá verificarla. Para este proceso de encriptado es necesario usar un sistema de clave simétrica para que ambos interlocutores puedan encriptar y desencriptar con la misma clave. Esto hace que el secreto compartido pase a ser la clave y al mismo tiempo el envío de dicho secreto es confidencial.

Según lo dicho hasta ahora si Alice quiere enviar un mensaje a Bob añadirá al mensaje un bloque cifrado con la clave secreta que comparten ambos. Cuando Bob lee el mensaje debe verificar que viene efectivamente de Alice. Para ello descifra el bloque cifrado con la clave secreta que comparte con Alice. Si logra descifrarlo tendrá la garantía que el remitente del mensaje es Alice. Ahora quedaría por saber como Alice sabe que el que recibió el mensaje es Bob. Para ello, Bob puede cifrar con la clave compartida parte del bloque encriptado por Alice. Si cifrara todo, podría ser alguien que ha capturado el bloque completo y lo ha reenviado. Solo cifra, con la clave secreta compartida, parte del bloque. Cuando este nuevo bloque cifrado llega a Alice lo desencripta con la clave compartida y puede comprobar que la parte cifrada corresponde a lo que él mando inicialmente.

En esto consiste el protocolo Kerberos. Aunque todavía faltan un par de cabos por atar. Entre la información que contiene el bloque cifrado que Alice manda inicialmente a Bob, va la hora del reloj de su ordenador (se supondrá que los equipos tienen los relojes sincronizados). Bob al descifrar el mensaje comprueba que la hora es la correcta y reenvía dicha hora cifrada de nuevo a Alice para autenticarse.

El problema surge porque los relojes no estén sincronizados. Para ello el protocolo mantiene un valor que indica el error posible. Cuando Bob descifra el bloque cifrado por Alice comprueba que la hora esta en ese intervalo y además, como guarda una lista de las sesiones anteriores y sus tiempos, podrá comprobar que el tiempo enviado por Alice es superior al último enviado. Si es inferior o igual la conexión será rechazada.

Al bloque de información cifrada que Alice manda a Bob y viceversa se le denomina Autenticador.




Nos falta por resolver como Alice y Bob se ponen de acuerdo para la clave secreta a compartir. Es importante saber que dicha clave deberá ser única entre cada dos entidades, esto es, Alice deberá usar otra clave para hablar con Jonh y Bob también.

El nombre de Kerberos define un poco la solución. Como se ha dicho era un perro de tres cabezas, como es este protocolo en el que intervienen siempre tres elementos: un cliente, un servidor y una tercera entidad de confianza que media entre ambos. esta entidad intermediaria es conocida como KDC (Key Distribution Center).

El Servicio KDC se ejecuta en un servidor seguro y mantiene una base de datos con las credenciales de toso los participantes en lo que se denomina su Reino (realm) o lo que en Windows 2000 es equivalente, en su dominio. Junto con información relativa a cada participante se guarda lo que se denomina Clave de larga duración que comparte con cada participante y solo el KDC y el participante conocen. Esta clave se deriva de la contraseña de usuario.

Cuando el cliente quiere hablar con el servidor envía una petición al KDC. Este distribuye una clave secreta para ambos, denominada clave de sesión. De esta forma se puede establecer la comunicación como se había explicado antes.

 


Esto es solo la teoría. En realidad no se hace así porque esto supondría un gasto de recursos excesivo por parte de los servidores al tener que almacenar todas las claves de sesiones de todos los clientes que deseen acceder a ellos.

Se hace de otra manera más eficaz. Lo que en realidad se hace es que cuando el cliente quiere contactar con un servidor realiza una petición al KDC. Este en vez de enviar la clave de sesión a cada interlocutor, envía la clave de sesión al cliente. Además, de la clave de sesión le envía lo que se denomina ticket de sesión. Este ticket contiene información sobre el propio cliente y la copia de la clave de sesión correspondiente al servidor.

Esta información se envía encriptada. LA clave de sesión del cliente se encripta con la clave de sesión entre el KDC y el cliente (siempre existe). El ticket de sesión se encripta con la clave de sesión existente entre el servidor y el KDC. Todo esto lo guarda el cliente.

 


Cuando el cliente recibe la respuesta completa del KDC puede iniciar la conversación con el servidor. Para ello extrae desencriptando con su clave de sesión compartida con el KDC la nueva clave de sesión para las conversaciones con el servidor en cuestión.
Posteriormente el cliente envía el ticket recibo por el KDC (recordemos que está encriptado con la clave de sesión compartida entre el servidor y el KDC) y envía el autenticador encriptado con la clave de sesión recibida del KDC.

Cuando el servidor recibe las credenciales del cliente desencripta el ticket con su clave de sesión compartida con el KDC. Una vez desencriptado extrae la clave de sesión para la conversación con el cliente. Con ella desencripta el autenticador enviado por el cliente y responde con el tiempo recibido otra vez encriptado con la clave de sesión.

 

Cuando el servidor no necesita la clave de sesión la desecha. El cliente podrá reutilizar la clave de sesión cuantas veces quiera. Tienen un periodo de validez que normalmente se estipula en 8 horas y cuando el usuario sale del dominio se desechan todas sus claves de sesión.

Solo queda ver como tanto el servidor como el cliente comparten sus respectivas claves de sesión con el KDC. Cuando un usuario por vez primera entra en la red calcula (su servicio Kerberos cliente) su clave de larga duración (Windows 2000 usa el sistema DES-CBC MD5). Una vez calculada dicha clave solicita un ticket de sesión y una clave de sesión para sus conversaciones con el propio KDC.

Como para cualquier petición el KDC le responde con el envío de una clave de sesión y de un ticket de sesión. A este ticket de sesión se le llama TGT (ticket-granting ticket). Como cualquier ticket de sesión contendrá la clave de sesión para la conversación entre ambos y estará encriptado con la clave de larga duración del KDC. Al mismo tiempo el cliente recibirá la clave de sesión para las conversaciones con el KDC encriptada con su clave de larga duración. A esta clave de sesión se la denomina clave de sesión de logon debido a que se desecha cuando el usuario sale de la red.

Realmente, Kerberos está compuesto de tres subprotocolos:

  • AS Exchange – Authetication Service Exchange – Es el encargado de autenticar a los usuarios y servicios en el dominio.
  • TGS Exchange – Ticket Granting Service – Es el encargado de generar las claves y tickets de sesión.
  • CS Exchange – Client/Server Exchange – Es el encargado de presentar el ticket de sesión a un servidor por parte de un cliente.


AS Exchange – Servicio de Autenticación

Cuando Alice entra en la red teclea su nombre y contraseña. Su servicio Kerberos cliente generará la clave de larga duración para usarla en la solicitud de claves de sesión.

 



Una vez generada, envía una petición KRB_AS_REQ al KDC. Una parte del mensaje identifica al usuario, Alice y al nombre del servicio para el cual desea una clave de sesión, en este caso el servicio TGS Exchange. La segunda parte del mensaje se utiliza para probar que Alice conoce su clave ( es decir que es Alice). Normalmente es el tiempo del ordenador encriptado con la clave de larga duración de Alice.. A este campo se le llama Datos de preAutenticación.

Cuando el KDC recibe la petición comprueba cual es la clave de Alice en su base de datos y con ella desencripta el campo de preAutenticación. Si el tiempo que se encuentra entra en los límites establecidos el servidor establece que el mensaje proviene de Alice.

El KDC entonces genera la clave de sesión o clave de sesión de entrada para las futuras conversaciones con Alice y también generará el ticket encriptado con su propia contraseña para dichas conversaciones.


TGS Exchange – Servicio de concesión de tickets



Cuando Alice necesita conectarse con el servidor Bob envía un mensaje de petición de ticket al KDC (KRB_TGS_REQ). Este mensaje incluye el nombre del usuario, un autenticador encriptado con la clave de sesión de entrada del usuario, el TGT obtenido del KDC para las conversaciones entre ambos y el servicio al que Alice se desea conectar.

Cuando el KDC lo recibe, desencripta el TGT con su propia clave y extrae la clave de sesión para hablar con Alice. Con esta clave desencripta el autenticador y lo evalúa. Si el autenticador es correcto, el KDC genera la clave de sesión para las conversaciones entre Bob y Alice.

Una copia de esta clave la encripta con la clave de sesión de logon de Alice. Otra copia la inserta en un ticket junto con información relativa a Alice y encripta todo el ticket con la clave de larga duración de Bob. Todo ello se lo envía a Alice en un mensaje (KRB_TGS_REP).


CS Exchange – Cliente/Servidor

Cuando Alice desea conectar con Bob le envía un mensaje de petición de conexión (KBR_AP_REQ). El mensaje contiene un autenticador encriptado con la clave de sesión para las conversaciones entre ambos, el ticket obtenido del KDC para estas conversaciones y un indicador de si el cliente (Alice) quiere autenticación mutua o no.

El servicio Bob recibe el mensaje y desencripta el ticket usando su clave de larga duración. Al desencriptarlo extrae la clave de sesión a usar con Alice. Con dicha clave desencripta el autenticador de Alice y lo evalúa. Si la evaluación sale con éxito, Bob comprueba si el indicador de autenticación mutua esta puesto. Si es así, enviará el tiempo introducido en el autenticador de Alice encriptado con la clave de sesión a Alice.

El protocolo Kerberos en Windows 2000 se configura usando la Política de grupo para el dominio y sus parámetros son:

 


  • Tiempo de vida máximo del ticket de usuario – El ticket de usuario es el TGT que el KDC concede a cada usuario. el valor por defecto son 10 horas.
  • Tiempo de vida máximo que un ticket de usuario puede ser renovado - 7 días.
  • Tiempo de vida máximo del ticket de servicio. El ticket de servicio es el ticket de sesión. Debe ser superior a 10 minutos y menor que el valor estipulado para el tiempo de vida máximo del TGT. El valor por defecto es 10 horas.
  • Tolerancia de sincronización de relojes de los equipos. En minutos y por defecto 5.
  • Comprobar las restricciones de acceso del usuario. Obliga a que cada vez que un usuario pide un ticket para acceder a un determinado servidor, el KDC comprueba en dicho servidor si el usuario tiene derechos de acceso local o por red. Esto ralentiza las operaciones y por defecto esta puesto a Si.
  • IPSec

IPSec es un estándar para incluir funciones de seguridad en el nivel IP. Esto permitirá usar la seguridad por cualquier nivel superior de aplicación sin preocuparse de nada. Existen varios documentos RFC que definen este estándar:

  • rfc2401 Security Architecture for the Internet Protocol.
  • rfc2402 IP Authentication Header.
  • rfc2403 The Use of HMAC-MD5-96 within ESP and AH.
  • rfc2404 The Use of HMAC-SHA-1-96 within ESP and AH.
  • rfc2405 The ESP DES-CBC Cipher Algorithm With Explicit IV.
  • rfc2406 IP Encapsulating Security Payload (ESP).
  • rfc2407 The Internet IP Security Domain of Interpretation for ISAKMP.
  • rfc2408 Internet Security Association and Key Management Protocol (ISAKMP).
  • rfc2409 The Internet Key Exchange (IKE).
  • rfc2410 The NULL Encryption Algorithm and Its Use With IPsec.
  • rfc2411 IP Security Document Roadmap.
  • rfc2412 The OAKLEY Key Determination Protocol.

Es obligatorio que IPv6 incluya estas características y opcional para IPv4 (IPSec). En ambos casos, las características de seguridad se implantan como cabeceras de ampliación que siguen a la cabecera IP principal. La cabecera de ampliación para autenticación se conoce como Cabecera de Autenticación (AH – "Authentication Header") y la correspondiente para seguridad como Cabecera de Encapsulado de seguridad de la Carga Útil (ESP – "Encapsulating Security Payload), o lo que es lo mismo, encapsulado de los datos.

Como en toda comunicación encriptada, autenticada o donde se verifique la integridad de los datos, ambos extremos de la comunicación deben usar los mismos protocolos o mecanismos para implantar estas características. Esto hace posible la transmisión y recepción de la información. Ahora, podemos pensar, que cada sentido de la comunicación entre dos extremos es diferente. Veamos un ejemplo para entenderlo mejor.

Higinio envía una carta de amor a su mujer Ana y no se fía de la profesionalidad del servicio de correos. Por este motivo, pone cada palabra sustituyendo cada letra por la inmediatamente siguiente en el alfabeto. Es decir, aplica un algoritmo de encriptado que en este caso no tiene clave. En destino, Ana leerá la carta si sabe el algoritmo de encriptado usado por su marido, sino sabe que algoritmo ha usado no podrá descifrarla.

Por otro lado, Ana desea contestar a Higinio pero sospecha que el algoritmo usado por Higinio es fácilmente descifrable. Esto le lleva a usar otro algoritmo. Para ello suma a cada letra un número (clave) y el resultado será otra letra que sustituirá a la original en el texto cifrado. Si Higinio conoce el mecanismo/protocolo usado por Ana (suma de un número) y conoce la clave (número aplicado) podrá leer el contenido de las cartas que le lleguen procedentes de su mujer.

A partir de este momento ambos podrán intercambiar cartas de amor y/o otra información confidencial confidencialmente y, además, ambos sentidos de la comunicación utilizan características de seguridad diferentes.

En el IPSec a estas características de seguridad se le llama Asociación de seguridad.

Una Asociación de seguridad es una relación en un solo sentido entre un emisor y un receptor. Si se necesita una relación paritaria, para un intercambio seguro en dos sentidos, entonces se requieren dos asociaciones de seguridad. No es ni más ni menos que identificar la forma y fondo de cómo realizar la seguridad (autenticación y/o privacidad) entre dos extremos. En IPSec se traduce en un campo denominado SPI (Security Parameter Index – Indice de parámetro de seguridad).

Cuando a un extremo llega un paquete IPSec con cabeceras de seguridad, el receptor debe saber como obtener la información en claro. Para ello la cabecera lleva el SPI (Security Parameter Index) que le servirá para identificar la asociación de seguridad para descifrar la comunicación. En definitiva, cualquier implantación de IPSec debe proveer un mecanismo para almacenar la tabla (cuyo índice serán los SPI) con las asociaciones de seguridad que se estén usando. Así, una asociación de seguridad vendrá unívocamente determinada por la dirección destino y el SPI que es un valor de 32 bits.

Como la especificación IPSec permite que las Asociaciones de seguridad puedan hacerse por host o por usuario. Aparece otro concepto que denominaremos Política de Seguridad. Mediante ella se establecerán las posibilidades de uso de cada Asociación de seguridad por parte de cada usuario o por parte de un host. Así, será tarea de dicha política especificar que Asociaciones de seguridad utiliza cada usuario.

Una asociación de seguridad se compone fundamentalmente de estos elementos:

  • Algoritmo de autenticación y el modo del algoritmo usado por la IP AH junto con las claves necesarias para dicho algoritmo.
  • Algoritmo y modo para la encriptación para la IP ESP junto con sus claves.
  • Tamaño y ausencia/presencia de la sincronización del algoritmo de encriptación para IP ESP si es necesario por el algoritmo usado.
  • Algoritmo de autenticación usado por IP ESP si existe junto con sus claves.
  • Tiempos de vida de las claves y de la propia asociación de seguridad.
  • Dirección origen de la asociación de seguridad

Una Asociación de seguridad podría ser la siguiente:

Parámetro de seguridad

Valor

SPI (Security Parameter Index)

4154

Algoritmo AH

MD5

Modo del algoritmo AH

Con clave

Método AH

Especificación RFC 1828

Clave AH

Clave de 128 bits para MD5

Modo AH

Datagrama completo

Algoritmo ESP

DES

Modo del algoritmo ESP

CBC

MétodoESP

Especificación RFC 1829

Clave ESP

Clave de 56-bit para el DES

Modo ESP

Transporte

Tamaño del vector de inicio ESP

64

Tiempo de vida

valor de tiempo


Una política de seguridad sería:

Parámetro de seguridad

Valor

SPI (Security Parameter Index)

4154

Dirección IP destino

dirección IPv6 128 bits

Dirección IP origen

dirección IPv6 128 bits

Protocolo

TCP

Puerto destino

80

Puerto origen

3456

Identificativo usuario

SID del usuario


Falta por aclarar como ambos extremos pueden mantener las tablas con las asociaciones de seguridad puestas de forma correcta. El protocolo no entra en este asunto y no especifica nada al respecto de la administración de claves y asociaciones de seguridad. Lo único que define es que se debe obligatoriamente soportar la administración manual y los protocolos por defecto. Obviamente, el protocolo esta abierto al uso de algoritmos propietarios en una organización.

El intercambio de claves y el negociado de la Asociación de seguridad se hace mediante los protocolos ISAKMP/Oakley e IKE. Que veremos tras analizar el IPSec en si.

Autenticación IPSec – Opción AH

La cabecera de autenticación proporciona un medio para garantizar la integridad de los datos y la autenticación de los paquetes IP. La cabecera de autenticación consta de los siguientes campos:

  • Cabecera siguiente (8 bits): identifica la cabecera que viene a continuación de ésta.
  • Longitud (8 bits): longitud del campo de datos de autenticación en palabras de 32 bits.
  • Reservado (16 bits): para usos futuros.
  • Indice de parámetros de seguridad (32 bits): identifica a una asociación de seguridad.
  • Datos de autenticación (variable): número entero de palabras de 32 bits con los datos de autenticación

El contenido del campo de datos de autenticación dependerá del algoritmo usado al efecto. En cualquier caso, los datos de autenticación se calculan utilizando el paquete IP entero, poniendo a cero todos aquellos campos susceptibles de cambio en el transito.

Por defecto, el algoritmo utilizado es el MD5. Se aplica sobre el paquete IP junto con una clave secreta y después se inserta en el paquete IP. En el destino, se llevan a cabo los mismos cálculos sobre el paquete IP con la clave secreta, obtenida del vinculo del SPI con una asociación de seguridad. Así, se proporciona integridad y autenticación.


Encapsulado de seguridad de la carga útil – Cabecera ESP

El uso de esta cabecera proporciona privacidad e integridad de los datos de los paquetes IP. Dependiendo de los requisitos del usuario, este mecanismo se puede utilizar para encriptar bien el segmento de la capa de transporte (por ejemplo, TCP, UDP, ICMP), conocido como modo de transporte ESP o bien el paquete IP completo, conocido como túnel ESP.

La cabecera ESP comienza con el valor SPI de 32 bits que identifica la asociación de seguridad. El resto de la cabecera puede contener parámetros del algoritmo de cifrado que se esta empleando. Parte de esta cabecera será transmitida en claro y parte cifrada.

Modo transporte ESP

El modo transporte ESP se utiliza para encriptar datos transportados por IP. Normalmente, estos datos son un segmento de la capa de transporte, como segmentos TCP o UDP, que a su vez contienen datos de la capa de aplicación. El funcionamiento es el siguiente:

En el origen, el bloque de datos que consta de la parte final (la que va encriptada) de la cabecera ESP más el segmento entero de la capa de transporte, se encriptan y se reemplaza el texto original por el encriptado.

El paquete es entonces encaminado al destino. Los nodos intermedios no necesitan saber el contenido encriptado.

El nodo destino examina y procesa la cabecera IP más cualquier cabecera de adicional. Obtiene el SPI de la cabecera ESP y junto con la dirección destino determina la asociación de seguridad con la que desencriptar la información.

Modo túnel ESP

Este modo se utiliza para encriptar el paquete IP completo. Para este modo, el ESP se incorpora como prefijo al paquete y después, el paquete más una parte final de la cabecera, se encripta. Mediante este método es imposible realizar un análisis del tráfico.

Como los datos de encaminamiento (dirección destino y opciones diversas) van encriptados es imposible transmitir el paquete tal cual. Para ello se encapsula en otro paquete IP con la información necesaria para realizar el encaminamiento pero no con información que sirva para analizar el tráfico.

El algoritmo por defecto y obligatorio para cualquier implantación de las cabeceras ESP es el DES-CBC.
Es posible combinar ambos tipos de cabeceras ESP junto con la cabecera de autenticación AH.


ISAKMP/Oakley

Antes de que los datos sean intercambiados de forma segura se debe iniciar una negociación entre las partes para determinar la Asociación de seguridad que van a usar o, lo que es lo mismo, los parámetros de seguridad que se van a usar.

Para esta negociación se utiliza el protocolo ISAKMP/Oakley. El ISAKMP centraliza la administración de las Asociaciones de seguridad y el Oakley genera y administra las claves usadas para proteger la información.

El intercambio de claves y su generación se hacen usando el algoritmo Diffie-Hellman. Este algoritmo define como generar claves secretas entre dos o más entidades de forma segura.

ISAKMP/Oakley funciona en dos fases diferentes. La primera fase se dedica a establecer un canal seguro entre ambos interlocutores, generando una asociación de seguridad denominada ISAKMP SA. En definitiva son los parámetros de seguridad que se van a usar en este protocolo.

Una vez establecida esta fase, se negocian las Asociaciones de seguridad necesarias, en la segunda fase.

En la primera fase se producen los pasos siguientes:

  1. Negociación de la política.

Son cuatro parámetros obligatorios que son parte indiscutible de la ISAKMP SA:

  • Algoritmo de encriptado (DES-CBC, 3DES, 40-bit DES)
  • Función resumen (MD5 o SHA)
  • Método de autenticación (Certificado, clave compartida o Kerberos)
  • Grupo Diffie-Hellman para la generación de claves.
    2.  Intercambio DH.

    Se realiza el intercambio de claves según el algoritmo DH. Una vez realizado este intercambio ambas partes generaran una clave que tan solo ellos conocen y que usaran para el encriptado de la información, incluido el siguiente paso de esta primera fase.

     3. Autenticación.

Se usa la clave generada en el paso anterior junto con los algoritmos y métodos especificados en la primera fase para autenticar a cada extremo de la comunicación.

El iniciador ISAKMP presenta una oferta de Asociación de seguridad a su interlocutor. El que contesta puede aceptar la propuesta tal y como está o ofrecer una respuesta con alternativas.

En la segunda fase se negocia la Asociación de seguridad necesaria para realizar la comunicación. Y sus pasos son:

  1. Negociación de la política

Debe definir lo siguiente:

  • Protocolo a usar, AH o ESP
  • Función resumen para integridad y autenticación (MD5 o SHA)
  • Algoritmo de cifrado (3DES, 40-bit DES y DES-CBC)

Llegan a un acuerdo sobre lo que se va a usar y se establecen dos Asociaciones de seguridad, una para cada sentido.

    2. Refresco de las claves de sesión.

    Se refrescan las claves si es necesario

    3. La Asociación de seguridad y las claves se pasa al driver IPSec junto con el SPI.

Todo lo acontecido en esta fase se encripta usando la ISAKMP SA negociada en la primera fase. Se encripta toda la carga útil de los paquetes ISAKMP excepto su cabecera.

Veamos ahora como se implanta todo esto dentro de Windows 2000.
La política de IPSec se define o en la Política de seguridad local o en la Política de grupo.

 


Para comunicarse con un ordenador remoto usando una política de seguridad IPSec podemos optar por tres configuraciones por defecto que trae Windows 2000:

  • Cliente (Solo respuesta). Es para ordenadores que normalmente no trabajaran con IPSec. Responderá a peticiones de comunicación segura pero nunca iniciará la negociación.
  • Servidor (Seguridad solicitada). Para ordenadores que la mayor parte de su tiempo deben usar IPSec. Permite a clientes que no usen IPSec comunicarse con el, pero el siempre inicia sus comunicaciones de forma segura.
  • Servidor (Seguridad requerida). Siempre usa IPSec.

Para determinar cuando se aplica la seguridad a los paquetes que se envían o reciben, existen el filtrado de paquetes y las reglas.

Una regla define como y cuando IPSec es aplicada y contiene una lista de filtros IP y un conjunto de acciones de seguridad a realizar en el caso de que un paquete IP coincida con la lista de filtrado:

Acciones de filtrado. Define si se aplica una determinada política IPSec basándose en en la dirección IP origen, destino y tipo de tráfico IP.

Cada lista de filtrado IP contiene un alista de filtros. Cada filtro describe un subconjunto de tráfico de red a asegurar, tanto como tráfico de entrada como de salida.:

  • Filtros de entrada - Se aplican a los paquetes que entran.
  • Filtros de salida – Se aplican al tráfico de salida.

 



Cada uno de los filtros se deberá configurar en cada extremo de una comunicación. Cada filtro tiene los siguientes parámetros:

  • Dirección origen y destino del paquete IP.
  • Protocolo.
  • Puerto origen y destino para TCP y UDP.

Las Acciones de filtrado lo que definen son las características que se negocian en la segunda fase del protocolo ISAKMP que hemos explicado. Puede definir, o que no se permite el acceso a ningún paquete, o que se permite todo o que se negocia la seguridad mediante los parámetros disponibles o que configuremos:

 


Resumiendo, podemos definir que paquetes debemos asegurar mediante IPSec y que hacer con dichos paquetes. Dentro de una política podemos también definir el tipo de conexión (red de área local, acceso remoto o todas las conexiones), el método de autenticación que podrá ser por Certificados, Kerberos o por clave compartida.

 


Atrás   Índice