Windows

Apache Guacamole 使用來自 DomainA 的使用者登錄,從 DomainB 到伺服器的 rdp

  • July 2, 2021

概述

我們使用來自 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進行登錄,建立連接如下:

protocol: rdp
hostname: ip of server from DomainB
port: 3389
username: ${GUAC_USERNAME}
password: ${GUAC_PASSWORD}
domain: blank
security mode: tls
disable authentication: no
ignore server certificate: yes
everything else is set to default / not configured

網路

確保允許域控制器之間的連接:如何為 Active Directory 域和信任配置防火牆

如果要從 DomainB 的伺服器瀏覽 DomainA 的 GC,請允許 LDAP 埠用於此連接。

對我來說仍然未知

如果 NLA 是一個優勢,我將如何讓它發揮作用。

現在我會保持原樣。

編輯

到目前為止,我很確定我需要Forest 信任才能像嘗試登錄伺服器 (UPN) 那樣使用 NLA

編輯2

我現在 100% 確定我需要使用 UPN 的 NLA 的 RDP 森林信任。找到一個,測試,工作。

引用自:https://serverfault.com/questions/1068071