Windows Server 2012 R2 および Windows 8.1 以降のネットワーク レベル認証の動作について

こんにちは。Windows プラットフォーム サポートの今入です。

今回は、Windows Server 2012 R2, Windows 8.1 以降における、リモート デスクトップ接続の挙動について、よくお問い合わせ頂くご質問と一緒にご説明します。
なお、本記事の内容については、IP アドレス指定でのリモート デスクトップ接続を想定しております。
ホスト名指定での接続は、動作が異なりますので、ご注意ください。

ご質問内容は以下の通りです。

以下の環境で、リモート デスクトップ接続時に、ユーザーのパスワード変更ができなくなりました。原因と回避策について教えてください。<環境>[接続元]OS: Windows Server 2012 R2[接続先]OS: Windows Server 2012 R2
  • [システムのプロパティ] にて、[ネットワーク レベル認証でリモート デスクトップを実行しているコンピューターからのみ接続を許可する (推奨) ] のチェックを外している。(ネットワーク レベル認証が強制されていない)
  • 接続に使用するユーザーは、[ユーザーは次回ログオン時にパスワード変更が必要] にチェックがついている。
 接続先サーバーへは、IP アドレス指定で、接続を行っている。

1. 事象


ご質問内容の通り、 [ネットワーク レベル認証でリモート デスクトップを実行しているコンピューターからのみ接続を許可する] のチェックボックスを外すのみでは、以下の表の "NO" と示された接続元・接続先 OS の組み合わせでは、リモート デスクトップ接続でのパスワード変更 (次回ログオン時のパスワード変更 および パスワードの有効期限超過時のパスワード変更) が行えません。

これは、ワークグループ環境、ドメイン環境を問いません。

2. Windows Server 2012 / Windows 8 までの動作


Windows XP SP3, Windows Server 2008 以降では、リモート デスクトップ接続に、ネットワーク レベル認証 (NLA) が採用されました。(※1)

NLA では、サーバーがユーザーとのセッションを確立する前に、認証に使用するユーザーの資格情報を提示するよう、接続元に強制させます。

NLA により、不用意にリモート デスクトップ セッションを確立させないため、接続先のセキュリティレベルを高めています。

NLA の事前認証の際、CredSSP (Credential Security Support Provider) と呼ばれるテクノロジを使用して、資格情報をサーバーに提示します。(※2)

NLA が強制されている場合、リモート デスクトップ接続上で、ログオン時にユーザーのパスワード変更は行えません。

これは、NLA のリモート デスクトップ接続では、パスワード変更処理を受け渡す動作を行わないためであり、想定された動作となります。

しかし、ご質問の環境のように、NLA が強制されていない場合は、パスワードの変更を行うことができます。

パスワードの変更が必要な場合、まずはNLA を用いた接続を行いますが、想定された動作により、接続に失敗します。

NLA を用いた接続に失敗した後、NLA を無効にした状態 (セキュリティ レベルを下げた状態) で、自動的に再接続する処理を行います。

その結果、パスワード変更を行うことができます。

この際、接続元 および 接続先のOS がサポートしているCredSSP の情報を確認し、セキュリティ レベルを下げた接続を試みる処理が行われています。

3. Windows Server 2012 R2 / Windows 8.1 以降の動作


Windows Server 2012 R2, Windows 8.1 以降の場合、Windows Server 2012, Windows 8 までと同様の設定のみでは、NLA が無効化されないため、パスワード変更を実施することができません。

これは、Windows OS のアップグレードに伴い、Windows Server 2012 R2 および Windows 8.1 以降でリモート デスクトップ接続の処理が変わったことが原因となります。

その結果、Windows Server 2012, Windows 8 までのように、認証に失敗した際にセキュリティ レベルを下げた接続を行わないため、NLA が強制されている時と同様に、パスワードの変更が行えません。

4. 回避策


本事象の回避策は、3 つございます。

  1. NLA を完全に無効化する
  2. RD Web アクセス経由でパスワードを変更する
  3. .rdp ファイルを作成し、CredSSP を用いた接続を行わないよう設定をする

NLA の無効化 および RD Web アクセス経由での設定については、KB 2858371がありますので、こちらもご参考にしてください。(※3)

回避策 1. NLA を完全に無効化する


先述の通り、ネットワーク レベル認証が有効な場合は、リモート デスクトップ接続ではパスワード変更ができません。
よって、接続先のネットワーク レベル認証を無効にすることで、事象の回避をすることができます。

