Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

RDP接続エラー「CredSSP encryption oracle remediation」の原因と解決方法

2018年5月以降にリリースされたWindowsセキュリティ更新プログラムをインストールした後、RDPでリモートのWindowsサーバーやPCに接続する際に、CredSSP encryption oracle remediationエラーが発生することがあります。このエラーは主に以下のようなケースで発生します。

  • 最新のWindowsセキュリティ更新プログラムが適用されていない古いWindowsバージョンのコンピューター(Windows 10 RTM、ビルド1709以前、Windows Server 2012 R2、Windows Server 2016など)のリモートデスクトップに接続しようとしている
  • 長期間Microsoft更新プログラムがインストールされていないコンピューターにRDP経由で接続しようとしている
  • 接続元のコンピューターに必要なセキュリティ更新プログラムがなく、リモート側がRDP接続をブロックしている

CredSSP encryption oracle remediationエラーとは

Windows Server 2016/2012 R2/2008 R2上のRDSサーバーのRemoteAppや、RDPプロトコルを使った他ユーザーのリモートデスクトップ(Windows 10、8.1、7)に接続しようとすると、次のようなエラーが表示されます。

リモートデスクトップ接続
認証エラーが発生しました。
要求された関数はサポートされていません。
リモートコンピューター: ホスト名
これはCredSSP encryption oracle remediationが原因である可能性があります。

このエラーは、RDPで接続しようとしているリモートのWindows環境に、2018年3月以降のWindowsセキュリティ更新プログラムがインストールされていないことが原因で発生します。なお、「認証エラーが発生しました。要求された関数はサポートされていません。」という形式で表示される場合もあります。

エラーの背景:CVE-2018-0886脆弱性

2018年3月、MicrosoftはCredSSP(Credential Security Support Provider)プロトコルの脆弱性(CVE-2018-0886)を悪用したリモートコード実行を防ぐ更新プログラムをリリースしました。さらに2018年5月には、脆弱な(未修正の)CredSSPプロトコルを持つリモートRDPサーバーへの接続を、既定でWindowsクライアントが行えないようにする追加の更新プログラムが公開されました。

つまり、2018年3月以降の累積的なセキュリティ更新プログラムをWindows RDS/RDPサーバー(コンピューター)に適用しておらず、RDPクライアント側に2018年5月以降の更新プログラムが入っている場合、未修正のCredSSPを持つRDSサーバーへの接続時にこのエラーが発生します。

エラーが表示されるようになる更新プログラム(KB番号)

RDPクライアント側でエラーが表示されるようになる主なセキュリティ更新プログラムは以下の通りです。

  • Windows 7 / Windows Server 2008 R2 — KB4103718
  • Windows 8.1 / Windows Server 2012 R2 — KB4103725
  • Windows Server 2016 — KB4103723
  • Windows 10 1803 — KB4103721
  • Windows 10 1709 — KB4103727
  • Windows 10 1703 — KB4103731
  • Windows 10 1607 — KB4103723

※上記は2018年5月時点のKB番号です。現在では、お使いのWindowsエディションに対応した最新の累積更新プログラムをダウンロードしてインストールしてください。最新のセキュリティ更新プログラムは、Windows Update、ローカルのWSUSサーバー、またはMicrosoft Update Catalog(https://www.catalog.update.microsoft.com/Home.aspx)から手動で入手できます。例えば、Windows 10 1803向けの2019年8月の更新プログラムを検索する場合は、「windows 10 1803 x64 8/*/2019」という検索クエリを使用します。「2019-08 Cumulative Update for Windows 10 Version 1803 for x64-based Systems (KB4512509)」などの累積更新プログラムをダウンロードしてインストールしてください。

解決方法1:グループポリシーで一時的に設定変更

リモートデスクトップ接続を復旧させるため、リモートコンピューターから該当するセキュリティ更新プログラムをアンインストールすることも可能ですが、推奨されません。より安全で正しい解決策があります。

接続元のコンピューター(RDPクライアント)側で、CredSSPのバージョンチェックを一時的に無効化します。ローカルグループポリシーエディターを使用して設定できます。

  1. ローカルGPOエディター(gpedit.msc)を起動します。
  2. [コンピューターの構成] → [管理用テンプレート] → [システム] → [資格情報の委任] へ移動します。
  3. [暗号化オラクルの修復(Encryption Oracle Remediation)] ポリシーを見つけ、[有効] に設定し、保護レベルを [脆弱(Vulnerable)] に変更します。
  4. gpupdate /force コマンドを実行してポリシー設定を更新し、RDPでリモートサーバーに接続できるか確認します。保護レベルを「脆弱」に設定すると、CredSSP対応のクライアントアプリケーションは、未修正のRDS/RDPエンドポイントにも接続できるようになります。

Encryption Oracle Remediationポリシーの3つの値

  • 更新されたクライアントを強制する(Force Updated Clients) — 最高レベルの保護。RDPサーバーが未修正クライアントからの接続をブロックします。インフラ全体の更新が完了し、サーバー/ワークステーション用のWindowsイメージに最新のセキュリティ更新プログラムを組み込んだ後に有効化すべき設定です。
  • 緩和(Mitigated) — このモードでは、脆弱なバージョンのCredSSPを持つRDPサーバーへの発信RDP接続がブロックされます。ただし、CredSSPを使用するその他のサービスは正常に動作します。
  • 脆弱(Vulnerable) — 最低レベルの保護。脆弱なバージョンのCredSSPを持つRDPサーバーへの接続が許可されます。

解決方法2:レジストリを直接変更

Windows HomeエディションなどローカルGPOエディターがない場合は、レジストリを直接変更することで、未修正バージョンのCredSSPを持つサーバーへのRDP接続を許可できます。

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2

Active Directoryドメイン環境では、ドメインGPOまたはPowerShellスクリプトを使用して、複数のコンピューターのAllowEncryptionOracleレジストリ値を一括変更できます(RSAT-AD-PowerShellモジュールのGet-ADComputerコマンドレットでドメイン内のコンピューターリストを取得できます):

$computers = (Get-ADComputer -Filter *).DNSHostName
Foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer -ScriptBlock {
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2
}
}

