web-dev-qa-db-ja.com

RDPクライアントエラー-認証エラーが発生しました(0x609)

Ws24(192.168.1.168)という名前のコンピューターとsrvPPassTest2という名前のコンピューターがあります。

「RDPプロキシ」であるws24で実行されるプログラムを作成しました。ポート7070(構成可能)でRDPクライアントからの接続を受け入れ、それらをsrvPPassTest2に転送します。プロキシを使用するようにコンピューターを構成するには、次の手順を実行します。

  • 次のコマンドを使用して、プロキシの証明書を作成します。
    ./makecert -n "CN=ws24.pleasant.local" -pe -ss Root -sr localMachine -sky exchange -m 120 -r -a sha1 -eku 1.3.6.1.5.5.7.3.1
    • 次に、秘密鍵を使用してエクスポートし、プロキシが使用する.pfxを作成します。
    • また、秘密鍵なしでエクスポートし、srvPPassTest2の証明書(ローカルコンピューター)-信頼されたルート証明機関/証明書フォルダーにインポートします。
  • 走る
    Enable-WSManCredSSP -role client -DelegateComputer srvPPassTest2 Enable-WSManCredSSP -role client -DelegateComputer ws24 Enable-WSManCredSSP -role client -DelegateComputer 192.168.1.168
    ws24で。すべてが必要というわけではないと思いますが、まだ機能していないので、すべてを試しています。
  • Ws24で、次のレジストリ変更を行います:
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Securityパッケージ-tspkgを追加
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders-credssp.dllを追加します
  • 走る Enable-WSManCredSSP -role ServersrvPPassTest2で。

WSManCredSSP呼び出しでエラーが発生した場合は、最初にEnable-PSRemotingを呼び出してみてください。


Rdpプロキシを実行し、RDPクライアントを使用してそれに接続するとどうなりますか。

  • Ws24では、RDPクライアントを使用して192.168.1.168:7070に接続します。名前の代わりにIPアドレスを使用すると、自分自身に接続できないというクライアントの応答が防止されます。
  • プロキシは、RDPプロトコルのConnectionRequestPDUメッセージを受信して​​変更し(必要な場合)、SupportedProtocolフラグがProtocolHybrid&ProtocolSSLに設定されていることを確認します。これにより、CredSSPを確実に使用できるようになります。それはsrvPPassTest2に転送されます。
  • プロキシmitmはTLSハンドシェイクです。
  • プロキシはクライアントのNTLMNegotiateメッセージを受信し、そこからいくつかの情報を取得して、ターゲットsrvPPassTest2に転送するための新しいメッセージを作成します。
  • NTLMChallengeとNTLMAuthenticationも同様です。
    • この時点で、RDPクライアントとサーバーは正常に動作し続けています。エラーを返したり、奇妙な動作を示したりすることはありません。
  • マシンは、NTLM交換からのキーで暗号化された証明書公開キーを交換します。
  • クライアントは、TSCredentialを使用してTSRequestを送信します。プロキシはそれを受信し、情報を検証し、srvPPassTest2に送信するために異なる資格情報を持つプロキシを構築します。
  • クライアントからのメッセージの転送、長さ462
  • Srvppasstest2からのメッセージの転送、長さ108
  • クライアントからのメッセージの転送、長さ12

次に、rdpクライアントからエラーポップアップが表示されます。

認証エラーが発生しました(コード:0x609)
リモートコンピューター:192.1.168.1.168


エラー0x609を検索したときに関連する唯一の結果は、 ここ であり、これらの手順に従いました。注意すべき重要な点の1つは、このプロキシが3か月前に機能していたことです。その後、srvPPassTest2が以前の状態に戻され、プロキシが機能しなくなりました。 srvPPassTest2が機能していたときの状態に戻すことはできません。その仮想マシンは私のものではなく、スナップショットはITによって保存されませんでした> :(

コード0x609に関する情報はどこにありますか?

Ws24またはsrvPPassTest2で、他にどのような設定がありませんか?証明書はおそらくsrvPPassTest2の追加フォルダーにあるはずだと思いますが、どちらかはわかりません。

トラブルシューティングのためにできることはありますか? NTLMとTSCredentialの交換はすべて問題なく機能しています。

エラーはこのステップにありました:

  • プロキシは、RDPプロトコルのConnectionRequestPDUメッセージを受信して​​変更し(必要な場合)、SupportedProtocolフラグがProtocolHybrid&ProtocolSSLに設定されていることを確認します。これにより、CredSSPを確実に使用できるようになります。それはsrvPPassTest2に転送されます。

結局のところ、ConnectionRequestPDUでProtocolHybridExフラグも設定する必要がありました。これは、転送されたメッセージ(TSCredentialの後のメッセージ)がこのフラグを気にするためだと思います。

そのため、自分で作成するのではなく、クライアントが使用するフラグを転送することにしました。 ProtocolHybridフラグが設定されていない場合、ネットワークレベル認証(NLA)を使用する必要があるため、穏やかにエラーが発生します。