Remote Desktop Services
O Remote Desktop Services (RDS), conhecido como Terminal Services no Windows Server 2008 e versões anteriores,[1] é um dos componentes do Microsoft Windows que permite a um usuário iniciar e controlar uma sessão interativa[2] em um computador remoto ou máquina virtual através de uma conexão de rede.
| Remote Desktop Services | |
|---|---|
| Outros nomes | Terminal Services |
| Desenvolvedor | Microsoft |
| Sistema operacional | Microsoft Windows |
| Nome do serviço | TermService |
| Tipo | Software de área de trabalho remota |
| Website | learn |
O RDS é a implementação da Microsoft da arquitetura de cliente magro (thin client), onde o software Windows e toda a área de trabalho do computador que executa o RDS tornam-se acessíveis a qualquer máquina cliente remota que suporte o Remote Desktop Protocol (RDP). As interfaces de usuário são exibidas do servidor para o sistema cliente, e a entrada do sistema cliente é transmitida para o servidor – onde ocorre a execução do software.[3] Isso contrasta com sistemas de streaming de aplicativos, como o Microsoft App-V, nos quais os programas de computador são transmitidos para o cliente sob demanda e executados na máquina cliente.
O RDS foi lançado pela primeira vez em 1998 como Terminal Server no Windows NT 4.0 Terminal Server Edition, uma edição independente do Windows NT 4.0 Server que permitia aos usuários fazer login remotamente. A partir do Windows 2000, foi integrado sob o nome de Terminal Services como um componente opcional nas edições de servidor da família de sistemas operacionais Windows NT,[4] recebendo atualizações e melhorias a cada versão do Windows.[5] O Terminal Services foi então renomeado para Remote Desktop Services com o Windows Server 2008 R2[6] em 2009. O RemoteFX foi adicionado ao RDS como parte do Service Pack 1 do Windows Server 2008 R2.
Visão geral
editarO Windows inclui quatro componentes de cliente que utilizam o RDS:
- Assistência Rápida (Windows 10 e posterior) e Assistência Remota do Windows (Windows XP ao Windows 8.1)
- Conexão de Área de Trabalho Remota (RDC)
- Troca rápida de usuário
- Subsistema Windows para Linux (via MSRDC)
Os dois primeiros são utilitários individuais que permitem a um usuário operar uma sessão interativa em um computador remoto através da rede. No caso da Assistência Remota, o usuário remoto precisa receber um convite e o controle é cooperativo. No caso do RDC, entretanto, o usuário remoto abre uma nova sessão no computador remoto e possui todos os poderes concedidos pelos direitos e restrições de sua conta de usuário.[3][7][8] A Troca Rápida de Usuário permite que os usuários alternem entre contas de usuário no computador local sem fechar softwares e fazer logoff. A Troca Rápida de Usuário faz parte do Winlogon e utiliza o RDS para realizar sua função de alternância.[9][10] Desenvolvedores terceiros também criaram software cliente para RDS. Por exemplo, o rdesktop suporta plataformas Unix.
Embora o RDS seja fornecido com a maioria das edições do Windows desde o Windows XP,[4] sua funcionalidade difere em cada versão. O Windows XP Home Edition (e edições Home posteriores do Windows) não aceita nenhuma conexão RDC, reservando o RDS apenas para Troca Rápida de Usuário e Assistência Remota. Outras versões cliente do Windows permitem apenas o máximo de um usuário remoto para se conectar ao sistema, ao custo do usuário que está logado no console ser desconectado. O Windows Server permite que dois usuários se conectem ao mesmo tempo. Este esquema de licenciamento, chamado "Área de Trabalho Remota para Administração", facilita a administração de computadores não assistidos ou sem monitor. Somente adquirindo licenças adicionais (além da licença do Windows) é que um computador executando o Windows Server pode atender a vários usuários remotos simultaneamente e alcançar uma infraestrutura de área de trabalho virtual (VDI).[6][9]
Para uma organização, o RDS permite que o departamento de TI instale aplicativos em um servidor central em vez de em vários computadores.[11] Usuários remotos podem fazer logon e usar esses aplicativos pela rede. Essa centralização pode facilitar a manutenção e a resolução de problemas. O RDS e os sistemas de autenticação do Windows impedem que usuários não autorizados acessem aplicativos ou dados.
A Microsoft possui um acordo de longa data com a Citrix para facilitar o compartilhamento de tecnologias e licenciamento de patentes entre o Microsoft Terminal Services e o Citrix XenApp (anteriormente Citrix MetaFrame e Citrix Presentation Server). Nesse arranjo, a Citrix tem acesso ao código fonte principal da plataforma Windows, permitindo que seus desenvolvedores melhorem a segurança e o desempenho da plataforma Terminal Services. No final de dezembro de 2004, as duas empresas anunciaram uma renovação de cinco anos desse acordo para cobrir o Windows Vista.[12]
Componentes do servidor
editarO componente principal do servidor RDS é o Terminal Server (termdd.sys), que escuta na Porta TCP 3389. Quando um cliente Remote Desktop Protocol (RDP) se conecta a esta porta, ele é marcado com um SessionID exclusivo e associado a uma sessão de console recém-criada (Sessão 0, apenas modo de caractere, teclado, mouse e interface de usuário). O subsistema de login (winlogon.exe) e o subsistema gráfico GDI são então iniciados, lidando com a tarefa de autenticar o usuário e apresentar a GUI. Esses executáveis são carregados em uma nova sessão, em vez da sessão de console. Ao criar a nova sessão, os drivers de dispositivo gráfico e de teclado/mouse são substituídos por drivers específicos de RDP: RdpDD.sys e RdpWD.sys. O RdpDD.sys é o driver de dispositivo que captura as chamadas de renderização da UI em um formato transmissível via RDP. O RdpWD.sys atua como driver de teclado e mouse; ele recebe entrada de teclado e mouse pela conexão TCP e os apresenta como entradas locais. Ele também permite a criação de canais virtuais, que permitem que outros dispositivos, como disco, áudio, impressoras e portas COM sejam redirecionados. Os canais conectam-se ao cliente pela conexão TCP; conforme os canais são acessados para dados, o cliente é informado da solicitação, que é então transferida via conexão TCP para o aplicativo. Todo esse procedimento é realizado pelo servidor de terminal e pelo cliente, com o RDP mediando a transferência correta, de forma totalmente transparente para as aplicações.[13] As comunicações RDP são criptografadas usando criptografia RC4 de 128 bits. Do Windows Server 2003 em diante, ele pode usar um esquema de criptografia compatível com FIPS 140, ou criptografar comunicações usando o padrão Transport Layer Security (TLS).[3][14]
Assim que um cliente inicia uma conexão e é informado de uma invocação bem-sucedida da pilha de serviços de terminal no servidor, ele carrega o dispositivo, bem como os drivers de teclado/mouse. Os dados da UI recebidos via RDP são decodificados e renderizados, enquanto as entradas de teclado e mouse na janela que hospeda a UI são interceptadas pelos drivers e transmitidas via RDP ao servidor. Ele também cria outros canais virtuais e configura o redirecionamento. A comunicação RDP pode ser criptografada em níveis baixo, médio ou alto. Com criptografia baixa, a entrada do usuário (dados de saída) é criptografada usando uma cifra fraca (RC4 de 40 bits). Com criptografia média, os pacotes da UI (dados recebidos) também são criptografados com essa cifra fraca. A configuração "Criptografia alta (Não exportação)" usa RC4 de 128 bits e "Criptografia alta (Exportação)" usa RC4 de 40 bits.[15] Ao definir a Camada de Segurança para "SSL (TLS 1.0)", o Transport Layer Security até a versão 1.2 está disponível.[16]
Terminal Server
editarO Terminal Server é o componente de servidor do Terminal Services. Ele lida com a tarefa de autenticar clientes, bem como disponibilizar os aplicativos remotamente. Também é encarregado de restringir os clientes de acordo com o nível de acesso que possuem. O Terminal Server respeita as políticas de restrição de software configuradas, a fim de limitar a disponibilidade de certos softwares apenas a um determinado grupo de usuários. As informações da sessão remota são armazenadas em diretórios especializados, chamados Diretório de Sessão, localizados no servidor. Diretórios de sessão são usados para armazenar informações de estado sobre uma sessão e podem ser usados para retomar sessões interrompidas. O servidor de terminal também deve gerenciar esses diretórios. Os Terminal Servers também podem ser usados em um cluster.[3]
No Windows Server 2008, ele foi significativamente reformulado. Ao fazer login, se o usuário se conectou ao sistema local usando uma conta de Domínio do Windows Server, as credenciais do mesmo sign-on podem ser usadas para autenticar a sessão remota. No entanto, isso requer que o Windows Server 2008 seja o SO do servidor de terminal, enquanto o SO do cliente é limitado ao Windows Server 2008, Windows Vista e Windows 7. Além disso, o servidor de terminal pode ser configurado para permitir a conexão a programas individuais, em vez de toda a área de trabalho, por meio de um recurso chamado RemoteApp. O Terminal Services Web Access (TS Web Access) permite que uma sessão RemoteApp seja invocada a partir do navegador da web. Inclui o controle Web Part do TS Web Access, que mantém a lista de RemoteApps implantados no servidor e mantém a lista atualizada. O Terminal Server também pode ser integrado ao Windows System Resource Manager para limitar o uso de recursos de aplicativos remotos.[5]
O Terminal Server é gerenciado pelo snap-in do Terminal Server Manager no Microsoft Management Console (MMC). Pode ser usado para configurar os requisitos de login, bem como para aplicar uma única instância de sessão remota. Também pode ser configurado usando Diretiva de Grupo (Group Policy) ou Windows Management Instrumentation (WMI). No entanto, não está disponível nas versões cliente do Windows, onde o servidor é pré-configurado para permitir apenas uma sessão e aplicar os direitos da conta de usuário na sessão remota, sem qualquer personalização.[3]
Gateway de Área de Trabalho Remota
editarO componente de serviço Gateway de Área de Trabalho Remota, também conhecido como RD Gateway, pode realizar o tunelamento da sessão RDP usando um canal HTTPS.[17] Isso aumenta a segurança do RDS ao encapsular a sessão com Transport Layer Security (TLS).[18] Isso também permite a opção de usar o Internet Explorer como cliente RDP. O cliente RDP oficial da MS para macOS suporta o RD Gateway a partir da versão 8. Ele também está disponível para iOS e Android.
Este recurso foi introduzido nos produtos Windows Server 2008 e Windows Home Server.
Em outubro de 2021, a Thincast, principal contribuidora do projeto FreeRDP, publicou a primeira solução de Remote Desktop Gateway rodando nativamente no Linux.[19]
Funções (Roles)
editar- Gateway de Área de Trabalho Remota
- Permite que usuários autorizados se conectem a áreas de trabalho virtuais, programas RemoteApp e áreas de trabalho baseadas em sessão através de uma rede privada ou da Internet.
- Agente de Conexão de Área de Trabalho Remota
- Permite que os usuários se reconectem à sua área de trabalho virtual existente, programas RemoteApp e áreas de trabalho baseadas em sessão. Ele possibilita a distribuição uniforme de carga entre os servidores Host de Sessão de RD em uma coleção de sessões ou entre áreas de trabalho virtuais em pool e fornece acesso a áreas de trabalho virtuais em uma coleção.
- Host de Sessão de Área de Trabalho Remota
- Permite que um servidor hospede programas RemoteApp como áreas de trabalho baseadas em sessão. Os usuários podem se conectar aos servidores Host de Sessão de RD em uma coleção de sessões para executar programas, salvar arquivos e usar recursos nesses servidores.
- Host de Virtualização de Área de Trabalho Remota
- Permite que os usuários se conectem a áreas de trabalho virtuais usando a Conexão de Área de Trabalho Remota e RemoteApp.
- Acesso Web à Área de Trabalho Remota
- Permite que os usuários acessem a Conexão de Área de Trabalho Remota e RemoteApp através do Menu Iniciar ou de um navegador da web.
- Licenciamento de Área de Trabalho Remota
- Permite que um servidor gerencie as licenças de acesso de cliente RDS (RDS CALs) que são necessárias para cada dispositivo ou usuário se conectar a um servidor Host de Sessão de Área de Trabalho Remota. As RDS CALs são gerenciadas usando o aplicativo Gerenciador de Licenciamento de Área de Trabalho Remota.[20]
RemoteApp
editarRemoteApp (ou TS RemoteApp) é um modo especial do RDS, disponível no Windows Server 2008 R2 e posterior, onde a configuração da sessão remota é integrada ao sistema operacional cliente. O cliente RDP 6.1 é fornecido com o Windows XP SP3, KB952155 para usuários do Windows XP SP2,[21] Windows Vista SP1 e Windows Server 2008. A interface do usuário para o RemoteApp é renderizada em uma janela sobre a área de trabalho local e é gerenciada como qualquer outra janela de aplicativos locais. O resultado final é que os aplicativos remotos se comportam em grande parte como aplicativos locais. A tarefa de estabelecer a sessão remota, bem como redirecionar os recursos locais para o aplicativo remoto, é transparente para o usuário final.[22] Vários aplicativos podem ser iniciados em uma única sessão RemoteApp, cada um com suas próprias janelas.[23]
Um RemoteApp pode ser empacotado como um arquivo .rdp ou distribuído via um pacote .msi do Windows Installer. Quando empacotado como um arquivo .rdp (que contém o endereço do servidor RemoteApp, esquemas de autenticação e outras configurações), um RemoteApp pode ser iniciado com um clique duplo no arquivo. Ele invocará o cliente de Conexão de Área de Trabalho Remota, que se conectará ao servidor e renderizará a UI. O RemoteApp também pode ser registrado no Menu Iniciar e criar atalhos. Um RemoteApp também pode ser registrado como manipulador para tipos de arquivo ou URIs. Qualquer aplicativo que possa ser acessado via Área de Trabalho Remota pode ser servido como um RemoteApp.[22][24]
O Windows 7 inclui suporte integrado para publicação de RemoteApp, mas ele deve ser habilitado manualmente no registro, pois não há um console de gerenciamento de RemoteApp nas versões cliente do Microsoft Windows.[25]
Compartilhamento de Área de Trabalho do Windows
editarDo Windows Vista em diante, o Terminal Services também inclui um recurso de compartilhamento de área de trabalho multiparte conhecido como Compartilhamento de Área de Trabalho do Windows. Ao contrário do Terminal Services, que cria uma nova sessão de usuário para cada conexão RDP, o Compartilhamento de Área de Trabalho do Windows pode hospedar a sessão remota no contexto do usuário atualmente logado sem criar uma nova sessão e disponibilizar a Área de Trabalho, ou um subconjunto dela, via RDP.[26] Ele pode ser usado para compartilhar toda a área de trabalho, uma região específica ou um aplicativo específico.[27]
A funcionalidade é fornecida apenas por meio de uma API pública, que pode ser utilizada por qualquer aplicação para oferecer recursos de compartilhamento de tela. A API de Compartilhamento de Desktop do Windows expõe dois objetos: RDPSession para a sessão de compartilhamento e RDPViewer para o visualizador. Múltiplos objetos de visualizador podem ser instanciados para um único objeto Session. Um visualizador pode ser passivo, capaz apenas de assistir à aplicação como um screencast, ou um visualizador interativo, capaz de interagir em tempo real com a aplicação remota.[26] O objeto RDPSession contém todas as aplicações compartilhadas, representadas como objetos Application, cada um com objetos Window que representam suas janelas na tela. Filtros por aplicação capturam as janelas da aplicação e as empacotam como objetos Window.[28] Um visualizador deve se autenticar antes de poder se conectar a uma sessão de compartilhamento. Isso é feito gerando um Invitation (convite) por meio da RDPSession. Ele contém um tíquete de autenticação e uma senha. O objeto é serializado e enviado aos visualizadores, que precisam apresentar o Invitation ao se conectarem.[26][28]
A API de Compartilhamento de Área de Trabalho do Windows é usada pelo Windows Meeting Space e pela Assistência Remota do Windows para fornecer compartilhamento de aplicativos entre pares na rede.[27]
Autenticação no Nível da Rede
editarA Autenticação no Nível da Rede (NLA) é um recurso do Servidor RDP ou da Conexão de Área de Trabalho Remota (Cliente RDP) que exige que o usuário que está se conectando se autentique antes que uma sessão seja estabelecida com o servidor.
Originalmente, se um usuário abrisse uma sessão RDP em um servidor, este carregaria a tela de login do servidor para o usuário. Isso consumia recursos do servidor e era uma área potencial para ataques de negação de serviço, bem como ataques de execução remota de código (ver BlueKeep). A NLA delega as credenciais do usuário do cliente por meio de um Security Support Provider do lado do cliente e solicita que o usuário se autentique antes de estabelecer uma sessão no servidor.
A Autenticação no Nível da Rede foi introduzida no RDP 6.0 e suportada inicialmente no Windows Vista. Ela utiliza o novo Security Support Provider, CredSSP, que está disponível através do SSPI no Windows Vista. Com o Windows XP Service Pack 3, o CredSSP foi introduzido nessa plataforma e o Cliente RDP 6.1 incluído suporta NLA; no entanto, o CredSSP deve ser ativado no registro primeiro.[29]
Vantagens
editarAs vantagens da Autenticação no Nível da Rede são:
- Requer menos recursos do computador remoto inicialmente, impedindo a iniciação de uma conexão de área de trabalho remota completa até que o usuário seja autenticado.
- Permite que o Single sign-on (SSO) do NT se estenda aos serviços RDP.
- Pode ajudar a mitigar vulnerabilidades da Área de Trabalho Remota que só podem ser exploradas antes da autenticação.[30]
Desvantagens
editar- Falta de suporte para outros provedores de credenciais.
- Para usar a NLA, o cliente deve estar executando o Windows XP SP3 ou posterior, e o host deve estar executando o Windows Vista ou posterior [31] ou Windows Server 2008 ou posterior.
- Não é possível alterar a senha via CredSSP. Isso é um problema quando a opção "O usuário deve alterar a senha no próximo logon" está ativada.
- Exige o privilégio "Acessar este computador pela rede", que pode ser restrito por outros motivos.
- Os endereços IP dos clientes que tentam fazer login não serão armazenados nos logs de auditoria de segurança, dificultando o bloqueio de ataques de força bruta por meio de um firewall.
Software cliente
editarA Conexão de Área de Trabalho Remota é o principal cliente para o Remote Desktop Services. A RDC apresenta a interface da área de trabalho (ou GUI do aplicativo) do sistema remoto, como se fosse acessada localmente.[32] O Microsoft Remote Desktop foi criado em 2012 pela Microsoft como um cliente com uma interface amigável ao toque. Além disso, existem vários clientes não-Microsoft.
Ver também
editarReferências
editar- ↑ «Windows Remote Desktop Services spotlight». Consultado em 18 de novembro de 2010
- ↑ QuinnRadich (19 de agosto de 2020). «Remote Desktop Sessions - Win32 apps». docs.microsoft.com (em inglês). Consultado em 9 de julho de 2022
- 1 2 3 4 5 «Technical Overview of Terminal Services in Windows Server 2003». Microsoft. Consultado em 23 de julho de 2007. Cópia arquivada em 26 de janeiro de 2003
- 1 2 «Remote Desktop Connection». PC World. IDG. 17 de agosto de 2011
- 1 2 «Whats new in Terminal Services in Windows Server 2008». Consultado em 23 de julho de 2007
- 1 2 Russel, Charlie; Zacker, Craig (2009). «4: Remote Desktop Services and VDI: Centralizing Desktop and Application Management» (PDF). Introducing Windows Server 2008 R2. Redmond, WA: Microsoft Press. Consultado em 11 de janeiro de 2014. Cópia arquivada (PDF) em 29 de agosto de 2017
- ↑ «How to change the listening port for Remote Desktop». Consultado em 18 de novembro de 2010
- ↑ «Frequently Asked Questions about Remote Desktop». Microsoft. Consultado em 23 de julho de 2007
- 1 2 Russinovich, Mark; Solomon, David A.; Ionescu, Alex (2012). Windows Internals 6th ed. Redmond, WA: Microsoft Press. pp. 20–21. ISBN 978-0-7356-4873-9
- ↑ «Architecture of Fast User Switching». Support. Microsoft. 15 de janeiro de 2006. Consultado em 11 de janeiro de 2014
- ↑ «Remote Services». Log me in 123
- ↑ «Citrix and Microsoft Sign Technology Collaboration and Licensing Agreement». Citrix. 21 de dezembro de 2004. Consultado em 13 de abril de 2012. Cópia arquivada em 5 de julho de 2011
- ↑ «How Terminal Services Works». Microsoft. 28 de março de 2003. Consultado em 23 de julho de 2007
- ↑ «Configuring authentication and encryption: Terminal Services». 8 de outubro de 2009
- ↑ «Connection Configuration in Terminal Server». Support 5.0 ed. Microsoft. 22 de junho de 2014
- ↑ «Incorrect TLS is displayed - Windows Server». 5 de junho de 2024
- ↑ «Terminal Services Gateway (TS Gateway)». Microsoft TechNet. Consultado em 10 de setembro de 2009
- ↑ «Remote Desktop Protocol». Microsoft Developer Network (MSDN). Consultado em 10 de setembro de 2009
- ↑ «RD Gateway Documentation». Thincast. Consultado em 17 de outubro de 2021
- ↑ TechNet: Remote Desktop Licensing
- ↑ «Description of the Remote Desktop Connection 6.1 client update for Terminal Services in Windows XP Service Pack 2». Consultado em 18 de novembro de 2010
- 1 2 «Terminal Services RemoteApp (TS RemoteApp)». Consultado em 23 de julho de 2007
- ↑ «Terminal Services RemoteApp Session Termination Logic». Consultado em 2 de outubro de 2007
- ↑ «Create a RemoteApp and use it on another computer». GitHub. 11 de janeiro de 2024. Consultado em 8 de maio de 2025
- ↑ «How to enable RemoteApp (via RDP 7.0) within VirtualBox or VMWare running Windows 7, Vista SP1+ or Windows XP SP3». Consultado em 18 de novembro de 2010. Cópia arquivada em 12 de julho de 2010
- 1 2 3 «Windows Desktop Sharing». Consultado em 11 de outubro de 2007
- 1 2 «Windows Desktop Sharing API». Consultado em 11 de outubro de 2007
- 1 2 «About Windows Desktop Sharing». Consultado em 11 de outubro de 2007
- ↑ «Description of the Credential Security Support Provider (CredSSP) in Windows XP Service Pack 3». Cópia arquivada em 18 de setembro de 2017
- ↑ Simon Pope (14 de maio de 2019). «Prevent a worm by updating Remote Desktop Services (CVE-2019-0708)». Microsoft Security Response Center. Consultado em 7 de maio de 2020
- ↑ «Configure Network Level Authentication for Remote Desktop Services Connections». Microsoft TechNet. 17 de novembro de 2009. Consultado em 7 de maio de 2020
- ↑ «Technical Overview of Terminal Services in Windows Server 2003». Microsoft. Consultado em 23 de julho de 2007. Cópia arquivada em 26 de janeiro de 2003