Los Servicios de Escritorio Remoto ( RDS ), conocidos como Servicios de Terminal en Windows Server 2008 y versiones anteriores, [1] son uno de los componentes de Microsoft Windows que permiten a un usuario iniciar y controlar una sesión interactiva [2] en una computadora o máquina virtual remota. 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 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] Luego, Terminal Services pasó a llamarse Servicios de Escritorio remoto con Windows Server 2008 R2 [5] en 2009.
RDS es la implementación de Microsoft de la arquitectura de cliente ligero , donde el software de Windows y todo el escritorio de la computadora que ejecuta RDS son accesibles para 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 tiene lugar 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 informáticos se transmiten al cliente bajo demanda y se ejecutan en la máquina del cliente.
RemoteFX se agregó a RDS como parte del Service Pack 1 de Windows Server 2008 R2 .
Windows incluye cuatro componentes de cliente que usan 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 el 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 ni 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 externos también han creado software de cliente para RDS. Por ejemplo, rdesktop admite plataformas Unix .
Aunque RDS se incluye 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 y reserva RDS únicamente 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 inició sesión en la consola se desconecte. Windows Server permite que dos usuarios se conecten al mismo tiempo. Este esquema de licencia, llamado "Escritorio remoto para administración", facilita la administración de computadoras desatendidas o sin cabeza . Sólo adquiriendo licencias adicionales (además de la de Windows) una computadora que ejecuta Windows Server puede dar servicio a varios usuarios remotos al mismo tiempo 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 utilizar 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 RDS y Windows 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 finales de diciembre de 2004, las dos empresas anunciaron una renovación por cinco años de este acuerdo para cubrir Windows Vista . [12]
El componente clave del servidor 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 ID de sesión único y se asocia con una sesión de consola recién generada (Sesión 0, teclado, ratón y modo de interfaz de usuario únicamente). 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 en la sesión de la consola. Al crear la nueva sesión, los controladores de dispositivo de gráficos y teclado/ratón se reemplazan por controladores específicos de RDP: RdpDD.sys
y RdpWD.sys
. Es RdpDD.sys
el controlador del dispositivo y captura las llamadas de representación de la interfaz de usuario en un formato que se puede transmitir a través de RDP. RdpWD.sys
actúa como controlador de teclado y mouse; recibe entradas de 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, se informa al cliente 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 terminal y el cliente, con el RDP mediando en la transferencia correcta, y es totalmente transparente para las aplicaciones. [13] Las comunicaciones RDP se cifran mediante cifrado RC4 de 128 bits . Windows Server 2003 en adelante, puede utilizar esquemas de cifrado compatibles con FIPS 140 . [6]
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 de teclado/ratón. Los datos de la interfaz de usuario recibidos a través de RDP se decodifican y representan como interfaz de usuario, mientras que los controladores interceptan las entradas del teclado y el mouse a la ventana que aloja la interfaz de usuario y se transmiten 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 un cifrado bajo, la entrada del usuario (datos salientes) se cifra utilizando un cifrado débil (RC4 de 40 bits). Con el cifrado medio, los paquetes UI (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. [14]
Terminal Server es el componente de servidor de los servicios de Terminal. Se encarga de la tarea de autenticar clientes, además de hacer que las aplicaciones estén disponibles de forma remota. También se le confía la tarea de restringir los clientes según el nivel de acceso que tengan. Terminal Server respeta las políticas de restricción de software configuradas, de modo que restrinja la disponibilidad de cierto software solo a un determinado grupo de usuarios. La información de la sesión remota se almacena en directorios especializados, llamados Directorio de sesión , que se almacena en el servidor. Los directorios de sesión se utilizan para almacenar información del estado de una sesión y se pueden utilizar para reanudar sesiones interrumpidas. El servidor de terminal 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 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, mediante una función denominada RemoteApp. Terminal Services Web Access (TS Web Access) hace que una sesión de RemoteApp sea invocable desde el navegador web . Incluye el control del elemento web TS Web Access que mantiene la lista de RemoteApps implementadas en el servidor y la mantiene actualizada. Terminal Server también puede integrarse con el Administrador de recursos del sistema de Windows para limitar el uso de recursos de las aplicaciones remotas. [4]
Terminal Server es administrado por el complemento Microsoft Management Console de Terminal Server Manager . Se puede utilizar para configurar los requisitos de inicio de sesión, así como para imponer una única instancia de sesión remota. También se puede configurar mediante la Política 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 hacer cumplir los derechos de la cuenta de usuario en la sesión remota, sin ninguna personalización. [6]
El componente del servicio Remote Desktop Gateway , también conocido como RD Gateway , puede crear un túnel para la sesión RDP mediante un canal HTTPS . [15] Esto aumenta la seguridad de RDS al encapsular la sesión con Transport Layer Security (TLS). [16] Esto también permite la opción de utilizar Internet Explorer como cliente RDP. El cliente oficial MS RDP 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 contribuyente del proyecto FreeRDP, publicó la primera solución de puerta de enlace de escritorio remoto que se ejecuta de forma nativa en Linux. [17]
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 envía con Windows XP SP3, KB952155 para usuarios de Windows XP SP2, [19] 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 de redirigir los recursos locales a la aplicación remota, es transparente para el usuario final. [20] Se pueden iniciar varias aplicaciones en una única sesión de RemoteApp, cada una con sus propias ventanas. [21]
Una RemoteApp puede empaquetarse como un .rdp
archivo o distribuirse mediante 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á al cliente de Conexión a Escritorio remoto, que se conectará al servidor y representará la interfaz de usuario. RemoteApp también se puede empaquetar en una base de datos de Windows Installer , cuya instalación puede registrar RemoteApp en el menú Inicio y crear accesos directos para iniciarlo. 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á la 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 puede funcionar como una aplicación remota. [20]
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. [22]
A partir de Windows Vista , Terminal Services también incluye una capacidad para compartir escritorio 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 que ha iniciado sesión actualmente sin crear una nueva sesión y hacer que el escritorio, o un subconjunto del mismo, esté disponible. sobre el PDR. [23] Compartir escritorio de Windows se puede utilizar para compartir todo el escritorio, una región específica o una aplicación en particular. [24] Compartir escritorio de Windows también se puede utilizar para compartir escritorios de varios monitores. Al compartir aplicaciones individualmente (en lugar de todo el escritorio), las ventanas se administran (ya sea minimizadas o maximizadas) de forma independiente en el lado del servidor y del cliente. [24]
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 espectador. Se pueden crear instancias de varios objetos de visor para un objeto de sesión. Un espectador puede ser un espectador pasivo, que simplemente puede ver la aplicación como un screencast , o un espectador interactivo, que puede interactuar en tiempo real con la aplicación remota. [23] El RDPSession
objeto contiene todas las aplicaciones compartidas, representadas como Application
objetos, cada uno con Window
objetos que representan sus ventanas en pantalla. Los filtros por aplicación capturan la aplicación Windows y la empaquetan como Window
objetos. [25] Un espectador debe autenticarse antes de poder conectarse a una sesión para compartir. Esto se hace generando un Invitation
usando el archivo RDPSession
. Contiene un ticket de autenticación y una contraseña. El objeto se serializa y se envía a los espectadores, quienes deben presentarlo al Invitation
conectarse. [23] [25]
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 . [24]
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 desde el servidor para el usuario. Esto consumiría recursos en el servidor y era un área potencial para ataques de denegación de servicio, así como ataques de ejecución remota de código (consulte BlueKeep ). La autenticación a nivel de red delega las credenciales del usuario desde el 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, CredSSP se introdujo en esa plataforma y el cliente RDP 6.1 incluido es compatible con NLA; sin embargo, CredSSP debe estar habilitado primero en el registro. [26] [27]
Las ventajas de la autenticación a nivel de red son:
Conexión a Escritorio remoto es un cliente principal para Servicios de Escritorio remoto. RDC presenta la interfaz de escritorio (o GUI de la aplicación) del sistema remoto, como si se accediera a él localmente. [30] 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 .