接続後の対応:リモートサーバーへの更新プログラム適用

リモートRDPサーバー(コンピューター)への接続に成功したら、Windows Update(wuauservサービスが有効になっていることを確認)または手動で最新のセキュリティ更新プログラムをインストールしてください。前述のようにMicrosoft Update Catalogサイトから最新のWindows累積更新プログラムをダウンロードしてインストールします。MSU更新プログラムのインストール時に「お使いのコンピューターにはこの更新プログラムは適用できません」というエラーが表示された場合は、関連記事を参照してください。

サポートが終了しているWindows XP/Windows Server 2003の場合は、Windows Embedded POSReady 2009向けの更新プログラムをインストールする必要があります。例: https://support.microsoft.com/en-us/help/4056564

設定の復元(重要)

更新プログラムのインストールとサーバーの再起動が完了したら、クライアント側のポリシーを忘れずに無効化するか、[更新されたクライアントを強制する] に切り替えてください。レジストリを変更した場合は、AllowEncryptionOracleの値を0に戻します。これにより、CredSSPの保護されていないホストへの接続による脆弱性悪用のリスクを回避できます。

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 0

逆パターン:サーバー側がForce Updated Clientsの場合

別のシナリオとして、自分のコンピューター側に更新プログラムが入っていないケースもあります。例えば、RDPサーバーは更新済みだが、脆弱なバージョンのCredSSPを持つコンピューターからのRDP接続をブロックするポリシー([更新されたクライアントを強制する])が設定されている場合です。この場合も同じRDP接続エラー「This could be due to CredSSP encryption oracle remediation」が表示されます。

PSWindowsUpdateモジュールまたはPowerShellコンソールでWMIコマンドを使用して、自分のコンピューターのWindows更新プログラムの最終インストール日を確認できます:

gwmi win32_quickfixengineering |sort installedon -desc

この例では、最新のWindowsセキュリティ更新プログラムが2018年6月17日にインストールされていることがわかります。お使いのWindowsエディションに対応した新しいMSU累積更新ファイルをダウンロードしてインストールしてください(上記参照)。

  1. Windows 10 でリモートデスクトップのポート番号(RDP)を変更する方法

    Windows 10 の「リモートデスクトップ」機能をご存じの方は多いでしょう。職場や自宅の別のコンピューターに離れた場所からアクセスするために、この機能を活用している方も少なくありません。例えば、急ぎで会社のPCに保存したファイルが必要になったとき、リモートデスクトップはまさに救世主となります。このように、遠隔地から自分のPCへアクセスしたい場面はさまざまあります。 通常、リモートデスクトップを使うには、ルーターでポート転送(ポートフォワーディング)の設定を行うだけで簡単に利用できます。しかし、ルーターを経由せずインターネットに接続している環境では、リモートデスクトップ機能を使用するためにポ

  2. Windows 10で「リモート プロシージャ呼び出しに失敗しました」エラーを解決する方法

    Windows 10では、さまざまなシステムエラーや不具合が発生することがありますが、その多くは適切な対処法によって解決できます。Windows 10で「リモート プロシージャ呼び出しに失敗しました(The remote procedure call failed)」というエラーに悩んでいる方もご安心ください。この記事では、この問題の原因と具体的な解決方法をわかりやすく解説します。リモート プロシージャ コール(RPC)とは?RPC(Remote Procedure Call:リモート プロシージャ コール)とは、異なるコンピュータ上で動作するプログラム同士が、互いの手続き(サブルーチン)を呼