NLA を無効にする方法は以下の通りです。

  1. 接続先端末にて、Win + R キーを押し、[ファイル名を指定して実行] にて、 "gpedit.msc" と入力し、[OK] をクリックします。
  2. 以下のポリシーを展開します。[コンピューターの構成]
    [管理用テンプレート]
    [Windows コンポーネント]
    [リモート デスクトップ サービス]
    [リモート デスクトップ セッション ホスト]
    [セキュリティ]
  3. 以下の ポリシーのうち、"a. と c." もしくは "b. と c." を設定します。
    • a. クライアント接続の暗号化レベルを設定する
      状態: "有効"
      暗号化レベル: "低レベル"
    • b. リモート (RDP) 接続に特定のセキュリティ レイヤーの使用を必要とする
      状態: "有効"
      セキュリティ レイヤー: "RDP"
    • c. リモート接続にネットワーク レベル認証を使用したユーザー認証を必要とする
      状態: "無効"
  4. コマンド プロンプトを起動し、 "gpupdate /force" を実行し、ポリシーを適用します。

※ NLA を無効にすると、仮想チャネルなどほとんどのリモートデスクトップの通信にて UDP が使用されなくなります。
※ NLA を無効にしても RemoteFX USB Redirection は有効にできます。

回避策 2. RD Web アクセス経由でパスワードを変更する


RD Web アクセスを公開している環境であれば、RD Web アクセスのポータルサイトを用いて、ユーザーのパスワードを変更することができます。

パスワード変更をできるように、以下の手順で RD Web アクセスの.config ファイルを編集する必要がございます。

また、Windows Server 2008 R2 までは直接 .config ファイルの編集が必要でしたが、Windows Server 2012 以降では、インターネット インフォメーション サービス (IIS) マネージャーから、変更できるようになっております。

Windows Server 2008 R2 までの手順


  1. RD Web アクセスを構築しているサーバーに、管理者権限でログオンします。
  2. 以下のファイルを、テキスト エディタで開きます。
    C:\Windows\Web\RDWeb\Pages\Web.config
  3. 以下の箇所を変更し、保存します。

<変更前>

 <!-- PasswordChangeEnabled: Provides password change page for users. Value must be "true" or "false" -->
<add key="PasswordChangeEnabled" value="false" />

<変更後>

 <!-- PasswordChangeEnabled: Provides password change page for users. Value must be "true" or "false" -->
<add key="PasswordChangeEnabled" value="true" />

Windows Server 2012 以降の手順


  1. RD Web アクセスを構築しているサーバーに、管理者権限でログオンします。
  2. [サーバー マネージャー] – [ツール] – [インターネット インフォメーション サービス (IIS) マネージャー] を起動します。
  3. 左ペインにて、 [<ホスト名>] – [サイト] – [Default Web Site] – [RD Web] – [Pages] を展開します。
  4. 中央ペインにて、 [アプリケーションの設定] をダブルクリックします。
  5. "PasswordChangeEnabled" をダブルクリックし、値を "false" から "true" に変更します。

上記設定を行うことで、接続元からRD Web アクセスにアクセスする際、パスワードの変更を行うことができます。

回避策 3. .rdp ファイルを作成し、CredSSP を用いた接続を行わないよう設定する


リモート デスクトップ接続から、接続先の .rdp ファイルを作成し、CredSSP を用いた接続を行わないように編集します。CredSSP を用いない接続のため、リモート デスクトップ経由で、ユーザーのパスワード変更を行えます。

  1. リモート デスクトップ接続 (mstsc.exe) を起動します。

  2. [オプションの表示] をクリックし、コンピューター と ユーザー名 を入力した状態で、 [接続設定] - [名前を付けて保存] をクリックし、任意の場所に .rdp ファイルを保存します。

  3. メモ帳で、保存した .rdp ファイルを開きます。

  4. .rdp ファイルの末尾に以下の一行を追記し、保存します。

     enablecredsspsupport:i:0
    

  5. 編集した .rdp ファイルをダブルクリックし、リモート デスクトップ接続を行います。

以上が、回避策となります。


- 参考文献 –
※1 リモート デスクトップ サービス接続のネットワーク レベル認証を構成する
https://technet.microsoft.com/ja-jp/library/cc732713.aspx

※2  Windows Server 2008 R2: ネットワーク レベル認証を使用すべき理由
https://technet.microsoft.com/ja-jp/magazine/hh750380.aspx

※3 リモート デスクトップ セッションでは、期限切れになったユーザーアカウントのパスワードを変更できません。
https://support.microsoft.com/ja-jp/kb/2858371