Contents
CredSSP 認証エラーが発生する理由
リモートデスクトップ実施時に以下のようなエラーになることがあります。
認証エラーが発生しました。
要求された関数はサポートされていません。
リモートコンピューター: 192.168.1.216
原因は CredSSP 暗号化オラクルの修復である可能性があります。
詳細については、https://go.microsoft.com/fwlink/?linkid=866660 を参照してください
「今までは使えていたのに急に・・・」という声が多く聞こえてきますが、それもそのはず。この認証エラーは接続元クライアントの Windows Update がトリガーとなって発生します。
Windows Server にも同様の更新プログラムが配信されており、接続先の Windows Server でも Windows Update を実施している場合このエラーは発生しません。
ただし、サーバの Windows Update は業務影響を考慮し、結果的にクライアントより後に更新されることが多いですよね。その「更新状況の不一致」によるエラーということです。
問題の更新プログラムとは
事の発端は 2018 年3月に提供された更新プログラム「KB4103723」です。この KB は CredSSP の脆弱性を修正するためのセキュリティアップデートです。
ここで挙げた「KB4103723」は Windows Server 2016(フルインストール)の KB です。KB は異なりますが、他の OS でも同様の更新プログラムが配信されました。他の OS の KB はこちらから確認可能です。
CredSSP の脆弱性情報 CVE-2018-0886 対策のためリリースされた 3月の更新プログラムを基として、新たに5月にリリースされる更新プログラムにて更にセキュリティレベルが上がります。全てのコンピューターに更新プログラムが適用済みであれば問題はありませんが、3月以降の更新プログラムがリモートデスクトップ接続先に適用されていない状態で接続元に5月の更新が適用されると、既定の状態では、以下のエラーメッセージが表示されリモートデスクトップ接続ができなくなります。
上記のように、接続元が2018年5月9日の更新プログラムを適用しているにも関わらず、接続先が2018年3月の更新プログラムを適用していない場合に問題となります。
暗号化オラクルの修復である可能性になるパターン
「原因は CredSSP 暗号化オラクルの修復である可能性があります」となるパターンは Technet にも記載されていますが、実際に確認したところ以下のようになりました。なお、接続元/接続先はどちらも Windows Server 2016 です。
接続先未更新 | 接続先更新済み | |
接続元未更新 | 〇 ※① | 〇 ※② |
接続元更新済み | × ※③ | 〇 ※④ |
対応方法
一番簡単なのは、接続先のリモートデスクトップの設定を「ネットワークレベル認証を行わない」にすることです。それだけエラーは解消されます。対応としては最も簡単ですが、以下のように Microsoft 的にはやってほしくないようです。
NLA を強制しないようにすることで CredSSP を利用しなくなるため、本脆弱性における影響は受けなくなります。
しかしながら、以下の通りセキュリティレベルを下げる状態となりますので、弊社としては NLA を強制しないようにする事は推奨しておりません。
NLA は RDP 接続時に接続先端末がユーザーとのセッションを確立する前にユーザー認証を要求し、セキュリティを強化するための認証方法です。
NLA を強制しないようにした場合、NLA を利用しない接続元コンピューターから接続が行われた際に、RDP 接続時のセッションが確立後に認証が行われるため、セキュリティレベルが低下します(Windows Server 2003 と同様のセキュリティ レベル)。
すなわち、資格情報を確認する前に、セッション ホスト サーバーへのセッションが確立されてしまうため、この点を突く悪意のある攻撃があった場合、セッションを乱立させることでポートが枯渇し、セッション ホスト サーバーが使用できない状態に陥るような、セキュリティが低い事による弱点をさらす事になりますのでご注意ください。
上記を考慮したうえで、「ネットワークレベル認証を行わない」以外の対応方法を2つご紹介します。
接続先に更新プログラムを適用する
接続先である Windows Server 2016 で Windows Update を実行してしまえばいいんですが、今回は KB に対応する更新プログラムのみを適用してみます。
ダウンロードサイト:CVE-2018-0886 | CredSSP のリモートでコードが実行される脆弱性 | MSRC
上記のサイトより Windows Server 2016 のダウンロードリンクをクリックします。累積更新と差分がありますが、ここでは累積更新プログラムをダウンロードします。
ダウンロード後に Windows Server 2016 でインストーラを実行した直後が下図です。「はい」をクリックします。
少し待ちます。
更新プログラムのインストールが始まります。
終了後は「今すぐ再起動」をクリックします。
これで更新プログラムの適用が完了したので、ネットワークレベル認証でもリモートデスクトップが可能なはずです。
Windows10 からリモートデスクトップを実行すると、可能でした。
接続元のセキュリティレベルを下げる
元はと言えば接続元の Windows10 のセキュリティレベルが上がったにも関わらず接続先の Windows Server 2016 のセキュリティレベルに変化が無いことで発生した症状です。接続元のセキュリティレベルを下げることでも対処は可能です。
設定変更前に念のためリモートができないことを確認しておきます。
接続元に以下のローカルポリシーを適用することでリモートデスクトップは可能になります。
値 : 脆弱
ローカルポリシーを有効にした後にリモートデスクトップを実行してみると、以下のように接続することができました。