概述
我们使用来自 DomainA 的用户登录 Gucamole,在此我们从 DomainB 选择到服务器的 rdp 连接。
信托
DomainA 到 DomainB,反之亦然:
- 类型:外部
- Kerberos AES 加密支持:否
- 方向:双向
- 传递性:无
- 身份验证:域范围
权限
来自 DomainA 的用户已加入来自 DomainB 的服务器上的本地远程桌面用户组。暂时也试过用本地Administrators组。
鳄梨
整个设置不是由我完成的,因为它是由另一个团队管理的,所以我没有太多的洞察力。我所知道的是,它适用于从 DomainA 到来自 DomainA 的服务器的用户。用户使用 upn 登录并使用 OpenOTP 的 2FA。如果你们认为分享一些鳄梨酱的配置会有所帮助,请告诉我你们想看什么,我会与团队核实。
鳄梨酱的连接
- 协议:rdp
- 主机名:来自DomainB的服务器IP
- 端口:3389
- 用户名:${GUAC_USERNAME}
- 密码:${GUAC_PASSWORD}
- 域:空白
- 安全模式:NLA
- 禁用身份验证:否
- 忽略服务器证书:是
- 其他一切都设置为默认值/未配置
当然,我们尝试过多种不同的设置。
症状
现在这就是发生的事情。
- 我使用来自 DomainA 的用户登录鳄梨酱
- 接收 OpenOTP 推送并确认
- 我登录到 Guacamole 并选择连接到 DomainB 的服务器
- 收到错误信息:
远程桌面服务器当前无法访问。如果问题仍然存在,请通知您的系统管理员,或检查您的系统日志。
- 重试几次后,我有时会收到以下消息:
此连接已关闭,因为服务器响应时间过长。这通常是由网络问题引起的,例如无线信号不稳定或网络速度慢。请检查您的网络连接并重试或联系您的系统管理员。
- 现在是让我发疯的有趣部分:我可以通过直接 rdp 使用来自 DomainA 的用户登录到 DomainB 的服务器,如果这样做,请保持连接打开并在 Guacamole 上启动连接,我能够接管会议!
日志
鳄梨酱日志显示绝对没有任何用处。
Windows 安全日志在登录错误时显示此事件:
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.
故障排除
现在在这一点上,我不知道在哪里设置我的下一个焦点。我们在 Guacamole rdp 连接上尝试了多种设置。在网上做了很多研究,但找不到有人尝试和我们做同样事情的信息示例。由于常规 rdp 工作正常,我们认为我们的信任和权限应该没问题。
你们能给我任何提示我应该调查哪个方向吗?
有人在类似的设置中使用鳄梨酱吗?
编辑 用户 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
忘了说了,Server是2019 Version 1809
编辑2
好的,我现在通过将连接上的安全模式更改为 tls. 我记得之前尝试过 tls 时它不起作用。也许我在整个故障排除过程中所做的一些更改产生了影响。到现在我也说不清那是什么。
在我发现 guacamole 将它用于 rdp 连接之后,我通过随机尝试使用 freerdp 连接的不同选项来得出这个“解决方案”。
在这种情况下,有人认为使用 tls 而不是 nla 有什么顾虑吗?
我让整个事情为我工作,并在这里总结我以这种方式收集的信息:
相信
在我的问题中发布的信任可以很好地用于此目的。我相信其他一些选择也可以。
权限
DomainA 中的用户是 DomainA 的 UniversalGroup 的成员。此 UniversalGroup 是 DomainB 中 LocalGroup 的成员,该 LocalGroup 是目标服务器的本地管理员组的成员。
鳄梨
我们使用upn进行登录,建立连接如下:
网络
确保允许域控制器之间的连接:如何为 Active Directory 域和信任配置防火墙
如果要从 DomainB 的服务器浏览 DomainA 的 GC,请允许 LDAP 端口用于此连接。
对我来说仍然未知
如果 NLA 是一个优势,我将如何让它发挥作用。
现在我会保持原样。
编辑
到目前为止,我很确定我需要Forest 信任才能像尝试登录服务器 (UPN) 那样使用 NLA
编辑2
我现在 100% 确定我需要使用 UPN 的 NLA 的 RDP 森林信任。找到一个,测试,工作。