Remote Desktop Services ( RDS ), conocido como Terminal Services en Windows Server 2008 y versiones anteriores, [1] es uno de los componentes de Microsoft Windows que permiten a un usuario iniciar y controlar una sesión interactiva [2] en un equipo remoto o máquina virtual a través de una conexión de red . RDS se lanzó por primera vez en 1998 como Terminal Server en Windows NT 4.0 Terminal Server Edition , una edición independiente de Windows NT 4.0 Server que permitía a los usuarios iniciar sesión de forma remota. A partir de Windows 2000 , se integró bajo el nombre de Terminal Services como un componente opcional en las ediciones de servidor de la familia de sistemas operativos Windows NT , [3] recibiendo actualizaciones y mejoras con cada versión de Windows. [4] Los Servicios de Terminal luego fueron renombrados a Servicios de Escritorio Remoto con Windows Server 2008 R2 [5] en 2009.
RDS es la implementación de la arquitectura de cliente ligero de Microsoft , donde el software de Windows y todo el escritorio de la computadora que ejecuta RDS se hacen accesibles a cualquier máquina cliente remota que admita el Protocolo de escritorio remoto (RDP). Las interfaces de usuario se muestran desde el servidor al sistema cliente y la entrada del sistema cliente se transmite al servidor, donde se lleva a cabo la ejecución del software. [6] Esto contrasta con los sistemas de transmisión de aplicaciones , como Microsoft App-V , en los que los programas de computadora se transmiten al cliente a pedido y se ejecutan en la máquina cliente.
RemoteFX se agregó a RDS como parte de Windows Server 2008 R2 Service Pack 1.
Windows incluye cuatro componentes de cliente que utilizan RDS:
Las dos primeras son utilidades individuales que permiten a un usuario operar una sesión interactiva en una computadora remota a través de la red. En caso de Asistencia remota, el usuario remoto necesita recibir una invitación y el control es cooperativo. Sin embargo, en caso de RDC, el usuario remoto abre una nueva sesión en la computadora remota y tiene todos los poderes otorgados por los derechos y restricciones de su cuenta de usuario. [6] [7] [8] El Cambio rápido de usuario permite a los usuarios cambiar entre cuentas de usuario en la computadora local sin salir del software y cerrar sesión. El Cambio rápido de usuario es parte de Winlogon y utiliza RDS para lograr su función de cambio. [9] [10] Los desarrolladores de terceros también han creado software cliente para RDS. Por ejemplo, rdesktop admite plataformas Unix .
Aunque RDS se entrega con la mayoría de las ediciones de todas las versiones de Windows NT desde Windows 2000, [3] su funcionalidad difiere en cada versión. Windows XP Home Edition no acepta ninguna conexión RDC, reservando RDS solo para Cambio rápido de usuario y Asistencia remota. Otras versiones cliente de Windows solo permiten que un máximo de un usuario remoto se conecte al sistema a costa de que el usuario que haya iniciado sesión en la consola se desconecte. Windows Server permite que dos usuarios se conecten al mismo tiempo. Este esquema de licencias, llamado "Escritorio remoto para administración", facilita la administración de computadoras desatendidas o sin cabeza . Solo adquiriendo licencias adicionales (además de la de Windows) una computadora que ejecuta Windows Server puede brindar servicio a múltiples usuarios remotos a la vez y lograr una infraestructura de escritorio virtual . [5] [9]
Para una organización, RDS permite al departamento de TI instalar aplicaciones en un servidor central en lugar de en varias computadoras. [11] Los usuarios remotos pueden iniciar sesión y usar esas aplicaciones a través de la red. Esta centralización puede facilitar el mantenimiento y la resolución de problemas. Los sistemas de autenticación de Windows y RDS evitan que usuarios no autorizados accedan a aplicaciones o datos.
Microsoft tiene un acuerdo de larga data con Citrix para facilitar el intercambio de tecnologías y licencias de patentes entre Microsoft Terminal Services y Citrix XenApp (anteriormente Citrix MetaFrame y Citrix Presentation Server ). En este acuerdo, Citrix tiene acceso al código fuente clave para la plataforma Windows, lo que permite a sus desarrolladores mejorar la seguridad y el rendimiento de la plataforma Terminal Services. A fines de diciembre de 2004, las dos compañías anunciaron una renovación de cinco años de este acuerdo para cubrir Windows Vista . [12]
El componente de servidor clave de RDS es Terminal Server ( termdd.sys
), que escucha en el puerto TCP 3389. Cuando un cliente de Protocolo de escritorio remoto (RDP) se conecta a este puerto, se etiqueta con un SessionID único y se asocia con una sesión de consola recién creada (Sesión 0, solo interfaz de usuario de teclado, mouse y modo de caracteres). Luego se inicia el subsistema de inicio de sesión (winlogon.exe) y el subsistema de gráficos GDI , que maneja el trabajo de autenticar al usuario y presentar la GUI. Estos ejecutables se cargan en una nueva sesión, en lugar de la sesión de consola. Al crear la nueva sesión, los controladores de dispositivos de gráficos y teclado/mouse se reemplazan con controladores específicos de RDP: RdpDD.sys
y RdpWD.sys
. El RdpDD.sys
es el controlador del dispositivo y captura las llamadas de representación de la IU en un formato que se puede transmitir a través de RDP. RdpWD.sys
actúa como controlador de teclado y mouse; recibe la entrada del teclado y mouse a través de la conexión TCP y las presenta como entradas de teclado o mouse. También permite la creación de canales virtuales , que permiten redirigir otros dispositivos, como discos, audio, impresoras y puertos COM, es decir, los canales actúan como reemplazo de estos dispositivos. Los canales se conectan al cliente a través de la conexión TCP; a medida que se accede a los canales para obtener datos, el cliente es informado de la solicitud, que luego se transfiere a través de la conexión TCP a la aplicación. Todo este procedimiento lo realizan el servidor de terminales y el cliente, con el RDP mediando la transferencia correcta, y es completamente transparente para las aplicaciones. [13] Las comunicaciones RDP se cifran utilizando el cifrado RC4 de 128 bits . A partir de Windows Server 2003, puede utilizar un esquema de cifrado compatible con FIPS 140 , o cifrar las comunicaciones utilizando el estándar Transport Layer Security . [6] [14]
Una vez que un cliente inicia una conexión y se le informa de una invocación exitosa de la pila de servicios de terminal en el servidor, carga el dispositivo y los controladores del teclado y el mouse. Los datos de la interfaz de usuario recibidos a través de RDP se decodifican y se representan como interfaz de usuario, mientras que las entradas del teclado y el mouse a la ventana que aloja la interfaz de usuario son interceptadas por los controladores y transmitidas a través de RDP al servidor. También crea los otros canales virtuales y configura la redirección. La comunicación RDP se puede cifrar; utilizando cifrado bajo, medio o alto. Con cifrado bajo, la entrada del usuario (datos salientes) se cifra utilizando un cifrado débil (RC4 de 40 bits). Con cifrado medio, los paquetes de la interfaz de usuario (datos entrantes) también se cifran utilizando este cifrado débil. La configuración "Cifrado alto (sin exportación)" utiliza cifrado RC4 de 128 bits y "Cifrado alto (exportación)" utiliza cifrado RC4 de 40 bits. [15] Al configurar la capa de seguridad en 'SSL (TLS 1.0)', está disponible la seguridad de la capa de transporte hasta la versión 1.2. [16]
El servidor de terminales es el componente servidor de los servicios de terminales. Se encarga de la autenticación de los clientes y de hacer que las aplicaciones estén disponibles de forma remota. También se encarga de restringir el acceso de los clientes según el nivel de acceso que tengan. El servidor de terminales respeta las políticas de restricción de software configuradas, de modo que restringe la disponibilidad de cierto software a un grupo determinado de usuarios. La información de la sesión remota se almacena en directorios especializados, denominados Directorio de sesiones , que se almacenan en el servidor. Los directorios de sesiones se utilizan para almacenar información de estado sobre una sesión y se pueden utilizar para reanudar sesiones interrumpidas. El servidor de terminales también tiene que gestionar estos directorios. Los servidores de terminales también se pueden utilizar en un clúster . [6]
En Windows Server 2008 , se ha revisado significativamente. Al iniciar sesión, si el usuario inició sesión en el sistema local utilizando una cuenta de dominio de Windows Server , las credenciales del mismo inicio de sesión se pueden usar para autenticar la sesión remota. Sin embargo, esto requiere que Windows Server 2008 sea el sistema operativo del servidor de terminal, mientras que el sistema operativo del cliente está limitado a Windows Server 2008, Windows Vista y Windows 7. Además, el servidor de terminal se puede configurar para permitir la conexión a programas individuales, en lugar de a todo el escritorio, por medio de una característica llamada RemoteApp. Terminal Services Web Access (TS Web Access) hace que una sesión de RemoteApp sea invocable desde el navegador web . Incluye el control de componente web de TS Web Access que mantiene la lista de RemoteApps implementadas en el servidor y mantiene la lista actualizada. Terminal Server también se puede integrar con el Administrador de recursos del sistema de Windows para limitar el uso de recursos de las aplicaciones remotas. [4]
El servidor de terminales se administra mediante el complemento de la consola de administración de Microsoft del Administrador de servidores de terminales . Se puede utilizar para configurar los requisitos de inicio de sesión, así como para aplicar una única instancia de sesión remota. También se puede configurar mediante la directiva de grupo o el Instrumental de administración de Windows . Sin embargo, no está disponible en las versiones cliente del sistema operativo Windows, donde el servidor está preconfigurado para permitir solo una sesión y aplicar los derechos de la cuenta de usuario en la sesión remota, sin ninguna personalización. [6]
El componente de servicio Remote Desktop Gateway , también conocido como RD Gateway , puede tunelizar la sesión RDP mediante un canal HTTPS . [17] Esto aumenta la seguridad de RDS al encapsular la sesión con Transport Layer Security (TLS). [18] Esto también permite la opción de usar Internet Explorer como cliente RDP. El cliente MS RDP oficial para macOS admite RD Gateway a partir de la versión 8. También está disponible para iOS y Android.
Esta característica se introdujo en los productos Windows Server 2008 y Windows Home Server .
En octubre de 2021, Thincast, el principal colaborador del proyecto FreeRDP, publicó la primera solución de puerta de enlace de escritorio remoto que se ejecuta de forma nativa en Linux. [19]
RemoteApp (o TS RemoteApp ) es un modo especial de RDS, disponible en Windows Server 2008 R2 y posteriores, donde la configuración de la sesión remota está integrada en el sistema operativo del cliente. El cliente RDP 6.1 se entrega con Windows XP SP3, KB952155 para usuarios de Windows XP SP2, [21] Windows Vista SP1 y Windows Server 2008. La interfaz de usuario de RemoteApp se representa en una ventana sobre el escritorio local y se administra como cualquier otra ventana para aplicaciones locales. El resultado final de esto es que las aplicaciones remotas se comportan en gran medida como aplicaciones locales. La tarea de establecer la sesión remota, así como redirigir los recursos locales a la aplicación remota, es transparente para el usuario final. [22] Se pueden iniciar múltiples aplicaciones en una sola sesión de RemoteApp, cada una con sus propias ventanas. [23]
Una RemoteApp puede empaquetarse como un .rdp
archivo o distribuirse a través de un paquete .msi
de Windows Installer . Cuando se empaqueta como un .rdp
archivo (que contiene la dirección del servidor RemoteApp, los esquemas de autenticación que se utilizarán y otras configuraciones), se puede iniciar una RemoteApp haciendo doble clic en el archivo. Invocará el cliente de Conexión a Escritorio remoto, que se conectará al servidor y mostrará la interfaz de usuario. La RemoteApp también se puede empaquetar en una base de datos de Windows Installer , cuya instalación puede registrar la RemoteApp en el menú Inicio y crear accesos directos para iniciarla. Una RemoteApp también se puede registrar como controlador de tipos de archivos o URI. Al abrir un archivo registrado con RemoteApp, primero se invocará Conexión a Escritorio remoto, que se conectará al servidor de terminal y luego abrirá el archivo. Cualquier aplicación a la que se pueda acceder a través de Escritorio remoto se puede utilizar como una RemoteApp. [22]
Windows 7 incluye soporte integrado para la publicación de RemoteApp, pero debe habilitarse manualmente en el registro, ya que no hay una consola de administración de RemoteApp en las versiones cliente de Microsoft Windows. [24]
A partir de Windows Vista , Terminal Services también incluye una capacidad de compartir escritorios entre varias partes conocida como Windows Desktop Sharing . A diferencia de Terminal Services, que crea una nueva sesión de usuario para cada conexión RDP, Windows Desktop Sharing puede alojar la sesión remota en el contexto del usuario conectado actualmente sin crear una nueva sesión y hacer que el escritorio, o un subconjunto de él, esté disponible a través de RDP. [25] Windows Desktop Sharing se puede utilizar para compartir el escritorio completo, una región específica o una aplicación en particular. [26] Windows Desktop Sharing también se puede utilizar para compartir escritorios con varios monitores. Al compartir aplicaciones individualmente (en lugar de todo el escritorio), las ventanas se administran (ya sea que estén minimizadas o maximizadas) de forma independiente en el servidor y en el lado del cliente. [26]
La funcionalidad solo se proporciona a través de una API pública , que puede ser utilizada por cualquier aplicación para proporcionar la funcionalidad de compartir pantalla. La API de uso compartido de escritorio de Windows expone dos objetos: RDPSession
para la sesión de uso compartido y RDPViewer
para el visor. Se pueden crear instancias de varios objetos de visor para un objeto de sesión. Un visor puede ser un visor pasivo, que solo puede ver la aplicación como una captura de pantalla , o un visor interactivo, que puede interactuar en tiempo real con la aplicación remota. [25] El RDPSession
objeto contiene todas las aplicaciones compartidas, representadas como Application
objetos, cada una con Window
objetos que representan sus ventanas en pantalla. Los filtros por aplicación capturan las ventanas de la aplicación y las empaquetan como Window
objetos. [27] Un visor debe autenticarse antes de poder conectarse a una sesión de uso compartido. Esto se hace generando un Invitation
utilizando el RDPSession
. Contiene un ticket de autenticación y una contraseña. El objeto se serializa y se envía a los espectadores, que deben presentar el Invitation
al conectarse. [25] [27]
La API de uso compartido de escritorio de Windows es utilizada por Windows Meeting Space y Windows Remote Assistance para proporcionar funcionalidad de uso compartido de aplicaciones entre pares de la red . [26]
La autenticación a nivel de red ( NLA ) es una característica del servidor RDP o de la conexión a Escritorio remoto (cliente RDP) que requiere que el usuario que se conecta se autentique antes de establecer una sesión con el servidor.
Originalmente, si un usuario abría una sesión RDP (escritorio remoto) en un servidor, se cargaba la pantalla de inicio de sesión del servidor para el usuario. Esto consumía recursos del servidor y era un área potencial para ataques de denegación de servicio , así como ataques de ejecución de código remoto (consulte BlueKeep ). La autenticación a nivel de red delega las credenciales del usuario del cliente a través de un proveedor de soporte de seguridad del lado del cliente y solicita al usuario que se autentique antes de establecer una sesión en el servidor.
La autenticación a nivel de red se introdujo en RDP 6.0 y se admitió inicialmente en Windows Vista . Utiliza el nuevo proveedor de soporte de seguridad, CredSSP, que está disponible a través de SSPI en Windows Vista. Con Windows XP Service Pack 3, se introdujo CredSSP en esa plataforma y el cliente RDP 6.1 incluido admite NLA; sin embargo, CredSSP debe habilitarse primero en el registro. [28] [29]
Las ventajas de la autenticación a nivel de red son:
Remote Desktop Connection es un cliente principal para Remote Desktop Services. RDC presenta la interfaz de escritorio (o GUI de la aplicación) del sistema remoto, como si se accediera a ella localmente. [32] Microsoft Remote Desktop fue creado en 2012 por Microsoft como un cliente con una interfaz táctil. Además, existen varios clientes que no son de Microsoft .