先日、普段どおりRDPで検証環境に繋ごうとしたら、見慣れないエラーが出て接続できませんでした。

調べてみると意外とよくある現象らしく、原因も対処法もはっきりしていました。
同じ画面で固まった人のために、実際に試した内容をまとめておきます。
このエラーの正体
結論から言うと、クライアント側とサーバー側で、CredSSPというプロトコルのパッチ適用状況にズレがあることが原因でした。
CredSSP(Credential Security Support Provider)
RDP接続時の認証を安全に行うためのプロトコル。ユーザーの資格情報をリモート側に安全に渡す役割を持つ。
2018年に、このCredSSPに関わる脆弱性(CVE-2018-0886)が見つかり、Microsoftが修正パッチを配布しました。このパッチ、クライアント側だけ適用されていてサーバー側が未適用(あるいはその逆)だと、「バージョンが合っていないので接続を拒否する」という動きになるようです。今回は自分の検証環境で、片方だけWindows Updateのタイミングがズレていたのが原因でした。
とりあえず繋げる方法
根本的な解決策はサーバー側にWindows Updateを当てることなのですが、検証環境だとすぐには難しいこともあります。
とりあえず接続したいだけなら、ローカルグループポリシーで回避できます。
gpedit.msc を開いて、以下の場所まで進みます。
コンピューターの構成
└ 管理用テンプレート
└ システム
└ 資格情報の委任
└ 暗号化オラクルの修復

ここを「有効」にして、保護レベルを「脆弱(Vulnerable)」に変更すると、接続できるようになります。

根本解決ではない
ここで一旦立ち止まりたいのですが、この設定変更はエラーを黙らせているだけで、根本原因を直しているわけではありません。
「脆弱」という設定名がそのまま物語っているとおり、保護レベルを一段階落として、パッチ未適用の古い相手でも接続を許可する、という設定です。つまり、CredSSPの脆弱性が悪用されるリスクを、意図的に受け入れている状態になります。
暗号化オラクルの修復(Encryption Oracle Remediation)
CredSSPの脆弱性対策として追加されたGPO設定。「脆弱」「軽減済み」「force更新済みクライアント」の3段階があり、レベルを下げるほど古いパッチ未適用の相手とも接続できるが、セキュリティ上のリスクは上がる。
検証環境のようにインターネットから隔離された環境なら、一時的にこの設定で回避しても実害は小さいと思います。
ただ、本番環境や社内ネットワークに繋がっているサーバーで同じことをやるのはおすすめできません。
あくまで「今すぐ繋ぎたい」ための応急処置と割り切って、落ち着いたタイミングで両方の端末にWindows Updateを当てるのが本来の対応です。
見分け方:NLAのチェックを外す方法もあるが
ネットで調べると、もう1つの回避策として「ネットワークレベル認証(NLA)を無効にする」という方法も紹介されています。
システムのプロパティ画面から、リモートデスクトップの認証要件のチェックを外すやり方です。
NLA(Network Level Authentication:ネットワークレベル認証)
RDP接続の確立前に認証を要求する仕組み。これを無効にすると、認証前の段階で接続を受け付けるようになるため、暗号化オラクルのエラー自体は回避できるが、保護のレイヤーが1つ丸ごとなくなる。
こちらは正直、先ほどの「暗号化オラクルの修復」設定よりもさらに踏み込んだ緩和策です。
NLA自体を切ってしまうので、個人的にはあまりおすすめしません。
今回は使わず、GPO側の設定変更だけで対応しました。
実際にやってみて感じたこと
このエラーだけ見ると「何か面倒な不具合が起きたのか」と身構えてしまうんですが、蓋を開けてみれば「パッチのタイミングがズレていただけ」というシンプルな話でした。
検証環境だと、DCやクライアントを作ってからしばらく放置して、久しぶりに触ったときにこういうズレが起きやすいのかもしれません。
実際、これまでこのブログで扱ってきたAD演習環境でも、似たようなことは今後起こり得るだろうなと思いました。
まとめると
- エラーの原因は、クライアント・サーバー間のCredSSPパッチ適用状況のズレ
- 応急処置は
gpedit.mscの「暗号化オラクルの修復」設定 - ただしこれは回避策であって解決策ではない。保護レベルを下げているという自覚は持っておく
- 本来はサーバー側にWindows Updateを当てるのが正しい対応
もし同じエラーに遭遇したら、慌てずにまず両方の端末のWindows Updateの状態を確認してみてください。それだけで原因がはっきりすることも多いはずです。
(以下、あわせてご覧ください・参考文献は変更なしのため省略)
あわせてご覧ください
- MFAとは?多要素認証の仕組みと実務での導入・運用ガイド
- パッチ管理とは?「作業」で終わらせない脆弱性対応の考え方と実務
- 「このワークステーションとプライマリドメインとの信頼関係に失敗しました」の原因と直し方


コメント