Visão geral
Entramos no Gucamole com um usuário do DomínioA onde selecionamos uma conexão rdp para um servidor do DomínioB.
Fundos
DomínioA para DomínioB e vice-versa:
- Tipo: Externo
- Suporte à criptografia Kerberos AES: não
- Direção: bidirecional
- Transitividade: não
- Autenticação: em todo o domínio
Permissões
O usuário do DomínioA ingressou no grupo de Usuários da Área de Trabalho Remota local no Servidor do DomínioB. Também tentei temporariamente com o grupo Administradores local.
guacamole
Toda a configuração não foi feita por mim e não tenho muita visão, pois é gerenciada por outra equipe. O que eu sei é que funciona bem com um usuário do DomainA para um servidor do DomainA. Os usuários fazem login com o upn e usam 2FA por OpenOTP. Se vocês acharem que ajudaria compartilhar algumas configurações do Guacamole me digam o que vocês querem ver e eu verifico com a equipe.
Conexões em Guacamole
- protocolo: rdp
- hostname: ip do servidor do DomainB
- porta: 3389
- nome de usuário: ${GUAC_USERNAME}
- senha: ${GUAC_PASSWORD}
- domínio: em branco
- modo de segurança: NLA
- desabilitar autenticação: não
- ignorar o certificado do servidor: sim
- todo o resto está definido como padrão / não configurado
Claro que tentamos várias configurações diferentes.
Sintomas
Agora aqui está o que acontece.
- Eu entro no Guacamole com o usuário do DomainA
- receba o push OpenOTP e confirme
- estou logado no Guacamole e selecione a conexão com o servidor do DomainB
- receber mensagem de erro:
O servidor de área de trabalho remota está inacessível no momento. Se o problema persistir, notifique o administrador do sistema ou verifique os logs do sistema.
- depois de algumas tentativas, às vezes recebo esta mensagem:
Esta conexão foi fechada porque o servidor está demorando muito para responder. Isso geralmente é causado por problemas de rede, como um sinal sem fio irregular ou velocidades de rede lentas. Verifique sua conexão de rede e tente novamente ou entre em contato com o administrador do sistema.
- e agora vem a parte engraçada que me deixa louco: eu consigo logar no servidor do DomainB com o usuário do DomainA via rdp direto e se eu fizer isso, manter a conexão aberta e iniciar a conexão no Guacamole, eu consigo assuma a sessão!!
Histórico
Guacamole Logs não mostra absolutamente nada de útil.
O log de segurança do Windows mostra este evento no erro de login:
EventID 4625, Logon
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: User (correct)
Account Domain: DomainA (correct)
Failure Information:
Failure Reason: An Error occured during Logon.
Status: 0xC000005E
Sub Status: 0x0
Process Information:
Caller Process ID: 0x0
Caller Process Name: -
Network Information:
Workstation Name: f7054e3b9dd7
Source Network Address: Guacamole-Server-IP
Source Port: 0
Detailed Authentication Information:
Logon Process: NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): -
Key Length: 0
This event is generated when a logon request fails. It is generated on the computer where access was attempted.
The Subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.
The Logon Type field indicates the kind of logon that was requested. The most common types are 2 (interactive) and 3 (network).
The Process Information fields indicate which account and process on the system requested the logon.
The Network Information fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
The authentication information fields provide detailed information about this specific logon request.
- Transited services indicate which intermediate services have participated in this logon request.
- Package name indicates which sub-protocol was used among the NTLM protocols.
- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.
Solução de problemas
Agora, neste ponto, não sei onde definir meu próximo foco. Tentamos várias configurações na conexão rdp do Guacamole. Pesquisei bastante online, mas não consegui encontrar exemplos com informações em que alguém tentasse a mesma coisa que nós. Como o rdp regular funciona bem, achamos que nossas relações de confiança e permissões devem estar bem.
Vocês podem me dar alguma dica em que direção devo investigar?
Alguém usa Guacamole em uma configuração semelhante?
Editar informações adicionais do Visualizador de eventos sugeridas pelo usuário Swisstone:
RemoteDesktopServices-RdpCoreTS
08:38:23 Info: The server accepted a new TCP connection from client *Guacamole-IP*:53494.
08:38:23 Info: Connection RDP-Tcp#78 created
08:38:23 Info: Interface method called: PrepareForAccept
08:38:23 Info: Interface method called: SendPolicyData
08:38:23 Info: PerfCounter session started with instance ID 78
08:38:23 Warning: TCP socket was gracefully terminated
08:38:23 Info: Interface method called: OnDisconnected
08:38:23 Info: The server has terminated main RDP connection with the client.
08:38:23 Info: During this connection, server has not sent data or graphics update for 0 seconds (Idle1: 0, Idle2: 0).
08:38:23 Info: Channel rdpinpt has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: Channel rdpcmd has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: Channel rdplic has been closed between the server and the client on transport tunnel: 0.
08:38:23 Info: The disconnect reason is 14
TerminalServices-LocalSessionManager
nothing during this time
TerminalServices-RemoteConnectionManager
nothing during this time
Esqueci de mencionar, o servidor é 2019 versão 1809
Editar2
Ok, consegui funcionar agora alterando o modo de segurança na conexão com tls. Lembro-me de ter tentado tls antes quando não estava funcionando. Talvez algumas das mudanças que fiz durante todo o processo de solução de problemas tenham feito a diferença. Até agora eu não posso dizer o que era.
Cheguei a essa "solução" tentando aleatoriamente diferentes opções para conectar usando o freerdp depois que descobri que ele é usado pelo guacamole para conexões rdp.
Alguém vê alguma preocupação em usar tls em vez de nla neste caso?
Eu tenho tudo funcionando para mim e estou aqui concluindo as informações que reuni desta maneira:
Confiar
O Trust, conforme postado na minha pergunta, funciona muito bem para esse fim. Tenho certeza que algumas outras opções funcionariam também.
Permissões
O usuário no DomainA é membro de um UniversalGroup do DomainA. Este UniversalGroup é membro de um Grupo Local no DomínioB que é membro do Grupo de Administradores local do Servidor de destino.
guacamole
Usamos o upn para login, configuramos a conexão da seguinte forma:
Rede
Certifique-se de que as conexões entre os controladores de domínio sejam permitidas: como configurar um firewall para domínios e relações de confiança do Active Directory
Se você deseja navegar pelo GC do DomínioA do Servidor do DomínioB, permita portas LDAP para esta conexão.
Permanece desconhecido para mim
Se o NLA seria uma vantagem e como eu faria isso funcionar.
Por enquanto vou mantê-lo do jeito que está.
Editar
Até agora, tenho certeza de que precisaria de um Forest Trust para usar o NLA da maneira como tento fazer login no servidor (UPN)
Editar2
Agora tenho 100% de certeza de que precisaria de um Forest Trust para RDP com NLA usando UPN. Encontrei um, testei, funcionou.